2017-04-20 7 views
-1

ありがとう、 私はパルプが初めてです。私はオンラインになったいくつかの例からパルプを学びます。これらの例は非常に役に立ち、mtselfによって単純なモデルを書くことができました。しかし、私はまだ複雑なモデルを構築するのは難しいと感じています。スパース行列の変数と制約を生成するためにパルプを使用する方法は?

スパース行列とコンプレックス制約を持つ複雑な例を投稿してください。 y = LpVariable.dicts( "y"、(Factory、Customers)、0,1、LpBinaryなど)のような単純な変数の代わりに、必要な変数のみを作成する方法を学びたい。

私は別の質問があります:y = LpVariable.dicts( "y"、(Factory、Customers)、0,1、LpBinary)を使って変数を定義すると、どうなりますか?目的関数と制約を追加し、そのような無用変数を明示的に0に設定するいくつかの制約を追加しますか?パルプアルゴリズムは最初にそのような無関係な変数を識別し、最初にそれらを除去してから、整数プログラミングアルゴリズム(B &BまたはB &Cなど)を実行して、サイズを小さくして問題を解決できますか?これが当てはまる場合、「0に設定する無駄な変数を設定する」メソッドは解決速度をまったく低下させません。私は正しい?

答えて

0

これはまばらである第一工場や顧客のセットを生成する。特に

http://www.stuartmitchell.com/journal/2012/2/3/my-top-n-tips-for-python-coding-in-optimisation-1.html

を助けるかもしれません。その後

factories_customers = [(f,c) for f in factories for c in customers 
          if <insert your condition here>] 

モデルの作成時間が長くなりますので、パルプは「役に立たない」変数と制約を削除しません

y = LpVariable.dicts("y", factories_customers ,0,1,LpBinary) 

を使用しています。

しかし、ソリューションアルゴリズム(CBCにはデフォルトで変数を削除する事前解決アルゴリズムが含まれています)。

+0

ありがとう、スチュアート。したがって、無意味な変数を明示的にゼロに設定すると、解決時間に大きな差は生じません。モデル構築時間の差はどれくらいありますか。モデル構築時間は通常、ソリューション時間と比較して秒または1分程度で、モデル構築時間はかなり短いと思います。 – liywliyw

関連する問題