Question

Est-il possible d'utiliser le MSF api pour spécifier une variable semi-entier (V = 0, ou a <= V <= b)?

Ce qui suit est un exemple dans lp_solve qui utilise le « sec » et les mots clés « int » pour indiquer les variables sont semi-continu et entier.

max: 0.5 Q1 + 0.55 Q2 ;

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

sec Q1,Q2 ;
int Q1,Q2 ;

Quelque chose de semblable à MSF serait bien. Je note qu'il est possible d'appeler un Gurobi Plugin DLL au sein de MSF mais je ne peux trouver aucune place dans ce api pour être en mesure de définir le type de la variable correctement (je pense Gurobi qu'il appelle le VType), donc je suppose qu'il est soit ne sont pas exposés dans leur .net api ou non disponibles dans la version de Gurobi que MSF utilise? Sinon, est-il un bon moyen d'appeler lp_solve de .NET?

Était-ce utile?

La solution

Vous pouvez le faire avec Solver Foundation, mais il n'y a pas d'équivalent pour le mot-clé « sec ». vous pouvez ajouter une décision à la place 0-1 factice pour chaque variable semi-entier. Pour votre exemple original impliquant « V », voici comment vous pouvez le faire en OML:

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

Si vous utilisez l'API Foundation Solver alors vous ajouterez les décisions, les contraintes, les analogues objectifs à l'aide du modèle d'objet. Le moyen pour indiquer le type d'une décision utilise un nom de domaine, à condition que dans le cteur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top