15 lines
529 B
Mathematica
15 lines
529 B
Mathematica
|
|
function p = addComplementarityCuts(p)
|
||
|
|
|
||
|
|
if size(p.complementary,1)>0
|
||
|
|
p_cut = emptyNumericalModel;
|
||
|
|
for i = 1:size(p.complementary,1)
|
||
|
|
variables = p.complementary(i,:);
|
||
|
|
if p.lb(variables(1))>0 & p.lb(variables(2))>0
|
||
|
|
p_cut.F_struc(end+1,1)=p.ub(variables(2));
|
||
|
|
p_cut.F_struc(end,1+variables(1))=-p.ub(variables(2))/p.ub(variables(1));
|
||
|
|
p_cut.F_struc(end,1+variables(2))=-1;
|
||
|
|
p_cut.K.l = p_cut.K.l + 1;
|
||
|
|
end
|
||
|
|
end
|
||
|
|
p = mergeNumericalModels(p,p_cut);
|
||
|
|
end
|