ncp_sigmoid/NCP函数法/snd_Constant.m

58 lines
2.9 KiB
Mathematica
Raw Permalink Normal View History

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)
%<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̣<EFBFBD><EFBFBD>γ<EFBFBD><EFBFBD>Ŷ<EFBFBD>KKT<EFBFBD><EFBFBD><EFBFBD>̲<EFBFBD>ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
%<EFBFBD><EFBFBD>дʱ<EFBFBD>2010<EFBFBD><EFBFBD>11<EFBFBD><EFBFBD>
%% <EFBFBD>γ<EFBFBD>Ŀ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>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
%% <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽԼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
gxv=[PG(pgNode);QR(pvNode);e.^2+f.^2]; %Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰֵ
gxvx=[Pmin(pgNode);pvQmin(pvNode);Vmin.*Vmin]; %Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
gxvs=[Pmax(pgNode);pvQmax(pvNode);Vmax.*Vmax]; %Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
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;%<EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>ǰֵ
gxlx=-ones(lineNum,1)*1000; %<EFBFBD><EFBFBD>·Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
gxls=ones(lineNum,1)*1000; %<EFBFBD><EFBFBD>·Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
gx=[gxv;gxl]; %<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
gxx=[gxvx;gxlx];
gsx=[gxvs;gxls];
Lz=gx-l-gxx;
Lw=gx+u-gsx;
%% <EFBFBD>γ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
muUL=mu*(U1-L1);
BB1=UW*Lw-LZ*Lz-muUL*ones(r,1);
BB=dhx*y-dfx+dgx*BB1; %<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(.,<EFBFBD><EFBFBD>)
BB(transNum+pgvNum+capNum+nodeNum+balNode,1)=0; %<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD>鲿<EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>Ϊ0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD>0
BB(transNum+pgvNum+capNum+balNode,1)=0; %<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD>ѹʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
const=[BB;hx]; %<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BB0=dhx*y-dfx+dgx*(z+w); %<EFBFBD>˲<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>󲽳<EFBFBD>ʱʹ<EFBFBD><EFBFBD>
BB0(transNum+pgvNum+capNum+nodeNum+balNode,1)=0;
BB0(transNum+pgvNum+capNum+balNode,1)=0;
origConst=[BB0;hx];