/** * @file tests/boost_graph/partitioning/main.cpp * @author The PARADEVS Development Team * See the AUTHORS or Authors.txt file */ /* * PARADEVS - the multimodeling and simulation environment * This file is a part of the PARADEVS environment * * Copyright (C) 2013-2015 ULCO http://www.univ-litoral.fr * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include #include #include #include #include #include #include using namespace paradevs::tests::boost_graph; // UnorientedGraph::vertex_iterator vertexIt, vertexEnd; // UnorientedGraph::adjacency_iterator neighbourIt, neighbourEnd; // OrientedGraph::vertex_iterator vertexIto, vertexEndo; // OrientedGraph::adjacency_iterator neighbourIto, neighbourEndo; int main() { boost::timer t; srand((unsigned)time(NULL)); /*** Génération du graphe ***/ OrientedGraph *go = new OrientedGraph(); std::string type_graph = "tree";//"parcellaire"; std::pair Spectrale = {false,false}; if(type_graph == "grid"){ int side = floor(5); std::vector> vertex_selection; std::pair tmp; tmp.first = 0; tmp.second = 3; vertex_selection.push_back(tmp); Entiers weight_vertex; weight_vertex.push_back(1); const char *texte = "../../sortie_graphe/tests_grid.txt"; build_graph_grid(go, side, vertex_selection, weight_vertex,texte,true); Plot_OrientedGraph(go,"../../sortie_graphe/Tests/Graphes/Multiniveau/txt/grid_500.txt"); }else if (type_graph == "tree"){ int nbr_sommets = 80; int nbr_sources = 2; Entiers niveau = {2,2}; const char *texte; //texte = "file/data_base/tree/tree_20000.txt"; build_generator_graph(go, nbr_sommets, nbr_sources, 2, 3, niveau); Plot_OrientedGraph(go,"../../sortie_graphe/Tests/Graphes/Multiniveau/txt/grid_500.txt"); //Text_generator_graph(texte, go); //Graph_constructor_txt(texte,go); }else if (type_graph == "linked"){ int nbr_sommets = 10; int nbr_couches = 4; build_example_linked9(*go); //build_generator_graph_linked(go, nbr_sommets, nbr_couches , 2, 3); //Text_generator_graph("file/data_base/linked/linked_50.txt",go); Plot_OrientedGraph(go,"../../sortie_graphe/Tests/Graphes/Multiniveau/txt/grid_500.txt"); }else if(type_graph == "parcellaire") { build_parcellaire_graph(go, 10000, "mono"); } else{ build_example_grid(*go); //build_graph(*go, 11); } /*** Comparaison des méthodes par étude du ratio de coupe ***/ if(Spectrale.first){ UnorientedGraph *g = new UnorientedGraph(); make_unoriented_graph(*go, *g); EntiersEntiers Partition2; Affichage_UnorientedGraph(g); Partition2 = Spectral_Partition("../../Classif_R/Graphe/txt/Partition2.txt"); Plot_OrientedGraph_All(go,Partition2,"../../Classif_R/Graphe/txt/Spectral_Partition.txt", true); Plot_OrientedGraph(go,"../../Classif_R/Graphe/txt/toto.txt"); delete g; } /*** Paramétrage du Multiniveau ***/ std::vector numeric_parameters = {(uint)(num_vertices(*go)), 4, 10}; std::vector parameters = {"HEM", "gggp", "diff", "ratio"}; uint nbr_tirage = 1; for(uint i = 0 ; i < nbr_tirage ; i++){ Edges edge_partie; OutputEdgeList outputedgeslist(numeric_parameters.at(1)); InputEdgeList inputedgelist; Connections connections; if(!Spectrale.first){ if(Spectrale.second){ UnorientedGraph *g = new UnorientedGraph(); make_unoriented_graph(*go, *g); Adjacent_Matrix_Txt(g,"../../Classif_R/Graphe/txt/Madj.txt"); Weight_Matrix_Txt(g,"../../Classif_R/Graphe/txt/Mwei.txt"); delete g; } std::cout<<"Multiniveau"<