matlab Yalmip 求解電力系統魯棒排程問題例子
阿新 • • 發佈:2018-12-29
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