Article de reference

Langage de programmation d'optimisation

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 cour...

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 :

// Capacité du sac à dos, fournie en externe dans le fichier de données int capacity = ...;// Plage d'index des éléments : Items = 1..5 ;// Paramètres des articles : une valeur et un poids par article dans Items int value [ Items ] = [ 6 , 7 , 3 , 9 , 6 ]; int weight [ Items ] = [ 11 , 7 , 9 , 13 , 12 ];// Variable de décision : // x[i] = 1 si l'élément i est sélectionné // x[i] = 0 sinon dvar boolean x [ Éléments ];// obj : maximiser la valeur totale des éléments sélectionnés maximize obj : sum ( i in Items ) value [ i ] * x [ i ];sous réserve de { // le poids total des articles sélectionnés ne peut pas dépasser la capacité somme ( i dans Articles ) poids [ i ] * x [ i ] <= capacité ; }

Le fichier de données associé (.dat) est

capacité = 10

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 .

Plus d articles de Worldlex Wiki

Revenez a l index pour explorer davantage de pages sur l histoire, la science, la culture, la geographie et la societe en francais.

Explorer l index