/**
* @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 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
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));
/*std::vector> tab_diff;
for(int i =0; i<5; i++){
std::pair diff(rand_fini(0,15)+0.426,i);
tab_diff.push_back(diff);
std::cout< Diff;
for(int i =0; ipush_back(i);
}
Partition.push_back(part1);
int node = 1;
int index = 0;
gggp_pond(g, part1, part2, Partition, node, index, "cut", 2);
Partition.push_back(part2);
double cut = Cut_cluster(Partition, *g, "cut");
for(int x =0; xsize();y++){
std::cout<at(y)<<" ";
}
std::cout<push_back(i);
}
Partition2.push_back(part3);
gggp_pond(g, part3, part4, Partition2, node, index, "ratio", 2);
Partition2.push_back(part4);
cut = Cut_cluster(Partition2, *g, "ratio");
for(int x =0; xsize();y++){
std::cout<at(y)<<" ";
}
std::cout< color;
color.push_back("node [color=lightblue2, style=filled];");
color.push_back("node [color=red, style=filled];");
color.push_back("node [color=limegreen, style=filled];");
color.push_back("node [color=plum, style=filled];");
color.push_back("node [color=orange, style=filled];");
color.push_back("node [color=yellow2, style=filled];");
color.push_back("node [color=slateblue1, style=filled];");
color.push_back("node [color=plum, style=filled];");
color.push_back("node [color=black, style=filled];");
color.push_back("node [color=dimgrey, style=filled];");
color.push_back("node [color=gold, style=filled];");
color.push_back("node [color=indigo, style=filled];");
color.push_back("node [color=turquoise, style=filled];");
color.push_back("node [color=olive, style=filled];");
color.push_back("node [color=cyan, style=filled];");
color.push_back("node [color=crimson, style=filled];");
color.push_back("node [color=lightsalmon, style=filled];");
int nbr_sommets = 10000;
int nbr_sources = nbr_sommets/100*1; // 1% des sommets sont des sources
Entiers niveau = {5,4,3,2};
//build_graph(*go, 38);
//build_generator_graph(go, nbr_sommets, nbr_sources , 2 , 3 ,niveau);
build_generator_graph_linked(go, nbr_sommets, 100 , 2, 3);
//build_graph_cyclique(*go);
//const char *texte = new const char();
//texte = "../../sortie_graphe/enregistrement_100.txt";
//Text_generator_graph(texte,go);
//Graph_constructor_txt(texte, go);
std::ofstream fichier ("../../sortie_graphe/Tests/Graphes/txt/graph_linked_200_30.txt", std::ios::out);
fichier<<"digraph G {"< {";
//std::cout<<(*go)[*vertexIto]._index<<" -> ";
tie(neighbourIto, neighbourEndo) = adjacent_vertices(*vertexIto,
*go);
for (; neighbourIto != neighbourEndo; ++neighbourIto){
fichier<<(*go)[*neighbourIto]._index<<";";
//std::cout<<(*go)[*neighbourIto]._index<<" ";
}
fichier<<"}"< Cut;
int nbr_tirage = 20;
for(uint i =0; i {";
tie(neighbourIto, neighbourEndo) = adjacent_vertices(*vertexIto,
*go);
for (; neighbourIto != neighbourEndo; ++neighbourIto){
fichier<<(*go)[*neighbourIto]._index<<";";
}
fichier<<"}"< Cut;
int niveau_contraction = num_vertices(*go)/1;
for(uint i =0; i<500; i++){
Edges edge_partie;
OutputEdgeList outputedgeslist(nbr_parties);
InputEdgeList inputedgelist;
Connections connections;
UnorientedGraph *g = new UnorientedGraph();
make_unoriented_graph(*go, *g);
boost::copy_graph(*g, graph_origin);
OrientedGraphs graphs = Multiniveau(niveau_contraction, g, &graph_origin, go, nbr_parties, 20,"HEM", "ggp",
"cut", "ratio", edge_partie ,
outputedgeslist, inputedgelist,
connections,Cut,4);
}
std::ofstream fichier_cut ("../../sortie_graphe/Tests/Cut/cut_s200_n22_d4-20_c1_t500_p20_ggp.txt", std::ios::out);
double moy = 0.;
for(int cpt = 0; cpt {";
//std::cout<<(graphs.at(i))[*vertexIto]._index<<" est connecté avec : ";
tie(neighbourIto, neighbourEndo) = adjacent_vertices(*vertexIto,
graphs.at(i));
for (; neighbourIto != neighbourEndo; ++neighbourIto){
fichier2<<(graphs.at(i))[*neighbourIto]._index<<";";
//std::cout<<(graphs.at(i))[*neighbourIto]._index<<" ";
}
fichier2<<"}"<