Exemple #1
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 };
        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));
    }
Exemple #2
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));
 }