Imposing Constraint in FMINCON optimization problem.

2 views (last 30 days)
Luca Lange
Luca Lange on 17 May 2022
Commented: Luca Lange on 17 May 2022
Dear all,
I am trying to implement a constraint, saying that the sum of some variables in the problem should be equal to a certain fixed value (1 in this example). I am not quite familiar with the problem structure in these problems, and could not find any examples in the Matlab documentation. The code below shows the set up I have right now:
x0 = [zeros(1,N_plies) ones(1,N_plies)*t/N_plies];
lb = [-ones(1,N_plies)*90 zeros(1,N_plies)];
ub = [ones(1,N_plies)*90 ones(1,N_plies)*t];
c = @(x) sum(x(end/2+1:end)) == 1; %this does not work as handle for 'nonlcon'
opts = optimoptions(@fmincon,'Algorithm','sqp');
problem = createOptimProblem('fmincon','objective',...
@(x) ABDobjective(x),'x0',x0,'lb',lb,'ub',ub,'nonlcon',c,'options',opts);
Does anybody know of a way to make this work, or where there might be more information on how to set up this sort of structure?
Thanks,
Luca

Accepted Answer

Matt J
Matt J on 17 May 2022
x0 = zeros(1,N_plies);
lb = [-ones(1,N_plies)*90 zeros(1,N_plies)];
ub = [ones(1,N_plies)*90 ones(1,N_plies)*t];
Aeq=zeros(size(lb)); Aeq(end/2+1:end) = 1; %the sum constraint
beq=1;
opts = optimoptions(@fmincon,'Algorithm','sqp');
problem = createOptimProblem('fmincon','objective',...
@(x) ABDobjective(x),'x0',x0,'lb',lb,'ub',ub,'Aeq',Aeq,'beq',beq,'options',opts);
  1 Comment
Luca Lange
Luca Lange on 17 May 2022
Perfect! Did not know about this... (https://nl.mathworks.com/help/optim/ug/linprog.html)

Sign in to comment.

More Answers (1)

Torsten
Torsten on 17 May 2022
Aeq = [zeros(1,N_plies),ones(1,N_plies)];
beq = 1.0;

Community Treasure Hunt

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

Start Hunting!

Translated by