Info

Diese Frage ist geschlossen. Öffnen Sie sie erneut, um sie zu bearbeiten oder zu beantworten.

# fmincon very sensitive to DiffminChange

1 Ansicht (letzte 30 Tage)
TS am 20 Nov. 2018
Geschlossen: TS am 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?

### Community Treasure Hunt

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

Start Hunting!