<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Filip,<div class=""><br class=""></div><div class="">Thanks for sharing. Have you also experienced a dependency between the ‘tol’ parameter and the objective function scaling factor?<div class=""><br class=""></div><div class="">For example, when I decreased my objective function scaling factor from 1E6 to 1E3, I needed to decrease ‘tol’ from 1E-8 to 1E-5 to get the same convergence. Note the same decrease factor for both. Interestingly enough I was able to bring my objective function scaling factor back to 1, with the ‘tol’ value at 1E-2.</div><div class=""><br class=""></div><div class="">This is from the documentation for the ’tol’ parameter, note the words ‘relative’ and ‘scaled’:</div><div class=""><br class=""></div><div class=""><span style="font-family: -webkit-standard; font-size: medium;" class="">Desired convergence tolerance (relative). </span><br style="font-family: -webkit-standard;" class=""><span style="font-family: -webkit-standard; font-size: medium;" class="">Determines the convergence tolerance for the algorithm. The algorithm terminates successfully, if the (scaled) NLP error becomes smaller than this value</span></div><div class=""><font face="-webkit-standard" size="3" class=""><br class=""></font></div><div class=""><div class="">I guess the (scaled) NLP error is influenced by the objective function scaling factor. </div></div><div class=""><br class=""></div><div class="">rgds</div><div class=""><br class=""></div><div class="">Arjan</div><div class=""><div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On 03 Oct 2017, at 09:30, Filip Jorissen <<a href="mailto:filip.jorissen@kuleuven.be" class="">filip.jorissen@kuleuven.be</a>> wrote:</div><br class="Apple-interchange-newline"><div class="">

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" class="">

<div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; font-size: 14px; font-family: Calibri, sans-serif;" class="">
<div class="">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 class=""><br class="">
</div>
<div class="">Filip </div>
<div class=""><br class="">
</div>
<span id="OLK_SRC_BODY_SECTION" class="">
<div style="font-family: Calibri; font-size: 11pt; text-align: left; border-width: 1pt medium medium; border-style: solid none none; padding: 3pt 0in 0in; border-top-color: rgb(181, 196, 223);" class="">
<span style="font-weight:bold" class="">From: </span>Ipopt <<a href="mailto:ipopt-bounces@coin-or.org" class="">ipopt-bounces@coin-or.org</a>> on behalf of Arjan van Mulukom <<a href="mailto:arjan.van.mulukom@btbjansky.nl" class="">arjan.van.mulukom@btbjansky.nl</a>><br class="">
<span style="font-weight:bold" class="">Date: </span>Monday, 2 October 2017 at 13:19<br class="">
<span style="font-weight:bold" class="">To: </span>"<a href="mailto:ipopt@list.coin-or.org" class="">ipopt@list.coin-or.org</a>" <<a href="mailto:ipopt@list.coin-or.org" class="">ipopt@list.coin-or.org</a>><br class="">
<span style="font-weight:bold" class="">Subject: </span>[Ipopt] variable and objective function scaling<br class="">
</div>
<div class=""><br class="">
</div>
<div class="">
<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>
</div>

</div></blockquote></div><br class=""></div></div></div></body></html>