Groupe d’études et de recherche en analyse des décisions

G-2016-42

NLP.py: An object-oriented environment for large-scale optimization

, et

NLP.py constitue un écosystème de programmation simplifiant le développement d'algorithmes d'optimisation dans un langage de haut-niveau aussi puissant que Python. Il facilite également la modélisation de problèmes d'optimisation continue. Les tâches demandant plus de ressources sont, quant à elles, implémentées en Cython, un surensemble de bas niveau de Python. Dans le but de concevoir des méthodes numériques, NLP.py donne accès à un ensemble de blocs permettant de résoudre les systèmes linéaires et sous-problèmes généralement rencontrés dans la résolution de problèmes d'optimisation convexe et non convexe à grande échelle. Parmi ces blocs se trouvent un ensemble de méthodes directes et itératives pour la résolution de systèmes linéaires. En outre, plusieurs recherches linéaires y sont implémentées de même que des méthodes résolvant des sous-problèmes avec contraintes de borne ou de région de confiance. NLP.py supporte plusieurs librairies de matrice creuse, y compris notre toute nouvelle librairie CySparse. Finalement, plusieurs algorithmes de pointe pour des problèmes avec une structure particulière y ont été implémentés ainsi que des outils pour évaluer leur performance. La nature extensible de NLP.py combinée à la puissance et l'ubiquité de Python en font un environnement de développement et d'analyse puissant pour les chercheurs et les utilisateurs de l'optimisation.

, 19 pages