OiO.lk Community platform!

Oio.lk is an excellent forum for developers, providing a wide range of resources, discussions, and support for those in the developer community. Join oio.lk today to connect with like-minded professionals, share insights, and stay updated on the latest trends and technologies in the development field.
  You need to log in or register to access the solved answers to this problem.
  • You have reached the maximum number of guest views allowed
  • Please register below to remove this limitation

OR-Tools CP-SAT python example terminates after creating solver

  • Thread starter Thread starter user25330421
  • Start date Start date
U

user25330421

Guest
I am new to Google OR-Tools and trying to start by running a basic example from OR-Tools example library found here

https://github.com/google/or-tools/blob/stable/ortools/sat/samples/cp_sat_example.py.

Every code example gets hung up on the same part after creating the solver.

When I run the code I am not getting an output from any of the examples, each time it gets hung up after creating the solver, then the script just seems to terminate. I have modified this CP-Stat model code example with some print statements for debugging but I still can't figure out why every example gets hung up on the same part.

Code:
#!/usr/bin/env python3
# [START program]
"""Simple solve."""
# [START import]
from ortools.sat.python import cp_model
# [END import]


def main() -> None:
    """Minimal CP-SAT example to showcase calling the solver."""
    print("Starting the solver...")  # Debug print statement

    try:
        # Creates the model.
        # [START model]
        print("Creating model...")
        model = cp_model.CpModel()
        print("Model created.")
        # [END model]

        # Creates the variables.
        # [START variables]
        print("Creating variables...")
        var_upper_bound = max(50, 45, 37)
        x = model.NewIntVar(0, var_upper_bound, "x")
        y = model.NewIntVar(0, var_upper_bound, "y")
        z = model.NewIntVar(0, var_upper_bound, "z")
        print(f"Variables created: x in [0, {var_upper_bound}], y in [0, {var_upper_bound}], z in [0, {var_upper_bound}]")
        # [END variables]

        # Creates the constraints.
        # [START constraints]
        print("Adding constraints...")
        model.Add(2 * x + 7 * y + 3 * z <= 50)
        model.Add(3 * x - 5 * y + 7 * z <= 45)
        model.Add(5 * x + 2 * y - 6 * z <= 37)
        print("Constraints added.")
        # [END constraints]

        # [START objective]
        print("Setting objective...")
        model.Maximize(2 * x + 2 * y + 3 * z)
        print("Objective set.")
        # [END objective]

        # Creates a solver and solves the model.
        # [START solve]
        print("Creating solver...")
        solver = cp_model.CpSolver()
        print("Solver created.")
        
        print("Solving model...")
        status = solver.Solve(model)
        print(f"Model solved with status: {status}")
        # [END solve]

        # [START print_solution]
        print("Checking solution...")
        if status == cp_model.OPTIMAL or status == cp_model.FEASIBLE:
            print(f"Maximum of objective function: {solver.ObjectiveValue()}\n")
            print(f"x = {solver.Value(x)}")
            print(f"y = {solver.Value(y)}")
            print(f"z = {solver.Value(z)}")
        else:
            print("No solution found.")
        # [END print_solution]

        # Statistics.
        # [START statistics]
        print("Printing statistics...")
        print("\nStatistics")
        print(f"  status   : {solver.StatusName(status)}")
        print(f"  conflicts: {solver.NumConflicts()}")
        print(f"  branches : {solver.NumBranches()}")
        print(f"  wall time: {solver.WallTime()} s")
        print("Statistics printed.")
        # [END statistics]

    except Exception as e:
        print(f"An error occurred: {e}")

if __name__ == "__main__":
    main()
    print("Solver finished.")  # Debug print statement
# [END program]

I am using python version 3.12.1 with VS Code. I have uninstalled and reinstalled OR-Tools and all dependent libraries multiple times. The output in the terminal appears as follows:

Code:
Starting the solver...
Creating model...
Model created.
Creating variables...
Variables created: x in [0, 50], y in [0, 50], z in [0, 50]
Adding constraints...
Constraints added.
Setting objective...
Objective set.
Creating solver...
Solver created.
Solving model...

The optimized solution should look something like:

Code:
Model solved with status: 4  # This status code should indicate OPTIMAL or FEASIBLE

Checking solution...
Maximum of objective function: 32.0  # Example value
x = 5.0  # Example value
y = 0.0  # Example value
z = 0.0  # Example value

Printing statistics...

Statistics
  status   : OPTIMAL  # Example status
  conflicts: 0
  branches : 0
  wall time: 0.001 s
Statistics printed.
Solver finished.

I believe there is an issue with solver itself but I'm not sure how to diagnose what it is, it may be something simple that I am overlooking. Any help would be greatly appreciated.
<p>I am new to Google OR-Tools and trying to start by running a basic example from OR-Tools example library found here</p>
<p><a href="https://github.com/google/or-tools/blob/stable/ortools/sat/samples/cp_sat_example.py" rel="nofollow noreferrer">https://github.com/google/or-tools/blob/stable/ortools/sat/samples/cp_sat_example.py</a>.</p>
<p>Every code example gets hung up on the same part after creating the solver.</p>
<p>When I run the code I am not getting an output from any of the examples, each time it gets hung up after creating the solver, then the script just seems to terminate. I have modified this CP-Stat model code example with some print statements for debugging but I still can't figure out why every example gets hung up on the same part.</p>
<pre><code>#!/usr/bin/env python3
# [START program]
"""Simple solve."""
# [START import]
from ortools.sat.python import cp_model
# [END import]


def main() -> None:
"""Minimal CP-SAT example to showcase calling the solver."""
print("Starting the solver...") # Debug print statement

try:
# Creates the model.
# [START model]
print("Creating model...")
model = cp_model.CpModel()
print("Model created.")
# [END model]

# Creates the variables.
# [START variables]
print("Creating variables...")
var_upper_bound = max(50, 45, 37)
x = model.NewIntVar(0, var_upper_bound, "x")
y = model.NewIntVar(0, var_upper_bound, "y")
z = model.NewIntVar(0, var_upper_bound, "z")
print(f"Variables created: x in [0, {var_upper_bound}], y in [0, {var_upper_bound}], z in [0, {var_upper_bound}]")
# [END variables]

# Creates the constraints.
# [START constraints]
print("Adding constraints...")
model.Add(2 * x + 7 * y + 3 * z <= 50)
model.Add(3 * x - 5 * y + 7 * z <= 45)
model.Add(5 * x + 2 * y - 6 * z <= 37)
print("Constraints added.")
# [END constraints]

# [START objective]
print("Setting objective...")
model.Maximize(2 * x + 2 * y + 3 * z)
print("Objective set.")
# [END objective]

# Creates a solver and solves the model.
# [START solve]
print("Creating solver...")
solver = cp_model.CpSolver()
print("Solver created.")

print("Solving model...")
status = solver.Solve(model)
print(f"Model solved with status: {status}")
# [END solve]

# [START print_solution]
print("Checking solution...")
if status == cp_model.OPTIMAL or status == cp_model.FEASIBLE:
print(f"Maximum of objective function: {solver.ObjectiveValue()}\n")
print(f"x = {solver.Value(x)}")
print(f"y = {solver.Value(y)}")
print(f"z = {solver.Value(z)}")
else:
print("No solution found.")
# [END print_solution]

# Statistics.
# [START statistics]
print("Printing statistics...")
print("\nStatistics")
print(f" status : {solver.StatusName(status)}")
print(f" conflicts: {solver.NumConflicts()}")
print(f" branches : {solver.NumBranches()}")
print(f" wall time: {solver.WallTime()} s")
print("Statistics printed.")
# [END statistics]

except Exception as e:
print(f"An error occurred: {e}")

if __name__ == "__main__":
main()
print("Solver finished.") # Debug print statement
# [END program]

</code></pre>
<p>I am using python version 3.12.1 with VS Code. I have uninstalled and reinstalled OR-Tools and all dependent libraries multiple times. The output in the terminal appears as follows:</p>
<pre><code>Starting the solver...
Creating model...
Model created.
Creating variables...
Variables created: x in [0, 50], y in [0, 50], z in [0, 50]
Adding constraints...
Constraints added.
Setting objective...
Objective set.
Creating solver...
Solver created.
Solving model...
</code></pre>
<p>The optimized solution should look something like:</p>
<pre><code>Model solved with status: 4 # This status code should indicate OPTIMAL or FEASIBLE

Checking solution...
Maximum of objective function: 32.0 # Example value
x = 5.0 # Example value
y = 0.0 # Example value
z = 0.0 # Example value

Printing statistics...

Statistics
status : OPTIMAL # Example status
conflicts: 0
branches : 0
wall time: 0.001 s
Statistics printed.
Solver finished.
</code></pre>
<p>I believe there is an issue with solver itself but I'm not sure how to diagnose what it is, it may be something simple that I am overlooking. Any help would be greatly appreciated.</p>
 
Top