Example #1
0
void PoslvControl::messageRead(const rosbag::MessageInstance& message) {
  if (message.isType<poslv::VehicleNavigationSolutionMsg>()) {
    poslv::VehicleNavigationSolutionMsgPtr vns(
      message.instantiate<poslv::VehicleNavigationSolutionMsg>());
    messageRead(vns);
  }
}
Example #2
0
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;
}