您的位置:首页 > 编程语言 > MATLAB

matlab Yalmip 求解电力系统鲁棒调度问题例子

2017-02-21 10:52 477 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: