How to avoid getting Exit Flag 2 and 0 using FMINCON and Which solver suit my discribed problem the best?

6 views (last 30 days)
Lately I've asked some questions ( A , B ) here about getting infeasible exit falg using fmincon function i.e., Exit Flag: -2. That problem has been solved by checking the code many times and finding a small (but important) mistake. I missed one minus sign behind some of the optimization variables limit (lb,ub) (so I was forcing some optimization variables to be fixed).
Here is the new challenges I've faced with the same problem:
This is a large scale multi objective optimization problem to be solved with *fmincon* solver of *Matlab*. I tried different solvers to get a better and faster output. Here is the challenge:
I am getting Exit Flag: 1,0,4,5 for different Pareto points ,as it is a multi-objective optimization problem, with Active-set algorithm. Then I tried to check different algorithms like interior-point and sqp for generating the Pareto points. I observed that sqp returns few exit flags 1, some 2 and few 0 but not any 4 or 5 flag. Also, I should note that, its 0 and 2 flagged solutions are correct answers . However, When it comes to return any exit flag except 1, it takes a long time to solve the Pareto point.
As interior-point algorithm is designed for large scale program, it's very faster than sqp in generating the Pareto solutions. However, it only returns solutions with Exit flag 0. Unfortunately, its 0 flagged solutions are wrong solutions despite sqp which its 0 and 2 flagged solutions are correct answers. 0) Is there anyway to config the fmincon to solve my problem with interior-point and also returns correct solutions? In the literature I saw some problems similar to mine which were solved with interior-point algorithm.
1) Is there any settings (TolX,TolCon,...) that I can use to get more exit flag 1 ?
2) Is there any setting that speeds up the optimization process with the cost of lower accuracy?
3) For 2 Pareto points I am getting exit flag -2 , which means the problem is not feasible for them. It is expected from the nature of the problem. But it takes ages for fmincon to determine the Exit-Flag -2. Is there any option that I can set to satisfy 1,2 and also leave this infeasible point faster? I couldn't do this , because I can only set options for one time and all Pareto points should use the same option.
To describe the problem I should say: I have several linear and nonlinear (.^2,Sin...) for both equality and inequality constraints (about 300) and also having 400 optimization variables. All objective functions of this multi-objective optimization problem is linear.
these are the options that I currently use. Please help me to modify it
options = optimset('Algorithm', 'sqp', 'Display', 'off');
options = optimset('Algorithm', 'sqp', 'Display', 'off', 'TolX',1e-6,...
'TolFun',1e-6,'MaxIter',1e2, 'MaxFunEvals', 1e4);
First option takes about 500 sec for generating 15 Pareto points. Meaning that each optimization of fmincon expend 33 sec. The second option takes 200 sec, which is 13 sec for each optimization of fmincon.
Thank you so much for your answer in advance.

Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!