How to add constraints to simulannealbnd minimization

조회 수: 6 (최근 30일)
Ole
Ole 2021년 4월 14일
댓글: Ole 2021년 4월 14일
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 = [];

답변 (1개)

Walter Roberson
Walter Roberson 2021년 4월 14일
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
Walter Roberson
Walter Roberson 2021년 4월 14일
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 2021년 4월 14일
thank you

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Particle Swarm에 대해 자세히 알아보기

태그

제품

Community Treasure Hunt

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

Start Hunting!

Translated by