OPL ( Optimization Programming Language ) est un langage de modélisation algébrique pour les modèles d'optimisation mathématique , ce qui rend le codage plus facile et plus court qu'avec un langage de programmation généraliste.
Il fait partie du progiciel CPLEX et est donc conçu pour les optimiseurs IBM ILOG CPLEX et IBM ILOG CPLEX CP. L'auteur original d'OPL est Pascal Van Hentenryck .
Caractéristiques
OPL permet aux utilisateurs de définir des modèles à l'aide d'une notation mathématique de haut niveau. Ses principales fonctionnalités sont les suivantes :
- Séparation du modèle et des données : OPL favorise une architecture propre où la logique d'optimisation (stockée dans les fichiers .mod ) est séparée des données d'instance (stockées dans les fichiers .dat ).
- Modélisation hybride : C'est l'un des rares AML qui prend en charge nativement à la fois la programmation mathématique (MP) et la programmation par contraintes (CP) dans le même environnement.
- Prise en charge de la planification : OPL inclut des primitives spécialisées pour les problèmes de planification, telles que les variables d’intervalle, les variables de séquence et les fonctions cumulatives.
- Scripting : Il inclut IBM ILOG Script , un langage basé sur JavaScript utilisé pour le prétraitement des données, le contrôle du flux de résolution (par exemple, la résolution d'une séquence de modèles) et le post-traitement des résultats.
Exemple
Voici un modèle OPL simple (.mod) pour un problème de sac à dos :
Le fichier de données associé (.dat) est
Intégration
Bien qu'OPL soit généralement utilisé au sein de l' environnement de développement intégré CPLEX Studio , il peut également être déployé en production. IBM fournit des API (telles que la technologie Concert) qui permettent d'appeler des modèles OPL depuis Java , C++ , .NET et Python .