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()); }
/** * * 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()); }