Example #1
0
    private static void RunLinearProgrammingExampleNaturalApi(String solverType)
    {
        Solver solver = Solver.CreateSolver("IntegerProgramming", solverType);

        if (solver == null)
        {
            Console.WriteLine("Could not create solver " + solverType);
            return;
        }
        // x1, x2 and x3 are continuous non-negative variables.
        Variable x1 = solver.MakeNumVar(0.0, double.PositiveInfinity, "x1");
        Variable x2 = solver.MakeNumVar(0.0, double.PositiveInfinity, "x2");
        Variable x3 = solver.MakeNumVar(0.0, double.PositiveInfinity, "x3");

        solver.Maximize(10 * x1 + 6 * x2 + 4 * x3);
        Constraint c0 = solver.Add(x1 + x2 + x3 <= 100);
        Constraint c1 = solver.Add(10 * x1 + x2 * 4 + 5 * x3 <= 600);
        Constraint c2 = solver.Add(2 * x1 + 2 * x2 + 6 * x3 <= 300);

        Console.WriteLine("Number of variables = " + solver.NumVariables());
        Console.WriteLine("Number of constraints = " + solver.NumConstraints());

        int resultStatus = solver.Solve();

        // Check that the problem has an optimal solution.
        if (resultStatus != Solver.OPTIMAL)
        {
            Console.WriteLine("The problem does not have an optimal solution!");
            return;
        }

        Console.WriteLine("Problem solved in " + solver.WallTime() +
                          " milliseconds");

        // The objective value of the solution.
        Console.WriteLine("Optimal objective value = " +
                          solver.Objective().Value());

        // The value of each variable in the solution.
        Console.WriteLine("x1 = " + x1.SolutionValue());
        Console.WriteLine("x2 = " + x2.SolutionValue());
        Console.WriteLine("x3 = " + x3.SolutionValue());

        Console.WriteLine("Advanced usage:");
        Console.WriteLine("Problem solved in " + solver.Iterations() +
                          " iterations");
        Console.WriteLine("x1: reduced cost = " + x1.ReducedCost());
        Console.WriteLine("x2: reduced cost = " + x2.ReducedCost());
        Console.WriteLine("x3: reduced cost = " + x3.ReducedCost());
        Console.WriteLine("c0: dual value = " + c0.DualValue());
        Console.WriteLine("    activity = " + c0.Activity());
        Console.WriteLine("c1: dual value = " + c1.DualValue());
        Console.WriteLine("    activity = " + c1.Activity());
        Console.WriteLine("c2: dual value = " + c2.DualValue());
        Console.WriteLine("    activity = " + c2.Activity());
    }
Example #2
0
    /**
     *
     * Volsay problem.
     *
     * From the OPL model volsay.mod.
     *
     *
     * Also see http://www.hakank.org/or-tools/volsay.py
     *
     */
    private static void Solve()
    {
        Solver solver = new Solver("Volsay", Solver.CLP_LINEAR_PROGRAMMING);

        //
        // Variables
        //

        Variable Gas      = solver.MakeNumVar(0, 100000, "Gas");
        Variable Chloride = solver.MakeNumVar(0, 100000, "Cloride");

        Constraint c1 = solver.Add(Gas + Chloride <= 50);
        Constraint c2 = solver.Add(3 * Gas + 4 * Chloride <= 180);

        solver.Maximize(40 * Gas + 50 * Chloride);

        int resultStatus = solver.Solve();

        if (resultStatus != Solver.OPTIMAL)
        {
            Console.WriteLine("The problem don't have an optimal solution.");
            return;
        }

        Console.WriteLine("Objective: {0}", solver.ObjectiveValue());

        Console.WriteLine("Gas      : {0} ReducedCost: {1}",
                          Gas.SolutionValue(),
                          Gas.ReducedCost());

        Console.WriteLine("Chloride : {0} ReducedCost: {1}",
                          Chloride.SolutionValue(),
                          Chloride.ReducedCost());

        Console.WriteLine("c1       : DualValue: {0} Activity: {1}",
                          c1.DualValue(),
                          c1.Activity());

        Console.WriteLine("c2       : DualValue: {0} Activity: {1}",
                          c2.DualValue(),
                          c2.Activity());



        Console.WriteLine("\nWallTime: " + solver.WallTime());
        Console.WriteLine("Iterations: " + solver.Iterations());
    }