Sortie de CPLEX 12.9, le solveur d'optimisation d'IBM
Gère désormais le multiobjectif, avec une pondération ou une hiérarchie entre objectifs

Le , par dourouc05

16PARTAGES

11  0 
CPLEX est un solveur d'optimisation mathématique fort bien connu. Malgré son grand âge, le logiciel continue d'évoluer, tant en performance qu'en fonctionnalités. La version 12.9 vient de sortir. IBM annonce une série d'améliorations de performance, sur tous les types de problèmes gérés, surtout dans les instances de grande taille, mais ne donne pas de chiffres…

La principale nouvelle fonctionnalité concerne l'optimisation multiobjectif (quelque chose que la concurrence propose depuis déjà quelques années, avec Gurobi pour ne pas le citer). Dans certains cas, on souhaite optimiser plusieurs choses à la fois : dans une usine, diminuer les coûts de production et maximiser l'équité entre les équipes d'ouvriers, par exemple. Quand tous les objectifs peuvent s'exprimer dans la même unité, les choses sont simples, on peut simplement les sommer (avec ou sans pondération) : maximiser la production et minimiser les coûts, c'est équivalent à maximiser le profit.

Par contre, dans d'autres cas, la même opération est impossible (comme les coûts de production et l'équité entre ouvriers : on ne peut pas mettre une somme d'argent équivalente à l'équité). Dans ce cas, on doit utiliser des techniques d'optimisation multiobjectif plus avancées. Par exemple, on peut définir une hiérarchie entre les objectifs : on cherche d'abord à maximiser le profit, puis, en maintenant le profit au même niveau (ou à une certaine tolérance près), à maximiser l'équité.

CPLEX 12.9 permet de définir plusieurs objectifs, puis dispose des deux techniques d'optimisation multiobjectif : des pondérations ou une hiérarchie entre les objectifs (avec ou sans tolérance). Grâce à cette amélioration des capacités de modélisation, le solveur peut implémenter des techniques de gestion des erreurs numériques (surtout avec des coefficients très grands ou très petits entre les objectifs) et réoptimiser facilement quand on change des poids entre objectifs. L'implémentation est légèrement limitée : on ne peut pas mélanger l'optimisation multiobjectif avec une décomposition de Benders automatique (arrivée avec CPLEX 12.8) ou avec des fonctions objectif quadratiques (seuls des modèles linéaires, avec ou sans variables entières). Seules les fonctions de rappel informatives et génériques sont gérées (impossible de contrôler le processus de résolution de CPLEX, donc).

CPLEX 12.9 continue de retravailler les fonctions de rappel : la version 12.8 avait proposé le concept de fonction de rappel "générique", par opposition à la relativement grande famille disponible auparavant. Le système précédent reste toujours maintenu : on peut récupérer le nombre d'inégalités de Benders ajoutées. Les changements sont plus nombreux pour les fonctions génériques : on peut désormais injecter une solution lors du processus de résolution en demandant à CPLEX de ne pas en vérifier la réalisabilité ; on peut aussi injecter une solution partielle (CPLEX se chargeant de la compléter au besoin) ou une solution heuristique quand la décomposition de Benders est utilisée. Aussi, les fonctions de rappel génériques sont gérées dans le cadre d'une optimisation distribuée sur plusieurs machines.

Voir aussi : présentation détaillée des fonctionnalités multiobjectif, documentation correspondante.

Source : Multiobjective optimization for LP and MIP in CPLEX.
Télécharger CPLEX 12.9 (réservé aux étudiants et membres du corps académique).

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


 
Contacter le responsable de la rubrique Débuter - Algorithmique

Partenaire : Hébergement Web