Second order test

16 views
Skip to first unread message

Arvind Venkat

unread,
Jun 8, 2024, 4:00:49 PMJun 8
to Artelys Knitro forum
Dear experts,

In the context of equality constrained minimization with KNITRO, say I write some code that runs a second order test at a given point and returns a boolean, is there some way to inform KNITRO that it should check this test also before concluding that some point is a local solution? If the test fails, I want KNITRO to keep searching.

What I am doing now is to enable multi-start and take the solution with the smallest objective that satisfies my second order condition. 

Thank you,
Arvind.

Richard Waltz

unread,
Jun 10, 2024, 12:09:28 AMJun 10
to kni...@googlegroups.com
Hi Arvind,

Unfortunately, there is no way, inside of the multi-start procedure, to make Knitro keep going if it terminates at a stationary point that is not a local solution.  If it were a single solve scenario, you could just solve again starting from a small perturbation of the stationary point solution.

We will consider adding an option for a 2nd order check in a future release (in the case when we have exact 2nd derivatives and the problem is not too large).  In our experience, it is rare for Knitro to converge to feasible stationary points that are not local solutions, but it is possible.

Regards,
-Richard

From: kni...@googlegroups.com <kni...@googlegroups.com> on behalf of Arvind Venkat <arvindv...@gmail.com>
Sent: Saturday, June 8, 2024 11:46 AM
To: Artelys Knitro forum <kni...@googlegroups.com>
Subject: [Knitro] Second order test
 
--
You received this message because you are subscribed to the Artelys "Knitro Nonlinear Optimization Solver" google group.
To post to this group, send email to kni...@googlegroups.com
To unsubscribe from this group, send email to knitro-un...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/knitro?hl=en
Thank You,
Artelys
http://www.artelys.com/en/optimization-tools/knitro
---
You received this message because you are subscribed to the Google Groups "Artelys Knitro forum" group.
To unsubscribe from this group and stop receiving emails from it, send an email to knitro+un...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/knitro/605e31b9-36fc-482b-ae84-ef19ed2db6fbn%40googlegroups.com.

Arvind Venkat

unread,
Jun 10, 2024, 9:45:04 AMJun 10
to Artelys Knitro forum
Hi Richard,

Thanks a lot for your prompt response. To be clear, I was not requesting an implementation of this in the multi-start procedure, but in the single start one. I'd like to start from some initial point, and then when KNITRO thinks it has found a solution (that satisfies first order KKT), I want it to run my second order check, if if this is not satisfied, I want KNITRO to just automatically keep going until it finds a solution that does satisfy the second order check.

Best,
Arvind.

Richard Waltz

unread,
Jun 10, 2024, 5:42:37 PMJun 10
to kni...@googlegroups.com
Hi Arvind,

In that case, you can try to follow the procedure I recommended:

  • Have Knitro perform a single-solve
  • Check 2nd order condition
  • If not satisfied, take the "solution" from the previous solve, perturb it slightly (so it is no longer a stationary point) and then solve again using this perturbed point as the initial point for the next solve. 

In all solves (after the initial one) you might experiment with the Knitro warm-start procedure by setting "strat_warm_start=1":


Regards,
-Richard


Sent: Monday, June 10, 2024 12:29 AM

To: Artelys Knitro forum <kni...@googlegroups.com>
Subject: Re: [Knitro] Second order test
 
Reply all
Reply to author
Forward
0 new messages