私は次のコードを実行すると:パルプパイソンLP - 間違ったソリューション
from pulp import *
x = pulp.LpVariable("x", 0, None , LpContinuous)
y = pulp.LpVariable("y", 0, None , LpContinuous)
problem = pulp.LpProblem("A simple max problem", pulp.LpMinimize)
problem += x + y, "The objective function"
problem += x + 2*y == 2, "1st constraint"
problem += 2*x + 3*y == 2, "2nd constraint"
problem += x >= 0, "3rd constraint"
problem += y >= 0, "4th constraint"
problem += x + y == 1, "5th constraint"
problem.writeLP("WhiskasModel.lp")
problem.solve()
for variable in problem.variables():
print variable.name, "=", variable.varValue
print value(problem.objective)
を私は出力として得る:
x = 0.0
y = 1.0
1.0
第二の制約が満たされていないことから、明らかに間違っています。 状況は上記の問題には解決策がないことです。だから私はパルプから、私に関連するもの(「実行不可能な問題」)かそのようなものを通知することを期待しています。代わりに、私はそれが任意に制約のいくつかを落とし、それらの残りの部分で動作すると思う。同様に、次の場合:
x = pulp.LpVariable("x", 0, None , LpContinuous)
y = pulp.LpVariable("y", 0, None , LpContinuous)
problem = pulp.LpProblem("A simple max problem", pulp.LpMinimize)
problem += x + y, "The objective function"
problem += x + 2*y == 2, "1st constraint"
problem += 2*x + 3*y == 20, "2nd constraint"
problem += x >= 0, "3rd constraint"
problem += y >= 0, "4th constraint"
problem += x + y == 1, "5th constraint"
problem.writeLP("WhiskasModel.lp")
problem.solve()
for variable in problem.variables():
print variable.name, "=", variable.varValue
print value(problem.objective)
ouputを、すなわち4制約が今や "ドロップ" さ
x = 34.0
y = -16.0
18.0
あります。
これを解決する方法はありますか?