Hello!Johan.
I have a nonlinear constraint like this:
z+(1/b)(1/N)sum (max[fj,0]) j=1-N <=0,
fj = A-sum (uivi,j(xi+yi)) i=1-n,
Blo_max=0.1;
N=1000;
q=b*.1;
dt=24;
n=length(a);
ORR=ones(1,n)-exp(-dt./MTTF);
P=sdpvar(1,n);
R=sdpvar(1,n);
u=binvar(1,n);
z0=sdpvar(1,1);
R_tot=sdpvar(1,1);
constraints=[R>=0,Pmin<=P<=Pmax,R<=Pmax-P,sum(P)==Pd,sum(R)==R_tot];
for i=1:N
v(i,:)=rand(1,n)>ORR;
end
z=max((Pd-sum(u.*v(1,:).*(P+R))-z0),0);
for i=2:N
z=z+max((Pd-sum(u.*v(i,:).*(P+R))-z0),0);
end
constraints=[constraints,(z/N/Blo_max+z0)<=0];
Cost=sum(a.*P.*P+b.*P+c+q.*R);
objective=Cost;
sol = solvesdp(constraints,objective)
if sol.problem == 0
u = double(u)
P = double(P)
R = double(R)
cost=double(Cost)
z0=double(z0)
else
display('Hmm, something went wrong!');
end
product = sdpvar(1,10);for i = 1:10constraints = [constraints, implies(u(i), product(i) == P(i)+R(i))];constraints = [constraints, implies(1-u(i), product(i) == 0)];endconstraints = [constraints,R <= Pmax, 0 <= product <= 2*Pmax];
z=max((Pd-sum(product.*v(1,:))-z0),0);for i=2:N z=z+max((Pd-sum(product.*v(i,:))-z0),0);end
constraints = [constraints, implies(u(:), product(:) == P(:)+R(:))];constraints = [constraints, implies(1-u(:), product(:) == 0)];
for i = 1:10,
sol = solvesdp([sum(u)<=i,constraints],objective,sdpsettings('verbose',0));
if sol.problem == 0
double(objective);
end
end
ans =
2.1327e+04
ans =
2.1283e+04
ans =
2.1237e+04
ans =
2.1192e+04
ans =
2.1149e+04
ans =
2.1128e+04
ans =
2.1106e+04
ans =
2.1085e+04