<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; color: rgb(0, 0, 0); font-size: 14px; font-family: Calibri, sans-serif;">
<div>I experienced similar scaling issues, although I do not get the same absolute magnitudes that work. Also, my objective needs to be smaller than the constraints. It’s hard to generalise but I have the impression that ‘larger’ models required a lower absolute
 value of the objective.</div>
<div><br>
</div>
<div>Filip </div>
<div><br>
</div>
<span id="OLK_SRC_BODY_SECTION">
<div style="font-family:Calibri; font-size:11pt; text-align:left; color:black; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0in; PADDING-LEFT: 0in; PADDING-RIGHT: 0in; BORDER-TOP: #b5c4df 1pt solid; BORDER-RIGHT: medium none; PADDING-TOP: 3pt">
<span style="font-weight:bold">From: </span>Ipopt <<a href="mailto:ipopt-bounces@coin-or.org">ipopt-bounces@coin-or.org</a>> on behalf of Arjan van Mulukom <<a href="mailto:arjan.van.mulukom@btbjansky.nl">arjan.van.mulukom@btbjansky.nl</a>><br>
<span style="font-weight:bold">Date: </span>Monday, 2 October 2017 at 13:19<br>
<span style="font-weight:bold">To: </span>"<a href="mailto:ipopt@list.coin-or.org">ipopt@list.coin-or.org</a>" <<a href="mailto:ipopt@list.coin-or.org">ipopt@list.coin-or.org</a>><br>
<span style="font-weight:bold">Subject: </span>[Ipopt] variable and objective function scaling<br>
</div>
<div><br>
</div>
<div>
<div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">
Hi all,
<div class=""><br class="">
</div>
<div class="">I have a question about the scaling of variables and the objective function that has been puzzling me for a while now.</div>
<div class=""><br class="">
</div>
<div class="">I have a problem of a few hundred variables, which values are quite a bit apart in order of magnitude (10e6 to 10e-4). </div>
<div class=""><br class="">
</div>
<div class="">I scale these x values in the problem, so they are all in the same order of magnitude. I am not using the x scaling feature of IpOpt (<em style="font-family: Verdana, Arial, 'Bitstream Vera Sans', Helvetica, sans-serif; font-size: 13px;" class="">nlp_scaling_method
 = none).</em></div>
<div class=""><br class="">
</div>
<div class="">I also set a scaling factor for the objective function, which I set as an option to IpOpt. (<em style="font-family: Verdana, Arial, 'Bitstream Vera Sans', Helvetica, sans-serif; font-size: 13px;" class="">obj_scaling_factor).</em></div>
<div class=""><br class="">
</div>
<div class="">To be more precise: each variable is divided by itself (that makes it 1) and then multiplied, in my case, by 1000. That makes all scaled x values 1000. Let me call the x scaling Sc_i, i is the index of the variable.</div>
<div class=""><br class="">
</div>
<div class="">Here is how I implemented the variable scaling in the problem. In my objective-, objective gradient-, Jacobian- and constraint evaluations I unscale x by Sc_i before any calculations. Once calculated, the Jacobian and objective function gradient
 entries are then scaled again by Sc_i. </div>
<div class=""><br class="">
</div>
<div class="">It works and it works pretty well. But…. the only way to get good convergence on my problem is when I set variable scaling such that all variables are in the order of magnitude of 1000, and the objective function scaling to 1E6. Deviations from
 that combination means difficult or no convergence (restoration failed).</div>
<div class=""><br class="">
</div>
<div class="">I don’t understand fully why I need such large numbers and why they are so specific.</div>
<div class=""><br class="">
</div>
<div class="">Sc_i obviously scales the objective function gradients and the Jacobian. With 1000 as order of magnitude for the x values, my objective function gradients come out in the range of 0-10. I read in an earlier post that this is a good range. So that
 could the reason why I need to scale my x values to 1000.</div>
<div class=""><br class="">
</div>
<div class="">But then I am stumped to why the objective function scaling must be so large. Would it not even further reduce the objective function gradients? IpOpt must be looking at very small objective gradients here. What is the need for objective function
 scaling if not for bringing the gradients into a decent range?</div>
<div class=""><br class="">
</div>
<div class="">I think I am overlooking something here, but no clue what. I’d be grateful for some guidance on the matter.</div>
<div class=""><br class="">
</div>
<div class="">cheers</div>
<div class=""><br class="">
</div>
<div class="">Sander</div>
<div class=""><br class="">
</div>
<div class=""><br class="">
</div>
<div class=""><br class="">
</div>
<div class=""><br class="">
</div>
</div>
</div>
</span>
</body>
</html>