From 41502b5afa8d8bf6e60ae0ea2a960f37989414a3 Mon Sep 17 00:00:00 2001 From: "dmy@lab" Date: Tue, 20 Jan 2015 20:50:38 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A0=E4=BA=86=E6=8B=93=E6=89=91=E6=A3=80?= =?UTF-8?q?=E6=9F=A5=E5=8A=9F=E8=83=BD=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: dmy@lab --- testHasttable/cimexporter.cpp | 42 ++++++++++++- testHasttable/cimexporter.h | 3 + testHasttable/main.cpp | 105 ++++++++++++++++++++++++++++++++ testHasttable/testHasttable.pro | 6 +- testHasttable/topologytest.cpp | 90 +++++++++++++++++++++++++++ testHasttable/topologytest.h | 22 +++++++ 6 files changed, 263 insertions(+), 5 deletions(-) create mode 100644 testHasttable/topologytest.cpp create mode 100644 testHasttable/topologytest.h diff --git a/testHasttable/cimexporter.cpp b/testHasttable/cimexporter.cpp index cd526ea..c9c0f15 100644 --- a/testHasttable/cimexporter.cpp +++ b/testHasttable/cimexporter.cpp @@ -33,6 +33,8 @@ void CIMExporter::add(const QPair& fromTo,Transformer* tf) void CIMExporter::exportTo(const QString& path) { + + //输出到文件 QFile fd(path); if(fd.open(QFile::WriteOnly)) @@ -122,9 +124,7 @@ void CIMExporter::exportTo(const QString& path) std::cout<topologyTest(); fd.close(); } @@ -162,3 +162,39 @@ int CIMExporter::numberIt(const QString& id) } } + + +bool CIMExporter::topologyTest() +{ + //检查一下拓扑关系 + QList > linkage; + for(QList::iterator ite=this->line.begin(); + ite!=this->line.end(); + ite++) + { + linkage.push_back(QPair(ite->fromNum,ite->toNum)); + } + for(QList::iterator ite=this->sw.begin(); + ite!=this->sw.end(); + ite++) + { + linkage.push_back(QPair(ite->fromNum,ite->toNum)); + } + for(QList::iterator ite=this->tf.begin(); + ite!=this->tf.end(); + ite++) + { + linkage.push_back(QPair(ite->fromNum,ite->toNum)); + } + + TopologyTest tpTest(this->number.keys().length()); + if(tpTest.start(linkage)) + { + std::cout<<"topoloty ok!"< +#include "topologytest.h" //#include "elementhashtable.h" class Substation; class CIMExporter @@ -50,6 +51,7 @@ public: void add(const QPair& fromTo,Transformer* tf); void exportTo(const QString& path); private: + bool topologyTest(); QList line; QList sw; QList tf; @@ -59,6 +61,7 @@ private: void idToNumber(QList &s);//把所有元件的标识进行编号 QString loadDir; const QHash& eleHT; + }; #endif // CIMEXPORTER_H diff --git a/testHasttable/main.cpp b/testHasttable/main.cpp index d0364b9..ef191cb 100644 --- a/testHasttable/main.cpp +++ b/testHasttable/main.cpp @@ -6,9 +6,114 @@ //#include "loadmapping.h" //#include "loadinfo.h" #include "dgmapping.h" +#include "topologytest.h" int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); +// TopologyTest tpTest(96); +// QList > p; +// p.push_back(QPair(1,2) ); +// p.push_back(QPair(1,3) ); +// p.push_back(QPair(3,4) ); +// p.push_back(QPair(4,5) ); +// p.push_back(QPair(5,6) ); +// p.push_back(QPair(6,7) ); +// p.push_back(QPair(8,9) ); +// p.push_back(QPair(9,10) ); +// p.push_back(QPair(11,12) ); +// p.push_back(QPair(13,14) ); +// p.push_back(QPair(15,16) ); +// p.push_back(QPair(17,18) ); +// p.push_back(QPair(18,19) ); +// p.push_back(QPair(19,20) ); +// p.push_back(QPair(20,21) ); +// p.push_back(QPair(21,22) ); +// p.push_back(QPair(22,23) ); +// p.push_back(QPair(24,25) ); +// p.push_back(QPair(26,27) ); +// p.push_back(QPair(28,29) ); +// p.push_back(QPair(30,31) ); +// p.push_back(QPair(32,33) ); +// p.push_back(QPair(33,34) ); +// p.push_back(QPair(35,36) ); +// p.push_back(QPair(37,38) ); +// p.push_back(QPair(38,39) ); +// p.push_back(QPair(36,40) ); +// p.push_back(QPair(41,42) ); +// p.push_back(QPair(42,43) ); +// p.push_back(QPair(40,44) ); +// p.push_back(QPair(45,46) ); +// p.push_back(QPair(46,47) ); +// p.push_back(QPair(44,48) ); +// p.push_back(QPair(49,50) ); +// p.push_back(QPair(50,51) ); +// p.push_back(QPair(52,53) ); +// p.push_back(QPair(54,55) ); +// p.push_back(QPair(56,57) ); +// p.push_back(QPair(57,58) ); +// p.push_back(QPair(55,59) ); +// p.push_back(QPair(60,61) ); +// p.push_back(QPair(61,62) ); +// p.push_back(QPair(59,63) ); +// p.push_back(QPair(64,65) ); +// p.push_back(QPair(65,66) ); +// p.push_back(QPair(67,68) ); +// p.push_back(QPair(69,70) ); +// p.push_back(QPair(71,72) ); +// p.push_back(QPair(73,74) ); +// p.push_back(QPair(75,76) ); +// p.push_back(QPair(77,78) ); +// p.push_back(QPair(7,79) ); +// p.push_back(QPair(79,8) ); +// p.push_back(QPair(10,80) ); +// p.push_back(QPair(80,11) ); +// p.push_back(QPair(12,81) ); +// p.push_back(QPair(81,13) ); +// p.push_back(QPair(81,15) ); +// p.push_back(QPair(80,17) ); +// p.push_back(QPair(80,24) ); +// p.push_back(QPair(25,82) ); +// p.push_back(QPair(82,83) ); +// p.push_back(QPair(83,84) ); +// p.push_back(QPair(84,26) ); +// p.push_back(QPair(83,85) ); +// p.push_back(QPair(85,28) ); +// p.push_back(QPair(83,86) ); +// p.push_back(QPair(86,30) ); +// p.push_back(QPair(83,32) ); +// p.push_back(QPair(34,35) ); +// p.push_back(QPair(36,37) ); +// p.push_back(QPair(40,41) ); +// p.push_back(QPair(44,45) ); +// p.push_back(QPair(48,49) ); +// p.push_back(QPair(82,87) ); +// p.push_back(QPair(80,88) ); +// p.push_back(QPair(79,52) ); +// p.push_back(QPair(53,89) ); +// p.push_back(QPair(89,90) ); +// p.push_back(QPair(90,54) ); +// p.push_back(QPair(55,56) ); +// p.push_back(QPair(59,60) ); +// p.push_back(QPair(63,64) ); +// p.push_back(QPair(90,67) ); +// p.push_back(QPair(90,69) ); +// p.push_back(QPair(90,71) ); +// p.push_back(QPair(79,73) ); +// p.push_back(QPair(74,91) ); +// p.push_back(QPair(91,75) ); +// p.push_back(QPair(79,73) ); +// p.push_back(QPair(74,91) ); +// p.push_back(QPair(91,71) ); +// p.push_back(QPair(91,77) ); +// p.push_back(QPair(79,92) ); +// p.push_back(QPair(68,93) ); +// p.push_back(QPair(70,94) ); +// p.push_back(QPair(72,95) ); +// p.push_back(QPair(76,96) ); + + +// tpTest.start(p); +// return a.exec(); // LoadInfo loadInfo; // loadInfo.setLoadPath("D:/Project/佛山项目/数据/搭网架参数文件/泰安/泰安负荷/718发展线/专变/威灵电机工业园电房1.csv"); diff --git a/testHasttable/testHasttable.pro b/testHasttable/testHasttable.pro index 91a4c33..6eab77b 100644 --- a/testHasttable/testHasttable.pro +++ b/testHasttable/testHasttable.pro @@ -43,7 +43,8 @@ SOURCES += main.cpp \ loadinfo.cpp \ loadmatchexception.cpp \ dgmapping.cpp \ - dginfo.cpp + dginfo.cpp \ + topologytest.cpp HEADERS += \ elementhashtable.h \ @@ -73,7 +74,8 @@ HEADERS += \ singletonbase.h \ loadmatchexception.h \ dgmapping.h \ - dginfo.h + dginfo.h \ + topologytest.h #release{ DEFINES += QT_NO_DEBUG_OUTPUT diff --git a/testHasttable/topologytest.cpp b/testHasttable/topologytest.cpp new file mode 100644 index 0000000..d8b1758 --- /dev/null +++ b/testHasttable/topologytest.cpp @@ -0,0 +1,90 @@ +#include "topologytest.h" +#include +TopologyTest::TopologyTest(int nodeN):nodeN(nodeN),access(nodeN) +{ + +} + +TopologyTest::~TopologyTest() +{ + +} + +bool TopologyTest::start(const QList >& linkage) +{ + //先建立所有的连接关系 + QHash > arch; + for( + QList >::const_iterator ite=linkage.begin(); + ite!=linkage.end(); + ite++ + ) + { + int f=(*ite).first-1; + int s=(*ite).second-1; + std::cout< keys=arch.keys(); + for(int outer=0; + outernodeN; + outer++) + { + if(!flag) + { + break; + } + for(int i=0;inodeN;i++) + { + this->access[i]=-100; + } + int n=outer; + this->next(n,arch); + //检查一下 + for(int i=0;inodeN;i++) + { + if(this->access[i]==-100) + { + flag=false; + break; + } + } + + } +// if(!flag) +// { +// std::cout<<"no!!"<access.length();i++) +// { +// if(this->access.at(i)==-100) +// { +// std::cout< > &arch) +{ + if(this->access[start]==100) + return; +// std::cout<<"fw "<access[start]=100; + QVector nextNode=arch[start]; + for(int i=0;inext(nextNode.at(i),arch); + } +} + diff --git a/testHasttable/topologytest.h b/testHasttable/topologytest.h new file mode 100644 index 0000000..267d0eb --- /dev/null +++ b/testHasttable/topologytest.h @@ -0,0 +1,22 @@ +#ifndef TOPOLOGYTEST_H +#define TOPOLOGYTEST_H + +//检查拓扑是否完整 +#include +#include +#include +#include +class TopologyTest +{ +public: + TopologyTest(int nodeN); + ~TopologyTest(); + bool start(const QList >& linkage); +private: + void next(int start, QHash > &arch); + QVector access; + int nodeN; + +}; + +#endif // TOPOLOGYTEST_H