FMINCON - Include constraints provided by the objective function
4 views (last 30 days)
Show older comments
Commented: Lennart on 22 Mar 2023
I am currently working on an optimization problem with fmincon. The objective function takes quite a while to calculate, but in the end it is giving me a result in terms of resulting mass. This mass shall be optimized/minimized using fmincon which is working quite well on its own.
I am calling fmincon as follows:
[x,fval] = fmincon(@MASTER, x0,, , ,,lb,ub,, options);
Now, I would like to include constraints as well. Checking the help/support pages, I can simply add a constraint evaluation function at the end of the fmincon-call.
However, my objective function is also capable of giving me my constraint information as well. I am currently not returing it of course but it can be easily calculated. Sure I can double-call the function, once for objective and once for constraint, but I really dont want to call it twice due to the long calculation time. Is there any way I can use the constraint values I am already calculating in my objective function to be used by fmincon without calling it a second time?
Any advice would be fantastic!
Jon on 22 Mar 2023
You can use nested functions to avoid recomputing your constraint values.
This topic is covered in the following documentation https://www.mathworks.com/help/optim/ug/objective-and-nonlinear-constraints-in-the-same-function.html
Find more on Solver Outputs and Iterative Display 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!