Installez lp_solve sur Mac OSX et appelez-le avec python.

Logiciel gratuit lp-solution qui résout les problèmes de programmation linéaire. La procédure pour l'exécuter sur le terminal Mac et la procédure pour l'appeler à partir de Python n'ont été organisées nulle part, je vais donc le noter. De plus, comme je ne savais pas comment l'utiliser après son installation, j'écrirai le code Python comme un exemple simple à la fin.

environnement

Mac OS X El Capitan 10.11.6 Python 2.7.12

$ brew tap homebrew/science
$ brew install lp_solve

Installation du corps lp_solve et de l'interface Python

Tout d'abord, téléchargez la dernière version du fichier à partir de https://sourceforge.net/projects/lpsolve/files/lpsolve/. Les deux fichiers suivants sont requis. (Dernière mise à jour le 10 octobre 2016: 5.5.2.5)

  • lp_solve_5.5.2.5_source.tar.gz

  • lp_solve_5.5.2.5_Python_source.tar.gz

Décompressez-les ($ tar xfvz) et copiez sous / extra dans lp_solve_5.5.2.5_Python_source.tar.gz dans /lp_solve_5.5 dans lp_solve_5.5.2.5_source.tar.gz.

Si la hiérarchie des répertoires ressemble à ceci ↓ lp_solve_5.5/ ├ lp_solve ├ lpsolve55 ├ extra ├ : └ demo

Dans lp_solve / et lpsolve55 /,

$ sh ccc.osx

ça ira. À ce stade, un grand nombre d'erreurs se produiront en fonction de l'environnement, mais les fichiers nécessaires seront générés. Si vous faites lp_solve / → lpsolve55 / et sh ccc.osx, vous devriez voir que lpsolve55 / bin est généré. Copiez liblpsolve55.a et liblpsolve55.dylib dans / lpsolve55 / bin / osx64 /, s'il est généré, dans / usr / loca / lib.

Enfin, exécutez setpy.py dans /lp_solve_5.5/extra/Python. Mais avant cela, modifiez la partie suivante dans setpy.py.

setpy.py


:
:
windir = getenv('windir')
if windir == None:
  WIN32 = 'NOWIN32'
  LPSOLVE55 = '../../lpsolve55/bin/ux32' #→ lpsolve55/bin/Fixé à osx64
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",

:
:

Après la sauvegarde, le reste est dans le terminal

$ python setpy.py install

Ensuite, toute l'installation est terminée.

Si vous obtenez une erreur de fichier "malloc.h" introuvable ici, réécrivez la ligne spécifiée (probablement #include \ <malloc.h>) en #include \ <stdlib.h>. Si stdlib.h est déjà inclus, supprimez-le. (Référence: malloc.h sur OS X)


Vérifions si cela fonctionne normalement à partir de Python.

$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, ...)
>>> 

Si ça ressemble à ça, c'est un succès.

Notation Lp_splve en Python

Par exemple, si vous souhaitez résoudre le problème suivant

Fonction objective

min -400x1 -300x2 + 100x3

Contrainte

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

Ajoutez des expressions de contrainte comme suit.

from lpsolve55 import *

# 0,3 → L'expression de contrainte est 0 ligne, la variable est 3 Faites ce LP
lp = lpsolve('make_lp',0,3) 

#Ajout de la fonction objectif "min": -400x1 -300x2 +100x3」
lpsolve('set_obj_fn', lp, [-400, -300, 100] ) 

#Expression de contrainte ajoutée "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) 

#Réglage de la limite inférieure des variables,"Infinite"Exprimez l'infini avec
lpsolve('set_lowbo',lp,1,-Infinite)

#Limite supérieure de variables, plusieurs paramètres peuvent être définis en même temps dans la liste
lpsolve('set_upbo',lp,[5,20,20]) 

#Contrainte entière, 0-1 contrainte est"set_binary"
lpsolve('set_int'lp,[1,2,3]) 

# const.lp est généré et produit la formulation
lpsolve('write_lp',lp,'const.lp') 

#Résoudre le problème
lpsolve('solve',lp) 

#Sortie de solution optimale, assignable à des variables. Le type est la liste
print lpsolve('get_variables',lp) 

En gros, j'ai arrangé les commandes que je pense utiliser souvent. Trouvez d'autres commandes dans la Référence API lp_solve. J'étudie également.

à partir de maintenant

~~ Ce qui m'intéresse actuellement, c'est de savoir s'il existe une fonction pour arrêter le calcul de lp_solve à un moment donné. Par exemple, je recherche quelque chose comme "Si cela ne se termine pas dans 20s, je sortirai une solution provisoire à ce stade." ~~

(Ajout: 2016/10/7) Il y avait.

lpsolve('set_timeout',lp,TIME) #TIME est le nombre de secondes-Réglez sur 1. TIME pour 1 minute= 59

C'est possible avec.

Les références

Solveur de plan linéaire Installez le pilote lpsolve pour Python lp_solve API reference INSTALL LPSOLVE FOR PYTHON

Bibliothèque plus recommandée que lp_solve

PuLP est une bibliothèque d'optimisation mathématique plus flexible en Python. Ces articles de @SaitoTsutomu sont très utiles. Veuillez voir ensemble. Modèle mathématique du début Python dans l'optimisation Feuille de calcul du modélisateur d'optimisation mathématique (PuLP) (Python)

Recommended Posts

Installez lp_solve sur Mac OSX et appelez-le avec python.
Installez le sélénium sur votre Mac et essayez-le avec python
Installez PyQt5 avec homebrew sur Mac OS X Marvericks (10.9.2)
Installez Sphinx sur MacOSX
Installez mitmproxy sur Mac OS X
Installez pgmagick sur Mac OS X 10.9
Nombre de mots avec Apache Spark et python (Mac OS X)
Tester Python avec Miniconda dans un environnement OS X et Linux avec travis-ci
Comment installer Theano sur Mac OS X avec homebrew
Installez CaboCha dans l'environnement Ubuntu et appelez-le avec Python.
Premiers pas avec le framework Python Django sur Mac OS X
Installez mecab sur le serveur partagé Sakura et appelez-le depuis python
Installez Python sur Mac
Installer Python 3 dans un environnement Mac
Installez Python 3.4 sur Mac
Installez OpenCV 4.0 et Python 3.7 sur Windows 10 avec Anaconda
Exécutez Zookeeper x python (kazoo) sur Mac OS X
Mettez Python 2.7.x dans pyenv sur Mac OSX 10.15.5
Installer shogun avec python modulaire (OS X Yosemite)
Shpinx (Python Document Builder) sur Mac OS X
Installez Python 3 sur Mac et créez un environnement [Definitive Edition]
Installer pygame sur python3.4 sur Mac
Très facile à installer SciPy sur Mac OS X
Comment installer Caffe sur OS X avec macports
Installez pandas 0.14 sur python3.4 [sur Mac]
Créer un environnement de développement Python sur Mac OS X
mac OS X 10.15.x pyenv Python Si vous ne pouvez pas installer
Mémo sur Mac OS X
Utilisation de plusieurs versions de Python sur Mac OS X (2) Utilisation
Utilisation du SDK NAOqi 2.4.2 Python avec Mac OS X El Capitan
Installez Python 3.8 sur Ubuntu 18.04 (norme du système d'exploitation)
Installez Python 3.8 sur Ubuntu 20.04 (norme du système d'exploitation)
Installez Python 3.7 Anaconda sur MAC, mais Python 2
Installez Scipy sur Mac OS Sierra
Installer python3 sur Mac (El Capitan)
Installez Python 3.9 sur Ubuntu 20.04 (norme du système d'exploitation?)
Installez Python 2.7 sur Ubuntu 20.04 (norme du système d'exploitation?)
Étapes pour installer python3 sur Mac
Installez python avec mac vs code
Appeler C / C ++ depuis Python sur Mac
J'ai appris MNIST avec Caffe et j'ai essayé de le dessiner (MAC OS X El Capitan)
Comment installer OpenCV sur Cloud9 et l'exécuter en Python
Utilisation de plusieurs versions de Python sur Mac OS X (1) Installation de plusieurs ver
Créez un environnement Python sur votre Mac avec Anaconda et PyCharm
Erreur et solution lors de l'installation de python3 avec homebrew sur mac (catalina 10.15)
Suite ・ Notes sur la préparation de l'environnement de développement Python sur Mac OS X
Comment installer Theano sur Mac OS X 10.10 (en utilisant pyenv, anaconda)
Installez matplotlib sur OS X El Capitan
Un mémo contenant Python2.7 et Python3 dans CentOS
Chase des applications actives sur Mac avec Python
Aws-cli installé sur Mac OS X Lion
Comment effacer Python 2.x sur Mac.
Si scipy est python 2.7.8, l'installation de pip trébuche
Remarques sur la construction de Python et pyenv sur Mac
Créer un environnement Python avec Anaconda sur Mac
Installez pyenv et Python 3.6.8 sur Ubuntu 18.04 LTS
Installation de PIL avec Python 3.x sur macOS
Exécutez NASA CEA sur Mac OS X
Mettez OpenCV dans OS X avec Homebrew et vidéo d'entrée / sortie avec python
Mettre la liaison MeCab pour Python sur Windows, Mac et Linux avec pip