2017-03-13 31 views
1

プログラムの変数に初期値と二重値を設定しないでください。これを行う特定の方法はありますか? Varオブジェクトに初期化オプションがありますが、このように使用する方法がわかりません変数の初期値と二重値を設定するpyomo

答えて

3

宣言時に変数の値を設定する場合は、initializeキーワードを使用できます。例えば、

model.x = Var(initialize=1.0) 

また、あなたはいつでも解決する前に変数に.value属性を設定することができます。 AbstractModelで開始する場合は、create_instanceメソッドによって返されるインスタンスでのみこれを行うようにしてください。ここでConcreteModelを使用した例です。

model = ConcreteModel() 
model.x = Var() 
model.X = Var([1,2,3]) 

model.x.value = 5.0 
model.X[1].value = 1.0 

NLファイルインターフェイスは、常に、ソルバ入力ファイル内のすべてのモデル変数の現在の値が含まれます。他のインターフェース(例えば、LPファイルインターフェース)の場合、warmstart=Trueをsolveメソッドに追加すると、MIPウォームスタートのバイナリーまたは整数変数の値を含むウォームスタート・ファイルが作成されます。

デュアルソリューションを設定するには、dualという名前のモデルにSuffixを宣言する必要があります。現在、サフィックス情報のエクスポートをサポートしている唯一のインターフェイスは、NLファイルインターフェイス(AMPLで動作するソルバー)です。ただし、ほとんどのインターフェイスでは、ソルバー(特にdual)からの接尾辞情報のインポートがサポートされています。特定の制約の二重の値を設定すると、次のようになります。Suffixコンポーネントに関する

model = ConcreteModel() 
model.dual = Suffix(direction=Suffix.IMPORT_EXPORT) 
model.c = Constraint(...) 
model.dual[model.c] = 1.0 

詳しい情報はPyomoためのオンラインdocumentationで見つけることができます。

関連する問題