1

C++ コードで SCIP Optimization Suite 3.0.2 を使用してスケジューラを実装しています。

t_i*p + d*p + t_i <=0

ここt_iで、 は連続変数、pはバイナリ変数、dは定数です。サポートされているすべてのタイプの制約の概要を見つけました: scip 制約と、より線形な制約とそれらの間の結合と分離の階層として問題を何らかの方法で実装しましたが、解決策の検索を困難にする疑いがあります。したがって、特に2つの変数の乗算について、より簡単な方法があるかどうかに興味があります。

4

2 に答える 2

2

これを 2 次制約として定式化できます。「呼び出し可能なライブラリ」の例を参照してください。

http://scip.zib.de/doc/examples/CallableLibrary/

特に、呼び出し可能なライブラリを使用してこれを実装する方法の例については、ファイル string.c と一般的なドキュメント

http://scip.zib.de/doc/html/cons__quadratic_8h.php#ad3707e7f7166bea83b7713cf2e52b0db

楽しみましょう、アンブロたち

于 2014-04-24T21:36:18.770 に答える
2

あなたが言及した制約を考慮すると、少なくともt_iが非負になるように制限されている場合、線形定式化さえありpます。

  • p = 0=> <= 0、上で仮定された非負性のためにt_i強制的に 0t_i
  • p = 1=> 2 * t_i<= -d

これを 1 つの線形制約に折りたたむことができます。この制約でpは、基本的に に上限が課されt_iます。

t_i + d / 2 * p <= 0

SCIP の呼び出し可能なライブラリを使用すると、この制約をvarbound制約として直接作成できます。

于 2014-04-25T10:13:59.220 に答える