2017-03-29 21 views
0

まず、この質問の悪いタイトルを唱えてください。 あなたが良い方がいるなら=>教えてください!Pythonパラメータの不等式

私の問題は、自分がPythonでシンプレックスソルバーを書いて、どのように動作するかを深く理解したいということです。

m.addConstr(x[0] <= 7) 

基本的に私のモデルmに制約を追加する必要があります

したがって、私は私のプログラムではこのような何かを持っていると思います。 これはGurobiでうまくいきます。なぜなら、それは読みやすくてすばらしいからです。 問題は、x[0]がオブジェクトでなければならないということです。私自身は、不等号または等価なものがあるときに何が起こるべきかを定義することができます。

ほとんどのものを自分で理解することができて、これがどのように機能しているかを知りたいと思うでしょう。

答えて

1

作業しているオブジェクトの比較演算子をオーバーロードしたいようです。 Fooはあなたの例ではx[0]のクラスがあるのであれば、あなたはこのようにそれを書くことができます:左手のために呼ばれている

class Foo: 
    def __gt__(self, other): 
     # construct and return some kind of constraint object 

    def __lt__(self, other): 
     # likewise 

これらの特別なメソッド(__gt____ge____lt____le____ne____eq__を)比較関係にあるオブジェクト。したがって、x > yがある場合、x__gt__メソッドがyを引数として呼び出されます。

1

私はエレガントな入力構文を思いつくのが最初の懸念ではないと思います。最初にsimplexアルゴリズムを実装するべきです。

私は、あなたが線形計画問題のための2つの標準フォーマット用のパーサを書くことで入力を扱うお勧め:.lp.mps

あなたはまだPythonでの適切な取り扱い表現を実装する方法を知りたい場合は、私はあなたが持ってお勧めしますPySCIPOptを見てください。これはあなたが望むことを正確に実行しており、ソースコード全体を調べることができるからです。

+0

グロビで正常に行われているように、私はPythonでインラインで作業することを考えています。それから、あなたにはたくさんの自由があります。 .lp構文を見ていきます。リンクありがとう! – Wikunia

関連する問題