2016-06-09 3 views
1

Gibt es eine Implementierung des linearen Optimierungsmodells in Python, die explizit die Typen meiner Variablen definiert. Zum Beispiel möchte ich, dass meine Variable nur ganze Zahlen ist. Ich kann dieses bei lpSolve in R mit wie:Lineares Optimierungsmodell mit angegebenen Typen für die Variable

set.type(model, 1:18,type = "integer") 

aber ich brauche lineares Optimierungsmodell in Python zu bauen.

Es gibt eine liprog-Implementierung von scipy, aber es erlaubt nicht, den Typ meiner Variablen zu definieren.

Antwort

2

Da IP (Integer Programming) und LP (Linear Programming) mit sehr unterschiedlichen Algorithmen gelöst werden, ist es legitim, dass einige Löser nicht beides (IMO) mischen: IP hat eine exponentielle Komplexität und LP eine polynomische Komplexität. Ihr Problem ist eine MILP (Mixed Integer Linear Programming), die also eine exponentielle Komplexität hat, so dass Sie eine MILP solver for Python benötigen. Beachten Sie jedoch, dass selbst kleine Problemfälle sehr schwierig zu lösen sind, wenn Sie viele Integer-Variablen einführen. Scipys Linprog ist laut Dokumentation ein LP-Solver.

Und übrigens sieht es so aus, es gibt auch eine , und eine andere Schnittstelle pylpsolve, die mehr auf dem neuesten Stand aussieht. Ich gab Pylpsolve einen Versuch, und war in der Lage, aus dem Github Repo zu klonen und es zu installieren, könnten Sie einen Blick auf diese Funktion werfen (nach was ich früher sagte, werden Sie feststellen, dass die Namen verwirrend sind)

>>> from pylpsolve import LP 
>>> help(LP.setInteger) 
Verwandte Themen