24 lines
857 B
Matlab
Executable File
24 lines
857 B
Matlab
Executable File
function [F,ProblemClass] = modelComplementarityConstraints(F,solver,ProblemClass)
|
|
|
|
i = find(is(F,'complementarity'));
|
|
Fc = F(i);
|
|
F(i)=[];
|
|
for i = 1:length(Fc)
|
|
X = sdpvar(Fc(i));
|
|
C1 = X(:,1);
|
|
C2 = X(:,2);
|
|
if solver.constraint.equalities.polynomial == 1
|
|
[M,m]=derivebounds(C1);
|
|
F = [F,C1>=0, C2>=0, C1'*C2 == 0];
|
|
ProblemClass.constraint.equalities.polynomial = 1;
|
|
elseif (solver.constraint.binary == 1) | (solver.constraint.integer == 1)
|
|
[M1,m1]=derivebounds(C1);
|
|
[M2,m2]=derivebounds(C2);
|
|
delta = struct(Fc(i)).clauses{1}.extra.indicators;
|
|
% delta = binvar(length(C1),1);
|
|
F = [F, C1>=0, C2>=0, C1<= M1.*delta, C2 <= M2.*(1-delta)];
|
|
ProblemClass.constraint.binary = 1;
|
|
ProblemClass.constraint.inequalities.elementwise.linear = 1;
|
|
end
|
|
end
|