有没有什么方法可以从求解器中删除定义的约束,而无需先清除求解器并创建约束?
假设我的问题是最大化 3 个变量的总和,这两个变量有两个约束
约束 1:变量 2 应介于 8 - 10 之间
约束 2:变量 3 应介于 5 - 10 之间
from ortools.linear_solver import pywraplp
solver = pywraplp.Solver('SolveIntegerProblem',
pywraplp.Solver.CBC_MIXED_INTEGER_PROGRAMMING)
objective = solver.Objective()
Variable[0] = solver.IntVar(0, 5, variable 0 )
Variable[1] = solver.IntVar(0, 10, variable 1 )
Variable[2] = solver.IntVar(0, 20, variable 2 )
objective.SetCoefficient(Variable[0], 1)
objective.SetCoefficient(Variable[1], 1)
objective.SetCoefficient(Variable[2], 1)
objective.SetMaximization()
constraints.append(solver.Constraint(8,10))
constraints[0].SetCoefficient(variable[1],1)
constraints.append(solver.Constraint(5,10))
constraints[1].SetCoefficient(variable[2],1)
Run Code Online (Sandbox Code Playgroud)
现在,在第二次运行我的代码时,我想删除第 2 号约束,但我找不到任何操作来执行此操作,唯一的方法是清除求解器并从第一个定义约束。
在这个半代码中,约束的数量是有限的,但实际上,在我的真实代码中,约束的数量很多,我无法从一开始就定义它们。