GurobiとPythonの使用私は与えられた状況に対して線形問題を最適に解くことができた。しかし、1つの変数の下限を1ずつ増やすことができる範囲が与えられている場合、正しい構文(forループ、while、またはその他)を書く方法を理解できませんでした。話すことがたくさんあります。第2に、対象変数の下限の各増分に対する連続的に得られた最適な目標値をプロットするとどうすればよいでしょうか?正直なところ、どのようにすべての問題を解決するかを、最終的に1つのプロットに表示するために、個々の関連する下限を使って最適値をどのように保持するかを正確に想像することはできませんでした。Pythonコードを修正して、変数の下限が1だけインクリメントされている線形プログラムを解く。
-2
A
答えて
0
まず、Gurobiモデルのラッパーとして機能するクラスを定義します。変数を定義するときに使用する引数として、下限を使用する必要があります。
def main():
N = 50 # number of iterations
result_set = [] # this stores tuples containing the lower bound and the objective function
for i in range(N):
model = GurobiModel(lowerBound = i)
objVal = model.solve()
result_set.append((i, objVal))
がうまくいけば、これはに十分です:
class GurobiModel:
def __init__(self, lowerBound):
# create an empty Gurobi model object
self.model = Model()
# add your variable using the argument as the lower bound
self.variable1 = self.model.addVar(lb=lowerBound,vtype=GRB.INTEGER, name='variable1')
# add more variables, constraints, and objective function
...
def solve(self):
"""Solves the model and returns the optimal objective value (or None if model is infeasible)."""
self.model.optimize()
if model.status == GRB.Status.OPTIMAL:
# if model is optimal, return objective value
return self.model.objVal
else:
print('Model is infeasible')
return None
は今、あなたは(興味の変数の下限に指定して)新しいGurobiModelオブジェクトを作成し、最適にそれを解決し、メイン関数を作成することができますあなたを始めましょう。モデルのサイズがかなり大きい場合は、繰り返しごとにモデル全体を再構築したくない場合など、変数を抽出する方が便利ですgetVarByName()メソッドを呼び出し、下限を変更します)。
関連する問題
- 1. ファイルを解析してPythonの文字列を修正してください
- 2. 変数が正しくインクリメントされていません
- 3. Bashスクリプト:変数が正しくインクリメントされていません
- 4. gwt-ui:binder:私のコードを修正してください。
- 5. アンドロイドの下線の色を変更してください
- 6. ReSharper:解決策全体を修正してください
- 7. 単純なJavaコードでエラーを修正してください
- 8. 修正このしてください
- 9. 変数は、以下のコードを見つけてください機能
- 10. Pythonでマルチスレッドコードを修正してください
- 11. pythonでtrapzとsimpsonを使って曲線下の面積を正しく計算してください
- 12. scale_fill_gradientの引数を修正してください
- 13. 以下のメソッドの理解を助けてください:request.query_string
- 14. アルゴリズム - 1つの変数で線形方程式を解く
- 15. AJAXを実装するためのコードを修正してください
- 16. PythonでOpenCV drawContoursが描く線のカーナリズムを変更してください
- 17. シンボリックリンクを使って正しいpythonプログラムを起動してください
- 18. REST - 国(ジオロケーション)制限付きリソースのエラーコードを修正してください
- 19. なぜこのPythonジェネレータ関数が正しく1回だけ実行されていますか?
- 20. このLuaコードの理解を助けてください
- 21. コードが正しく実行されません。理由を理解してみてください
- 22. 座標を非線形にオフセットするのを助けてください
- 23. インクリメント以下、このコードではいくつかのポインタを探して1、
- 24. コードの1行で変数を初期化してインクリメントする
- 25. リストを修正してください。振る舞い
- 26. Colortextプログラムが正しく色付けされていない
- 27. いくつかの助けajaxコードを理解してください
- 28. テキストエディタが貼り付けられたコードのインデントを変形する理由を教えてください。
- 29. 私のPythonコードでエラーを見つけてください
- 30. python 3xプログラムが正しく変数値を返す/表示していない
"1のインクリメント"で正確に何を意味するのですか?整数プログラミングについて話していますか?バインディングが通常の場合と異なる場合は、制約内の定数項を調整するのは簡単なはずです。 – Zafi
私は、変数の下限を毎回1ずつ増やすことによってモデルを順次解決しなければならないことを意味しました。したがって、対象変数がそれぞれLBとUBで境界が定められているxである場合、LBは、100から始まり200で終了する[100-200]のように、あらかじめ定義された範囲を超えて1ずつ増加します。 –
最適化中に下限が変わるのですか?あなたのアプリケーションは何ですか? – Zafi