void RoutingSolver::solve() {
IloDispatcher dispatcher(_solver);
IloEnv env = _solver.getEnv();
// Subgoals
IloGoal instantiateCost = IloDichotomize(env,
dispatcher.getCostVar(),
IloFalse);
IloGoal subGoal = IloSetVisitCumuls(env,
IloDimension2::Find(env, "Time"),
1e-6)
&& instantiateCost;
IloGoal restoreSolution = IloRestoreSolution(env, _solution) && subGoal;
IloGoal goal = IloSavingsGenerate(env) && subGoal;
// Solving
if (findFirstSolution(goal)) {
improve(subGoal);
_solver.solve(restoreSolution);
}
}
|