D = [ 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000 ];
Pmin = 1;Pmax = 2;C_P = 3;
Gen = [
%Pmin, Pmax, C_P,
450.0, 900.0, 20;
250.0, 700.0, 40;
100.0, 400.0, 65;
];
N = 3; T = 10;
v = binvar(N,T);
p = sdpvar(N,T);
ct = [];
for t = 1:T
ct = [ct ...
0 <= v(:,t) <= 1 ,...
0 <= p(:,t) <= Gen(:,Pmax),...
sum(p(:,t)) == D(t) ,...
Gen(:,Pmin) .* v(:,t) <= p(:,t) <= Gen(:,Pmax) .* v(:,t) ,...
];
end
c_p = repmat(Gen(:,C_P),1,T) .* p;
ob = sum(sum( c_p ));
solvesdp(ct,ob,sdpsettings('dualize',1));p1= double(p);v1 = double(v);
disp('----------------------------------------');
solvesdp(ct,ob,sdpsettings('dualize',0));p2 =double(p);v2 = double(v);
display(p1)
display(p2)
display(v1)
display(v2)
p1 =
100 200 300 400 500 600 700 800 900 900
0 0 0 0 0 0 0 0 0 100
0 0 0 0 0 0 0 0 0 0
p2 =
0 0 0 0 500 600 700 800 900 900
0 0 300 400 0 0 0 0 0 0
100 200 0 0 0 0 0 0 0 100
v1 =
0.1111 0.2222 0.3333 0.4444 0.5556 0.6667 0.7778 0.8889 1.0000 1.0000
0 0 0 0 0 0 0 0 0 0.1429
0 0 0 0 0 0 0 0 0 0
v2 =
0 0 0 0 1 1 1 1 1 1
0 0 1 1 0 0 0 0 0 0
1 1 0 0 0 0 0 0 0 1
Gen(:,Pmin) .* v(:,t) <= p(:,t) <= Gen(:,Pmax) .* v(:,t)
%implies(v(n,t), Gen(n,Pmin) <= p(n,t) <= Gen(n,Pmax)), ...
%implies(Gen(n,Pmin) <= p(n,t) <= Gen(n,Pmax), v(n,t)), ...
%iff(v(n,t), Gen(n,Pmin) <= p(n,t) <= Gen(n,Pmax)), ...
%iff(Gen(n,Pmin) <= p(n,t) <= Gen(n,Pmax), v(n,t)), ...