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?

Antworten (0)

Diese Frage ist geschlossen.

Community Treasure Hunt

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

Start Hunting!

Translated by