1.重新组织了文件。
2.准备试试把所有元素都读入内存中。 Signed-off-by: facat@lab.com <facat@lab.com>
This commit is contained in:
422
core/output.cpp
Normal file
422
core/output.cpp
Normal file
@@ -0,0 +1,422 @@
|
||||
#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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user