パルプに乗算制約を線形化しようとしています。制約の乗算 - パルプ(Python)で解く
prob += (1 - Y) * (3 - X)
に等しいです::Y*X
:Yは、バイナリ変数は式のすべてが、ある
prob += 3 - 3*Y - X + X*Y
には、以下の部分を除いて直線的である
はそれは次のようになります。私は別の質問で見つかった式を使用することによってこの問題を解決しようとした:
だから私は、これはX*Y = A
を与える私のコードを使用して、X1*X2 = Y
を使用してみました。私はログ代入メソッドを使用しました。
prob += math.log(float(A)) = math.log(float(X)) + math.log(float(y))
およびその他の制約:フロートが唯一の文字列または数値ではなくLpVariableできるため
prob += 3 - 3*Y - X + A
のみこれが動作するようには思えないこれは私に次のコードを与えました。数式のイメージで与えられた最初のsubtitutionメソッドを使ってこの問題を解決する方法はありますか?
私は「float()引数は文字列でも数値でも、 'NoneType」でなくてはなりません。 'フロートが必要です'。私はLpVariableのログを取ることは可能だとは思わない。 – WhatTheShrimp
モジュールのソースコードを掘り下げて、値を取得するのは別の呼び出しです。それらのコードから - https://github.com/coin-or/pulp/blob/master/src/pulp/pulp.py - LpVariableクラスに: def値(自己): return self.varValue 変数の値を取得するには、変数に値が割り当てられていると仮定して、値(x)ではなくx.value()を指定する必要があります。 float()の部分を保持する必要がありますが、内部的にはLpVariableクラスのfloat型への値の代入はありません。 – huma474