Domanda

E 'possibile utilizzare l'API di MSF per specificare una variabile come semi-intero (V = 0, o a <= V <= b)?

Il seguente è un esempio in lp_solve che utilizza il "sec" e le parole chiave "INT" per indicare le variabili sono semi-continuo e intero.

max: 0.5 Q1 + 0.55 Q2 ;

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

sec Q1,Q2 ;
int Q1,Q2 ;

Qualcosa di simile a MSF sarebbe bello. Faccio notare che è possibile chiamare un Gurobi Plugin DLL all'interno di MSF però non riesco a trovare alcun posto in quella api per essere in grado di impostare il tipo di variabile in modo corretto (penso Gurobi lo chiama il VType), quindi suppongo che è o non esposto nella loro api .net o non disponibili nella versione di Gurobi che MSF utilizza? In alternativa, c'è un bel modo per chiamare lp_solve da .NET?

È stato utile?

Soluzione

È possibile farlo con Risolutore Fondazione, ma non esiste un equivalente per la parola chiave "sec". Invece è possibile aggiungere una decisione fittizio 0-1 per ogni variabile semi-intero. Per il vostro esempio originale che coinvolge "V", ecco come si potrebbe fare in OML:

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

Se si utilizza l'API Risolutore Fondazione quindi si dovrebbe aggiungere le decisioni analoghe offerte, vincoli, obiettivi utilizzando il modello a oggetti. Il modo per specificare il tipo di una decisione sta usando un dominio, previsto nel ctor.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top