function [ output_args,this ] = equ( this,x ) %EQU Summary of this function goes here % Detailed explanation goes here PDi=this.PDi; QDi=this.QDi; Volt0=this.Volt0; Angel=this.Angel; r=this.r; c=this.c; PG=this.PG; QG=this.QG; Balance=this.Balance; Y=this.Y; PD=x(1:length(PDi)); QD=x(length(PDi)+1:length(PDi)+length(QDi)); Volt=x(length(PDi)+length(QDi)+1:length(PDi)+length(QDi)+length(Volt0)); VAngel=x(length(PDi)+length(QDi)+length(Volt0)+1:end); PD_=zeros(length(Volt0),1); QD_=zeros(length(Volt0),1); PD_(PDi)=PD; QD_(QDi)=QD; busNum=length(Volt0); VMatrix=sparse(r,c,VAngel(r)-VAngel(c)-Angel,busNum,busNum); dP=PG-PD_-diag(Volt)*(Y.*cos(VMatrix))*Volt; dQ=QG-QD_-diag(Volt)*(Y.*spfun(@sin,VMatrix))*Volt; output_args=[dP;dQ;VAngel(Balance)]; this.cu=zeros(length(output_args),1); this.cl=this.cu; %% 开始增加不等式约束-电压\PD\QD %电压不等式约束 output_args=[output_args;Volt]; this.cu=[this.cu;1.1*ones(length(Volt),1)]; this.cl=[this.cl;0.9*ones(length(Volt),1)]; %% PD rPD=this.rPD; output_args=[output_args;PD]; this.cu=[this.cu;1.2*rPD]; this.cl=[this.cl;0.8*rPD]; %% QD rQD=this.rQD; output_args=[output_args;QD]; this.cu=[this.cu;1.2*rQD]; this.cl=[this.cl;0.8*rQD]; %% 稠密化 output_args=full(output_args); this.cu=full(this.cu); this.cl=full(this.cl); end