3

MSF API を使用して変数を半整数 ( V = 0、またはa <= V <= b) として指定することはできますか?

以下は、「sec」および「int」キーワードを使用して、変数が半連続で整数であることを示す LP_Solve の例です。

max: 0.5 Q1 + 0.55 Q2 ;

Q1 >= 5;
Q1 <= 10 ;
Q2 >= 5;
Q2 <= 10;
Q1 + Q2 <= 10;

sec Q1,Q2 ;
int Q1,Q2 ;

MSF で似たようなものがいいでしょう。MSF 内で Gurobi プラグイン DLL を呼び出すことは可能ですが、その API で変数の型を正しく設定できる場所が見つからないことに注意してください (Gurobi はそれを VTYPE と呼んでいると思います)。 .net API で公開されていないか、MSF が使用している Gurobi のバージョンで利用できないのですか? あるいは、.NET から LP_Solve を呼び出す良い方法はありますか?

4

1 に答える 1

4

Solver Foundation でこれを行うことができますが、「sec」キーワードに相当するものはありません。代わりに、半整数変数ごとにダミーの 0-1 決定を追加できます。「V」を含む元の例では、OML でそれを行う方法は次のとおりです。

Model[
  Decisions[
    Integers[0, 1],
    VPositive
  ],
  Decisions[
    Reals,
    V
  ],
  Constraints[
    constraint -> 10 * VPositive<= V <= 20 * VPositive
  ]
]

Solver Foundation API を使用している場合は、オブジェクト モデルを使用して類似の決定、制約、目標を追加します。決定のタイプを指定する方法は、ctor で提供されるドメインを使用することです。

于 2010-01-24T00:11:52.863 に答える