private static void BasicLsWithFilter() { Console.WriteLine("BasicLsWithFilter"); Solver solver = new Solver("BasicLs"); IntVar[] vars = solver.MakeIntVarArray(4, 0, 4, "vars"); IntVar sum_var = vars.Sum().Var(); OptimizeVar obj = sum_var.Minimize(1); DecisionBuilder db = solver.MakePhase(vars, Solver.CHOOSE_FIRST_UNBOUND, Solver.ASSIGN_MAX_VALUE); MoveOneVar move_one_var = new MoveOneVar(vars); SumFilter filter = new SumFilter(vars); IntVarLocalSearchFilter[] filters = new IntVarLocalSearchFilter[] { filter }; LocalSearchFilterManager filter_manager = new LocalSearchFilterManager(filters); LocalSearchPhaseParameters ls_params = solver.MakeLocalSearchPhaseParameters(sum_var, move_one_var, db, null, filter_manager); DecisionBuilder ls = solver.MakeLocalSearchPhase(vars, db, ls_params); SolutionCollector collector = solver.MakeLastSolutionCollector(); collector.AddObjective(sum_var); SearchMonitor log = solver.MakeSearchLog(1000, obj); solver.Solve(ls, collector, obj, log); Console.WriteLine("Objective value = {0}", collector.ObjectiveValue(0)); }
private static void BasicLsWithFilter() { Console.WriteLine("BasicLsWithFilter"); Solver solver = new Solver("BasicLs"); IntVar[] vars = solver.MakeIntVarArray(4, 0, 4, "vars"); IntVar sum_var = vars.Sum().Var(); OptimizeVar obj = sum_var.Minimize(1); DecisionBuilder db = solver.MakePhase(vars, Solver.CHOOSE_FIRST_UNBOUND, Solver.ASSIGN_MAX_VALUE); MoveOneVar move_one_var = new MoveOneVar(vars); SumFilter filter = new SumFilter(vars); IntVarLocalSearchFilter[] filters = new IntVarLocalSearchFilter[] { filter }; LocalSearchPhaseParameters ls_params = solver.MakeLocalSearchPhaseParameters(move_one_var, db, null, filters); DecisionBuilder ls = solver.MakeLocalSearchPhase(vars, db, ls_params); SolutionCollector collector = solver.MakeLastSolutionCollector(); collector.AddObjective(sum_var); SearchMonitor log = solver.MakeSearchLog(1000, obj); solver.Solve(ls, collector, obj, log); Console.WriteLine("Objective value = {0}", collector.ObjectiveValue(0)); }