4

ソルバーをクリアして最初から制約を作成せずに、定義された制約をソルバーから削除する方法はありますか?

私の問題は、2 つの制約がある 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)  

コードを 2 回目に実行したときに、制約番号 2 を削除したいのですが、それを行う操作が見つからず、ソルバーをクリアして最初から制約を定義するしか方法がありません。

このセミコードでは制約の数が限られていましたが、実際、私の実際のコードでは制約の数が多く、最初から定義することはできません。

4

2 に答える 2