[Ipopt] segmentation fault for unbounded convex QP with mehrotra_algorithm
Stefan Vigerske
stefan at math.hu-berlin.de
Mon Oct 15 04:23:21 EDT 2012
Hi,
based on a C++ example to reproduce this issue by Tony, Andreas made a
fix in Ipopt/trunk (which I am now announcing here :-)):
https://projects.coin-or.org/Ipopt/changeset/2114/
Can you try whether that works for you?
Best,
Stefan
On 10/12/2012 01:27 AM, Joris Gillis wrote:
> Hello all,
>
> Thanks to Jonathan for helping me out in a private thread.
> However, he was not able to reproduce this using the matlab interface.
>
> Further details of my situation: the same fault occurs with ma57, ma27, mumps.
>
> The programs outputs:
>
> This is Ipopt version 3.10.2, running with linear solver ma27.
>
> Number of nonzeros in equality constraint Jacobian...: 0
> Number of nonzeros in inequality constraint Jacobian.: 0
> Number of nonzeros in Lagrangian Hessian.............: 0
>
> Total number of variables............................: 5
> variables with only lower bounds: 0
> variables with lower and upper bounds: 5
> variables with only upper bounds: 0
> Total number of equality constraints.................: 0
> 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+00 0.00e+00 1.00e+00 0.0 0.00e+00 - 0.00e+00 0.00e+00 0
> 1 -2.4999996e+00 0.00e+00 3.85e-06 -5.0 1.00e+00 - 9.90e-01 1.00e+00f 1
> 2 -2.5000000e+00 0.00e+00 3.81e-06 -11.0 3.84e-04 - 9.90e-01 1.00e+00f 1
> 3 -2.5000000e+00 0.00e+00 3.81e-08 -11.0 1.54e-11 - 9.90e-01 1.00e+00f 1
> 4 -2.5000000e+00 0.00e+00 3.81e-10 -11.0 3.55e-17 - 9.90e-01 1.00e+00 0
> 5 -2.5000000e+00 0.00e+00 3.81e-14 -11.0 3.55e-17 - 1.00e+00 1.00e+00T 0
> Segmentation fault (core dumped)
>
>
> Stack trace:
>
>
> #0 0x00007ffff3852eb2 in std::vector<Ipopt::SmartPtr<Ipopt::Vector>, std::allocator<Ipopt::SmartPtr<Ipopt::Vector> > >::operator[] (this=0xd0, __n=4)
> at /usr/include/c++/4.6/bits/stl_vector.h:711
> #1 0x00007ffff38525aa in Ipopt::CompoundVector::IsCompNull (this=0x0, i=4)
> at ../../../../Ipopt/src/Interfaces/../LinAlg/IpCompoundVector.hpp:79
> #2 0x00007ffff385284c in Ipopt::IteratesVector::GetIterateFromComp (this=0x0,
> i=4)
> at ../../../../Ipopt/src/Interfaces/../Algorithm/IpIteratesVector.hpp:501
> #3 0x00007ffff3852798 in Ipopt::IteratesVector::z_L (this=0x0)
> at ../../../../Ipopt/src/Interfaces/../Algorithm/IpIteratesVector.hpp:233
> #4 0x00007ffff3941482 in Ipopt::PDSearchDirCalculator::ComputeSearchDirection
> (this=0x10819f0)
> at ../../../../Ipopt/src/Algorithm/IpPDSearchDirCalc.cpp:88
> #5 0x00007ffff38d803e in Ipopt::IpoptAlgorithm::ComputeSearchDirection (
> this=0x1081a40) at ../../../../Ipopt/src/Algorithm/IpIpoptAlg.cpp:507
> #6 0x00007ffff38d7176 in Ipopt::IpoptAlgorithm::Optimize (this=0x1081a40,
> isResto=false) at ../../../../Ipopt/src/Algorithm/IpIpoptAlg.cpp:314
> #7 0x00007ffff384e438 in Ipopt::IpoptApplication::call_optimize (
> this=0xb2ed30)
> at ../../../../Ipopt/src/Interfaces/IpIpoptApplication.cpp:816
> #8 0x00007ffff384d59a in Ipopt::IpoptApplication::OptimizeNLP (this=0xb2ed30,
> nlp=..., alg_builder=...)
> at ../../../../Ipopt/src/Interfaces/IpIpoptApplication.cpp:713
> ---Type <return> to continue, or q <return> to quit---
> #9 0x00007ffff384d291 in Ipopt::IpoptApplication::OptimizeNLP (this=0xb2ed30,
> nlp=...) at ../../../../Ipopt/src/Interfaces/IpIpoptApplication.cpp:676
> #10 0x00007ffff384ce64 in Ipopt::IpoptApplication::OptimizeTNLP (
> this=0xb2ed30, tnlp=...)
> at ../../../../Ipopt/src/Interfaces/IpIpoptApplication.cpp:655
>
> Any more ideas to debug this?
>
> Thanks in advance,
> Joris Gillis
> ________________________________
> From: Jonathan Currie [jonathan.currie at aut.ac.nz]
> Sent: Wednesday, October 10, 2012 11:49 PM
> To: Joris Gillis; 'ipopt at list.coin-or.org'
> Subject: RE: segmentation fault for unbounded convex QP with mehrotra_algorithm
>
> Using the Matlab interface with the option ‘mehrotra_algorithm’ = ‘yes’ gives the following exception:
>
> Exception of type: OPTION_INVALID in file "..\..\..\src\Algorithm\IpAlgBuilder.cpp" at line 724:
> Exception message: !mehrotra_algorithm || smuoracle=="probing" evaluated false: If mehrotra_algorithm=yes, mu_oracle must be "probing".
>
> EXIT: Invalid option encountered.
>
>
> Have you enabled mu_oracle as per the above? If not, and you are not catching the exception, this could be your problem.
>
> Jonathan
>
> From: ipopt-bounces at list.coin-or.org [mailto:ipopt-bounces at list.coin-or.org] On Behalf Of Joris Gillis
> Sent: Thursday, 11 October 2012 5:29 a.m.
> To: ipopt at list.coin-or.org
> Subject: [Ipopt] segmentation fault for unbounded convex QP with mehrotra_algorithm
>
> Dear all,
>
> I’m experiencing a segmentation fault that occurs in PDSearchDirCalculator::ComputeSearchDirection for a problem with the following characteristics:
> Sparse convex QP
> No constraints
> Decision variable bounds that are large but finite
> mehrotra_algorithm active
> Hessian approximation exact or limited-memory, does not matter.
>
> Since we are using our own python interface (CasADi), it is possible that the error lies in our interface.
> So could someone here please reconstruct this problem by more conventional means so I can file a proper ticket?
>
> I’m adding the code of the failing case here for further reference:
>
> ======
> from casadi import *
>
> N = 5
>
> x = ssym("x",N)
> x0 = DMatrix.ones(N,1)
> H = DMatrix.eye(N)
> A = DMatrix.ones(0,N)
> G = mul(H,x0)
> obj = 0.5*mul([x.T,H,x])-mul(G.T,x)
>
> f = SXFunction([x],[obj])
> g = SXFunction([x],[mul(A,x)])
> j = SXFunction([x],[A])
>
> solver = IpoptSolver(f,g,FX(),j)
> solver.setOption("mehrotra_algorithm","yes");
> solver.init()
> solver.input(NLP_LBX).setAll(-1000)
> solver.input(NLP_UBX).setAll(1000)
>
> solver.solve()
> ======
>
> Best regards,
> Joris Gillis
>
>
>
>
> _______________________________________________
> Ipopt mailing list
> Ipopt at list.coin-or.org
> http://list.coin-or.org/mailman/listinfo/ipopt
>
More information about the Ipopt
mailing list