2016-04-05 8 views
-1

Es wird here angegeben, dass SimplexSolver "Definiert eine Branch-and-Bound-Suche für die Optimierung gemischter ganzzahliger Probleme." Das sollte bedeuten, dass es für eine gegebene Aufgabe eine ganzzahlige Lösung findet, aber es findet eine genaue Lösung mit einem doppelten Wert.C# SolverFoundation SimplexSolver forcieren, um eine int-Lösung zu finden

Gibt es eine Möglichkeit, es zu zwingen, eine Integer-Lösung zu finden, oder ich sollte meine eigene Branch-and-Bound zusätzlich zu den doppelten Lösungen implementieren?

Antwort

1

Gibt es eine Möglichkeit, es zu zwingen, eine ganzzahlige Lösung zu finden, oder ich sollte meine eigene Branch-and-Bound zusätzlich zu den doppelten Lösungen implementieren?

Keine Notwendigkeit B & B Algorithmus zu implementieren, erklären nur Ihre Variablen als ganze Zahlen und SimplexSolver sollte es lösen und integer optimale Lösung bieten können. Siehe example here. Relevanter Ausschnitt unten:

SimplexSolver solver = new SimplexSolver(); 

// ... 

for (int i = 0; i < 5; i++) { 
    solver.AddVariable(string.Format("project{0}", i), 
         out chooseProjectX[i]); 
    solver.SetBounds(chooseProjectX[i], 0, 1); 
    solver.SetIntegrality(chooseProjectX[i], true); 
    // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
    solver.SetCoefficient(profit, chooseProjectX[i], 
         estimatedProfitOfProjectX[i]); 
    solver.SetCoefficient(expenditure, chooseProjectX[i], 
         capitalRequiredForProjectX[i]); 
} 
Verwandte Themen