Getting Exit-Flag: 0,2 with SQP algorithm of fminc

2019-06-13 05:53发布

问题:

I have a large scale multi objective optimization problem to solve with fmincon solver of Matlab. I tried different solver 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 get the correct solutions? In the literature I saw some problems similar to mine have been 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.

Your help will be highly appreciated.