0

私の質問はとても簡単です。私が既に作成した変数を削除することは可能ですか?PuLP-OR:既に作成された変数を削除できますか?

私の唯一の希望は、まず変数を作成しないことです。

使用して、変数を印刷することができれば、私は推測する:

del prob.variable 

は、それを削除します。しかし、私はそれを正確に見つけることができません、Pythonはそれを言います:

prob.variables 

は添えられません。しかし、これは単に最初のを削除パルプLP問題probに関連付けられている

+0

ドキュメントには何も表示されませんでしたが、私は専門家ではありません。どのような状況でこの機能が必要ですか?それを使用する制約がない場合。まあそれは問題ではありません(ちょうどそれらを保つ)。もしあれば、制約を取り除く方が簡単かもしれません。 – sascha

+0

問題は、実際には役に立たないすべての変数を含む制約が1つあることです。これは合計制約です。この非常に重要な制約の直前にそれらを削除することを望んでいました。 – drizo

+0

この制約は実現可能性/目的を変更しませんか?ソルバーはあまり気にしません。そして、なぜこれらのヴァールやこの制約を加える前にこの*役に立たないと推論できないのですか? – sascha

答えて

0

変数がリストである、prob._variablesで見つけることができますので、あなたは、あなたが

prob._variables.remove(var) 

を使用して変数varを削除することができると思うだろう何らかの理由でPythonが==レベルの問題変数を区別しないので、prob._variablesの変数。これによって私はvar1var2probに関連する任意の二つの変数、

if var1 == var2: 
    print('Equal') 

がある場合は、必ず「平等」を返すことを意味します。 (var1 == var2を試してはいけません;これは数式として解釈されます) 。これは、あなたがしようとした場合、出力は常に0

ここで私は、happpening何を説明する必要がありますないより良いPythonのを理解して誰かが仕事が周りだとなります

prob._variables.index(var) 

使用varのインデックスを見つけることを意味し:

for i, v in enumerate(prob._variables): 
    if v is var: 
     del prob._variables[i] 

これは、それに関わるあらゆる制約から変数を削除せず、変数がまだあったかのようにパルプがLP問題を解決するようにそれはそう。だから私はこれがすべて属性prob._variablesを変更すると思います。私はあなたの状況(これは私が本当に理解していない)に役立つとは思えませんが、変数を削除して、古い変数と同じ名前の新しい変数を導入したい場合には必要です。

関連する問題