2016-07-18 10 views
1

私はubuntuでscip pythonインターフェイスを使用しています。私はquicksumを使用して制約を追加しようとしています:SCIPのPythonインターフェイスでクイックサックが非常に遅いのはなぜですか?

m.addCons(quicksum(covfinal[i,j]*weightVars[i]*weightVars[j] \ 
      for i in I for j in J)<=z) 

この手順は何らかの理由で時間がかかります。私はI=range(2500)J=range(2500)を持っています。このステップをより効果的にする方法はありますか?

答えて

1

現時点では、addCons()の方法よりも制約を追加する方法はありません。 quicksum()は、Pythonの組み込みのsum()と比較して必要な時間を劇的に減少させます。これは、1つの式インスタンスしか作成されず、1つの用語で反復的に更新されるためです。さもなければ、非常に高価な多くの新しい表現オブジェクトが作成されるでしょう。

コマンドに時間がかかる理由は、covfinalが密な行列であるため、6.25百万の係数を持つ制約を追加しようとしているためです。

また、常に必ずlatest PySCIPOpt version from GitHubを使用してください。

+0

こんにちは、接線問題があります。シップは効率の面でグロビとどう違うのですか? – Florence

+0

Gurobiは、特にLPとMIPのパフォーマンスに関するC基盤を強化しています。モデリングでは違いはありません.Pythonの両方のインターフェースはCythonと類似の構造を使用しています。 PySCIPOptは、インターフェイスがPythonでプラグイン全体を書くことができるため、Gurobiはコールバックエントリポイントの数が限られているので、はるかに柔軟性があります。 – mattmilten

関連する問題