Articulo de referencia

Lenguaje de programación de optimización

El lenguaje de programación de optimización ( OPL ) es un lenguaje de modelado algebraico para modelos de optimización matemática , lo que hace que la codificación sea más fácil...

El lenguaje de programación de optimización ( OPL ) es un lenguaje de modelado algebraico para modelos de optimización matemática , lo que hace que la codificación sea más fácil y breve que con un lenguaje de programación de propósito general.

Forma parte del paquete de software CPLEX y, por lo tanto, está diseñado para IBM ILOG CPLEX y los optimizadores CP de IBM ILOG CPLEX. El autor original de OPL es Pascal Van Hentenryck . [ 1 ]

Características

OPL permite a los usuarios definir modelos utilizando notación matemática de alto nivel. Sus características principales incluyen:

  • Separación de modelo y datos : OPL promueve una arquitectura limpia donde la lógica de optimización (almacenada en archivos .mod ) se mantiene separada de los datos de instancia (almacenados en archivos .dat ).
  • Modelado híbrido : Es uno de los pocos lenguajes de programación analítica (AML) que admite de forma nativa tanto la programación matemática (MP) como la programación con restricciones (CP) dentro del mismo entorno.
  • Soporte para la planificación : OPL incluye primitivas especializadas para problemas de planificación, como variables de intervalo, variables de secuencia y funciones acumulativas.
  • Scripting : Incluye IBM ILOG Script , un lenguaje basado en JavaScript que se utiliza para el preprocesamiento de datos, el control del flujo de resolución (por ejemplo, la resolución de una secuencia de modelos) y el postprocesamiento de resultados.

Ejemplo

A continuación se muestra un modelo OPL simple (.mod) para un problema de la mochila :

// Capacidad de la mochila, proporcionada externamente en el archivo de datos int capacity = ...;// Rango del índice del elemento Items = 1..5 ;// Parámetros del artículo: un valor y un peso por artículo en Items int valor [ Items ] = [ 6 , 7 , 3 , 9 , 6 ]; int peso [ Items ] = [ 11 , 7 , 9 , 13 , 12 ];// Variable de decisión: // x[i] = 1 si se selecciona el elemento i // x[i] = 0 en caso contrario dvar boolean x [ Items ];// obj: maximizar el valor total de los elementos seleccionados maximizar obj : suma ( i en Items ) valor [ i ] * x [ i ];sujeto a { // el peso total de los artículos seleccionados no puede exceder la capacidad sum ( i en Items ) peso [ i ] * x [ i ] <= capacidad ; }

El archivo de datos asociado (.dat) es

capacidad = 10 

Integración

Si bien OPL se usa normalmente dentro del IDE CPLEX Studio , también se puede implementar en entornos de producción. IBM proporciona API (como Concert Technology) que permiten llamar a modelos OPL desde Java , C++ , .NET y Python .

Véase también

Referencias

  1. Kevin Ruland (septiembre de 1999). "El lenguaje de programación de optimización OPL". INFORMS Journal on Applied Analytics . 29 (5): 148– 149. ISSN 0092-2102 . Wikidata Q124605115 .  

Lecturas adicionales

  • Van Hentenryck, Pascal (1999). El lenguaje de programación de optimización OPL . Prensa del MIT. ISBN 978-0262720304.