⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 igraph.h

📁 电力系统潮流程序adsfasdfasfd
💻 H
字号:

#ifndef _IGRAPH_H
#define _IGRAPH_H

#include <map>
#include <vector>
#include <set>
using namespace std;


namespace NM_PSNTP
{
typedef unsigned int VertexNo_T;
typedef unsigned int BranchNo_T;
typedef int BranchName_T;
typedef unsigned int EndDevNo_T;
typedef int IslandNo_T;
typedef int SectionNo_T;

class INumberGraph
{
//用顺序序号表示顶点和边的有环无向图接口类,将用于电力系统拓扑分析类
private:
public:
	virtual int SetGraph(const int, const vector<pair<VertexNo_T, VertexNo_T> > &, const vector<VertexNo_T> & = vector<VertexNo_T>()) = 0;
	//设置图,参数依次为:顶点数目,边信息,单端设备信息。返回值暂时无定义
	virtual int GetConnections(vector<BranchNo_T>&, vector<EndDevNo_T>&, const VertexNo_T) = 0;
	//查找一个顶点上所连的边和单端设备。返回值暂时无定义
	virtual int GetConnections(vector<BranchNo_T>&, vector<EndDevNo_T>&, const vector<VertexNo_T>&) = 0;
	//查找一组顶点上所连的边和单端设备。返回值暂时无定义。
	virtual void IslandAnalyse(IslandNo_T &island_num, vector<IslandNo_T> &, vector<bool> &, const vector<BranchNo_T> &,bool search_flag = false,const vector<BranchName_T> &branch_name_vec=vector<BranchName_T>(),const vector<VertexNo_T> & = vector<VertexNo_T>()) = 0;
	//岛分析,参数依次为:岛数目,各顶点的岛号,树枝标志,移去的边
	virtual void Split(SectionNo_T &section_num, vector<SectionNo_T> &, const vector<VertexNo_T> &, const vector<BranchNo_T> &) = 0;
	//将图分块,参数依次为:分块数目,各边的块号,指定的分块边界(顶点),移去的边
	virtual bool SearchPath(vector<VertexNo_T> &, vector<BranchNo_T> &, const VertexNo_T, const VertexNo_T, const vector<BranchNo_T> &) = 0;
	//寻找路径,参数依次为:经历的顶点,经历的边,起始顶点,中止顶点, 移去的边。返回值表示是否搜索到连通路径。
	virtual bool SearchSpecialDevType(const VertexNo_T vertex_no,set<int> dev_type,vector<BranchName_T> &dev_vec,vector<EndDevNo_T> & term_vec,vector<BranchName_T>,const set<int> &stop_dev_type =set<int>(),const set<VertexNo_T> &bs_node_set = set<VertexNo_T>(),const BranchNo_T branch_no = -1,const vector<BranchNo_T> &open_branch_vec = vector<BranchNo_T>(),bool isReadEndDev = false) = 0;
	//寻找节点连接的指定设备
	virtual ~INumberGraph() {};
};

INumberGraph *GetNumberGraph();

typedef int VertexName_T;

typedef int EndDevName_T;

struct NamedBranch_T
{
	BranchName_T m_bch_id;
	VertexName_T m_vtx1_id;
	VertexName_T m_vtx2_id;
};                                                                          

class INameGraph
{ 
private:
public:
        #ifdef _LINUX
        virtual int SetGraph(const vector<VertexName_T>&,const vector<BranchName_T>&,const vector<pair<VertexName_T, VertexName_T> >&,const vector<pair<EndDevName_T,VertexName_T> > &) = 0;
        #else
        virtual int SetGraph(const vector<VertexName_T>&,const vector<BranchName_T>&,const vector<pair<VertexName_T, VertexName_T> >&,const vector<pair<EndDevName_T, VertexName_T> > & = vector<pair<EndDevName_T, VertexName_T> >()) = 0;
        #endif
	virtual int GetConnections(vector<BranchName_T>&, vector<EndDevName_T>&, const VertexName_T) = 0;
	virtual int GetConnections(vector<BranchName_T>&, vector<EndDevName_T>&, const vector<VertexName_T>&) = 0;
	virtual void IslandAnalyse(IslandNo_T &island_num, map<VertexName_T, IslandNo_T> & , vector<BranchName_T> &, const vector<BranchName_T> &,bool search_flag = false,const vector<VertexName_T> & = vector<VertexName_T>()) = 0;
	virtual void Split(SectionNo_T &section_num, map<BranchName_T, SectionNo_T> &, const vector<VertexName_T> &, const vector<BranchName_T> &) = 0;
	virtual bool SearchPath(vector<VertexName_T> &, vector<BranchName_T> &, const VertexName_T, const VertexName_T, const vector<BranchName_T> &) = 0;
	virtual bool SearchSpecialDevType(const VertexName_T vertex_name,set<int> dev_type,vector<BranchName_T> &dev_vec,vector<EndDevName_T> & term_vec,const set<int> &stop_dev_type =set<int>(),const set<int> &bs_node_set = set<int>(),const BranchName_T branch_name = -1,const vector<BranchName_T> &open_branch_vec  = vector<BranchName_T>(),bool isReadEndDev = false) = 0;
	virtual ~INameGraph() {};
};

INameGraph *GetNameGraph();

};
#endif                 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -