From 7c308c7b09368c597d391d552805042cd91792d8 Mon Sep 17 00:00:00 2001 From: Corentin Le Molgat Date: Wed, 25 Oct 2023 13:57:55 +0200 Subject: [PATCH] linear_solver: Cleanup python samples --- .../samples/assignment_groups_mip.py | 1 + .../linear_solver/samples/assignment_mip.py | 1 + .../samples/assignment_task_sizes_mip.py | 1 + .../samples/assignment_teams_mip.py | 1 + .../linear_solver/samples/basic_example.py | 1 + .../linear_solver/samples/bin_packing_mip.py | 1 + .../samples/integer_programming_example.py | 33 ++++++++++++++----- .../samples/linear_programming_example.py | 11 ++++--- .../linear_solver/samples/mip_var_array.py | 7 ++-- .../samples/multiple_knapsack_mip.py | 1 + .../samples/simple_lp_program.py | 4 +-- .../samples/simple_mip_program.py | 6 ++-- ortools/linear_solver/samples/stigler_diet.py | 5 +-- 13 files changed, 50 insertions(+), 23 deletions(-) diff --git a/ortools/linear_solver/samples/assignment_groups_mip.py b/ortools/linear_solver/samples/assignment_groups_mip.py index c9797ab6d8..d19edef796 100644 --- a/ortools/linear_solver/samples/assignment_groups_mip.py +++ b/ortools/linear_solver/samples/assignment_groups_mip.py @@ -158,6 +158,7 @@ def main(): # Solve # [START solve] + print(f"Solving with {solver.SolverVersion()}") status = solver.Solve() # [END solve] diff --git a/ortools/linear_solver/samples/assignment_mip.py b/ortools/linear_solver/samples/assignment_mip.py index d30d3222dc..259c098d03 100644 --- a/ortools/linear_solver/samples/assignment_mip.py +++ b/ortools/linear_solver/samples/assignment_mip.py @@ -74,6 +74,7 @@ def main(): # Solve # [START solve] + print(f"Solving with {solver.SolverVersion()}") status = solver.Solve() # [END solve] diff --git a/ortools/linear_solver/samples/assignment_task_sizes_mip.py b/ortools/linear_solver/samples/assignment_task_sizes_mip.py index a1d53a0f3b..90ae139cb3 100644 --- a/ortools/linear_solver/samples/assignment_task_sizes_mip.py +++ b/ortools/linear_solver/samples/assignment_task_sizes_mip.py @@ -88,6 +88,7 @@ def main(): # Solve # [START solve] + print(f"Solving with {solver.SolverVersion()}") status = solver.Solve() # [END solve] diff --git a/ortools/linear_solver/samples/assignment_teams_mip.py b/ortools/linear_solver/samples/assignment_teams_mip.py index 3e9e616b78..c15b4542b0 100644 --- a/ortools/linear_solver/samples/assignment_teams_mip.py +++ b/ortools/linear_solver/samples/assignment_teams_mip.py @@ -92,6 +92,7 @@ def main(): # Solve # [START solve] + print(f"Solving with {solver.SolverVersion()}") status = solver.Solve() # [END solve] diff --git a/ortools/linear_solver/samples/basic_example.py b/ortools/linear_solver/samples/basic_example.py index fc48b93788..299d822379 100644 --- a/ortools/linear_solver/samples/basic_example.py +++ b/ortools/linear_solver/samples/basic_example.py @@ -53,6 +53,7 @@ def main(): # [END objective] # [START solve] + print(f"Solving with {solver.SolverVersion()}") solver.Solve() # [END solve] diff --git a/ortools/linear_solver/samples/bin_packing_mip.py b/ortools/linear_solver/samples/bin_packing_mip.py index 77468e917c..aefc5b9af9 100755 --- a/ortools/linear_solver/samples/bin_packing_mip.py +++ b/ortools/linear_solver/samples/bin_packing_mip.py @@ -83,6 +83,7 @@ def main(): # [END objective] # [START solve] + print(f"Solving with {solver.SolverVersion()}") status = solver.Solve() # [END solve] diff --git a/ortools/linear_solver/samples/integer_programming_example.py b/ortools/linear_solver/samples/integer_programming_example.py index 07d473cdee..e3acafdfac 100644 --- a/ortools/linear_solver/samples/integer_programming_example.py +++ b/ortools/linear_solver/samples/integer_programming_example.py @@ -33,6 +33,8 @@ def IntegerProgrammingExample(): x = solver.IntVar(0.0, solver.infinity(), "x") y = solver.IntVar(0.0, solver.infinity(), "y") z = solver.IntVar(0.0, solver.infinity(), "z") + + print("Number of variables =", solver.NumVariables()) # [END variables] # [START constraints] @@ -53,6 +55,8 @@ def IntegerProgrammingExample(): constraint2.SetCoefficient(x, 5) constraint2.SetCoefficient(y, 2) constraint2.SetCoefficient(z, -6) + + print("Number of constraints =", solver.NumConstraints()) # [END constraints] # [START objective] @@ -64,17 +68,30 @@ def IntegerProgrammingExample(): objective.SetMaximization() # [END objective] - # Solve the problem and print the solution. + # Solve the problem. + # [START solve] + print(f"Solving with {solver.SolverVersion()}") + status = solver.Solve() + # [END solve] + + # Print the solution. # [START print_solution] - solver.Solve() - # Print the objective value of the solution. - print("Maximum objective function value = %d" % solver.Objective().Value()) - print() - # Print the value of each variable in the solution. - for variable in [x, y, z]: - print("%s = %d" % (variable.name(), variable.solution_value())) + if status == pywraplp.Solver.OPTIMAL: + print("Solution:") + print(f"Objective value = {solver.Objective().Value()}") + # Print the value of each variable in the solution. + for variable in [x, y, z]: + print(f"{variable.name()} = {variable.solution_value()}") + else: + print("The problem does not have an optimal solution.") # [END print_solution] + # [START advanced] + print("\nAdvanced usage:") + print(f"Problem solved in {solver.wall_time():d} milliseconds") + print(f"Problem solved in {solver.iterations():d} iterations") + # [END advanced] + IntegerProgrammingExample() # [END program] diff --git a/ortools/linear_solver/samples/linear_programming_example.py b/ortools/linear_solver/samples/linear_programming_example.py index 3eaeeeb531..dd888e5b42 100644 --- a/ortools/linear_solver/samples/linear_programming_example.py +++ b/ortools/linear_solver/samples/linear_programming_example.py @@ -56,23 +56,24 @@ def LinearProgrammingExample(): # Solve the system. # [START solve] + print(f"Solving with {solver.SolverVersion()}") status = solver.Solve() # [END solve] # [START print_solution] if status == pywraplp.Solver.OPTIMAL: print("Solution:") - print("Objective value =", solver.Objective().Value()) - print("x =", x.solution_value()) - print("y =", y.solution_value()) + print(f"Objective value = {solver.Objective().Value():0.1f}") + print(f"x = {x.solution_value():0.1f}") + print(f"y = {y.solution_value():0.1f}") else: print("The problem does not have an optimal solution.") # [END print_solution] # [START advanced] print("\nAdvanced usage:") - print("Problem solved in %f milliseconds" % solver.wall_time()) - print("Problem solved in %d iterations" % solver.iterations()) + print(f"Problem solved in {solver.wall_time():d} milliseconds") + print(f"Problem solved in {solver.iterations():d} iterations") # [END advanced] diff --git a/ortools/linear_solver/samples/mip_var_array.py b/ortools/linear_solver/samples/mip_var_array.py index 3bd69325f2..17861c330e 100644 --- a/ortools/linear_solver/samples/mip_var_array.py +++ b/ortools/linear_solver/samples/mip_var_array.py @@ -84,6 +84,7 @@ def main(): # [END objective] # [START solve] + print(f"Solving with {solver.SolverVersion()}") status = solver.Solve() # [END solve] @@ -93,9 +94,9 @@ def main(): for j in range(data["num_vars"]): print(x[j].name(), " = ", x[j].solution_value()) print() - print("Problem solved in %f milliseconds" % solver.wall_time()) - print("Problem solved in %d iterations" % solver.iterations()) - print("Problem solved in %d branch-and-bound nodes" % solver.nodes()) + print(f"Problem solved in {solver.wall_time():d} milliseconds") + print(f"Problem solved in {solver.iterations():d} iterations") + print(f"Problem solved in {solver.nodes():d} branch-and-bound nodes") else: print("The problem does not have an optimal solution.") # [END print_solution] diff --git a/ortools/linear_solver/samples/multiple_knapsack_mip.py b/ortools/linear_solver/samples/multiple_knapsack_mip.py index d20f5ce363..821d4e777e 100644 --- a/ortools/linear_solver/samples/multiple_knapsack_mip.py +++ b/ortools/linear_solver/samples/multiple_knapsack_mip.py @@ -75,6 +75,7 @@ def main(): # [END objective] # [START solve] + print(f"Solving with {solver.SolverVersion()}") status = solver.Solve() # [END solve] diff --git a/ortools/linear_solver/samples/simple_lp_program.py b/ortools/linear_solver/samples/simple_lp_program.py index 047d4b462e..ad3a2d0abe 100644 --- a/ortools/linear_solver/samples/simple_lp_program.py +++ b/ortools/linear_solver/samples/simple_lp_program.py @@ -68,8 +68,8 @@ def main(): # [START advanced] print("\nAdvanced usage:") - print("Problem solved in %f milliseconds" % solver.wall_time()) - print("Problem solved in %d iterations" % solver.iterations()) + print(f"Problem solved in {solver.wall_time():d} milliseconds") + print(f"Problem solved in {solver.iterations():d} iterations") # [END advanced] diff --git a/ortools/linear_solver/samples/simple_mip_program.py b/ortools/linear_solver/samples/simple_mip_program.py index 9f2c09a1e1..b8543d4f7f 100644 --- a/ortools/linear_solver/samples/simple_mip_program.py +++ b/ortools/linear_solver/samples/simple_mip_program.py @@ -68,9 +68,9 @@ def main(): # [START advanced] print("\nAdvanced usage:") - print("Problem solved in %f milliseconds" % solver.wall_time()) - print("Problem solved in %d iterations" % solver.iterations()) - print("Problem solved in %d branch-and-bound nodes" % solver.nodes()) + print(f"Problem solved in {solver.wall_time():d} milliseconds") + print(f"Problem solved in {solver.iterations():d} iterations") + print(f"Problem solved in {solver.nodes():d} branch-and-bound nodes") # [END advanced] diff --git a/ortools/linear_solver/samples/stigler_diet.py b/ortools/linear_solver/samples/stigler_diet.py index aafaef5936..6a471b9419 100755 --- a/ortools/linear_solver/samples/stigler_diet.py +++ b/ortools/linear_solver/samples/stigler_diet.py @@ -160,6 +160,7 @@ def main(): # [END objective] # [START solve] + print(f"Solving with {solver.SolverVersion()}") status = solver.Solve() # [END solve] @@ -192,8 +193,8 @@ def main(): # [START advanced] print("\nAdvanced usage:") - print("Problem solved in ", solver.wall_time(), " milliseconds") - print("Problem solved in ", solver.iterations(), " iterations") + print(f"Problem solved in {solver.wall_time():d} milliseconds") + print(f"Problem solved in {solver.iterations():d} iterations") # [END advanced]