Méthode Simplex (méthode unique) en Python

introduction

Je recherche une implémentation existante de la méthode simplex (méthode unique) pour résoudre un problème de programmation linéaire pour une raison quelconque. Pour ceux qui sont faibles et ne veulent pas lire les solveurs OSS (COIN-OR CLP, GLPK, etc.) qui ont été critiqués avec C / C ++ Notez qu'il s'agit d'une implémentation Python relativement crédible. Ce n'est pas une méthode simple de Nelder-Mead.

scipy.optimize.linprog https://docs.scipy.org/doc/scipy-0.18.1/reference/generated/scipy.optimize.linprog.html scipy est une bibliothèque bien connue pour les calculs numériques Python. Récemment, l'implémentation de la méthode unitaire par Python a été ajoutée.

Les packages de calcul numérique dans le langage LL fournissent généralement des méthodes pour résoudre les problèmes d'optimisation, mais je pense que le contenu n'est souvent qu'une liaison d'un solveur existant. C'est bien d'avoir une implémentation pure Python. C'est une bibliothèque avec beaucoup d'utilisateurs, et il y a du code de test, donc quand il s'agit d'une implémentation pure dans le langage LL, je pense que c'est probablement à propos de cela.

cylp https://github.com/coin-or/CyLP Ce n'est pas une implémentation Python de la méthode simplex, Une bibliothèque qui vous permet de personnaliser des solveurs écrits en C ++ appelés CLP et CBC avec Python. La conception détaillée est décrite dans cet article.

Pour ceux qui veulent simplement mettre en œuvre la règle du pivot oléore, je pense qu'elle peut être utilisée à la fois pour la vitesse de calcul et la simplicité. Les règles de pivot peuvent être n'importe quoi, mais même si vous avez une fonction de rappel que vous souhaitez appeler pour chaque itération de la méthode unit, vous pouvez le faire avec cylp.

Si vous lisez autour de Implémentation des règles de Dantzig, vous comprendrez sûrement, PivotPythonBase Vous pouvez exécuter la méthode simple de la règle de pivot oleore en implémentant certaines des interfaces de.

De plus, si vous regardez https://github.com/coin-or/CyLP/blob/master/cylp/py/pivots/, vous trouverez des implémentations de diverses règles de pivot, afin que vous puissiez étudier.

Au moment de ma confirmation, la transition vers la série Python 3 n'est pas encore terminée, mais j'arrive à la pull request, donc cette branche Si vous utilisez, vous pourrez peut-être utiliser cylp avec Python3.

Recommended Posts

Méthode Simplex (méthode unique) en Python
Méthode privée en python
Suppression des substitutions de méthode en Python
Simuler la méthode Monte Carlo en Python
Méthode Hash (méthode d'adresse ouverte) en Python
Quadtree en Python --2
Python en optimisation
Métaprogrammation avec Python
Python 3.3 avec Anaconda
Géocodage en python
SendKeys en Python
Méta-analyse en Python
Unittest en Python
Époque en Python
Discord en Python
Allemand en Python
nCr en python
N-Gram en Python
Programmation avec Python
Plink en Python
FizzBuzz en Python
Sqlite en Python
Étape AIC en Python
LINE-Bot [0] en Python
CSV en Python
Assemblage inversé avec Python
Réflexion en Python
Constante en Python
nCr en Python.
format en python
Scons en Python 3
Puyopuyo en python
python dans virtualenv
PPAP en Python
Quad-tree en Python
Réflexion en Python
Chimie avec Python
Méthode Johnson (python)
Hashable en Python
DirectLiNGAM en Python
LiNGAM en Python
Aplatir en Python
[Python] Méthode Semi-Lagrange
Aplatir en python
Méthode pour créer un environnement Python dans Xcode 6
Simulation au microscope électronique en Python: méthode multi-coupes (1)
Simulation au microscope électronique en Python: méthode multi-coupes (2)
Algorithme d'alignement par méthode d'insertion en Python
Liste triée en Python
AtCoder # 36 quotidien avec Python
AtCoder # 2 tous les jours avec Python
Daily AtCoder # 32 en Python
Daily AtCoder # 18 en Python
Motif singleton en Python
Opérations sur les fichiers en Python
Séquence de touches en Python