Introducción a AMPL

Autor

Pedro L. Luque

Fecha de Publicación

24 abril 2022

AMPL: el lenguaje algebraico de programación matemática

El sistema AMPL soporta todo el ciclo de vida del modelado de problemas de optimización: formulación, prueba, despliegue y mantenimiento, de una manera integrada para obtener un desarrollo rápido con resultados fiables. AMPL puede proporcionar la implementación de proyectos de optimización a gran escala, usando una representación algebraica de alto nivel que describe los modelos de optimización de la misma manera que se formulan.

AMPL integra un lenguaje de modelado para describir datos de optimización:

  • variables,
  • objetivos
  • y restricciones;
  • un lenguaje de comandos para depurar los modelos y análisis de resultados;
  • y un lenguaje de script para la manipulación de los datos y la implementación de estrategias de optimización.

Las nuevas API de AMPL ofrecen interfaces de programación para incrustar modelos AMPL en sistemas empresariales, escritos en diferentes lenguajes.

Referencias para la instalación y uso de AMPL

Resolución de problemas con AMPL: método 1

Consideremos la formulación del problema de programación lineal siguiente:

\[ \begin{array}{lrl} max\ & 3x_1+2x_2 & \\ s.a.\ & x_1+x_2 &\leq 7 \\ & x_1 & \leq 5 \\ & x_1, x_2 & \geq 0 \end{array} \]

Se puede resolver con AMPL (en el AMPLIDE) con ayuda del siguiente fichero del modelo: “ejemplo.mod”:

# ejemplo.mod
var x1>=0;
var x2>=0;

maximize z: 3*x1+2*x2;
s.t. r1: x1+x2 <= 7;
s.t. r2: x1<=5;

Para resolver este problema, se escriben los siguientes comandos en la consola de AMPL:

ampl: reset;
ampl: model ejemplo.mod;
ampl: option solver cplex;
ampl: expand;
maximize z:
3*x1 + 2*x2;
subject to r1:
    x1 + x2 <= 7;
subject to r2:
    x1 <= 5;
ampl: solve;
CPLEX 12.6.0.0: optimal solution; objective 19
0 dual simplex iterations (0 in phase I)
ampl: display x1,x2,z;
x1 = 5
x2 = 2
z = 19

Se observa que la solución óptima ha sido encontrada y es igual a: \[ x_1^* = 5, \ x_2^* = 2, \qquad z^* = 19 \]

Características básicas del lenguaje AMPL

Resolución de problemas con AMPL: método 2

Seguir los ejemplos iniciales del documento: Manual básico de uso de AMPL en español (pdf).

  • “ejemplo01.mod”

  • “ejemplo01.dat”

Para resolver el problema en la consola de AMPL se ejecutarían las siguientes instrucciones:

ampl: reset;
ampl: model ejemplo01.mod;
ampl: model ejemplo01.dat;
ampl: option solver cplex;
ampl: solve;
ampl: display x, z;