ncp_sigmoid/Sigmoid函数法/snd_Constant.m

62 lines
3.2 KiB
Matlab
Raw 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]=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,hx,Vmax,Vmin,Zt,Zb,bei,mu0,oneTrans,oneCap)
%程序功能连续化处理过程形成扰动KKT方程不平衡量矩阵
%编写时间2010年10月
%% 形成目标函数一阶偏导矩阵▽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=-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=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
%% 不等式约束项
tmp=1;
Zbmin=-tmp*bei*mu0*oneCap; %这里加入了ZtZb的取值限制在陡度参数初值的一定倍数取20倍ZtZb取到这个值已经非常接近0或1
Zbmax=tmp*bei*mu0*oneCap; %完全可以保证范围内这样处理既能不影响计算精度还可以避免由于ZtZb的绝对值取值过大
Ztmin=-tmp*bei*mu0*oneTrans; %使得离散变量过早固定在0或1处而导致收敛困难
Ztmax=tmp*bei*mu0*oneTrans;
gxT=Zt;
gxTx=Ztmin;
gxTs=Ztmax;
gxv=[PG(pgNode);QR(pvNode);Zb;e.^2+f.^2]; %约束条件当前值
gxvx=[Pmin(pgNode);pvQmin(pvNode);Zbmin;Vmin.*Vmin]; %约束下限
gxvs=[Pmax(pgNode);pvQmax(pvNode);Zbmax;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=[gxT;gxv;gxl]; %组合所有约束条件
gxx=[gxTx;gxvx;gxlx];
gsx=[gxTs;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]; %修正方程常数项向量