[Minotaur] FilterSQP engine strange behaviour
Roberto Chao
chaoroberto at gmail.com
Mon Nov 28 09:00:58 CST 2016
In this problem the SNQP method converges monotonically to the
solution more or less like ipopt engine does. The same cannot be said
of the minotaur SNQP implementation (filterSQP engine). It's true that
in the end it converges to the solution but this is a very easy
problem.
Regards
Roberto Chao
2016-11-28 6:59 GMT+01:00 Ashutosh Mahajan <amahajan at iitb.ac.in>:
> Dear Roberto
>
> Both FilterSQP and Ipopt seem to be converging to the same point
> (x0, x1) = (0.707107, 0.707107) in roughly the same number of
> iterations. Can you be a bit more specific about what you feel is unexpected?
> Cheers.
>
> --
> Regards
> Ashutosh Mahajan
> http://www.ieor.iitb.ac.in/amahajan
>
> On Sun, Nov 27, 2016 at 08:38:10PM +0100, Roberto Chao wrote:
>> Hello, my name is Roberto. I'm an experienced C/C++/Java developer and
>> I'm currently very excited with the SNQP method and Minotaur seems to
>> me the perfect interface with filtersqp solver.
>>
>> I've downloaded an successfully compiled minotaur-0.2.0 on a
>> Linux-x86_64 machine. The executable has successfully passed all unit
>> tests. I'd like to use minotaur to solve small-medium scale (tens of
>> constraints) non-linear programming problems through the SNQP method.
>>
>> The first basic problem I've tried to solve has been taken from the
>> book: Practical Methods of Optimization (2nd edition) (Pag 296):
>>
>> max x1+x2
>> st. x1^2+x2^2<=1
>>
>> the FilterSQPEngine exhibits a strange behaviour:
>>
>> filterSQP: version 20010817
>> (x0, x1) = (2, 0)
>> (x0, x1) = (1.25, 10)
>> (x0, x1) = (1.25, 5)
>> (x0, x1) = (2.06029, 2.24118)
>> (x0, x1) = (1.23322, 1.157)
>> (x0, x1) = (0.786654, 0.829407)
>> (x0, x1) = (0.720027, 0.707684)
>> (x0, x1) = (0.706927, 0.707408)
>> (x0, x1) = (0.707107, 0.707107)
>> FilterSQPEngine: total calls = 1
>> FilterSQPEngine: strong branching calls = 0
>> FilterSQPEngine: total time in solving = 0.003292
>> FilterSQPEngine: time in str branching = 0
>> FilterSQPEngine: total iterations = 8
>> FilterSQPEngine: strong br iterations = 0
>> solution status code = 1
>> solution status = ProvenLocalOptimal
>>
>> However using IPopt engine gives me this result:
>>
>> (x0, x1) = (2, 0)
>> (x0, x1) = (1.24837, 1.7)
>> (x0, x1) = (1.06331, 1.06783)
>> (x0, x1) = (0.831419, 0.831195)
>> (x0, x1) = (0.731859, 0.731869)
>> (x0, x1) = (0.708612, 0.708612)
>> (x0, x1) = (0.707108, 0.707108)
>> (x0, x1) = (0.707107, 0.707107)
>> Ipopt: total calls = 1
>> Ipopt: strong branching calls = 0
>> Ipopt: total time in solving = 0.047418
>> Ipopt: total time in presolve = 2e-06
>> Ipopt: time in str branching = 0
>> Ipopt: total iterations = 7
>> Ipopt: strong br iterations = 0
>> solution status code = 1
>> solution status = ProvenLocalOptimal
>>
>> so I can assume I've correctly defined jacobian, hessian of lagrange,
>> objective an constraint evaluation callback methods.
>>
>> Can you help me please?
>> Thank you in advance.
>> Roberto Chao
>> _______________________________________________
>> Minotaur mailing list
>> Minotaur at lists.mcs.anl.gov
>> https://lists.mcs.anl.gov/mailman/listinfo/minotaur
More information about the Minotaur
mailing list