How to add constraints to simulannealbnd minimization
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
How to add constraint to minimization problem?
Simply x(3) >10*x(4)
ConstraintFunction = @simple_constraint; %constraint here does not affect minimization
hybridopts = optimoptions('fmincon','OptimalityTolerance',1e-14);
options = optimoptions(@simulannealbnd,'InitialTemperature',[1e4 1e4 1e4 1e4 ],...
'PlotFcn',{@saplotbestf,@saplottemperature,@saplotf,@saplotstopping},'HybridFcn',{'fmincon',hybridopts},...
'AnnealingFcn','annealingboltz','TemperatureFcn','temperatureboltz');
options.ReannealInterval = 400;
[x,fval] = simulannealbnd(ObjectiveFunction,X0,LB,UB,options);
function [c, ceq] = simple_constraint(x)
c = [-x(3) + 10*x(4)];
% c = [];
ceq = [];
0 Commenti
Risposte (1)
Walter Roberson
il 14 Apr 2021
You cannot add constraints directly. However you can set AnnealingFcn to the handle of a function that only generates points that meet the constraints.
Alternately you could permit those points to be generated, but set the AcceptanceFcn to reject them.
3 Commenti
Walter Roberson
il 14 Apr 2021
No, nothing like that. AnnealFcn needs to return data points; it is not designed as a constraint function.
Give the command
type annealingboltz
to see the code for the default function.
You would need to add a loop that generated new y and newx and keep going generating new ones if the constraint was not met.
Vedere anche
Categorie
Scopri di più su Get Started with Optimization Toolbox in Help Center e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!