How to add constraints to simulannealbnd minimization

1 vue (au cours des 30 derniers jours)
Ole
Ole le 14 Avr 2021
Commenté : Ole le 14 Avr 2021
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 = [];

Réponses (1)

Walter Roberson
Walter Roberson le 14 Avr 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 commentaires
Walter Roberson
Walter Roberson le 14 Avr 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.
Ole
Ole le 14 Avr 2021
thank you

Connectez-vous pour commenter.

Catégories

En savoir plus sur Get Started with Optimization Toolbox dans Help Center et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by