Вопрос

Можно ли использовать API MSF для указания переменной как полуцелого числа (V = 0, или a <= V <= b)?

Ниже приведен пример в LP_Solve, в котором ключевые слова «sec» и «int» используются для указания того, что переменные являются полунепрерывными и целочисленными.

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.Я отмечаю, что можно вызвать DLL плагина Gurobi в MSF, однако я не могу найти в этом API место, где можно было бы правильно установить тип переменной (я думаю, что Гуроби называет ее VTYPE), поэтому я предполагаю, что это либо не представлен в их API .net или недоступен в версии Gurobi, которую использует MSF?Альтернативно, есть ли хороший способ вызвать LP_Solve из .NET?

Это было полезно?

Решение

Вы можете сделать это с помощью 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, вам следует добавить аналогичные решения, ограничения и цели, используя объектную модель.Способ указания типа решения — использование домена, указанного в векторе.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top