Gurobi 8.0 continue de repousser les limites du possible, avec une performance améliorée et un fonctionnement distant (sur des machines de calcul privées ou infonuagiques) revu. Côté performance et temps de calcul, les améliorations sont comparables aux versions précédentes, notamment pour les modèles linéaires à variables entières : une quinzaine de pour cent d’amélioration globalement, vingt-cinq sur les instances les plus difficiles (plus de cent secondes de résolution). Ces progrès sont en partis dus à l’implémentation du simplexe dual, en moyenne douze pour cent plus rapide — alors que les gains dans ce domaine sont extrêmement difficiles à obtenir, de par toute la recherche déjà effectuée.
Les interfaces pour MATLAB et R sont maintenant complètes : quelques fonctionnalités comme l’optimisation multiobjectif, les ensembles de solutions ou encore les contraintes génériques n’étaient pas disponibles dans ces langages. La boîte à outils d’optimisation de MATLAB 2017b a aussi introduit une nouvelle manière de modéliser les problèmes d’optimisation, très similaire à celle que l’on retrouve partout ailleurs : au lieu de préciser le problème à l’aide de matrices, on peut maintenant générer des variables d’optimisation comme des objets, combiner ces objets pour faire des objectifs ou des contraintes. Gurobi est entièrement compatible avec cette API et peut être appelé avec la méthode solve(). Pour .NET, Gurobi 8.0 est compatible avec .NET Core 2.0, que ce soit sous Windows, Linux ou macOS.
L’utilisateur peut aussi apporter plus d’information au solveur. Par exemple, l’heuristique d’amélioration locale (RINS) est la plus efficace de toutes celles implémentées dans Gurobi, mais fonctionnait jusqu’à présent sans apport extérieur : l’idée est d’imposer les valeurs d’une série de variables entières, puis de continuer à optimiser afin d’obtenir une meilleure solution pour les autres variables (mais bien plus vite, vu qu’il faut considérer moins de variables). Évidemment, la difficulté est de trouver des ensembles de variables pour lesquels ces sous-problèmes ont du sens et aident la résolution du problème global. Maintenant, l’utilisateur peut indiquer des sous-problèmes lui-même : par exemple, toutes les décisions sur un pas de temps, une machine, une région, etc., en fonction de la structure de son problème. De même, Gurobi 8.0 accepte plusieurs solutions de départ partielles pour accélérer sa recherche (le solveur tente de compléter ces solutions pour obtenir une bonne solution de départ et trouver de meilleures bornes).
Pour le calcul distant, la communication entre les clients et les services distants peut maintenant se faire avec HTTP ou HTTPS, des protocoles plus habituels qui devraient faciliter les déploiements et la robustesse — ainsi que la sécurité, avec HTTPS. Des serveurs peuvent être ajoutés de manière dynamique à une grappe de calcul. De nouveaux outils et API REST ont été ajoutés pour suivre de près ses serveurs, leur état, les tâches qu’ils ont traitées.
Sources : communiqué de presse, séminaire en ligne, diaporama.
Et vous ?
Que pensez-vous de cette nouvelle version de Gurobi ?
Allez-vous la tester ?