Info

This question is closed. Reopen it to edit or answer.

fmincon very sensitive to DiffminChange

1 view (last 30 days)
TS
TS on 20 Nov 2018
Closed: TS on 20 Nov 2018
I have a bounded non-linear optimization problem, which gives the initial value as the final solution when using the default settings for fmincon. So I changed the algorithm to SQP, and made changes to the DiffminChange by trial and error till I get the actual optima (in this test case I know the minimum value of the objective function is -1 at R > 0.76).
fun = @(R)split_mix_feed(R,x_F,x_R,hpd,p,Wunsch);
options = optimset('Display','iter-detailed','Algorithm','sqp',...
'DiffminChange',0.009, 'DiffmaxChange',2,'MaxFunEvals',10,...
'Tolx',1e-1);
[R, fval, exitflag, output] = fmincon(fun,0.1,[],[],[],[],0,5,[],options)
function recovery = split_mix_feed(R,x_F,x_R,hpd,p,Wunsch)
mix_point = (x_F+R*x_R)/(1+R);
split = single_column_product_split(hpd,p,mix_point,Wunsch);
recovery = -split.max_yield;
This is the output I obtain when using the settings specified above
Iter F-count f(x) Feasibility Steplength step optimality
0 2 -8.500000e-01 0.000e+00 6.944e-01
1 4 -1.000000e+00 0.000e+00 1.000e+00 6.944e-01 0.000e+00
Optimization completed: The relative first-order optimality measure, 0.000000e+00,
is less than options.OptimalityTolerance = 1.000000e-06, and the relative maximum constraint
violation, 0.000000e+00, is less than options.ConstraintTolerance = 1.000000e-06.
Optimization Metric Options
relative first-order optimality = 0.00e+00 OptimalityTolerance = 1e-06 (default)
relative max(constraint violation) = 0.00e+00 ConstraintTolerance = 1e-06 (default)
R =
0.7944
fval =
-1
exitflag =
1
output =
iterations: 1
funcCount: 4
algorithm: 'sqp'
message: 'Local minimum found that satisfies the constraints.…'
constrviolation: 0
stepsize: 0.6944
lssteplength: 1
firstorderopt: 0
Elapsed time is 1.930386 seconds.
The problem now is that when I change the system, i.e. change the input arguments of the objective function, the optimizer is not able to perform well. I cannot tune the fmincon settings for each system. How can I make the optimization routine more robust?

Answers (0)

This question is closed.

Tags

Products

Community Treasure Hunt

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

Start Hunting!