Notas de Ampl

Notas de Ampl AMPL es un lenguaje de modelado algebraico para programación matemática, capaz de expresar en notación alg

Views 81 Downloads 0 File size 253KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

  • Author / Uploaded
  • juan
Citation preview

Notas de Ampl AMPL es un lenguaje de modelado algebraico para programación matemática, capaz de expresar en notación algebraica problemas de optimización tales como los problemas de programación lineal. Es muy común que un proyecto en Ampl conste de 2 o 3 archivos: 1) Archivo modelo o *.MOD Es el archivo de modelo, este contiene los pasos necesarios para plantear el problema de programación líneal, usualmente viene acompañado de un archivo de datos que lo provee de información para resolver el problema mediante alguno de los algoritmos preprogramados con los que cuenta el lenguaje; su sintaxis común sería algo como: a) definición de conjuntos: define los posibles conjuntos donde se puede hubicar una variable, inicia con el comando “set”, seguido del nombre del conjunto y finalizado con “;” ejemplo: set conjunto1; b) defincion de parametros: define cada uno de los vectores o matrices de datos que serán usados en el modelo, inicia con el comando “param”, seguido del nombre del parámetro y entre corchetes la dirección del parámetro en la matriz, sea i, j, k, etc… junto con el concratenador “in” seguido del conjunto donde está hubicado y finalizado con “;” ejemplo: param parametro1{i in conjunto1}; c) declaración de variables: define cada variable del problema de programación líneal, inicia con el comando “var”, seguido del nombre de la variable y entre corchetes la dirección del parámetro en la matriz, sea i, j, k, etc… junto con el concratenador “in” seguido del conjunto donde está hubicado y finalizado con “;” ejemplo: var X{i in conjunto1}; es posible hacer que la variable sea siempre no negativa desigalandola a 0 en la mísma declaración, quedando así: var X{i in conjunto1}>=0; d) Función objetivo: define la función objetivo del sistema de programación líneal, si minimiza inicia con el comando “minimize” y si maximisa con “maximize”, seguido del nombre de la función objetivo, seguido de dos puntos y la ecuación objetivo; es posible usar sumatorias con la función sum con entre corchetes la dirección del parámetro en la matriz, sea i, j, k, etc… junto con el concratenador “in” seguido del conjunto donde está hubicada (sumará todos los valores de cada elemento en la dirección i), dejando a su derecha la ecuación objetivo, con cada parámetro y variable seguidos de su dirección entre llaves y finalizado con “;” por ejemplo: minimize objetivo1: sum{i in conjunto1}parametro1[i]*X[i];

e) Restricciones: define las restricciones del problema de programación líneal, siempre es una desigualdad o una igualdad, inicia con el comando “subject to”, seguido del nombre de la restricción y entre corchetes la dirección del parámetro en la matriz, sea i, j, k, etc… junto con el concratenador “in” seguido del conjunto donde está hubicado, seguido de dos puntos y la ecuación de restricción con cada una de sus partes seguidas de su dirección entre llaves y finalizado con “;” ejemplo: subject to restriccion1{i in conjunto1}: X[i]