// SearchMonitorFactory.log(solver, true, false);
switch (lns) {
case 0:
break;
case 1:
solver.getSearchLoop().plugSearchMonitor(new LargeNeighborhoodSearch(solver,
new RandomNeighborhood(solver, objects, 200, 123456L), true));
SearchMonitorFactory.limitThreadTime(solver, 2000);
break;
case 2:
solver.getSearchLoop().plugSearchMonitor(new LargeNeighborhoodSearch(solver,
new PropagationGuidedNeighborhood(solver, objects, 123456L, 100, 10), true));
SearchMonitorFactory.limitThreadTime(solver, 2000);
break;
case 3:
solver.getSearchLoop().plugSearchMonitor(new LargeNeighborhoodSearch(solver,
new SequenceNeighborhood(
new PropagationGuidedNeighborhood(solver, objects, 123456L, 100, 10),
new ReversePropagationGuidedNeighborhood(solver, objects, 123456L, 100, 10)
), true));
SearchMonitorFactory.limitThreadTime(solver, 2000);
break;
case 4:
solver.getSearchLoop().plugSearchMonitor(new LargeNeighborhoodSearch(solver,
new SequenceNeighborhood(
new PropagationGuidedNeighborhood(solver, objects, 123456L, 100, 10),
new ReversePropagationGuidedNeighborhood(solver, objects, 123456L, 100, 10),
new RandomNeighborhood(solver, objects, 200, 123456L)
), true));
SearchMonitorFactory.limitThreadTime(solver, 2000);
break;
case 5:
solver.getSearchLoop().plugSearchMonitor(new LargeNeighborhoodSearch(solver,
new ExplainingCut(solver, 200, 123456L), true));
SearchMonitorFactory.limitThreadTime(solver, 2000);
break;
case 6:
solver.getSearchLoop().plugSearchMonitor(new LargeNeighborhoodSearch(solver,
new ExplainingObjective(solver, 200, 123456L), true));
SearchMonitorFactory.limitThreadTime(solver, 200000);
break;
case 7:
SequenceNeighborhood ngb = new SequenceNeighborhood(
new ExplainingObjective(solver, 200, 123456L),
new ExplainingCut(solver, 200, 123456L),
new RandomNeighborhood4Explanation(solver, objects, 200, 123456L));
solver.getSearchLoop().plugSearchMonitor(new LargeNeighborhoodSearch(solver, ngb, true));
SearchMonitorFactory.limitThreadTime(solver, 200000);
break;
}
solver.findOptimalSolution(ResolutionPolicy.MAXIMIZE, power);