Hi,
I am using the Python interface of Choco to do incremental solving.
My situation is the following.
I have a model with a given objective to solve. After getting the optimal solution, I want to add a constraint to the model and re-solve to optimality again.
However, because of the consrtraints added to the solver during optimization, the status seems to be invalid.
Is there a way around this? Below is a minimal working example.
import pychoco as pc
model = pc.Model()
a = model.boolvar(name="a")
b = model.boolvar(name="b")
c = model.boolvar(name="c")
sum_of = model.intvar(0,3,name="thesum")
model.or_([a,b,c]).post()
model.sum([a,b,c], "=", sum_of).post()
solver = model.get_solver()
sol = solver.find_optimal_solution(maximize=False, objective=sum_of)
for var in [a,b,c]:
print(var, sol.get_int_val(var))
model.arithm(sum_of, ">=", 2)
solver = model.get_solver()
sol = solver.find_optimal_solution(maximize=False, objective=sum_of)
print("Solution:", sol)
for var in [a,b,c]:
print(var, sol.get_int_val(var))
Which produces the following output:
BoolVar 'a' = [0, 1] 0
BoolVar 'b' = [0, 1] 0
BoolVar 'c' = [0, 1] 1
Solution: Choco Solution
Unhandled exception: org.chocosolver.solver.exception.SolverException: Cannot access value of a = [0,1]: No solution has been recorded yet (empty solution). Make sure this.record() has been called.
at org.chocosolver.solver.Solution.getIntVal(Solution.java:221)
at org.chocosolver.capi.SolutionApi.getIntVal(SolutionApi.java:28)
Kind regards,
Ignace
Hi,
I am using the Python interface of Choco to do incremental solving.
My situation is the following.
I have a model with a given objective to solve. After getting the optimal solution, I want to add a constraint to the model and re-solve to optimality again.
However, because of the consrtraints added to the solver during optimization, the status seems to be invalid.
Is there a way around this? Below is a minimal working example.
Which produces the following output:
Kind regards,
Ignace