📄 fm_opfrep.m
字号:
else idx = 1;endif ntrasf > 0 idx = idx + 1; Matrix{2,1}(idx,1) = ntrasf; Rows{2,1}{idx,1} = 'Transformers:';endMatrix{2,1}(idx+1,1) = SW.n+PV.n;Rows{2,1}{idx+1,1} = 'Generators:';Matrix{2,1}(idx+2,1) = PQ.n;Rows{2,1}{idx+2,1} = 'Loads:';Matrix{2,1}(idx+3,1) = Supply.n;Rows{2,1}{idx+3,1} = 'Supplies:';Matrix{2,1}(idx+4,1) = (~noDem)*Demand.n;Rows{2,1}{idx+4,1} = 'Demands:';% statistics of the current solution algorithmHeader{3,1} = 'SOLUTION STATISTICS';Cols{3,1} = '';bindings = length(find(round(OPF.guess(n_s+1:2*n_s)*1e5)));Rows{3,1} = {'Objective Function [$/h]:'; ... 'Active Limits:'; ... 'Number of Iterations:'; ... 'Barrier Parameter:'; ... 'Variable Mismatch:'; 'Power Flow Equation Mismatch:'; 'Objective Function Mismatch:'};Matrix{3,1} = [OPF.obj*MVA;bindings;OPF.iter;... OPF.ms;OPF.dy;OPF.dF;OPF.dG];if OPF.init == 2 Rows{3,1}{1,1} = 'Objective Function:'; Rows{3,1}{7,1} = 'Weighting Factor:'; Matrix{3,1}(7,1) = OPF.w;end% Power SuppliesHeader{4,1} = 'POWER SUPPLIES';Cols{4,1} = {'Bus','mu min','Ps min','Ps','Ps max','mu max'; ... ' ',' ','[MW]','[MW]','[MW]',' '};for kkk = 1:Supply.n Rows{4,1}{kkk,1} = Varname.bus{Supply.bus(kkk)};endMatrix{4,1} = [mu_Psmin,Psmin*MVA,Ps*MVA,Psmax*MVA,mu_Psmax];idx = 5;% Power Demandsif Demand.n & ~noDem Header{idx,1} = 'POWER DEMANDS'; Cols{idx,1} = {'Bus','mu min','Pd min','Pd','Pd max','mu max'; ... ' ',' ','[MW]','[MW]','[MW]',' '}; for kkk = 1:Demand.n Rows{idx,1}{kkk,1} = Varname.bus{Demand.bus(kkk)}; end Matrix{idx,1} = [mu_Pdmin,Pdmin*MVA,Pd*MVA,Pdmax*MVA,mu_Pdmax]; idx = idx+1;end% Reactive PowersHeader{idx,1} = 'REACTIVE POWERS';Cols{idx,1} = {'Bus','mu min','Qg min','Qg','Qg max','mu max'; ... ' ',' ','[MVar]','[MVar]','[MVar]',' '};for kkk = 1:n_gen Rows{idx,1}{kkk,1} = Varname.bus{busG(kkk)};endMatrix{idx,1} = [mu_Qgmin,Qgmin*MVA,Qg*MVA,Qgmax*MVA,mu_Qgmax];idx = idx+1;if OPF.init == 2 Header{idx,1} = 'CRITICAL REACTIVE POWERS'; Cols{idx,1} = {'Bus','mu min','Qgc min','Qgc','Qgc max','mu max'; ... ' ',' ','[MVar]','[MVar]','[MVar]',' '}; for kkk = 1:n_gen Rows{idx,1}{kkk,1} = Varname.bus{busG(kkk)}; end Matrix{idx,1} = [mu_Qgcmin,Qgmin*MVA,Qgc*MVA,Qgmax*MVA,mu_Qgcmax]; idx = idx+1;end% Power Reservesif Rsrv.n Header{idx,1} = 'POWER RESERVES'; Cols{idx,1} = {'Bus','mu min','Pr min','Pr','Pr max','mu max'; ... ' ',' ','[MW]','[MW]','[MW]',' '}; for kkk = 1:Rsrv.n Rows{idx,1}{kkk,1} = Varname.bus{Rsrv.bus(kkk)}; end Matrix{idx,1} = [mu_Prmin,Prmin*MVA,Pr*MVA,Prmax*MVA,mu_Prmax]; idx = idx+1; Header{idx,1} = 'POWER RESERVE BALANCE'; Cols{idx,1} = {' ','Sum Pr','Sum Pd','mu'; ... ' ','[MW]','[MW]',' '}; Rows{idx,1} = {' '}; Matrix{idx,1} = [sum(Pr)*MVA,sum(Pd)*MVA,mu_sumPrd]; idx = idx+1; endif OPF.init == 2 Header{idx,1} = 'LAMBDA'; Cols{idx,1} = {' ','mu min','lambda min','lambda','lambda max','mu max'}; Rows{idx,1} = {' '}; Matrix{idx,1} = [mu_lcmin, OPF.lmin, lambda, OPF.lmax, mu_lcmin]; idx = idx+1; endswitch OPF.flow case 1, I = 'I'; case 2, I = 'P'; case 3, I = 'S';end% VoltagesHeader{idx,1} = 'VOLTAGES';Cols{idx,1} = {'Bus','mu min','V min','V','V max','mu max',... 'phase';' ',' ','[p.u.]','[p.u.]','[p.u.]',' ',... '[rad]'};Rows{idx,1} = Varname.bus;Matrix{idx,1} = [mu_Vmin,Vmin,V,Vmax,mu_Vmax,a];idx = idx+1;if OPF.init == 2 Header{idx,1} = 'CRITICAL VOLTAGES'; Cols{idx,1} = {'Bus','mu min','Vc min','Vc','Vc max','mu max',... 'phase';' ',' ','[p.u.]','[p.u.]','[p.u.]',' ',... '[rad]'}; Rows{idx,1} = Varname.bus; Matrix{idx,1} = [mu_Vcmin,Vmin,Vc,Vmax,mu_Vcmax,ac]; idx = idx+1;end% Power flowHeader{idx,1} = 'POWER FLOW';Cols{idx,1} = {'Bus','P','Q','rho P','rho Q','NCP','Pay'; ... ' ','[MW]','[MVar]','[$/MWh]','[$/MVArh]',... '[$/MWh]','[$/h]'};Rows{idx,1} = Varname.bus;Matrix{idx,1} = [DAE.glfp*MVA,DAE.glfq*MVA,-rhop,... -rhoq,OPF.NCP([1:Bus.n]),round(Pay)];idx = idx+1;if OPF.init == 2 Header{idx,1} = 'CRITICAL POWER FLOW'; Cols{idx,1} = {'Bus','Pc','Qc','rho Pc','rho Qc'; ... ' ','[MW]','[MVar]',' ',' '}; Rows{idx,1} = Varname.bus; Matrix{idx,1} = [OPF.gpc*MVA,OPF.gqc*MVA,-rhopc,-rhoqc]; idx = idx+1;end% Flows in transmission linesif OPF.init == 1 Header{idx,1} = 'FLOWS IN TRANSMISSION LINES'; Cols{idx,1} = {'From bus','To bus',[I,'_ij'],[I,'_ij max'], ... ['mu ',I,'_ij'];' ',' ','[p.u.]','[p.u.]',' '}; for kkk = 1:Line.n Rows{idx,1}{kkk,1} = Varname.bus{Line.from(kkk)}; Rows{idx,1}{kkk,2} = Varname.bus{Line.to(kkk)}; end Matrix{idx,1} = [Iij,Iijmax,mu_Iijmax]; idx = idx+1; Header{idx,1} = 'FLOWS IN TRANSMISSION LINES'; Cols{idx,1} = {'From bus','To bus',[I,'_ji'],[I,'_ji max'], ... ['mu ',I,'_ji'];' ',' ','[p.u.]','[p.u.]',' '}; for kkk = 1:Line.n Rows{idx,1}{kkk,1} = Varname.bus{Line.to(kkk)}; Rows{idx,1}{kkk,2} = Varname.bus{Line.from(kkk)}; end Matrix{idx,1} = [Iji,Iijmax,mu_Ijimax]; idx = idx+1;elseif OPF.init == 2 Header{idx,1} = 'FLOWS IN TRANSMISSION LINES'; Cols{idx,1} = {'From bus','To bus',[I,'_ij'],[I,'_ij c'],[I,'_ij max'], ... ['mu ',I,'_ij'],['mu ',I,'_ij c']; ... ' ',' ','[p.u.]','[p.u.]','[p.u.]',' ',' '}; for kkk = 1:Line.n Rows{idx,1}{kkk,1} = Varname.bus{Line.from(kkk)}; Rows{idx,1}{kkk,2} = Varname.bus{Line.to(kkk)}; end Matrix{idx,1} = [Iij,Iijc,Iijmax,mu_Iijmax,mu_Iijcmax]; idx = idx+1; Header{idx,1} = 'FLOWS IN TRANSMISSION LINES'; Cols{idx,1} = {'From bus','To bus',[I,'_ji'],[I,'_ji c'],[I,'_ji max'], ... ['mu ',I,'_ji'],['mu ',I,'_ji c']; ... ' ',' ','[p.u.]','[p.u.]','[p.u.]',' ',' '}; for kkk = 1:Line.n Rows{idx,1}{kkk,1} = Varname.bus{Line.to(kkk)}; Rows{idx,1}{kkk,2} = Varname.bus{Line.from(kkk)}; end Matrix{idx,1} = [Iji,Ijic,Iijmax,mu_Ijimax,mu_Ijicmax]; idx = idx+1;end% TotalsHeader{idx,1} = 'TOTALS';Cols{idx,1} = '';Rows{idx,1} = {'TOTAL LOSSES [MW]:';'BID LOSSES [MW]';... 'TOTAL DEMAND [MW]:';'TTL [MW]:';'IMO PAY [$/h]:'};tot_loss = 1e-5*round((sum(DAE.glfp))*1e5)*MVA;if OPF.basepg length(Snapshot.V); ploss = Snapshot(1).Ploss;else ploss = 0;endbid_loss = 1e-5*round((sum(DAE.glfp)-ploss)*1e5)*MVA;tot_demd = sum(Pd)*MVA;if ~Demand.n ttl = tot_demd;else ttl = sum(Pd)*MVA+OPF.basepl*sum(PQ.con(:,4))*MVA;endMatrix{idx,1} = [tot_loss; bid_loss;... tot_demd;ttl;ISOPay];idx = idx + 1;if OPF.init == 2 Header{idx,1} = 'MAXIMUM LOADING CONDITION'; Cols{idx,1} = ''; Rows{idx,1} = {'LAMBDA:';'DISTRIBUTED LOSSES KG:';... 'MAXIMUM LOADING COND. [MW]:'; ... 'AVAILABLE LOADING COND. [MW]:'}; if ~Demand.n MLC = (1+lambda)*sum(Pd)*MVA; ALC = lambda*sum(Pd)*MVA; else MLC = (1+lambda)*(sum(Pd)+sum(PQ.con(:,4)))*MVA; ALC = lambda*(sum(Pd)+sum(PQ.con(:,4)))*MVA; end Matrix{idx,1} = [lambda; kg; MLC; ALC]; endif noDem, Demand.n = 0; end% writing data...filename = [fm_filenum(Settings.export),['.',Settings.export]];switch Settings.export case 'txt' fm_writetxt(Matrix,Header,Cols,Rows,filename) case 'xls' fm_writexls(Matrix,Header,Cols,Rows,filename) case 'tex' fm_writetex(Matrix,Header,Cols,Rows,filename)end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -