Feasible Sequential Quadratic Programming in Matlab
3 views (last 30 days)
Show older comments
Hi all, I have encountered a problem regarding optimisation that the design variables at the end of an iteration updated from optimizer fmincon (SQP) are not within the feasible domain defined by a non-linear constraint.
Particularly, my constraint has the similar form to a quadratic function,
e.g. c[1] = x_1^2 + x_2^2 <= 1.
c[2] = x_3^2 + x_4^2 <= 1.
...
c[n] = x_n-1^2 + x_n^2 <= 1.
However, every time I printed the values of my constraint function, there would be some (not all) of those which are greater than 0, which means the design variables computed by SQP were not strictly restrained by the constraints at the beginning of an iteration. This would cause analysis abortion as variables outside feasible domain can cause illogical objective function values in my case.
I have found some statements on the website saying that Matlab built-in SQP is not able to generate feasible iterates (iterations in which design variables are strictly bounded by constraints) but FSQP (Feasible Sequential Quadratic Programming in Matlab) can. But I failed to find FSQP within Matlab-2017b optimisation toolbox. Is there anyone having doable suggestion to deal with this problem?
0 Comments
Answers (1)
Alan Weiss
on 9 Feb 2018
There is no solver in Optimization Toolbox™ or Global Optimization Toolbox that guarantees that intermediate iterates will be feasible with respect to nonlinear constraints. Sorry. If there is something on the File Exchange that does it, well, I don't know about it, but feel free to search there or on Google.
Alan Weiss
MATLAB mathematical toolbox documentation
2 Comments
Alan Weiss
on 12 Feb 2018
I am not sure that I understand what you are asking. If your objective function is undefined at some points, then I suggest that you have the objective function return NaN and you should just use the fmincon 'interior-point' solver (or maybe 'sqp' after things are working with 'interior-point') and let fmincon decide how to recover from NaN values. Make sure that you start from a feasible initial point.
If I misunderstand you, please try asking again.
Alan Weiss
MATLAB mathematical toolbox documentation
See Also
Categories
Find more on MPC Design in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!