Pregunta

¿Es posible utilizar la API de MSF para especificar una variable como semi-entero (V = 0 o a <= V <= b)?

El siguiente es un ejemplo en lp_solve que utiliza el "sec" y las palabras clave "int" para indicar las variables son semi-continuo y entero.

max: 0.5 Q1 + 0.55 Q2 ;

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

sec Q1,Q2 ;
int Q1,Q2 ;

Algo similar en MSF sería bueno. Tomo nota de que es posible llamar a un Gurobi Plugin DLL dentro de MSF sin embargo no puedo encontrar ningún lugar en esa API para poder ajustar correctamente el tipo de la variable (creo Gurobi lo llama el vTipo), así que supongo que es o bien no expuesto en su API .NET o no está disponible en la versión de Gurobi que utiliza MSF? Por otra parte, no es una buena manera de llamar lp_solve de .NET?

¿Fue útil?

Solución

Puede hacer esto con la Fundación Solver pero no hay equivalente para la palabra clave "sec". En su lugar se puede añadir una decisión ficticia 0-1 para cada variable semi-entero. Para su original ejemplo que implica "V", aquí es cómo usted podría hacerlo en OML:

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

Si está utilizando la API Fundación Solver continuación, deberá añadir las decisiones análogas, las limitaciones, los objetivos utilizando el modelo de objetos. La forma de especificar el tipo de decisión está utilizando un dominio, siempre en el ctor.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top