423 lines
14 KiB
C++
423 lines
14 KiB
C++
|
|
#include "head.h"
|
|||
|
|
//int extern balance_node;
|
|||
|
|
#include "qt_readxml.h"
|
|||
|
|
#include <iomanip>
|
|||
|
|
#include <iostream>
|
|||
|
|
using namespace std;
|
|||
|
|
bool Qt_readxml::XmlReaderwriteFile(QIODevice *file_output)
|
|||
|
|
{
|
|||
|
|
//std::cout<<"XmlReaderwriteFile"<<std::endl;
|
|||
|
|
QTextStream out(file_output);
|
|||
|
|
|
|||
|
|
int breakerNo = breaker.size();
|
|||
|
|
int headBus;
|
|||
|
|
for (int i=0;i<breakerNo;i++)
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
if (breaker[i].MemberOf_EquipmentContainer_res.size())
|
|||
|
|
{
|
|||
|
|
headBus = breaker[i].flag;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
int line=acline_segment.size();
|
|||
|
|
int trans=power_transformer.size();
|
|||
|
|
for (int i=0;i<line;i++)
|
|||
|
|
{
|
|||
|
|
if (acline_segment[i].link_to>totalBus)
|
|||
|
|
{
|
|||
|
|
totalBus=acline_segment[i].link_to;
|
|||
|
|
maxIsland=acline_segment[i].island;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
for (int i=0;i<trans;i++)
|
|||
|
|
{
|
|||
|
|
if (power_transformer[i].link_2>totalBus)
|
|||
|
|
{
|
|||
|
|
totalBus=power_transformer[i].link_2;
|
|||
|
|
maxIsland=power_transformer[i].island;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
for (int i=0;i<line;i++)
|
|||
|
|
{
|
|||
|
|
if (acline_segment[i].island==maxIsland)
|
|||
|
|
totalLine++;
|
|||
|
|
}
|
|||
|
|
for (int i=0;i<trans;i++)
|
|||
|
|
{
|
|||
|
|
if (power_transformer[i].island==maxIsland)
|
|||
|
|
totalLine++;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*------------------------------------------
|
|||
|
|
输出第一行
|
|||
|
|
-------------------------------------------*/
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
out<<totalBus<<","<<totalLine<<","<<100<<","<<"1e-5"<<","<<"0""\r\n";
|
|||
|
|
out<<0<<"\r\n";
|
|||
|
|
|
|||
|
|
/*----------------------------------------
|
|||
|
|
平衡节点参数
|
|||
|
|
-----------------------------------------*/
|
|||
|
|
// balance_node=1;
|
|||
|
|
// out<<1<<","<<balance_node<<","<<1<<"\r\n";
|
|||
|
|
int sub_no=substation.size();
|
|||
|
|
int k=1;
|
|||
|
|
int sign=0;
|
|||
|
|
for (int i=0;i<sub_no;i++)
|
|||
|
|
{
|
|||
|
|
int node;
|
|||
|
|
if (sign)
|
|||
|
|
break;
|
|||
|
|
if (substation[i].GIS_type=="1001")
|
|||
|
|
{
|
|||
|
|
int connector_no=connector.size();
|
|||
|
|
for (int j=0;j<connector_no;j++)
|
|||
|
|
{
|
|||
|
|
if (connector[j].island==maxIsland)
|
|||
|
|
{
|
|||
|
|
if (connector[j].MemberOf_EquipmentContainer_res.size())
|
|||
|
|
{
|
|||
|
|
if (connector[j].MemberOf_EquipmentContainer_res[0].contains(substation[i].ID))
|
|||
|
|
{
|
|||
|
|
node = connector[j].link_from;
|
|||
|
|
substation[i].flag=node;
|
|||
|
|
out<<k<<","<<node<<","<<"1"<<"\r\n";
|
|||
|
|
k++;
|
|||
|
|
sign=1;
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
out<<0<<"\r\n";
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*----------------------------------------
|
|||
|
|
输出线路参数
|
|||
|
|
-----------------------------------------*/
|
|||
|
|
int no=acline_segment.size();
|
|||
|
|
k=1;
|
|||
|
|
for (int i=0;i<no;i++)
|
|||
|
|
{
|
|||
|
|
if (acline_segment[i].island==maxIsland)
|
|||
|
|
{
|
|||
|
|
out<<k<<","<<acline_segment[i].link_from<<","<<acline_segment[i].link_to<<","<<QString().sprintf("%.10lf",acline_segment[i].r)<<","<<QString().sprintf("%.10lf",acline_segment[i].x)<<","<<0<<","<<0<<"\r\n";
|
|||
|
|
k++;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
out<<0<<"\r\n";
|
|||
|
|
|
|||
|
|
/*-------------------------------------------
|
|||
|
|
输出变压器参数
|
|||
|
|
--------------------------------------------*/
|
|||
|
|
k=1;
|
|||
|
|
for (int i=0;i<trans;i++)
|
|||
|
|
{
|
|||
|
|
if (power_transformer[i].island==maxIsland)
|
|||
|
|
{
|
|||
|
|
out<<k<<","<<"0"<<","<<power_transformer[i].link_1<<","<<power_transformer[i].link_2<<","<<QString().sprintf("%.10lf",power_transformer[i].r)<<","<<QString().sprintf("%.10lf",power_transformer[i].x)<<","<<1<<","<<1<<","<<1<<","<<1<<"\r\n";
|
|||
|
|
k++;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
out<<0<<"\r\n";
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*-------------------------------------------
|
|||
|
|
输出移向变压器参数
|
|||
|
|
--------------------------------------------*/
|
|||
|
|
out<<1<<","<<0<<","<<0<<","<<0<<","<<0<<","<<0<<","<<0<<","<<0<<","<<0<<","<<0<<","<<0<<","<<0<<"\r\n";
|
|||
|
|
out<<0<<"\r\n";
|
|||
|
|
|
|||
|
|
/*-------------------------------------------
|
|||
|
|
输出接地支路参数
|
|||
|
|
--------------------------------------------*/
|
|||
|
|
k=1;
|
|||
|
|
for (int i=0;i<trans;i++)
|
|||
|
|
{
|
|||
|
|
if (power_transformer[i].island==maxIsland)
|
|||
|
|
{
|
|||
|
|
int high=power_transformer[i].link_1;
|
|||
|
|
if (high==power_transformer[i].low)
|
|||
|
|
{
|
|||
|
|
high=power_transformer[i].link_2;
|
|||
|
|
}
|
|||
|
|
out<<k<<","<<high<<","<<QString().sprintf("%.10lf",power_transformer[i].g)<<","<<QString().sprintf("%.10lf",power_transformer[i].b)<<"\r\n";
|
|||
|
|
k++;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
out<<0<<"\r\n";
|
|||
|
|
out<<0<<"\r\n";
|
|||
|
|
out<<0<<"\r\n";
|
|||
|
|
|
|||
|
|
/*-------------------------------------------
|
|||
|
|
输出节点功率参数
|
|||
|
|
--------------------------------------------*/
|
|||
|
|
|
|||
|
|
k=1;
|
|||
|
|
double UB=0;
|
|||
|
|
for (int i=1;i<=totalBus;i++)
|
|||
|
|
{
|
|||
|
|
for (int j=0;j<line;j++)
|
|||
|
|
{
|
|||
|
|
if ((acline_segment[j].link_from==i || acline_segment[j].link_to==i) && acline_segment[j].island==maxIsland)
|
|||
|
|
{
|
|||
|
|
UB=acline_segment[j].UB;
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if (!UB)
|
|||
|
|
{
|
|||
|
|
for (int j=0;j<trans;j++)
|
|||
|
|
{
|
|||
|
|
if ((power_transformer[j].link_1==i || power_transformer[j].link_2==i) && power_transformer[j].island==maxIsland)
|
|||
|
|
{
|
|||
|
|
UB=power_transformer[j].UB;
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
int m;
|
|||
|
|
for (m=0;m<trans;m++)
|
|||
|
|
{
|
|||
|
|
if (power_transformer[m].island==maxIsland)
|
|||
|
|
if (power_transformer[m].low == i)
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
if(m<trans)
|
|||
|
|
{
|
|||
|
|
double PL=((power_transformer[m].APower)+(power_transformer[m].BPower)+(power_transformer[m].CPower))/(base_power[0].basePower*1000);
|
|||
|
|
double QL=((power_transformer[m].AReactivePower)+(power_transformer[m].BReactivePower)+(power_transformer[m].CReactivePower))/(base_power[0].basePower*1000);
|
|||
|
|
if (PL==0 && QL==0)
|
|||
|
|
{
|
|||
|
|
out<<k<<","<<-1<<","<<i<<","<<UB<<","<<"0"<<","<<"0"<<","<<"-1"<<","<<"-1"<<","<<"0"<<","<<"0"<<"\r\n";
|
|||
|
|
k++;
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
out<<k<<","<<-1<<","<<i<<","<<UB<<","<<"0"<<","<<"0"<<","<<QString().sprintf("%.10lf",PL)<<","<<QString().sprintf("%.10lf",QL)<<","<<"0"<<","<<"0"<<"\r\n";
|
|||
|
|
k++;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
out<<k<<","<<-1<<","<<i<<","<<UB<<","<<"0"<<","<<"0"<<","<<"0"<<","<<"0"<<","<<"0"<<","<<"0"<<"\r\n";
|
|||
|
|
k++;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
out<<0<<"\r\n";
|
|||
|
|
/*----------------------------------------
|
|||
|
|
有功出力限制
|
|||
|
|
-----------------------------------------*/
|
|||
|
|
//out<<1<<","<<1<<","<<balance_node<<","<<1<<","<<"-100"<<","<<"100"<<","<<0<<","<<0<<","<<0<<","<<0<<"\r\n";
|
|||
|
|
k=1;
|
|||
|
|
sign=0;
|
|||
|
|
for (int i=0;i<sub_no;i++)
|
|||
|
|
{
|
|||
|
|
int node;
|
|||
|
|
if (sign)
|
|||
|
|
break;
|
|||
|
|
if (substation[i].GIS_type=="1001")
|
|||
|
|
{
|
|||
|
|
int connector_no=connector.size();
|
|||
|
|
for (int j=0;j<connector_no;j++)
|
|||
|
|
{
|
|||
|
|
if (connector[j].island==maxIsland)
|
|||
|
|
{
|
|||
|
|
if (connector[j].MemberOf_EquipmentContainer_res.size())
|
|||
|
|
{
|
|||
|
|
if (connector[j].MemberOf_EquipmentContainer_res[0].contains(substation[i].ID))
|
|||
|
|
{
|
|||
|
|
node = connector[j].link_from;
|
|||
|
|
substation[i].flag=node;
|
|||
|
|
out<<k<<","<<1<<","<<node<<","<<1<<","<<"-100"<<","<<"100"<<","<<0<<","<<0<<","<<0<<","<<0<<"\r\n";
|
|||
|
|
k++;
|
|||
|
|
sign=1;
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
out<<0<<"\r\n";
|
|||
|
|
out<<0<<"\r\n";
|
|||
|
|
|
|||
|
|
/*----------------------------------------
|
|||
|
|
功无出力限制
|
|||
|
|
-----------------------------------------*/
|
|||
|
|
//out<<1<<","<<1<<","<<balance_node<<","<<1<<","<<"1.0"<<","<<"-100"<<","<<"100"<<"\r\n";
|
|||
|
|
k=1;
|
|||
|
|
sign=0;
|
|||
|
|
for (int i=0;i<sub_no;i++)
|
|||
|
|
{
|
|||
|
|
int node;
|
|||
|
|
if (sign)
|
|||
|
|
break;
|
|||
|
|
if (substation[i].GIS_type=="1001")
|
|||
|
|
{
|
|||
|
|
int connector_no=connector.size();
|
|||
|
|
for (int j=0;j<connector_no;j++)
|
|||
|
|
{
|
|||
|
|
if (connector[j].island==maxIsland)
|
|||
|
|
{
|
|||
|
|
if (connector[j].MemberOf_EquipmentContainer_res.size())
|
|||
|
|
{
|
|||
|
|
if (connector[j].MemberOf_EquipmentContainer_res[0].contains(substation[i].ID))
|
|||
|
|
{
|
|||
|
|
node = connector[j].link_from;
|
|||
|
|
substation[i].flag=node;
|
|||
|
|
out<<k<<","<<1<<","<<node<<","<<1<<","<<"1.0"<<","<<"-100"<<","<<"100"<<"\r\n";
|
|||
|
|
k++;
|
|||
|
|
sign=1;
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
out<<0<<"\r\n";
|
|||
|
|
|
|||
|
|
out<<0<<"\r\n";
|
|||
|
|
|
|||
|
|
/*----------------------------------------
|
|||
|
|
电压限制
|
|||
|
|
-----------------------------------------*/
|
|||
|
|
out<<1<<","<<balance_node<<","<<0.999<<","<<1.001<<"\r\n";
|
|||
|
|
out<<0<<"\r\n";
|
|||
|
|
out<<0<<"\r\n";
|
|||
|
|
out<<0<<"\r\n";
|
|||
|
|
out<<0<<"\r\n";
|
|||
|
|
out<<0<<"\r\n";
|
|||
|
|
out<<0<<"\r\n";
|
|||
|
|
out<<0<<"\r\n";
|
|||
|
|
out<<0<<"\r\n";
|
|||
|
|
out<<0<<"\r\n";
|
|||
|
|
out<<0<<"\r\n";
|
|||
|
|
out<<0<<"\r\n";
|
|||
|
|
out<<0<<"\r\n";
|
|||
|
|
out<<0<<"\r\n";
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
// /*------------------------------------------
|
|||
|
|
// 输出第一行
|
|||
|
|
//-------------------------------------------*/
|
|||
|
|
// int bus=busbar_section.size();
|
|||
|
|
// int lineNo = acline_segment.size();
|
|||
|
|
// int trans=power_transformer.size();
|
|||
|
|
// int busNo=0;
|
|||
|
|
// for (int i=0;i<lineNo;i++)
|
|||
|
|
// {
|
|||
|
|
// if (acline_segment[i].link_from>busNo)
|
|||
|
|
// busNo=acline_segment[i].link_from;
|
|||
|
|
// if (acline_segment[i].link_to>busNo)
|
|||
|
|
// busNo=acline_segment[i].link_to;
|
|||
|
|
// }
|
|||
|
|
// for (int i=0;i<trans;i++)
|
|||
|
|
// {
|
|||
|
|
// if (power_transformer[i].link_1>busNo)
|
|||
|
|
// busNo=power_transformer[i].link_1;
|
|||
|
|
// if (power_transformer[i].link_2>busNo)
|
|||
|
|
// busNo=power_transformer[i].link_2;
|
|||
|
|
// }
|
|||
|
|
// double basePower= base_power[0].basePower;
|
|||
|
|
// //out<<busNo<<","<<lineNo+trans<<","<<basePower<<","<<"50"<<","<<"0.1"<<"\r\n";
|
|||
|
|
// out<<busbar_section[bus-1].flag<<","<<lineNo+trans<<","<<basePower<<","<<"50"<<","<<"0.1"<<"\r\n";
|
|||
|
|
// out<<"1e-5"<<","<<"2"<<"\r\n";
|
|||
|
|
// out<<"1"<<","<<headBus<<"\r\n";
|
|||
|
|
// out<<0<<"\r\n";
|
|||
|
|
|
|||
|
|
// /*----------------------------------------
|
|||
|
|
// 输出线路参数
|
|||
|
|
//-----------------------------------------*/
|
|||
|
|
// int no=acline_segment.size();
|
|||
|
|
// for (int i=0;i<no;i++)
|
|||
|
|
// {
|
|||
|
|
// out<<i+1<<","<<acline_segment[i].link_from<<","<<acline_segment[i].link_to<<","<<QString().sprintf("%.10lf",acline_segment[i].r)<<","<<QString().sprintf("%.10lf",acline_segment[i].x)<<","<<0<<"\r\n";
|
|||
|
|
// }
|
|||
|
|
// out<<0<<"\r\n";
|
|||
|
|
|
|||
|
|
// /*-------------------------------------------
|
|||
|
|
// 输出接地支路参数
|
|||
|
|
//--------------------------------------------*/
|
|||
|
|
// no=power_transformer.size();
|
|||
|
|
// for (int i=0;i<no;i++)
|
|||
|
|
// {
|
|||
|
|
// int high=power_transformer[i].link_1;
|
|||
|
|
// if (high==power_transformer[i].low)
|
|||
|
|
// {
|
|||
|
|
// high=power_transformer[i].link_2;
|
|||
|
|
// }
|
|||
|
|
// out<<high<<","<<QString().sprintf("%.10lf",power_transformer[i].g)<<"\r\n";
|
|||
|
|
// }
|
|||
|
|
// out<<0<<"\r\n";
|
|||
|
|
|
|||
|
|
// /*-------------------------------------------
|
|||
|
|
// 输出变压器参数
|
|||
|
|
//--------------------------------------------*/
|
|||
|
|
// no=power_transformer.size();
|
|||
|
|
// for (int i=0;i<no;i++)
|
|||
|
|
// {
|
|||
|
|
// out<<i+1<<","<<power_transformer[i].link_1<<","<<power_transformer[i].link_2<<","<<QString().sprintf("%.10lf",power_transformer[i].r)<<","<<QString().sprintf("%.10lf",power_transformer[i].x)<<","<<1<<","<<1<<","<<1<<"\r\n";
|
|||
|
|
// }
|
|||
|
|
// out<<0<<"\r\n";
|
|||
|
|
|
|||
|
|
// /*-------------------------------------------
|
|||
|
|
// 输出节点功率参数
|
|||
|
|
//--------------------------------------------*/
|
|||
|
|
// no=busbar_section[bus-1].flag;
|
|||
|
|
// int k=0;
|
|||
|
|
// for (int i=0;i<bus;i++)
|
|||
|
|
// {
|
|||
|
|
// if (busbar_section[i].flag!=busbar_section[i+1].flag)
|
|||
|
|
// {
|
|||
|
|
// std::vector<PowerTransformer>::iterator it = find_if(power_transformer.begin(), power_transformer.end(), bus_finder(busbar_section[i].flag)); //得到与ID号相对应的元素
|
|||
|
|
// if(it!=power_transformer.end())
|
|||
|
|
// {
|
|||
|
|
// double PL=((it->APower)+(it->BPower)+(it->CPower))/(base_power[0].basePower*1000);
|
|||
|
|
// double QL=((it->AReactivePower)+(it->BReactivePower)+(it->CReactivePower))/(base_power[0].basePower*1000);
|
|||
|
|
// if (PL==0 && QL==0)
|
|||
|
|
// {
|
|||
|
|
// out<<busbar_section[i].flag<<","<<"0"<<","<<"0"<<","<<"-1"<<","<<"-1"<<"\r\n";
|
|||
|
|
// k++;
|
|||
|
|
// }
|
|||
|
|
// else
|
|||
|
|
// {
|
|||
|
|
// out<<busbar_section[i].flag<<","<<"0"<<","<<"0"<<","<<QString().sprintf("%.10lf",PL)<<","<<QString().sprintf("%.10lf",QL)<<"\r\n";
|
|||
|
|
// k++;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// else
|
|||
|
|
// {
|
|||
|
|
// out<<busbar_section[i].flag<<","<<"0"<<","<<"0"<<","<<"0"<<","<<"0"<<"\r\n";
|
|||
|
|
// k++;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// for (int i=0;i<busNo;i++)
|
|||
|
|
// {
|
|||
|
|
// out<<i+1<<","<<"0"<<","<<"0"<<","<<"0"<<","<<"0"<<"\r\n";
|
|||
|
|
// }
|
|||
|
|
// out<<0<<"\r\n";
|
|||
|
|
// out<<0<<"\r\n";
|
|||
|
|
// out<<0<<"\r\n";
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|