<div>Hi, all.</div><div>š</div><div>I'm using Ipopt via C++ interface to solve the following problem:</div><div>š</div><div>minimize || h - h0 ||^2</div><div>š</div><div>subject to Q h &gt;= 0</div><div>š</div><div>where h0 (known) and h (unknown) is vector of dimension N and Q is M x N matrix.</div><div>š</div><div>Q is always very sparse: it has only 4 non-zero elements in each row. Also we know that its rank is always (N - 3) and 3 basis vectors of its kernel are known beforehand (a priori).</div><div>š</div><div>Usually N ~ 5000 and M ~ 15000. From empirical knowledge we are expecting that minimal value of the functional must be near 0, because vector h0 lies closely to the set {Q h &gt;= 0}</div><div>š</div><div>But Ipopt converges in 1-2 seconds to the point where this value is too big.</div><div>š</div><div>I set tolerance values as follows:</div><div>š</div><div>ššš app-&gt;Options()-&gt;SetNumericValue("tol", 1e-10);<br />ššš app-&gt;Options()-&gt;SetNumericValue("acceptable_tol", 1e-10);</div><div>š</div><div>In function "get_starting_point" starting point is set to (1, 1, ..., 1) - it always lies inside the set {Q h &gt;= 0}</div><div>In function "eval_g" the vector Q * x is computed.</div><div>In function "eval_jac_g" the matrix Q is computed</div><div>In function "eval_h" the matrix 2 * obj_value * I is computed, where I is the identity matrix.</div><div>š</div><div>Can you clarify the following questions:</div><div>š</div><div>1. Am I using Iptopt correctly for this problem?</div><div>2. Are there any possible options/modes that can help to avoid this problem?</div><div>3. Or the problem is infeasible itself? How can I reformulate it to be able to obtain appropriate solution?</div><div>š</div><div>Here is the log from Ipopt:</div><div>š</div><div>******************************************************************************<br />This program contains Ipopt, a library for large-scale nonlinear optimization.<br />šIpopt is released as open source code under the Eclipse Public License (EPL).<br />šššššššš For more information visit http://projects.coin-or.org/Ipopt<br />******************************************************************************<br /><br />This is Ipopt version 3.11.7, running with linear solver ma27.<br /><br />Number of nonzeros in equality constraint Jacobian...:ššššššš 0<br />Number of nonzeros in inequality constraint Jacobian.:ššš 14456<br />Number of nonzeros in Lagrangian Hessian.............:šššš 1240<br /><br />Total number of variables............................:šššš 1240<br />šššššššššššššššššššš variables with only lower bounds:ššššššš 0<br />ššššššššššššššš variables with lower and upper bounds:ššššššš 0<br />šššššššššššššššššššš variables with only upper bounds:ššššššš 0<br />Total number of equality constraints.................:ššššššš 0<br />Total number of inequality constraints...............:šššš 3614<br />ššššššš inequality constraints with only lower bounds:šššš 3614<br />šš inequality constraints with lower and upper bounds:ššššššš 0<br />ššššššš inequality constraints with only upper bounds:ššššššš 0<br /><br />iterššš objectiveššš inf_pršš inf_du lg(mu)š ||d||š lg(rg) alpha_du alpha_prš ls<br />šš 0š 1.8336107e+03 0.00e+00 1.05e+01š -1.0 0.00e+00ššš -š 0.00e+00 0.00e+00šš 0<br />šš 1š 1.6674085e+03 9.38e-03 9.96e+00š -1.0 4.94e+00ššš -š 8.49e-02 4.82e-02fš 1<br />šš 2š 1.4326345e+03 8.72e-03 3.33e+01š -1.0 4.92e+00ššš -š 3.41e-01 7.77e-02fš 1<br />šš 3š 1.2617809e+03 8.15e-03 9.36e+01š -1.0 4.17e+00ššš -š 3.21e-01 6.85e-02fš 1<br />šš 4š 1.0488307e+03 7.32e-03 4.45e+02š -1.0 3.88e+00ššš -š 6.88e-01 1.04e-01fš 1<br />šš 5š 7.8339830e+02 6.00e-03 6.15e+02š -1.0 3.48e+00ššš -š 1.00e+00 1.77e-01fš 1<br />šš 6š 6.2985014e+02 4.97e-03 9.84e+02š -1.0 2.86e+00ššš -š 9.01e-01 1.73e-01fš 1<br />šš 7š 5.3144166e+02 3.94e-03 2.42e+03š -1.0 2.37e+00ššš -š 1.00e+00 2.08e-01fš 1<br />šš 8š 4.9770694e+02 3.07e-03 1.94e+03š -1.0 1.87e+00ššš -š 5.86e-01 2.21e-01hš 1<br />šš 9š 5.0406399e+02 2.54e-03 2.45e+03š -1.0 2.11e+00ššš -š 5.80e-01 1.73e-01hš 1<br />iterššš objectiveššš inf_pršš inf_du lg(mu)š ||d||š lg(rg) alpha_du alpha_prš ls<br />š 10š 5.3547390e+02 2.00e-03 3.58e+03š -1.0 1.99e+00ššš -š 5.68e-01 2.12e-01hš 1<br />š 11š 5.9274922e+02 1.48e-03 5.87e+03š -1.0 2.28e+00ššš -š 1.00e+00 2.56e-01hš 1<br />š 12š 6.4631623e+02 1.20e-03 9.56e+03š -1.0 2.88e+00ššš -š 7.47e-01 1.91e-01hš 1<br />š 13š 7.1841000e+02 9.18e-04 9.95e+03š -1.0 2.29e+00ššš -š 1.00e+00 2.36e-01hš 1<br />š 14š 8.1146204e+02 6.58e-04 1.56e+04š -1.0 2.23e+00ššš -š 8.62e-01 2.83e-01hš 1<br />š 15š 8.8773763e+02 5.02e-04 1.40e+04š -1.0 2.02e+00ššš -š 1.00e+00 2.38e-01hš 1<br />š 16š 9.5457040e+02 3.99e-04 3.42e+04š -1.0 2.57e+00ššš -š 1.00e+00 2.07e-01hš 1<br />š 17š 1.0558386e+03 2.78e-04 2.99e+04š -1.0 2.83e+00ššš -š 1.00e+00 3.02e-01hš 1<br />š 18š 1.1619864e+03 1.84e-04 2.61e+04š -1.0 2.36e+00ššš -š 1.00e+00 3.38e-01hš 1<br />š 19š 1.2303388e+03 1.37e-04 2.72e+04š -1.0 1.75e+00ššš -š 1.00e+00 2.56e-01hš 1<br />iterššš objectiveššš inf_pršš inf_du lg(mu)š ||d||š lg(rg) alpha_du alpha_prš ls<br />š 20š 1.3150608e+03 9.06e-05 6.56e+04š -1.0 3.25e+00ššš -š 8.83e-01 3.36e-01hš 1<br />š 21š 1.3814642e+03 6.27e-05 7.75e+04š -1.0 2.40e+00ššš -š 7.12e-01 3.08e-01hš 1<br />š 22š 1.4350326e+03 4.50e-05 5.61e+04š -1.0 3.49e+00ššš -š 2.96e-01 2.84e-01hš 1<br />š 23š 1.4589438e+03 3.83e-05 5.49e+04š -1.0 1.99e+00ššš -š 3.16e-01 1.50e-01hš 1<br />š 24š 1.5206104e+03 2.37e-05 7.37e+04š -1.0 2.93e+00ššš -š 5.14e-01 3.78e-01hš 1<br />š 25š 1.5669190e+03 1.50e-05 1.31e+05š -1.0 1.86e+00ššš -š 7.69e-01 3.67e-01hš 1<br />š 26š 1.5903011e+03 1.12e-05 1.13e+05š -1.0 1.21e+00ššš -š 1.00e+00 2.57e-01hš 1<br />š 27š 1.6230534e+03 6.42e-06 1.53e+05š -1.0 1.28e+00ššš -š 1.00e+00 4.23e-01hš 1<br />š 28š 1.6474062e+03 3.44e-06 8.28e+04š -1.0 1.36e+00ššš -š 4.38e-01 4.63e-01hš 1<br />š 29š 1.6522123e+03 2.93e-06 8.53e+05š -1.0 9.59e-01ššš -š 1.00e+00 1.54e-01hš 1<br />iterššš objectiveššš inf_pršš inf_du lg(mu)š ||d||š lg(rg) alpha_du alpha_prš ls<br />š 30š 1.6718478e+03 9.85e-07 3.39e+05š -1.0 1.03e+00ššš -š 7.48e-01 6.32e-01hš 1<br />š 31š 1.6799887e+03 4.29e-07 1.41e+05š -1.0 3.88e-01ššš -š 4.78e-01 5.95e-01hš 1<br />š 32š 1.6840614e+03 2.54e-07 3.89e+05š -1.0 1.94e-01ššš -š 5.80e-01 3.34e-01hš 1<br />š 33š 1.6930559e+03 9.47e-08 1.70e+05š -1.0 2.36e-01ššš -š 6.41e-01 6.19e-01hš 1<br />š 34š 1.6978451e+03 6.91e-08 1.21e+06š -1.0 2.57e-01ššš -š 6.02e-01 3.72e-01hš 1<br />š 35š 1.7068217e+03 1.90e-08 1.64e+06š -1.0 2.56e-01ššš -š 9.22e-01 6.22e-01hš 1<br />MA27BD returned iflag=-4 and requires more memory.<br />šIncrease liw from 223615 to 447230 and la from 262915 to 535470 and factorize again.<br />š 36š 1.7162980e+03 6.31e-09 2.18e+06š -1.0 2.17e-01ššš -š 1.00e+00 7.52e-01hš 1<br />š 37š 1.7233855e+03 0.00e+00 1.00e-06š -1.0 1.19e-01ššš -š 1.00e+00 1.00e+00hš 1<br />š 38š 1.6800304e+03 0.00e+00 1.83e+07š -8.6 9.78e-01ššš -š 4.83e-01 1.00e+00fš 1<br />š 39š 1.6758852e+03 0.00e+00 1.04e+07š -8.6 3.02e-01ššš -š 4.26e-01 5.67e-01fš 1<br />iterššš objectiveššš inf_pršš inf_du lg(mu)š ||d||š lg(rg) alpha_du alpha_prš ls<br />š 40š 1.6735636e+03 0.00e+00 7.19e+06š -8.6 2.16e-01ššš -š 2.98e-01 3.68e-01fš 1<br />š 41š 1.6718941e+03 0.00e+00 5.63e+06š -8.6 1.91e-01ššš -š 2.09e-01 2.60e-01fš 1<br />š 42š 1.6702121e+03 0.00e+00 4.53e+06š -8.6 1.59e-01ššš -š 1.81e-01 2.74e-01fš 1<br />š 43š 1.6682895e+03 0.00e+00 3.33e+06š -8.6 1.53e-01ššš -š 2.53e-01 3.45e-01fš 1<br />š 44š 1.6669311e+03 0.00e+00 2.16e+06š -8.6 1.31e-01ššš -š 3.53e-01 2.95e-01fš 1<br />š 45š 1.6657351e+03 0.00e+00 2.01e+06š -8.6 1.15e-01ššš -š 8.36e-02 3.20e-01fš 1<br />š 46š 1.6652164e+03 0.00e+00 1.67e+06š -8.6 8.89e-02ššš -š 1.73e-01 1.84e-01fš 1<br />š 47š 1.6645884e+03 0.00e+00 9.83e+05š -8.6 8.30e-02ššš -š 4.02e-01 2.51e-01fš 1<br />š 48š 1.6639691e+03 0.00e+00 7.19e+05š -8.6 7.43e-02ššš -š 2.68e-01 2.77e-01fš 1<br />š 49š 1.6635414e+03 0.00e+00 5.42e+05š -8.6 6.52e-02ššš -š 2.49e-01 2.28e-01fš 1<br />iterššš objectiveššš inf_pršš inf_du lg(mu)š ||d||š lg(rg) alpha_du alpha_prš ls<br />š 50š 1.6630697e+03 0.00e+00 4.13e+05š -8.6 5.94e-02ššš -š 2.42e-01 2.99e-01fš 1<br />š 51š 1.6628218e+03 0.00e+00 3.30e+05š -8.6 4.72e-02ššš -š 3.61e-01 2.09e-01fš 1<br />š 52š 1.6626052e+03 0.00e+00 2.65e+05š -8.6 4.32e-02ššš -š 2.12e-01 2.31e-01fš 1<br />š 53š 1.6623597e+03 0.00e+00 1.36e+05š -8.6 3.52e-02ššš -š 4.54e-01 3.33e-01fš 1<br />š 54š 1.6622941e+03 0.00e+00 1.17e+05š -8.6 2.24e-02ššš -š 1.57e-01 1.33e-01fš 1<br />š 55š 1.6621419e+03 0.00e+00 9.82e+04š -8.6 1.60e-02ššš -š 2.22e-01 3.49e-01fš 1<br />š 56š 1.6620561e+03 0.00e+00 5.31e+04š -8.6 9.62e-03ššš -š 3.70e-01 3.16e-01fš 1<br />š 57š 1.6620052e+03 0.00e+00 3.80e+04š -8.6 4.76e-03ššš -š 2.71e-01 2.86e-01fš 1<br />š 58š 1.6619647e+03 0.00e+00 2.57e+04š -8.6 2.65e-03ššš -š 4.19e-01 3.17e-01fš 1<br />š 59š 1.6619354e+03 0.00e+00 2.82e+04š -8.6 1.87e-03ššš -š 4.09e-01 3.26e-01fš 1<br />iterššš objectiveššš inf_pršš inf_du lg(mu)š ||d||š lg(rg) alpha_du alpha_prš ls<br />š 60š 1.6619094e+03 0.00e+00 1.35e+04š -8.6 1.36e-03ššš -š 3.19e-01 4.18e-01fš 1<br />š 61š 1.6618945e+03 0.00e+00 2.92e+04š -8.6 1.52e-03ššš -š 3.08e-01 4.05e-01fš 1<br />š 62š 1.6618912e+03 0.00e+00 2.40e+04š -8.6 1.57e-03ššš -š 4.88e-01 1.58e-01fš 1<br />š 63š 1.6618823e+03 0.00e+00 7.96e+03š -8.6 1.74e-03ššš -š 4.09e-01 4.93e-01fš 1<br />š 64š 1.6618804e+03 0.00e+00 2.46e+04š -8.6 1.03e-03ššš -š 5.08e-01 2.16e-01fš 1<br />š 65š 1.6618764e+03 0.00e+00 1.11e+04š -8.6 5.81e-04ššš -š 4.61e-01 5.75e-01fš 1<br />š 66š 1.6618747e+03 0.00e+00 5.85e+03š -8.6 3.44e-04ššš -š 5.02e-01 5.52e-01fš 1<br />š 67š 1.6618739e+03 0.00e+00 3.00e+03š -8.6 2.76e-04ššš -š 5.40e-01 6.14e-01fš 1<br />š 68š 1.6618737e+03 0.00e+00 1.41e+03š -8.6 2.09e-04ššš -š 5.28e-01 5.16e-01fš 1<br />š 69š 1.6618736e+03 0.00e+00 3.96e+03š -8.6 1.44e-04ššš -š 6.54e-01 4.50e-01fš 1<br />iterššš objectiveššš inf_pršš inf_du lg(mu)š ||d||š lg(rg) alpha_du alpha_prš ls<br />š 70š 1.6618735e+03 0.00e+00 4.37e+03š -8.6 1.13e-04ššš -š 7.15e-01 5.20e-01fš 1<br />š 71š 1.6618734e+03 0.00e+00 1.37e+03š -8.6 7.36e-05ššš -š 6.20e-01 7.01e-01fš 1<br />š 72š 1.6618734e+03 0.00e+00 4.65e+02š -8.6 3.41e-05ššš -š 1.00e+00 8.89e-01fš 1<br />š 73š 1.6618734e+03 0.00e+00 7.28e-12š -8.6 1.57e-05ššš -š 1.00e+00 1.00e+00fš 1<br /><br />Number of Iterations....: 73<br /><br />šššššššššššššššššššššššššššššššššš (scaled)šššššššššššššššš (unscaled)<br />Objective...............:šš 1.6618734205379653e+03ššš 1.6618734205379653e+03<br />Dual infeasibility......:šš 7.2759576141834259e-12ššš 7.2759576141834259e-12<br />Constraint violation....:šš 0.0000000000000000e+00ššš 0.0000000000000000e+00<br />Complementarity.........:šš 4.1913907266361601e-09ššš 4.1913907266361601e-09<br />Overall NLP error.......:šš 1.5424634363936447e-11ššš 4.1913907266361601e-09<br /><br /><br />Number of objective function evaluationsšššššššššššš = 74<br />Number of objective gradient evaluationsšššššššššššš = 74<br />Number of equality constraint evaluationsššššššššššš = 0<br />Number of inequality constraint evaluationsššššššššš = 74<br />Number of equality constraint Jacobian evaluationsšš = 0<br />Number of inequality constraint Jacobian evaluations = 74<br />Number of Lagrangian Hessian evaluationsšššššššššššš = 73<br />Total CPU secs in IPOPT (w/o function evaluations)šš =ššššš 0.728<br />Total CPU secs in NLP function evaluationsšššššššššš =ššššš 0.032</div><div>š</div><div>EXIT: Optimal Solution Found.</div><div>š</div><div>š</div><div>š</div><div>Best regards,</div><div>š</div><div>Ilya Palachev</div><div>š</div><div>Lomonosov Moscow State University</div>