void PoslvControl::messageRead(const rosbag::MessageInstance& message) { if (message.isType<poslv::VehicleNavigationSolutionMsg>()) { poslv::VehicleNavigationSolutionMsgPtr vns( message.instantiate<poslv::VehicleNavigationSolutionMsg>()); messageRead(vns); } }
int main(int argc, char** argv) { Timer total; if (argc == 1) return usage(); AvailableModularityBInstances id(static_cast<AvailableModularityBInstances>(atoi(argv[1]) - 1)); RegisteredModularityBInstance instance(id); // int id_node(0); // std::string file_name; // do { // file_name = GetStr("node/", instance.name(), "_node_", id_node); // ++id_node; // } while (std::remove(file_name.c_str()) == 0); instance.out(); // oracles creation VnsGenerator vnsOracle(&instance); instance.setVnsOracle(&vnsOracle); BinaryDecompositionOracle bMilpOracle(&instance); instance.setExactOracle(&bMilpOracle); ModularityBPartition p(instance, instance.nV()); p.score() = p.computeScore(); // std::cout << "DIVISIVE STARTED" << std::endl; // bipartite::Divisive divisive(instance, p); // divisive.run(); std::cout << "VNS STARTED" << std::endl; bipartite::VnsLabelPropagation vns(instance, p, 20, 5); vns.run(); std::cout << "B&B STARTED" << std::endl; BranchAndBound branchAndBound(instance); int nColumnGeneratorNumberByIte(10); if (argc > 2) { nColumnGeneratorNumberByIte = atoi(argv[2]); } std::cout << "nColumnGeneratorNumberByIte : " << nColumnGeneratorNumberByIte << std::endl; branchAndBound._columnGenerator.setNumberByIte(nColumnGeneratorNumberByIte); branchAndBound.init(); branchAndBound.master().addSingleton(); branchAndBound.master().add(p); branchAndBound.setOutput(); branchAndBound.run(); // branchAndBound.writeSolution(); std::cout << "program run in " << std::setprecision(10) << total.elapsed() << std::endl; std::cout << "Solution is " << branchAndBound.bestFeasible() << std::endl; // instance.cps("toto"); return 0; }