[AMPL 24707] QP with equality constraints

Dear AMPL teams,

Sorry for your time. Currently im doing an experiment of “Outer active set method”, which means i have already had the jacobian of active constrains. Then the problem turns out to a QP problem with equality constraints. I call “Ipopt” solver to solve the problem, but it doesn’t work. In order to fix it, i have already regularized Hessian matrix “H_QP” and made the reduced Hessian matrix positive definite and it doesn’t work as the same. I’m thinking whether the bad initial point make the following error statements. Or can you give me some advice for how to test the QP problem feasible and debug it step by step.

This is Ipopt version 3.12.3, running with linear solver mumps.
NOTE: Other linear solvers might be more efficient (see Ipopt documentation).

Number of nonzeros in equality constraint Jacobian…: 4185
Number of nonzeros in inequality constraint Jacobian.: 0
Number of nonzeros in Lagrangian Hessian…: 3531

Total number of variables…: 1002
variables with only lower bounds: 0
variables with lower and upper bounds: 1002
variables with only upper bounds: 0
Total number of equality constraints…: 901
Total number of inequality constraints…: 0
inequality constraints with only lower bounds: 0
inequality constraints with lower and upper bounds: 0
inequality constraints with only upper bounds: 0

iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls
0 0.0000000e+000 2.37e-001 1.00e+002 -1.0 0.00e+000 - 0.00e+000 0.00e+000 0
WARNING: Problem in step computation; switching to emergency mode.
1r0.0000000e+000 2.37e-001 9.99e+002 -0.6 0.00e+000 20.0 0.00e+000 0.00e+000R 1
WARNING: Problem in step computation; switching to emergency mode.
Restoration phase is called at point that is almost feasible,
with constraint violation 0.000000e+000. Abort.
Restoration phase in the restoration phase failed.

Number of Iterations…: 1

(scaled) (unscaled)
Objective…: 0.0000000000000000e+000 0.0000000000000000e+000
Dual infeasibility…: 1.0000000000000000e+002 8.9585994490475059e+004
Constraint violation…: 2.3707976761747812e-001 2.3707976761747812e-001
Complementarity…: 1.0000000099999999e+001 8.9585995386334998e+003
Overall NLP error…: 1.0000000000000000e+002 8.9585994490475059e+004

Number of objective function evaluations = 2
Number of objective gradient evaluations = 2
Number of equality constraint evaluations = 2
Number of inequality constraint evaluations = 0
Number of equality constraint Jacobian evaluations = 2
Number of inequality constraint Jacobian evaluations = 0
Number of Lagrangian Hessian evaluations = 2
Total CPU secs in IPOPT (w/o function evaluations) = 0.085
Total CPU secs in NLP function evaluations = 0.000

EXIT: Restoration Failed!
solver : t_proc (avg) t_wall (avg) n_eval
nlp_f | 0 ( 0) 0 ( 0) 2
nlp_g | 0 ( 0) 0 ( 0) 2
nlp_grad_f | 0 ( 0) 0 ( 0) 3
nlp_hess_l | 0 ( 0) 0 ( 0) 1
nlp_jac_g | 0 ( 0) 0 ( 0) 3
total | 86.00ms ( 86.00ms) 86.59ms ( 86.59ms) 1

Thank you very much for your time and consideration.

Best regards,


Here are some thoughts:

By default, all variables have an initial value of 0 – but often, this is not a good choice of initial point. So if you know a better guess for an initial point, you should try it. Initial values can be assigned to variables in the same ways that values are assigned to parameters – in data files, using “let” statements, or with a := value in the var statement.

Another thing to consider is that Ipopt requires functions that are continuous and that have continuous derivatives. If your model has only quadratic functions, then this requirement should be met. However, if you can reply with your AMPL files attached, I can look to see whether there there are any expressions in your model that might be causing Ipopt to fail so completely.

If you have access to other solvers comparable to Ipopt – such as Knitro, MINOS, or SNOPT – you could try them to see whether they get better results. Each of these solvers uses somewhat different methods, and sometimes one method works better than others for a particular problem. (Free trials are available.)