1. 程式人生 > >matlab Yalmip 求解電力系統魯棒排程問題例子

matlab Yalmip 求解電力系統魯棒排程問題例子

idxcg = [1:3];
idxwg = [4:5];

ncg = 3;
nwg = 2;

%%定義Yalmip 需要的變數
sdpvar cg(3,1)
sdpvar dwg(2,1)

%% 帶有名字的優化問題約束條件
P_balance = [sum(bus(:,3))/100 == sum([cg;prewg]) ];

Icg = sparse(gen(idxcg,1),1:ncg,ones(ncg,1),nb,ncg);
Iwg = sparse(gen(idxwg,1),1:nwg,ones(nwg,1),nb,nwg);
% Dcg = repmat([0.3;0.4;0.3],1,2);%distribution factor
Dcg = repmat([0.18; 0.03; 0.79],1,2);%distribution factor

Thermal_Limit = [dis_fac*(Icg*(cg+(-Dcg*dwg))+Iwg*(prewg+dwg) - bus(:,3)/100)<=branch(:,6)/100];

Pcg_limit = [gen(idxcg,10)/100<= cg+(-Dcg*dwg) <= gen(idxcg,9)/100];%uncertain([Pg wg1 wg2])

%get convex hull for uncertainty data
[abc,bnd] =pair_counvex_hull_example();% pair_convex_hull1();
% if 0
    Pwg_limit0 = [bnd(:,1)<= dwg <= bnd(:,2),uncertain(dwg)];
% else
%     Pwg_limit = [gen(3:4,10)/100<= wg <= gen(3:4,9)/100];
%%不確定集合的表述
Pwg_limit1 = [abc(:,1:2) * dwg + abc(:,3) <= 0,uncertain(dwg)];
% end
% cons = [ P_balance + Pcg_limit + Pwg_limit0  ];
%%綜合約束條件
cons = [P_balance + Pcg_limit + Pwg_limit0 + Thermal_Limit ];

%%目標函式
objective =  sum(gencost(idxcg,5).*[cg].^2+gencost(idxcg,6).*[cg]+gencost(idxcg,7));

%% 執行優化計算
sol1 = optimize(cons,objective)
% sol = optimize(cons,objective,sdpsettings('robust.lplp','duality'))

%%提取具體數值
vcg = value(cg)
% vwg = value(wg)
if sol1.problem == 0
   valobj1 = value(objective);
else
    valobj1 = 0;
end