ncp_sigmoid/NCP函数法/snd_Constant.m

58 lines
2.9 KiB
Matlab
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

function [const,Lz,Lw,L1,U1,hx,origConst,gxx,gsx]=snd_Constant(nodeNum,opfGoal,lineNum,transNum,transI,...
transJ,transG,transB,lineI,lineJ,balNode,mu,G,B,GIJ,BIJ,e,f,Pmin,Pmax,a,b,PG,QR,pvQmin,pvQmax,...
pgNum,pgvNum,xNum,pgNode,pvNode,dhx,dgx,L1,U1,LZ,UW,l,u,y,r,dT_Zt,capNum,z,w,Vmin,Vmax,hx)
%程序功能光滑处理过程形成扰动KKT方程不平衡量矩阵
%编写时间2010年11月
%% 形成目标函数的一阶偏导矩阵▽f(.)
if(opfGoal==2)
dPG=ones(pgNum,1);
dfx=sparse(transNum+1:transNum+pgNum,ones(pgNum,1),dPG,xNum,1);
else if(opfGoal==1)
dPG=2*a(pgNode).*PG(pgNode)+b(pgNode);
dfx=sparse(transNum+1:transNum+pgNum,ones(pgNum,1),dPG,xNum,1);
else if(opfGoal==3)
dfT=-1*transG.*dT_Zt.*((f(transI)-f(transJ)).^2+(e(transI)-e(transJ)).^2);
dfPQ=zeros(pgvNum,1);
dfcapK=zeros(capNum,1);
EE=e*ones(1,nodeNum);
FF=f*ones(1,nodeNum);
dfe=2*sum(G.*(EE-EE'));
dff=2*sum(G.*(FF-FF'));
dfx=[dfT;dfPQ;dfcapK;dfe';dff'];
else if(opfGoal==4)
dfT=1*transB.*dT_Zt.*((f(transI)-f(transJ)).^2+(e(transI)-e(transJ)).^2);
dfPQ=zeros(pgvNum,1);
dfcapK=zeros(capNum,1);
EE=e*ones(1,nodeNum);
FF=f*ones(1,nodeNum);
dfe=2*sum(B.*(EE-EE'));
dff=2*sum(B.*(FF-FF'));
dfx=[dfT;dfPQ;dfcapK;dfe';dff'];
end
end
end
end
%% 不等式约束项
gxv=[PG(pgNode);QR(pvNode);e.^2+f.^2]; %约束条件当前值
gxvx=[Pmin(pgNode);pvQmin(pvNode);Vmin.*Vmin]; %约束下限
gxvs=[Pmax(pgNode);pvQmax(pvNode);Vmax.*Vmax]; %约束上限
gxl=(e(lineI).*e(lineI)+f(lineI).*f(lineI)-e(lineI).*e(lineJ)-f(lineI).*f(lineJ)).*GIJ+(e(lineI).*f(lineJ)-e(lineJ).*f(lineI)).*BIJ;%线路功率当前值
gxlx=-ones(lineNum,1)*1000; %线路约束下限
gxls=ones(lineNum,1)*1000; %线路约束上限
gx=[gxv;gxl]; %组合所有约束条件
gxx=[gxvx;gxlx];
gsx=[gxvs;gxls];
Lz=gx-l-gxx;
Lw=gx+u-gsx;
%% 形成修正方程常数项向量
muUL=mu*(U1-L1);
BB1=UW*Lw-LZ*Lz-muUL*ones(r,1);
BB=dhx*y-dfx+dgx*BB1; %修正方程常数项ψ(.,μ)
BB(transNum+pgvNum+capNum+nodeNum+balNode,1)=0; %保持平衡节点电压虚部不变始终为0则常数项平衡节点处置0
BB(transNum+pgvNum+capNum+balNode,1)=0; %保持平衡节点电压实部不变
const=[BB;hx]; %修正方程常数项向量
BB0=dhx*y-dfx+dgx*(z+w); %此部分在求步长时使用
BB0(transNum+pgvNum+capNum+nodeNum+balNode,1)=0;
BB0(transNum+pgvNum+capNum+balNode,1)=0;
origConst=[BB0;hx];