Forum Discussion
FICO
4 years agoCommunity Manager
Final solution of a nonlinear non-convex problem solved with Knitro (via Xpress) looks worse than the initial solution
Dear all, I have a couple of questions on the use of the procedure setinitval and more in general on the use of an initial solution for solving a nonlinear problem. I am solving a series of nonline...
FICO
4 years agoCommunity Manager
Hi Caterina,
there exists the function XSLPsetcurrentiv (https://www.fico.com/fico-xpress-optimization/docs/latest/solver/nonlinear/HTML/XSLPsetcurrentiv.html) to store the current solution as an initial point for the next solve. Of course that would assume that you solve twice from the same problem, so if you want to solve from two separate Mosel models, you would have to store the solution after the first call and then forward this to the second to then insert as an initial point.
For testing purposes, you can also try to set the LOG (https://www.fico.com/fico-xpress-optimization/docs/latest/solver/nonlinear/HTML/XSLP_LOG.html) control to 5, which will give you an additional output of the initial values that Xpress actually transferred to Knitro. Knitro itself will generally also print some information about what it did with the initial solution, like for example
Knitro shifted start point further inside presolved bounds (2 variables).In addition to that, I would suggest to check the first line in the Knitro log (when going through Mosel, you might need to activate this explicitly via XNLP_VERBOSE (https://www.fico.com/fico-xpress-optimization/docs/latest/mosel/mosel_lang/dhtml/XNLP_VERBOSE.html)). If the previous solution was accepted, then this first line, in particular the objective value, should match the previous solution, if it doesn't, then the solution was not accepted for some reason (or completed in an unexpected way in case of a partial solution).
Whether a partial solution is sufficient really depends on how obvious the remaining ones are. If presolve can remove the remaining variables, then initial values for them might not be needed, but if it doesn't, then the solver may not always be able to figure out the correct values for the remaining variables, so if you do have a full solution, then it would generally be advisable to set up all initial values rather than only a subset in the hope that the solver can fill in the rest.
Best,
Tristan
Related Content
Related Content
MIP solution status
Hello, I've been using code like this to get the solution status of a MIP: case getprobstat of XPRS_OPT: status:="Optimum found" XPRS_UNF: status:="Unfinished" XPRS_INF: status:="Infeasib...5 months agoPlace FICO® Xpress Optimization ForumFICO® Xpress Optimization Forum3 unread comments3 unread8Views0likes3CommentsHow to solve MPEC (non-convex QCQP) through Python API?
I am trying to solve MPEC (non-convex QCQP) with Xpress through the Python API. I am running v8.5.13 (due to institutional license). I get the following error: ?900 Warning: The quadratic part of r...6 years agoPlace FICO® Xpress Optimization ForumFICO® Xpress Optimization Forum3 unread comments3 unread0Views0likes3CommentsIs an interface between Xpress-Mosel and the global (non-convex) optimization solvers Baron or Antigone possible?
I'm working for several years in a PhD-project on engineering problems in membrane cascades containing bilinear terms (MINLP). We initially tried to solve the generated problems with (I presume an SL...6 years agoPlace FICO® Xpress Optimization ForumFICO® Xpress Optimization Forum2 unread comments2 unread0Views0likes2Comments