Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Sortie de JuMP 0.20
La couche de modélisation mathématique pour Julia s'approche d'une implémentation générique des fonctions de rappel

Le , par dourouc05

4PARTAGES

7  0 
Julia est un langage de programmation orienté performance et calcul scientifique, mais ce faisant il a créé un environnement très productif pour la création de langages spécifiques (DSL) : Julia s'est ainsi créé une niche en optimisation mathématique, JuMP étant une couche de modélisation intégrée au langage de programmation (comme Pyomo en Python), mais avec une performance digne des meilleurs outils (comme AMPL).

La version 0.20 de JuMP vient de sortir, avec une série d'améliorations mineures, comme des corrections de défauts (tous assez mineurs), une documentation améliorée et des messages d'erreur plus précis.

En sus, JuMP dispose de fonctions pour créer un rapport de sensibilité du programme linéaire résolu (en exploitant la solution duale) : lp_objective_perturbation_range permet de récupérer la plage de variation des coefficients de l'objectif telle que la base courante reste optimale, lp_rhs_perturbation_range fait de même pour les membres de droite des contraintes. Ces fonctions ont des limites théoriques : si la base est dégénérée (plusieurs bases pour représenter la même solution), les intervalles indiqués seront bien plus petits qu'attendus. Voir la documentation.

D'autres fonctions font leur apparition, d'utilité plus spécifique. dual_objective_value permet de récupérer la valeur duale de l'objectif (souvent égale à la valeur primale, mais pas toujours, notamment quand l'optimalité n'est pas atteinte). raw_status renvoie le code de retour du solveur directement, sans traduction de la part de JuMP. set_parameter permet de changer les paramètres du solveur. set_objective_coefficient autorise les changements de coefficients de variables dans l'objectif, lors de la résolution d'une séquence de problèmes, avec un impact sur la performance moindre qu'un changement complet de fonction objectif. set_normalized_rhs, normalized_rhs et add_to_function_constant s'occupent de la partie constante des contraintes.

JuMP 0.20 s'appuie également sur la couche d'abstraction des solveurs MathOptInterface 0.9, qui apporte son lot de nouveautés, certaines étant nécessaires aux apports de JuMP 0.20 (comme l'attribut DualObjectiveValue). Les plus anciennes versions de Julia ne sont plus gérées, MOI ne fonctionne qu'avec Julia 1.0 au minimum. La fonction submit a fait son apparition pour soumettre des attributs au solveur, comme des solutions heuristiques ou des contraintes retardées, des notions très utiles pour l'implémentation d'algorithmes d'optimisation avancés et très efficaces (mais pas encore entièrement disponibles dans MOI). La fonction dual_set renvoie l'ensemble dual associé à un domaine, ce qui sert à dualiser efficacement des problèmes d'optimisation (notamment avec Dualization). En outre, l'infrastructure de test a été enrichie pour les dernières nouveautés, elle comporte aussi un module de test de performance des solveurs.

Sources : notes de version de JuMP et MOI.

Une erreur dans cette actualité ? Signalez-le nous !

Responsable bénévole de la rubrique HPC : Thibaut Cuvelier -

Partenaire : Hébergement Web