Ich habe ein Python-Skript, in dem ich ein lineares Programmierproblem lösen muss. Der Haken ist, dass die Lösung binär sein muss. Mit anderen Worten, ich brauche ein Äquivalent von MATLABs bintprog Funktion. NumPy und SciPy scheinen keine solche Prozedur zu haben. Hat jemand Vorschläge, wie ich eines dieser drei Dinge tun könnte:binäre lineare Programmierung Solver in Python
Finden Sie eine Python-Bibliothek, die eine solche Funktion enthält.
Beschränken Sie das Problem so, dass es von einem allgemeineren linearen Programmierlöser gelöst werden kann.
Schnittstelle Python mit MATLAB, um so direkt bintprog zu verwenden.
Hinzufügen der Einschränkung '0 <= x <= 1 'nicht ein binäres Programm. es ist lediglich die LP-Relaxation des Binärprogramms und kann als Teil einer Binärprogrammlösungsmethode verwendet werden. – Peter
Ich sage, fügen Sie die Einschränkung 0 <= x <= 1 zu dem Integer-Programm (das Sie mit CVXOPT lösen können, wie oben angegeben), um das Integer-Programm in ein Binärprogramm zu transformieren. – Alejandro
Nun .... ja und nein. Ein lineares Programm mit nur binären/ganzzahligen Variablen wird als ILP (Integer Linear Program) bezeichnet. Ein lineares Programm mit sowohl binären/ganzzahligen Variablen UND kontinuierlichen Variablen wird als MILP (Mixed Integer Linear Program) bezeichnet. Die Ausdrücke "ganzzahlig" und "binär" werden in diesem Zusammenhang austauschbar verwendet, da jede ganzzahlige Variable unter Verwendung mehrerer binärer Variablen (d. H. SOS-Typ 1) dargestellt werden kann. Aber Sie haben Recht damit, dass man 0 <= x <= 1 vorschreiben sollte, wenn x als allgemeine Integer-Variable deklariert ist. In den meisten Fällen kann x jedoch direkt als binäre Variable deklariert werden. – Gilead