Installieren Sie lp_solve unter Mac OSX und rufen Sie es mit Python auf.

Freie Software lp-lösen, die lineare Programmierprobleme löst. Die Prozedur zum Ausführen auf dem Mac-Terminal und die Prozedur zum Aufrufen von Python waren nirgendwo organisiert, daher werde ich darauf hinweisen. Da ich nach der Installation nicht wusste, wie ich es verwenden soll, werde ich am Ende den Python-Code als einfaches Beispiel schreiben.

Umgebung

Mac OS X El Capitan 10.11.6 Python 2.7.12

$ brew tap homebrew/science
$ brew install lp_solve

Installation von lp_solve body und Python interface

Laden Sie zunächst die neueste Version der Datei von https://sourceforge.net/projects/lpsolve/files/lpsolve/ herunter. Die folgenden zwei Dateien sind erforderlich. (Spätestens ab dem 10. Oktober 2016: 5.5.2.5)

  • lp_solve_5.5.2.5_source.tar.gz

  • lp_solve_5.5.2.5_Python_source.tar.gz

Entpacken Sie diese ($ tar xfvz) und kopieren Sie sie unter / extra in lp_solve_5.5.2.5_Python_source.tar.gz in /lp_solve_5.5 in lp_solve_5.5.2.5_source.tar.gz.

Wenn die Verzeichnishierarchie so aussieht ↓ lp_solve_5.5/ ├ lp_solve ├ lpsolve55 ├ extra ├ : └ demo

In lp_solve / und lpsolve55 /,

$ sh ccc.osx

Wird besorgt. Zu diesem Zeitpunkt tritt je nach Umgebung eine große Anzahl von Fehlern auf, die erforderlichen Dateien werden jedoch generiert. Wenn Sie lp_solve / → lpsolve55 / und sh ccc.osx ausführen, sollten Sie sehen, dass lpsolve55 / bin generiert wird. Kopieren Sie liblpsolve55.a und liblpsolve55.dylib in / lpsolve55 / bin / osx64 /, falls generiert, in / usr / loca / lib.

Führen Sie abschließend setpy.py in /lp_solve_5.5/extra/Python aus. Ändern Sie jedoch vorher den folgenden Teil in setpy.py.

setpy.py


:
:
windir = getenv('windir')
if windir == None:
  WIN32 = 'NOWIN32'
  LPSOLVE55 = '../../lpsolve55/bin/ux32' #→ lpsolve55/bin/Auf osx64 behoben
else:
  WIN32 = 'WIN32'
  LPSOLVE55 = '../../lpsolve55/bin/win32'
setup (name = "lpsolve55",
       version = "5.5.0.9",
       description = "Linear Program Solver, Interface to lpsolve",
       author = "Peter Notebaert",

:
:

Nach dem Speichern befindet sich der Rest im Terminal

$ python setpy.py install

Dann ist die gesamte Installation abgeschlossen.

Wenn Sie hier den Fehler "Eine gefundene Datei "alloc.h" erhalten, schreiben Sie die angegebene Zeile (wahrscheinlich #include \ <malloc.h>) in #include \ <stdlib.h> um. Löschen Sie stdlib.h, wenn es bereits enthalten ist. (Referenz: malloc.h unter OS X)


Lassen Sie uns überprüfen, ob es normal mit Python funktioniert.

$python
Python 2.7.12 (default, Aug  3 2016, 23:22:34) 
[GCC 4.2.1 Compatible Apple LLVM 7.3.0 (clang-703.0.31)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from lpsolve55 import *
>>> lpsolve()
lpsolve  Python Interface version 5.5.0.9
using lpsolve version 5.5.2.5

Usage: ret = lpsolve('functionname', arg1, arg2, ...)
>>> 

Wenn es so aussieht, ist es ein Erfolg.

Lp_splve-Notation in Python

Zum Beispiel, wenn Sie das folgende Problem lösen möchten

Zielfunktion

min -400x1 -300x2 + 100x3

Zwang

s.t. \qquad\qquad\qquad\qquad\qquad\\
60x1 +40x2 + 10x3 \le 3800\\ 
30x1 +20x2 -40 x3 \ge 1200\\ 
5 \ge x1 \ge -\infty \\ 
20 \ge x2, x3\\ 
int\ x1,x2,x3

Fügen Sie wie folgt Einschränkungsausdrücke hinzu.

from lpsolve55 import *

# 0,3 → Der Einschränkungsausdruck ist 0 Zeilen, die Variable ist 3. Machen Sie diese LP
lp = lpsolve('make_lp',0,3) 

#Hinzufügung der Zielfunktion "min": -400x1 -300x2 +100x3」
lpsolve('set_obj_fn', lp, [-400, -300, 100] ) 

#Einschränkungsausdruck hinzugefügt "60x1+40x2 +10x3 =< 3800」, 「LE」 = 「<=」、 「GE」 = 「>=」、 「EQ」 = 「=」
lpsolve('add_constraint', lp, [60,40,10], LE, 3800) 

# 30x1 +20x2 -40x3 => 1200
lpsolve('add_constraint', lp, [30,20,-40], GE, 1200) 

#Untergrenzeneinstellung von Variablen,"Infinite"Express Unendlichkeit mit
lpsolve('set_lowbo',lp,1,-Infinite)

#Obergrenze Einstellung von Variablen, mehrere Einstellungen können gleichzeitig in der Liste eingestellt werden
lpsolve('set_upbo',lp,[5,20,20]) 

#Ganzzahlige Einschränkung, 0-1 Einschränkung ist"set_binary"
lpsolve('set_int'lp,[1,2,3]) 

# const.lp wird generiert und gibt die Formulierung aus
lpsolve('write_lp',lp,'const.lp') 

#Das Problem lösen
lpsolve('solve',lp) 

#Optimale Lösungsausgabe, Variablen zuweisbar. Typ ist Liste
print lpsolve('get_variables',lp) 

Grob habe ich die Befehle angeordnet, von denen ich glaube, dass ich sie oft benutze. Weitere Befehle finden Sie in der lp_solve API-Referenz. Ich studiere auch.

von jetzt an

~~ Was mich derzeit interessiert, ist, ob es eine Funktion gibt, mit der die Berechnung von lp_solve irgendwann gestoppt werden kann. Zum Beispiel suche ich nach etwas wie "Wenn es nicht in den 20ern endet, werde ich an diesem Punkt eine vorläufige Lösung ausgeben." ~~

(Ergänzung: 07.10.2016) Es gab.

lpsolve('set_timeout',lp,TIME) #-Auf 1 setzen. ZEIT für 1 Minute= 59

Es ist möglich mit.

Verweise

Linearer Planlöser Installieren Sie den lpsolve-Treiber für Python lp_solve API reference INSTALL LPSOLVE FOR PYTHON

Mehr empfohlene Bibliothek als lp_solve

PuLP ist eine flexiblere mathematische Optimierungsbibliothek in Python. Diese Artikel von @SaitoTsutomu sind sehr hilfreich. Bitte sehen Sie zusammen. Mathematisches Modell von Anfang an Python in Optimierung Cheet Sheet für Mathematical Optimization Modeler (PuLP) (Python)

Recommended Posts

Installieren Sie lp_solve unter Mac OSX und rufen Sie es mit Python auf.
Installieren Sie Selenium auf Ihrem Mac und probieren Sie es mit Python aus
Installieren Sie PyQt5 mit Homebrew unter Mac OS X Marvericks (10.9.2).
Installieren Sie Sphinx unter MacOSX
Installieren Sie mitmproxy unter Mac OS X.
Installieren Sie pgmagick unter Mac OS X 10.9
Word Count mit Apache Spark und Python (Mac OS X)
Testen Sie Python mit Miniconda unter OS X und Linux mit travis-ci
So installieren Sie Theano unter Mac OS X mit Homebrew
Installieren Sie CaboCha in der Ubuntu-Umgebung und rufen Sie es mit Python auf.
Erste Schritte mit dem Python-Framework Django unter Mac OS X.
Installieren Sie mecab auf dem gemeinsam genutzten Sakura-Server und rufen Sie es von Python aus auf
Installieren Sie Python auf dem Mac
Installieren von Python 3 in einer Mac-Umgebung
Installieren Sie Python 3.4 auf einem Mac
Installieren Sie OpenCV 4.0 und Python 3.7 unter Windows 10 mit Anaconda
Führen Sie Zookeeper x Python (Kazoo) unter Mac OS X aus
Fügen Sie Python 2.7.x in pyenv unter Mac OSX 10.15.5 ein
Installieren Sie Shogun mit Python Modular (OS X Yosemite)
Shpinx (Python Document Builder) unter Mac OS X.
Installieren Sie Python3 auf einem Mac und erstellen Sie eine Umgebung [Definitive Edition]
Installieren Sie pygame auf python3.4 auf dem Mac
Sehr einfach, SciPy unter Mac OS X zu installieren
So installieren Sie caffe unter OS X mit Macports
Installieren Sie pandas 0.14 auf python3.4 [auf Mac]
Erstellen Sie eine Python-Entwicklungsumgebung unter Mac OS X.
mac OS X 10.15.x pyenv Python Wenn Sie nicht installieren können
Hinweise zur Vorbereitung der Python-Entwicklungsumgebung unter Mac OS X.
Verwenden mehrerer Versionen von Python unter Mac OS X (2) Verwendung
Verwenden von NAOqi 2.4.2 Python SDK mit Mac OS X El Capitan
Installieren Sie Python 3.8 unter Ubuntu 18.04 (Betriebssystemstandard)
Installieren Sie Python 3.8 unter Ubuntu 20.04 (Betriebssystemstandard)
Installieren Sie Python 3.7 Anaconda auf dem MAC, aber Python 2
Installieren Sie Scipy unter Mac OS Sierra
Installieren Sie python3 auf einem Mac (El Capitan)
Installieren Sie Python 3.9 unter Ubuntu 20.04 (Betriebssystemstandard?)
Installieren Sie Python 2.7 unter Ubuntu 20.04 (Betriebssystemstandard?)
Schritte zum Installieren von python3 auf einem Mac
Installieren Sie Python mit Mac vs Code
Rufen Sie C / C ++ von Python auf dem Mac auf
Ich habe MNIST mit Caffe gelernt und versucht, es zu zeichnen (MAC OS X El Capitan)
So installieren Sie OpenCV in Cloud9 und führen es in Python aus
Verwenden mehrerer Versionen von Python unter Mac OS X (1) Installation von Multiple Ver
Erstellen Sie mit Anaconda und PyCharm eine Python-Umgebung auf Ihrem Mac
Fehler und Lösung bei der Installation von Python3 mit Homebrew auf einem Mac (Catalina 10.15)
Fortsetzung ・ Hinweise zur Vorbereitung der Python-Entwicklungsumgebung unter Mac OS X.
So installieren Sie Theano unter Mac OS X 10.10 (mit pyenv, anaconda)
Installieren Sie matplotlib unter OS X El Capitan
Ein Memo mit Python2.7 und Python3 in CentOS
Verfolgen Sie aktive Anwendungen auf einem Mac mit Python
Installiert aws-cli Unter Mac OS X Lion
So löschen Sie Python 2.x auf einem Mac.
Hinweise zum Erstellen von Python und Pyenv auf dem Mac
Erstellen Sie eine Python-Umgebung mit Anaconda auf einem Mac
Installieren Sie pyenv und Python 3.6.8 unter Ubuntu 18.04 LTS
PIL mit Python 3.x unter macOS installieren
Führen Sie NASA CEA unter Mac OS X aus
Setzen Sie OpenCV in OS X mit Homebrew ein und geben Sie Video mit Python ein / aus
Setzen Sie die MeCab-Bindung für Python unter Windows, Mac und Linux mit pip ein