jTeachOPT

Implementation in Julia of well-known optimization algorithms for pedagogical purposes





[ Home | Top ][ Présentation | Ressources | Contact ]

Présentation

Julia?
C'est un langage de programmation de haut niveau, gratuit et open source, pour le calcul scientifique. Il présente une syntaxe proche de python et intègre les mécanismes pour appeler des codes externes existants, notamment implémentés en langage C.
Extrèmement facile à être pris en main par un public informaticien (habitué à C, C++, Pascal, Ada, Java, lisp, etc.) comme par un public mathématicien (habitué à Fortran, Python, Mathlab, Octave, R, Sage, etc.), Julia m'est apparu notamment intéressant en support aux enseignements en optimisation.
Julia permet de réaliser rapidement des prototypes logiciel, en amenant le concepteur de l'application à se concentrer sur l'essentiel : les éléments algorithmiques du traitement à réaliser. En outre et malgré qu'il s'agit un langage récent, il dispose déjà de nombreuses librairies (numériques, graphiques, calculs intensifs, etc).
jTeachOPT?
C'est un package (qui en est à ses débuts) implémentant en Julia des algorithmes classiques en recherche opérationnelle (problèmes d'optimisation combinatoire; algorithme d'énumération implicite; heuristiques et métaheuristiques), destiné à un usage pédagogique.
Il s'offre aux étudiants comme base de travail pour accueillir d’autres composants/algorithmes exacts ou approché, permet de travailler le calibrage de certains algorithmes de type métaheuristiques et est destiné à s'étoffer en intégrant d’autres problèmes d'optimisation combinatoires.
Mon « hello word » dans ce domaine étant le sac-à-dos unidimensionnel en variables 01 (01UKP), c’est autour de ce dernier que se construit ce package pour l'heure. Le package est disponible sur GitHub, https://github.com/xgandibleux/jTeachOPT . Toute personne intéressée par l'objectif de ce développement est bienvenue pour y contribuer.
Dans la version actuelle (0.1.2), le package présente des traitements de base sur le 01UKP (génération d'instance; méthode de descente; relaxation linéaire), un recuit simulé (avec deux voisinages pour le 01UKP), des sorties graphiques (tracé du comportement du recuit simulé; tracé du schéma de refroidissement).
Ce matériel sera utilisé à l'Université de Nantes dans le cours "Metaheuristics" en M1 informatique parcours "optimisation en recherche opérationnelle" à partir de la rentrée 2016-2017.
Utilisation?
Un code Julia s'exécute soit en local (voir les distributions sur http://julialang.org/), soit en ligne (voir https://www.juliabox.org/). jTeachOPT utilise le package PyPlot. Il sera nécessaire d'ajouter à votre configuration locale ce package, en invoquant sous l'interpréteur Julia la commande Pkg.add("PyPlot").
Pour exécuter jTeachOPT en local, il suffit de se placer dans le répertoire de votre ordinateur où est localisé le fichier jTeachOPTmain.jl et d'invoquer sous l'interpréteur Julia la commande include("jTeachOPTmain.jl"). Après un court instant, le résultat de l'exécution de l'algorithme apparait dans l'interpréteur Julia et un tracé graphique résume l'ensemble des calculs dans une fenêtre séparée. Enjoy!
[ Home | Top ][ Présentation | Ressources | Contact ]

Ressources Julia

1) Le site de référence du langage
julialang
2) Programmer en Julia
wikibook
Introduction rapide avec illustrations
3) Le volet « optimisation » sous Julia
JuliaOPT
Le site de référence GLPK
4) Le volet « graphique » sous Julia
Exemples de tracages
Introduction à matplotlib pour tracer via PyPlot en Julia
Le site de référence matplotlib
5) Quelques enseignements en optimisation où Julia est utilisé
ENSTA ParisTech
Université de Liège
Stanford
 
[ Home | Top ][ Présentation | Ressources | Contact]

Contact

Xavier Gandibleux ( Xavier[dot]Gandibleux[at]univ-nantes[dot]fr ).
Département d'informatique, Université de Nantes
2 rue de la Houssinière BP 92208, F44322 Nantes Cedex 03 - FRANCE.