ncp_sigmoid/NCP函数法/readData.m

68 lines
4.3 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 [nodeNum,lineNum,capacity,kmax,centrPara,accuracy,opfGoal,balNum,balNode,mtrLine,mtrGround,mtrTrans,runPara,Pg,Qg,Pd,Qd,pvNum,pvNode,pvV,...
pvQmin,pvQmax,pgNumall,pgNodeall,pgNum,pgNode,a,b,c,Pmin,Pmax,capNum,capI,capGi,capBi,capK,capKmin,capKmax,Vmin,Vmax]=readData(data)
%程序功能:读取数据
%编写时间2010年11月
%% 读取系统参数
nodeNum=data(1,1); %系统节点数
lineNum=data(1,2); %线路变压器数
capacity=data(1,3); %基准容量
kmax=data(1,4); %最大迭代次数
centrPara=data(1,5); %中心参数
accuracy=data(2,1); %计算精度
opfGoal=data(2,2); %目标函数类型
balNum=data(3,1); %平衡节点数
balNode=data(3,2); %平衡节点编号
%% 获取首列元素为0的行号
zeroIndex=find(data(:,1)==0);
%% 读取线路参数
mtrLine=data(zeroIndex(1)+1:zeroIndex(2)-1,:);
%% 读取接地支路参数
mtrGround=data(zeroIndex(2)+1:zeroIndex(3)-1,:);
%% 读取变压器支路参数
mtrTrans=data(zeroIndex(3)+1:zeroIndex(4)-1,:);
%% 读取运行参数
runPara=data(zeroIndex(4)+1:zeroIndex(5)-1,:);
pqNode=runPara(:,1);
Pg=sparse(nodeNum,1);
Qg=Pg;Pd=Pg;Qd=Pg;
Pg(pqNode)=runPara(:,2)/capacity; %节点有功出力
Qg(pqNode)=runPara(:,3)/capacity; %节点无功出力
Pd(pqNode)=runPara(:,4)/capacity; %节点有功负荷
Qd(pqNode)=runPara(:,5)/capacity; %节点无功负荷
%% 读取PV节点和平衡节点参数
mtrPV=data(zeroIndex(5)+1:zeroIndex(6)-1,:);
pvNum=zeroIndex(6)-zeroIndex(5)-1;
pvNode=sparse(mtrPV(:,1),ones(pvNum,1),mtrPV(:,1),nodeNum,1);
pvNode=find(pvNode); %PV节点和平衡节点编号
pvV=sparse(mtrPV(:,1),ones(pvNum,1),mtrPV(:,2),nodeNum,1); %PV节点和平衡节点给定电压
pvQmin=sparse(mtrPV(:,1),ones(pvNum,1),mtrPV(:,3),nodeNum,1)/capacity; %无功出力下限
pvQmax=sparse(mtrPV(:,1),ones(pvNum,1),mtrPV(:,4),nodeNum,1)/capacity; %无功出力上限
%% 读取经济参数
economyPara=data(zeroIndex(6)+1:zeroIndex(7)-1,:);
[ecoRow,ecoCol]=size(economyPara);
if ecoCol==7
pgctrl=find(economyPara(:,7)); %可调发电机的下标
else
pgctrl=1:ecoRow;
end
pgNumall=zeroIndex(7)-zeroIndex(6)-1; %发电机台数
pgNodeall=economyPara(:,1); %发电机节点号
pgNum=length(pgctrl); %可调发电机台数
pgNode=pgNodeall(pgctrl); %可调发电机节点号
c=sparse(economyPara(:,1),ones(pgNum,1),economyPara(:,2),nodeNum,1);
b=sparse(economyPara(:,1),ones(pgNum,1),economyPara(:,3),nodeNum,1);
a=sparse(economyPara(:,1),ones(pgNum,1),economyPara(:,4),nodeNum,1);
Pmin=sparse(economyPara(:,1),ones(pgNum,1),economyPara(:,5),nodeNum,1)/capacity;%发电机有功出力下限
Pmax=sparse(economyPara(:,1),ones(pgNum,1),economyPara(:,6),nodeNum,1)/capacity;%发电机有功出力上限
%% 读可调电容器组参数
capPara=data(zeroIndex(7)+1:zeroIndex(8)-1,:);
capNum=zeroIndex(8)-zeroIndex(7)-1;
capI=capPara(:,2); %电容器投入节点编号
capGi=capPara(:,3); %可调电容器单位电导
capBi=capPara(:,4); %可调电容器单位电纳
capK=capPara(:,5); %初始电纳值
capKmin=capPara(:,6); %电容器最小档位
capKmax=capPara(:,7); %电容器最大档位
Vmin=0.9*ones(nodeNum,1); %节点电压下限
Vmax=1.07*ones(nodeNum,1); %节点电压上限