//#include <iostream>
//#include <vector>
//#include <cmath>
//#include <fstream>
//#include <sstream>
//#include <stdlib.h>
//#include <time.h>
//#include <string.h>
#include "sparse_matrix1.cpp"
using namespace std;
//inline void makeitem(vector<float>& item,istringstream &in );
template <class Type>
class Vector
{
public:
Vector (int len) : length(len), values(new T[len]) {}
Vector(){};
~Vector (){};
//{
// delete []values;
//}
//Vector<T>& operator=(const Vector<T>& v);
// friend ostream& operator <<<T>(ostream&, Vector&);
// const Vector<T> operator+(Vector<T>&);
// const Vector<T> operator*(Vector<T>&);
//vector<vector<float> > input(vector<vector<float> >&k)
template <class Type>
void get_data(vector<vector<Type> >&k)
{
for (int i = 0; i < k.size(); i++)
for (int j = 0; j < k[i].size(); j++)
cin>>k[i][j];
//return k;
}
template <class Type>
void get_data1(vector<Type> &k)
{
for (int i = 0; i < k.size(); i++)
cin>>k[i];
//return k;
}
inline void makeitem(vector<Type>& item,istringstream &in );
private:
// T *values;
int length;
};
///////////////////////////////////////////////////////////////////////////////////////////////////
void sortAsNum(test1 m[]){ //冒泡排序,按元素位置进行非递增排序
test1 temp[1];
bool flag;
for(int i=0;i<m[0].max;i++)
{
flag=0;
for(int j=1;j<m[0].max-i;j++)
if(m[j-1].num>m[j].num)
{
temp[0].a=m[j].a;
m[j].a=m[j-1].a;
m[j-1].a=temp[0].a;
temp[0].row=m[j].row;
m[j].row=m[j-1].row;
m[j-1].row=temp[0].row;
temp[0].col=m[j].col;
m[j].col=m[j-1].col;
m[j-1].col=temp[0].col;
temp[0].num=m[j].num;
m[j].num=m[j-1].num;
m[j-1].num=temp[0].num;
flag=1;
};
temp[0].num=0;
if(!flag) break;
};
};
/////////////////////////////////////////////////////////////////////////////////////////////////////
float MAX_G( float a , float b )
{
if(a>b)
{
return a;
}
else
{
return b;
};
};
float MIN_G( float a , float b )
{
if(a<b)
{
return a;
}
else
{
return b;
};
};
/////////////////////////////////////////////////////////////////////////////////////////////////////
void moveTheSame(test1 m[]) //移除相同记录
{
test1 temp[1];
bool flag;
for(int i=0;i<m[0].max;i++)
{
flag=0;
for(int j=1;j<m[0].max-i;j++)
if(m[j-1].num==m[j].num)
{
temp[0].a=m[j].a;
m[j].a=m[j-1].a;
m[j-1].a=temp[0].a;
temp[0].row=m[j].row;
m[j].row=m[j-1].row;
m[j-1].row=temp[0].row;
temp[0].col=m[j].col;
m[j].col=m[j-1].col;
m[j-1].col=temp[0].col;
temp[0].num=m[j].num;
m[j].num=m[j-1].num;
m[j-1].num=temp[0].num;
flag=1;
};
temp[0].num=0;
if(!flag) break;
};
};
////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct line1////////////////存放线路相关信息,包括变压器
{
float s;//线路起点点号
float e;//线路终点点号
float R;//线路电阻
float x;//线路电抗
float t;//线路电纳之和
float bi;//线路两侧电压比,非变压器为0
float pm;//应该是线路潮流限值
float s1;//
float e1;//
float R1;//
char x1;//
float t1;//
float bi1;//
};
////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct line2////////////存放节点的有功,无功,电压,相角标幺值,并按照节点号保存
{
float vu;//节点电压
float vo;//节点相角
float gp;//节点有功
float gq;//节点无功
float lp;//节点负荷有功
float lq;//节点负荷无功
float vmax;//节点电压上限
float vmin;//节点电压下限
float ti;//无功补偿
// float J;
};
////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct line3///////////发电机参数
{
int iii;//节点号
float gpmax;//有功出力上限
float gpmin;//有功出力下限
float gqmax;//无功出力上限
float gqmin;//无功出力下限
float rpup;///向上爬坡率
float rpdown;//向下爬坡率
};
////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct line4///////////for useless information
{
char ss;
float zs;
};
////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct line5 ///////for buses data
{
char bn;//节点名称
float bk;//节点电压
char ow;//owner
char zo;//zone
float vu;//电压标幺值
float vo;//相角
float vx;//vx
float vy;//vy
int bui;////节点号
float ty;//类型
};
////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct line6 /////for transmission line data
{
char bn1;//节点1名称
float bk1;//节点1电压
char bn2;//节点2名称
float bk2;//节点2电压
int id;//ID
float ty;//类型
float r;//电阻
float x;//电抗
float g1;//电导1
float b1;//电纳1
float g2;//电导2
float b2;//电纳2
float ia;//额定电流
float im;//电流限值
float st;//工况
int I;////////起点节点号
int J;////////终点节点号
float L;//长度?
};
////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct line7 /////for transformer data
{
char bn1;//节点1名称
float bk1;//节点1电压
char bn2;//节点2名称
float bk2;//节点2电压
int id;//ID
int ty;//类型
float r;//电阻
float x;//电抗
float tk1;//一次侧电压
float tk2;//二次侧电压
int st;//工况
float ra;//额定容量
int I;/////一次侧节点号
int J;/////二次侧节点号
float xx;///备用1
float xxx;/// 备用2
};
////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct line8 ////////utlc变压器
{
char bn1;////节点1名称
float bk1;////节点1电压
char bn2;////节点2名称
float bk2;////节点2电压
int id;////ID
int ty;////类型
float tapmax;//分接头最大
float tapmin;//分接头最小
float ntap;//N_tap
float pmax;//PMAX
float pmin;//PMIN
char busncont;//控制端节点名
float buskcont;//控制端节点电压
int adj;//ADJUSTSIDE
int sta;//STATE
int sno;//起始节点号
int eno;//终止节点号
};
////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct line9 //////for generator data
{
char ge;//发电机名称
float gek;//发电机电压
int id;//////0表示火电,1表示风电,2表示水电,3表示抽水蓄能
float pg;//有功出力
float qg;//无功出力
float pgm;//有功出力上限
float qgmax;//无功出力上限
float qgmin;//无功出力下限
int no;/////节点号
float xxx;//有功下限???
};
////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct line10 /////for load data
{
char bn;//节点名称
float bnk;//节点电压
int id;//ID
float pl;//有功负荷
float ql;//无功负荷
int bnnum;/////节点编号
float pc;//P_Iconst
float qc;//Q_Iconst
float pz;//P_Zconst
float qz;//Q_Zconst
};
////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct line11 /////for shunt data
{
char bn;//节点名称
float bnk;//节点电压
int id;//ID
float gs;//有功补偿(通常为0)
float bs;//无功补偿(负值为电抗器,正值为电容器)
int num; //节点号
};
////////////////////////////////////////////////////////////////////////////////////////////////////////////
评论0