Есть ли способ удалить определенное ограничение из решателя без разрешения очистки и создания ограничений с первого раза?
предположим, моя проблема состоит в том, чтобы максимизировать сумму трех переменных, которые связаны двумя ограничениями
constraint1: переменная 2 должна быть от 8 до 10
constraint2: переменная 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)
Теперь во втором запуске моего кода я хочу удалить ограничение числа 2, но я не могу найти никакой операции для этого, и единственный способ - очистить решатель и определить ограничение с первого раза.
В этом полукодере количество ограничений было ограничено, но на самом деле в моем реальном коде число ограничений много, и я не могу определить их с первого раза.
Вы пытались использовать метод MPConstraint::Clear()
?
Декларация: https://github.com/google/or-tools/blob/9487eb85f4620f93abfed64899371be88d65c6ec/ortools/linear_solver/linear_solver.h#L865
Определение: https://github.com/google/or-tools/blob/9487eb85f4620f93abfed64899371be88d65c6ec/ortools/linear_solver/linear_solver.cc#L101
Что касается оболочки MPConstraint
экспортируется как объект Constraint
.
src: https://github.com/google/or-tools/blob/9487eb85f4620f93abfed64899371be88d65c6ec/ortools/linear_solver/python/linear_solver.i#L180
Но метод Constraint::Clear()
не отображается https://github.com/google/or-tools/blob/9487eb85f4620f93abfed64899371be88d65c6ec/ortools/linear_solver/python/linear_solver.i#L270
Вы можете попробовать исправить файл swig и перекомпилировать make python && make install_python