You are on page 1of 39

Federico Villarreal

FACULTAD : Facultad de Ingeniera Industrial y Sistemas



ESCUELA : Ingeniera de Sistemas

CURSO : Simulacin de Sistemas

TEMA : PROGRAMA AMPL

DOCENTE : Ing. Soto Soto

CICLO : VIII

SECCION: : B

INTEGRANTES:

Tello Campos, Luis Miguel
Polo Blas, Jonathan
Quimper Salazar, Milko


Promocin de la Industria Responsable y del Compromiso Climtico
INDICE
Parte I: Historia.
1. Introduccin.
2. Caractersticas.
3. Disponibilidad.
4. Historia de estado.

Parte II: Lenguajes Paramtricos para Optimizacin
1. Introduccin AMPL

Parte III: Implementacin.
1. Introduccin.
2. Elementos fundamentales.
3. Como Opera AMPL
4. Instalacin de AMPL.

Parte IV. Modelos de Programacin Lineal con AMPL
1. Introduccin.
2. Creacin de un fichero .mod.
3. Resolucin interactiva del problema anterior usando el usando el procesador de comandos en la ventana
sw.exe.
4. Sufijos.
5. Otros comandos.
6. Cotas y atributos integer y binary para las variables.

Parte V: Modelos de Programacin No Lineal con AMPL
1. Introduccin.
2. Una forma prctica de proceder.

Parte VI: Resolucin automtica o por lotes (batch). Creacin de un fichero .run.
1. Introduccin.
2. Una forma prctica de proceder.
3. Ejemplo resumen.
4. Nota.
5. Problemas mochila.

Parte VII: Conjuntos. Creacin de un fichero .dat.
1. Conjuntos simples e ndices.
2. Conjuntos de pares ordenados.
3. Conjuntos de n-uplas.
4. Expresiones.
5. Comandos ms utilizados.

Parte VIII. Otros comandos.
1. El comando LET.
2. El comando FOR.
3. Instrucciones para obtener diferentes valores de la solucin ptima
4. Instrucciones para anlisis de sensibilidad



PARTE I: HISTORIA

1. Introduccin.

AMPL, un acrnimo de "A Mathematical Programming Language", es un lenguaje de modelado
algebraico para describir y resolver problemas de alta complejidad para el clculo matemtico a
gran escala (es decir, a gran escala y de optimizacin de tipo de programacin problemas). Fue
desarrollado por Robert Fourier, David Gay y Brian Kernighan en los Laboratorios Bell. AMPL
soporta decenas de resolver, tanto de cdigo abierto y comercial, incluyendo CBC, CPLEX, FortMP,
Gurobi, MINOS, IPOPT, SNOPT y KNITRO. AMPL es utilizado por ms de un centenar de clientes
corporativos. Tambin es utilizado por las agencias gubernamentales y las instituciones
acadmicas.

Una ventaja particular de AMPL es la similitud de su sintaxis de la notacin matemtica de
optimizacin de problemas. Esto permite una definicin muy concisa y legible de problemas en el
dominio de la optimizacin. Muchos solucionadores modernos disponibles en el NEOS servidor
(anteriormente alojado en el Laboratorio Nacional de Argonne, actualmente alojado en la
Universidad de Wisconsin, Madison) acepta la entrada AMPL. De acuerdo con las estadsticas
NEOS AMPL es el formato ms popular para la representacin de los problemas de programacin
matemtica.




AMPL PARA LA INVESTIGACIN
Optimizacin ha convertido en un paradigma para una extremadamente diversa variedad de
problemas en todos los mbitos de la ingeniera, as como las ciencias fsicas, biolgicas y
sociales. As AMPL ha encontrado usos en ms de 300 departamentos universitarios y laboratorios
de investigacin en todo el mundo.
AMPL y solucionadores estn disponibles a precios muy rebajados a las instituciones que otorgan
ttulos de la investigacin llevada a cabo por los profesores afiliados, asociados, y los
estudiantes. AMPL Optimization tambin es compatible con los programas gratuitos de
solucionador CPLEX y Gurobi para uso acadmico. Todas las versiones acadmicas permiten la
plena utilizacin de los recursos de la mquina, con tamaos problema limitado slo por la memoria, el
almacenamiento y los procesadores disponibles.


AMPL PARA LA ENSEANZA
AMPL tiene una larga historia de popularidad para su uso en clase. Su combinacin de poder y la
naturalidad es sin igual para lograr que los estudiantes al da rpidamente en la formulacin y
resolucin de modelos de optimizacin no triviales. Adems el libro AMPL ofrece una introduccin
tutorial claro para los conceptos de modelado de optimizacin y para todas las caractersticas ms
avanzadas del lenguaje AMPL.

El AMPL para Cursos opcin hace que sea ms fcil que nunca para integrar AMPL en cursos de todo
tipo. Las principales caractersticas de esta opcin son:
Tamaos problema son sin restricciones.
De alta calidad, estn incluidos solucionadores con todas las funciones comerciales.
AMPL y solucionadores se proporcionan en un solo archivo comprimido para cada plataforma, que se
puede distribuir libremente a los estudiantes que quieren una instalacin en sus propios equipos.
El AMPL distribuida y archivos solucionador se activan durante la duracin del curso, y dejan de
funcionar despus de que termine el curso.
Slo un breve formulario de solicitud debe ser presentada por cada oferta de cursos.
Esta opcin se utiliza tanto para ensear a la optimizacin y para incluir la optimizacin en la
enseanza de otras materias. Los temas de las clases de optimizacin que utilizan AMPL cursos
incluyen:
Programacin Lineal
Optimizacin lineal y no lineal
Optimizacin Combinatoria
Investigacin Deterministric Operaciones
Optimizacin de la red
Grfico Optimizacin
Control ptimo
Toda gran variedad de temas utiliz AMPL cursos para introducir la optimizacin en la enseanza
de otras materias. Los siguientes son una muestra representativa:
Sistemas de Fabricacin
La investigacin de operaciones
Gestin de la cadena de suministro
Operaciones de transporte pblico
Econometra
Finanzas
Ingeniera ambiental
Ingeniera qumica
Las redes de comunicaciones
Programacin

El lenguaje AMPL y el sistema son accesibles para los estudiantes de cualquier carrera tcnica, de
posgrado o de pregrado, que supone una preparacin matemtica bsica a nivel de clculo y
lgebra lineal.


AMPL PARA LOS NEGOCIOS
El sistema de modelado AMPL se ha utilizado en cientos de operaciones comerciales en todo el
mundo. Las solicitudes se encuentran en la industria manufacturera, el transporte, la energa, las
finanzas, y muchos otros sectores en los que hay que tomar decisiones complejas para minimizar
costos o maximizar la eficiencia.
AMPL modelos son construidos por profesionales calificados que tienen experiencia en la
investigacin de operaciones, campos de ingeniera de muchos tipos, diversas ciencias
matemticas y anlisis de negocio. Asistencia adicional con el desarrollo de aplicaciones AMPL est
disponible desde las instituciones educativas y consultores profesionales.
reas Cliente
La optimizacin se distingui por su amplia gama de usos en todo el mundo de los negocios. As
AMPL se ha aplicado en numerosas reas de negocio, de las cuales las siguientes son
representativos:


Transporte Aire
Rail
Camin
Produccin Planificacin: acero, automotriz
cadena de suministro: productos de consumo
Finanzas Gestin de activos
de banca de inversin
de Seguros
Recursos naturales La energa elctrica
de distribucin de Gas
Minera
Tecnologas de la
informacin
Telecomunicaciones
servicios de Internet
Prcticas de consultora
Gestin de




SOLVERS
Mientras AMPL crea problemas de optimizacin de modelos y datos y recupera los resultados de
anlisis, solucionadores son los algoritmos de clculos numricos que calculan soluciones ptimas.
El producto AMPL no incorpora solucionadores, sino que proporciona interfaces para todos los
mejores productos de competir desarrolladores solucionador. Por lo tanto aplicar AMPL en su
trabajo, usted tendr que obtener al menos un solucionador de tener una interfaz AMPL. Hay
varias opciones disponibles para la adquisicin de solucionadores para ser utilizado con AMPL:

Comprar solucionadores directamente.

Descarga solucionadores de cdigo abierto.

Adquirir solucionadores directamente de los desarrolladores.



2. Caractersticas.
AMPL cuenta con una mezcla de declarativos e imperativos estilos de programacin. La
formulacin de modelos de optimizacin se lleva a cabo a travs de los elementos del lenguaje
declarativo como conjuntos, escalar y parmetros multidimensionales, variables de decisin,
objetivos y limitaciones, que permiten una descripcin concisa de la mayora de los problemas en
el campo de la optimizacin matemtica.
Procedimientos y flujo de control declaraciones estn disponibles en AMPL para el intercambio de
datos con fuentes de datos externas, tales como hojas de clculo, bases de datos, XML y archivos
de texto tareas previas de datos y post-procesamiento de alrededor de modelos de optimizacin la
construccin de algoritmos hbridos para este tipo de problemas para los que no solucionadores
eficientes directos estn disponibles. Para apoyar la reutilizacin y simplificar la construccin de
problemas de optimizacin de gran escala, AMPL permite la separacin de modelo y los datos.
AMPL es compatible con una amplia gama de tipos de problemas, entre ellos:
La programacin lineal
Programacin cuadrtica
Programacin no lineal
Programacin entera mixta
Mixed-nmero entero de programacin cuadrtica con o sin convexas restricciones
cuadrticas
Programacin lineal entera mixta
Ingeniera Industrial
Programacin cono de segundo orden
Optimizacin global
Programacin semidefinido problemas con bilineales desigualdades matriciales
Problemas de complementariedad (MPECs) en variables discretas o continuas
Programacin con restricciones.

Caractersticas del lenguaje de modelado de gran alcance
Amplio soporte para los conjuntos y los operadores establecidos. modelos AMPL
pueden utilizar conjuntos de pares, triples y tuplas ms largos; colecciones de
conjuntos indexados sobre conjuntos; no ordenada, ordenada, y conjuntos
circulares de los objetos; y conjuntos de nmeros.
Sintaxis general y natural para la aritmtica, lgica, y las expresiones
condicionales; convenciones familiares para sumas y otros operadores iterados.
Manejo automtico de problemas lineales y cuadrticas convexas en las variables
continuas y enteros.
Funciones de programacin no lineal, como valores iniciales primal y dual,
funciones definidas por el usuario, la diferenciacin automtica, rpida y
eliminacin automtica de variables "definidas".
Notaciones alternativas convenientes para los flujos de red, a trozos linealidades,
las condiciones de complementariedad y las implicaciones lgicas.


Caractersticas de soporte de modelado Valuable
Entorno de comandos interactiva con opciones de procesamiento por
lotes. Comandos de visualizacin de gran alcance le permiten ver cualquier
componente del modelo o expresin, navegacin en pantalla o escribir en un
archivo, utilizando el formato automtico o sus propias preferencias.
Lenguaje de scripting de gran alcance incluyendo bucles y comandos if-then-
else. Los programas en el lenguaje de comandos de AMPL pueden definir
esquemas iterativos sofisticados que procesan datos de entrada, repetidamente
ajustar y resolver los casos de mltiples modelos, y preparar resultados para el
anlisis.
La separacin de modelo y los datos. modelos AMPL permanecen concisa incluso
como conjuntos y tablas de datos crecen. Los modelos pueden incorporar muchos
tipos de condiciones para la validez de los datos.
La entrada de datos y conexiones de salida. declaraciones concisas relacionan los
datos del modelo y los resultados de los contenidos de las tablas de datos
relacionales.


3. Disponibilidad
AMPL est disponible para muchas plataformas populares de 32 y 64 bits, incluyendo Linux, Mac
OS X y de Windows. El traductor s es un software propietario que mantiene actualmente AMPL
Optimizacin LLC. Sin embargo, existen varios servicios en lnea que proporcionan el modelado
libre y resolviendo las instalaciones que utilizan AMPL. Una versin libre de estudiante con una
funcionalidad limitada y una versin gratuita con todas las funciones para los cursos acadmicos
estn tambin disponibles.
AMPL se puede utilizar desde dentro de Microsoft Excel a travs de la SolverStudio Excel add-in. El
Solver Biblioteca AMPL (ASL), que permite leer los archivos de idioma nacional y proporciona la
funcionalidad automtica diferenciacin es de cdigo abierto. Se utiliza en muchos solucionadores
de conexin para implementar AMPL.
4. Historia de estado
Esta tabla presenta los pasos significativos en la historia AMPL.
Ao Destacados
1985 AMPL fue diseado e implementado
1990
Documento que describe el lenguaje de modelado AMPL fue publicada en Ciencia de la
Administracin
1991 AMPL apoya la programacin no lineal y diferenciacin automtica
1993
Robert Fourer , David Gay y Brian Kernighan se adjudicaron el Premio ORSA / GIST por
la Sociedad de Investigacin de Operaciones de Amrica, de los escritos sobre el diseo
de sistemas de programacin matemtica y el lenguaje de modelado AMPL
1995 Extensiones para representar a trozos lineales estructuras de red
1995 Construcciones de Scripting
1997 Soporte mejorado para resolver no lineales
1998 AMPL admite problemas de complementariedad
2000 Base de datos relacional y el acceso de hoja de clculo
2002 Apoyo a la programacin con restricciones
2003
AMPL Optimizacin LLC fue fundada por los inventores de AMPL, Robert Fourer, David
Gay, y Brian Kernighan. La nueva empresa se hizo cargo el desarrollo y apoyo del
lenguaje de modelado AMPL de Lucent Technologies, Inc .
2005 Grupo AMPL Modeling Language Google abri
2008 Kestrel: Una interfaz AMPL al NEOS Servidor introducido
2012
Robert Fourer , David Gay y Brian Kernighan fueron galardonados con el Premio Impacto
INFORMS 2012, como los autores de uno de los ms importantes lenguajes de modelado
algebraicos.
2012 AMPL libro est disponible gratuitamente en lnea
2013
Una nueva cruz-plataforma de entorno de desarrollo integrado (IDE) para AMPL est
disponible.
PARTE II: LENGUAJES PARAMETRICOS PARA OPTIMIZACION
Los lenguajes paramtricos algebraicos permiten formular modelos de optimizacin comnmente
usados en I.O. Estn orientados al desarrollo de modelos.
Las formulaciones son: inteligibles por otros usuarios y fcilmente ampliables y modificables.
Utilizan otros programas para resolver los modelos (SOLVERS).Proporcionan entornos (AMPL) que
permiten manipular, controlar y depurar los modelos. El lenguaje AMPL es uno de los mejor
surtidos en cuanto a potencialidades. Otros lenguajes: GAMS, CAMS, LINGO.

AMPL
AMPL es un paquete de software desarrollado en Bell Labs por R. Fourer, D.M. Gay y B. W.
Kernighan en 1985 C. A grandes rasgos es un lenguaje de modelaje algebraico para problemas de
optimizacin lineales y no lineales, en variables continuas o discretas. El Grupo de Investigacin en
Optimizacin y Anlisis Numrico del Departamento de Matemticas de la Universidad de los
Andes tiene una licencia profesional de este paquete de software. AMPL permite que el usuario
utilice un lenguaje algebraico para plantear modelos de optimizacin y examinar las soluciones de
esta mientras que el computador se comunica con un solucionador particular. La versin
profesional de AMPL no tiene lmites en el nmero de variables y restricciones que puede
manejar, excepto por la capacidad del computador donde este est instalado.
AMPL realmente es una interfaz entre el usuario y el solucionador. El papel que juega AMPL es el
de proveer una interfaz sencilla con diferentes solucionado-resosolvers. El proceso para solucionar
un problema de optimizacin utilizando este software se puede enumerar en los siguientes pasos:
1. Plantear el modelo del problema a resolver, el sistema de variables, objetivos y
restricciones que representan el modelo general.
2. Especificar los datos que definen el problema en particular.
3. Solucionar el problema indicndole a AMPL el tipo de solucionador que utiliza un
algoritmo ideal para el tipo de problema.
4. Extraer informacin del solucionador y analizar los resultados.
5. Refinar el modelo y datos si es necesario repetir el anlisis.
Como se puede observar AMPL realmente es una interfaz entre el usuario y el solucionador que
este escoja para resolver su problema.
Una ventaja notable de AMPL sobre otros programas similares es que la notacin utilizada para
definir expresiones matemticas es muy parecida a la algebraica estndar. Transcribir expresiones
matemticas a lenguaje AMPL es Trivial y no requiere notacin distinta a la algebraica. AMPL
tambin extiende la notacin algebraica para expresar estructuras comunes de programacin
matemtica tales como restricciones en flujo de redes y otros.
AMPL provee un ambiente de comandos interactivo para plantear y resolver problemas de
programacin matemtica. Tiene una interfaz flexible que permite utilizar diferentes
solucionadores, sin necesidad de modificar los modelos, para permitir el refinamiento de
soluciones. Una vez que se ha encontrado la solucin ptima AMPL la transforma
automticamente a la forma del modelo para que se pueda analizar directamente; tambin
provee una gran cantidad de herramientas para formatear, examinar e imprimir resultados.








PARTE III: IMPLEMENTACION
1. Introduccin.

AMPL es un programa dirigido a la construccin y resolucin de modelos de optimizacin,
fundamentalmente modelos de Programacin Lineal, Programacin Entera y Programacin No
Lineal. A diferencia de otros programas parecidos, como LINGO, una vez definido un modelo en
AMPL puede especificarse el cmo queremos resolverlo, lo que permite el diseo de muchos tipos
de algoritmos. Simultneamente, existe una variedad muy grande de solvers que pueden ser
llamados desde AMPL (algunos de dominio pblico), lo que da una gran potencia y versatilidad al
programa. Otro hecho a destacar es la continua incorporacin de mejoras y procedimientos
recientes.

2. Elementos fundamentales.

El programa AMPL consta fundamentalmente de las siguientes componentes:
A. El procesador del lenguage AMPL, que corresponde al programa ampl.exe y que compila
todos los ficheros y comandos. El procesador puede ser ejecutado en modo comando en
una ventana de DOS, o bien puede ser ejecutado ms cmodamente desde una ventana
Windows ejecutando el programa sw.exe (scroll Windows).
B. Los solvers, que son los algoritmos para resolver diferentes tipos de problemas. La
edicin Standar AMPL Student for Windows puede ejecutarse con diferentes solvers,
entre los que destacan CPLEX (para problemas de PL, PE y Redes) y MINOS (para
problemas de PL y PNL), y tiene la limitacin de hasta 300 variables y 300 restricciones.
Adems de la versin Standar AMPL Student for Windows, hay otras versiones como
AMPL Plus para Windows, o versiones para Linux, Unix y otras plataformas.
C. La forma ms habitual de trabajar con AMPL es editar primero tres ficheros, con
extensiones .mod, .dat y .run conteniendo, respectivamente, las componentes del
modelo, los datos en el formato AMPL, y los comandos que se van a ejecutar. Estos
ficheros de texto pueden editarse y mantenerse con cualquier editor de textos (con el
bloc de notas). Aunque muchos de los comandos que aparecen en el archivo .run podran
ser ejecutados manualmente en la ventana de comandos, es ms conveniente agruparlos
en un archivo o script con extensin .run, donde adems pueden ir todo tipo de opciones,
bucles repetitivos, etc.
D. Adems de las tres ventanas de texto, es preciso tener activo el procesador de comandos
AMPL o bien en una ventana de DOS, o ms cmodamente desde una ventana Windows
en sw.exe.
E. De una manera informal, podemos decir que en un fichero .mod decimos al ordenador
qu modelo queremos resolver, con un fichero .dat le decimos al ordenador con que
datos vamos a trabajar y con un fichero .run le decimos de qu modo queremos resolver
el problema y que informacin queremos que nos muestre.aaxadcd.

COMO OPERA AMPL









Instalacin de AMPL.

Ampl ofrece una versin gratuita para estudiantes. Para instalar los ficheros necesarios pueden
seguirse los siguientes pasos.
Instalacin de ficheros del entorno de AMPL.
1. Usando internet, entrar en www.ampl.com.
2. Pinchar en la palabra download, situada en la columna izquierda, en el prrafo que sigue
a TryAMPL!
3. Pinchar en CPLEX8.0 Studet Edition.
4. Pinchar en For Windows user new to AMPL.
5. Pinchar en amplcml.zip y guardar en la carpeta elegida el fichero .zip correspondiente
(amplcml).
6. Descomprimir el fichero amplcml.zip antes bajado. Puede hacerse pulsando el botn
derecho y eligiendo la opcin extract to folder: C:\..........
7. Entre otros, al final debemos tener los siguientes ficheros:
ampl.exe (procesador de AMPL).
cplex.exe (solver de PL, PE y redes).
cplex80.dll (librera de cplex).
minos.exe (solver de PL y PNL).
sw.exe (ventana en la que puede ejecutar el procesador de AMPL de una forma
cmoda).

Instalacin del editor PFE32.exe.
Este editor resulta cmodo para trabajar en la elaboracin de los ficheros .mod, .dat y .run.
Puede bajarse buscando con google las palabras pfe32.zip. Entre las bsquedas encontradas
elegir una adecuada. Por ejemplo, pinchando en factsheet.

Notas:
F. La carpeta de trabajo del editor PFE32 (es decir, donde busca y guarda directamente los
ficheros, si no le indicamos otra cosa) puede cambiarse seleccionando file + chage
directory.
G. El nmero de espacios en blanco que se obtienen al pulsar la tecla del tabulador puede
cambiarse si, dentro del editor PFE32, usamos Options + Current modes + Test
formatting.

INTERFAZ AMPL IDE

PARTE IV: MODELOS DE PROGRAMACIN LINEAL CON AMPL

1. Introduccin.

En esta seccin vamos a ver cmo se introducen en AMPL ejemplos sencillos de Programacin
Lineal de pocas variables, y cmo se ejecutan archivos de comandos para las sesiones iniciales de
AMPL. En estos ejemplos los datos del problema (coeficientes de la funcin objetivo, de las
restricciones y del lado derecho), estn incluidos en el modelo, por lo que no es preciso crear un
archivo con los datos, es decir, no necesitamos el archivo .dat. Les llamaremos modelos
explcitos. Posteriormente veremos que, como es importante lograr la separacin completa entre
el modelo y los datos, es mejor usar tambin este tipo de archivo. Tampoco usaremos el archivo
.run.
Algunas ideas generales son:
Los comentarios pueden ser aadidos desde el smbolo # hasta el final de la lnea.
Al final de cada declaracin o comando debe ir un punto y coma (;).
Las maysculas son distintas de las minsculas.
Se pueden insertar espacios en blanco o lneas en blanco sin afectar a la ejecucin del
programa.
La multiplicacin debe indicarse con el signo *; por ejemplo, debe escribirse 3*x1 + 4*x2, y no
3x1 + 4x2.

A continuacin, seguiremos los siguientes pasos:
1. Creacin de un fichero .mod para indicar el modelo a resolver.
2. Resolucin del problema con AMPL desde la ventana de sw.exe.

2. Creacin de un fichero .mod.

Tendremos en cuenta las siguientes consideraciones:
Cada variable debe ser declarada explcitamente (con la declaracin var); adems, si
corresponde, podemos indicar su no negatividad, sus cotas, si es entera o si es binaria.
La funcin objetivo debe ser declarada explcitamente despus de maximize o minimize, y
es conveniente darle un nombre seguido de dos puntos. En cada problema el nombre de
la funcin objetivo puede ser distinto, aunque, por comodidad, podemos poner siempre el
mismo nombre (por ejemplo, objetivo).
Cada restriccin debe ser declarada explcitamente (con la declaracin subject to), y es
conveniente darle un nombre seguido de dos puntos.


Declaracin Uso
Var Declaracin de variable
Minimize Declaracin de objetivo (minimizar)
Maximize Declaracin de objetivo (maximizar)
Subject to Declaracin de restriccin

Ejemplo de un modelo de PL explcito con dos variables (ejemplo1.mod):
Supongamos que queremos resolver el problema:
Maximizar la funcin 3x1+4x2
Sujeta a:
x1+x2 <= 2
4x1+6x2 <= 9
x1>=0, x2>=0

Con el editor pfe32.exe creamos el fichero ejemplo1.mod siguiente:

# Declaracin de las variables y de su no negatividad
var x1>=0;
var x2>=0;

# Declaracin de la funcin objetivo
# la palabra objetivo es elegible a gusto personal
maximize objetivo: 3*x1+4*x2;

# Declaracin de las restricciones
subject to res1: x1+x2 <= 2; # la palabra res1 es elegible a gusto personal
subject to res2: 4*x1+6*x2 <= 9; # la palabra res2 es elegible a gusto personal

Notas:
A. La declaracin de variables debe preceder a la declaracin de restricciones y de la funcin
objetivo.
B. Entre las declaraciones de restricciones y de la funcin objetivo no hay precedencias
obligatorias.






3. Resolucin interactiva del problema anterior usando el procesador de comandos en la
ventana sw.exe.

Una sesin inicial para resolver el problema anterior puede conseguirse aplicando en modo
secuencial e interactivo los siguientes comandos:
el comando reset elimina de la memoria de AMPL el modelo y los datos anteriores.
el comando model enva al procesador de comandos el modelo especificado, y es preciso
indicar todo el camino (path) donde est el archivo correspondiente.
con el comando option solver se elige el solver con el que resolver el modelo actual;
dependiendo del tipo de problema a resolver elegiremos el ms adecuado. Nosotros
elegiremos la opcin option solver cplex.
el comando solve llama al solver elegido y aplica el algoritmo correspondiente, obtenindose
una solucin ptima.
Una vez obtenida una solucin ptima podemos elegir lo que queremos que nos muestre el
programa. Para ello tenemos varios comandos. Por ejemplo, los comandos display y printf
permiten mostrar en pantalla datos, resultados o mensajes de texto preestablecidos.

4. Sufijos.

Con el comando display se pueden tambin visualizar otros valores asociados a las variables y a las
restricciones, mediante el uso de sufijos.
Los sufijos ms habituales para las variables son:
Sufijo Interpretacin
.val Valor actual
.lb Cota inferior
.ub Cota superior
.rc Coste reducido

Los sufijos ms habituales para las restricciones son:
Sufijo Interpretacin
.body Valor actual de la expresin
.dual Variable dual o precio sombra
.slack Holgura







5. Otros comandos.

Aunque ms adelante se ver un uso ms intensivo del lenguaje de comandos, hay otros
comandos sencillos que valen para ver el modelo en su conjunto como son:
el comando show que muestra las componentes del modelo.
el comando expand que expande el modelo (salvo, en su caso, la no negatividad).

6. Cotas y atributos integer y binary para las variables.

En un fichero .mod, cuando se declara una variable, si no se especifica nada la variable es
continua y no tiene restriccin de signo. Las restricciones de signo, las cotas sencillas y las
restricciones de ser entera o binaria se especifican en la misma declaracin. Ejemplo:
Para poner x1 0, 0 x2 8, x3 0 y entera, x4 binaria se escribe, respectivamente:
var x1 >=0;
var x2 >=0, <=8;
var x3 >=0, integer;
var x1 binary ;

PARTE V: MODELO DE PROGRAMACIN NO LINEAL CON AMPL
La complejidad adicional que representan los modelos de programacin no lineal en comparacin
a los modelos de programacin lineal, justifica el desarrollo de algoritmos especializados que
permitan abordar de forma ms eficiente la resolucin de este tipo de modelos.
En este contexto, uno de los lenguajes de programacin matemtica ms conocidos y confiable
para formular diversos modelos de optimizacin es AMPL. Su popularidad ha sido sustentada
adicionalmente por el desarrollo de distintos algoritmos de resolucin (o solvers) que son
compatibles con AMPL y que permiten resolver modelos de programacin lineal, programacin no
lineal, programacin entera, entre otras. Estos solvers han sido resultado del trabajo de
prestigiosas universidades y centros de investigacin, en algunos casos en conjunto con empresas
de software.
A continuacin mostraremos cmo resolver un modelo de programacin no lineal sencillo
utilizando la versin estudiantil de AMPL y utilizando el solver de resolucin MINOS versin 5.5.
Para ello debemos descargar el archivo amplcml.zip a nuestro computador, descomprimir ste y
luego ejecutar el archivo de nombre ampl.
Consideremos el siguiente modelo de programacin no lineal:

La sintaxis utilizada por AMPL es bastante intuitiva como se aprecia a continuacin en la resolucin
del ejemplo:

La solucin ptima es X1=1,2 y X2=2,4 con valor ptimo V(P)=3,2. (Puedes consultar la resolucin
grfica de este modelo).
PARTE VI: RESOLUCIN AUTOMATIZADA O POR LOTES (BATCH). CREACIN
DE UN FICHERO .RUN.

1. Introduccin.

Una alternativa cmoda al modo interactivo usado anteriormente se tiene usando un fichero .run.
De este modo se indica de una sola vez al procesador de comandos de AMPL todo lo que
queremos que haga. Es lo que se denomina ejecucin por lotes. Para ello ponemos tales
comandos conjuntamente en un fichero .run que ejecutamos en el procesador de comandos por
medio de la instruccin incluye.
Ejemplo para resolver el problema de Problema Lineal establecido en la Parte II, secciones 2 y 3
(modelo explcito), suponiendo que hemos guardado el fichero .mod en D:\user\ejemplo1.mod, se
procede como sigue:.
Con el editor pfe32.exe creamos el fichero ejemplo1.run siguiente:
# Instruccin para eliminar de la memoria de AMPL el modelo y los datos anteriores
reset;

# Instruccin para enviar al procesador de AMPL el modelo actual
model D:\users\ejemplo1.mod;

# Instruccin para elegir solver (en este caso elegimos el cplex)
option solver cplex;

# Instruccin para que el solver elegido acte
Solve;

# intruccion para mostrar en pantalla los valores ptimos de las variables indicadas
display x1, x2;
# Intruccion para mostrar en pantalla el valor optimo de la funcin objetivo
display objetivo;

2. Una forma prctica de proceder.

Una forma sencilla de ejecutar los comandos introducidos en el fichero de comandos
ejemplo1.run es la siguiente.
primero se guarda el archivo con extensin .run, es decir, en nuestro caso el fichero
ejemplo1.run.
a continuacin se activa el fichero sw.exe y en l se escribe ampl para que aparezca el prompt
de AMPL (ampl:).
despus con el comando include se incluyen en bloque los comandos escritos en
ejemplo1.run; para ello se escribe include seguido del camino o path que localiza este
fichero en el ordenador. Por ejemplo, si hemos guardado el fichero ejemplo1.run en el disco
D, ponemos: include D:\users\ejemplo1.run;
se pulsa la tecla return.
3. Ejemplo resumen.

Un fichero .run con todo lo explicado hasta aqu es el siguiente:

# fichero ejemplo1b.run
# fichero .run para un problema de Programacin Lineal;
# Inclusin de sufijos y otros comandos

# Intruccion para eliminar de la memoria de AMPL el modelo y los datos anteriores
reset;

# intruccion para enviar al procesador de AMPL el modelo actual
model D:\users\ejemplo1.mod;

# intruccion para elegir solver (en este caso elegimos el cplex)
option solver cplex;

# Intruccion para que el solver elegido acte
solve;

# Instrucion para mostrar en pantalla un rotulo fijo elegido por nosotros
printf "\n mostrar en pantalla los valores ptimos de las variables indicadas \";

# Intruccion para mostrar en pantalla los valores ptimos de las variables indicadas con sufijos
display x1, x1.val, x1.lb, x1.ub, x1.rc;
display x2, x2.val, x2.lb, x2.ub, x2.rc;

# Intruccion para mostrar en pantalla las restricciones indicadas con sufijos
display res1, res1.body, res1.dual, res1.slack;
display res2, res2.body, res2.dual, res2.slack;

# Intruccion para mostrar en pantalla el valor ptimo de la funcin objetivo
display objetivo;

# Intruccion para mostrar en pantalla las componentes del modelo actual (variables, restricciones
y objetivo)
show;

# Intruccion para mostrar en pantalla el modelo actual expandido (sin las restricciones de no
negatividad ni cotas)
expand;

Nota: Es claro que podemos suprimir todas las lneas de comentarios que siguen al signo #.

4. Nota.

Puede resultar cmodo incluir en el fichero .run el camino o path donde localizar el propio fichero
para luego copiarlo fcilmente en la ventana sw.exe. Es decir, al final del programa anterior,
podemos aadir:

# Instruccin a copiar en el programa AMPL (dentro de la ventana sw.exe)
# Para facilitar a AMPL la ubicacin de este fichero
# include D:\users\ejemplo1b.run;

5. Ejercicios sobre problemas mochila.

A. Mochila contina sin cotas.
Se trata de resolver el problema:
Maximizar z=16*x1+22*x2+12*x3+8*x4;
sujeta a:
5*x1+7*x2+4*x3+3*x4 <= 14
x1>=0, x2>=0, x3>=0, x4>=0

# Fichero mochila1.mod
# Declaracion de las variables y de su no negatividad
var x1>=0;
var x2>=0;
var x3>=0;
var x4>=0;
# Declaracion de las restricciones
subject to res1: 5*x1 + 7*x2 + 4*x3 + 3*x4 <= 14; # la palabra res1 es elegible a gusto personal
# Declaracion de la funcion objetivo
# la palabra objetivo es elegible a gusto personal
Maximize objetivo: 16*x1+22*x2+12*x3+8*x4;

B. Mochila contina con cotas.
Se trata de resolver el problema:
Maximizar z=16*x1+22*x2+12*x3+8*x4;
Sujeta a:
5*x1+7*x2+4*x3+3*x4 <= 14
0<=x1<=1, 0<=x2<=1, 0<=x3<=1, 0<=x4<=1.

# Fichero mochila2.mod
# Declaracion de las variables, de su no negatividad y de sus cotas
var x1>=0, <=1;
Var x2>=0, <=1;
var x3>=0, <=1;
var x4>=0, <=1;
# Declaracion de las restricciones
subject to res1: 5*x1 + 7*x2 + 4*x3 + 3*x4 <= 14; # la palabra res1 es elegible a gusto personal
# Declaracion de la funcion objetivo
# la palabra objetivo es elegible a gusto personal
Maximize objetivo: 16*x1+22*x2+12*x3+8*x4;

C. Mochila entera sin cotas.
Se trata de resolver el problema:
Maximizar z=16*x1+22*x2+12*x3+8*x4;
sujeta a:
5*x1+7*x2+4*x3+3*x4 <= 14
x1>=0, x2>=0, x3>=0, x4>=0 y enteras.

# Fichero mochila3.mod
# Declaracion de las variables, de su no negatividad y de ser enteras
var x1>=0,integer;
var x2>=0,integer;
var x3>=0,integer;
var x4>=0,integer;
# Declaracion de las restricciones
subject to res1: 5*x1 + 7*x2 + 4*x3 + 3*x4 <= 14; # la palabra res1 es elegible a gusto personal
# Declaracion de la funcion objetivo # la palabra objetivo es elegible a gusto personal
maximize objetivo: 16*x1+22*x2+12*x3+8*x4 ;
D. Mochila binaria.
Se trata de resolver el problema: maximizar z=16*x1+22*x2+12*x3+8*x4 ;
sujeta a:
5*x1+7*x2+4*x3+3*x4 <= 14
x1, x2, x3, x4 binarias.
# Fichero mochila4.mod
# Declaracion de las variables y de ser binarias
var x1 binary;
var x2 binary;
var x3 binary;
var x4 binary;
# Declaracion de las restricciones
subject to res1: 5*x1 + 7*x2 + 4*x3 + 3*x4 <= 14; # la palabra res1 es elegible a gusto personal
# Declaracion de la funcion objetivo # la palabra objetivo es elegible a gusto personal
maximize objetivo: 16*x1+22*x2+12*x3+8*x4 ;
PARTE VII: CONJUNTOS. CREACIN DE FICHERO .DAT.

Para lo que sigue puede ser til disponer de ficheros en los que se dan ejemplos de modelos
concretos ya elaborados.
A. Un mtodo de bsqueda:
En la parte alta pinchar en BOOK.
En la columna de la izquierda pinchar en examples.
Pinchar en by filename.
B. Otro mtodo de bsqueda:
En la parte alta pinchar en EXAMPLES.
En el apartado Examples from the AMPL book pinchar en by filename.

1. Conjuntos simples e ndices.
A. Conjuntos simples definidos explcitamente.
El tipo ms sencillo de conjunto est definido explcitamente mediante sus elementos
como sucesin de caracteres. As podemos definir en el archivo .mod dos conjuntos
mediante las declaraciones:
set ORIGENES;
set DESTINOS;
Y en el archivo de datos ( xxx.dat) especificar sus elementos del siguiente modo:
set ORIGENES:= orig1 orig2 orig3 ;
set DESTINOS:= dest1,dest2,dest3,dest4;
Esta forma de definicin de conjuntos suele hacerse slo para conjuntos pequeos,
donde, adems, se quiere conservar el nombre de los elementos.

B. Conjuntos simples definidos implcitamente. ndices.
Los tipos de conjuntos ms utilizados son los conjuntos de nmeros, y generalmente van
a corresponder a los conjuntos de ndices de un modelo. Por ejemplo, para definir un
conjunto de 12 elementos con nombre orgenes, basta declarar:
set ORIGENES:= 1..12;
Aunque la anterior declaracin es vlida, es ms conveniente declarar en el modelo:
param m;
set ORIGENES:= 1..m;
y en el fichero de datos especificar:
param m:=12;
De esta forma se logra la separacin efectiva entre el modelo y los datos.
Cuando en la definicin de un conjunto interviene un periodo distinto de 1, esto puede
indicarse mediante la clusula by, indicando el periodo. Por ejemplo, son equivalentes:
set QUINQUENIOS:={1990, 1995, 2000, 2005, 2010, 2015, 2020};
set QUINQUENIOS:=1990..2020 by 5;

2. Conjuntos de pares ordenados.
A partir de conjuntos simples es posible formar conjuntos compuestos. El ms sencillo de
todos ellos es el producto cartesiano o conjunto de pares ordenados. Es til para manejar
matrices de datos como c
ij
o variables con dos ndices como x
ij.
Hay varias formas de manejar
tales situaciones.
A. Forma implcita: no se da nombre explcitamente al nuevo conjunto, pero se definen
parmetros o variables sobre dicho conjunto. Por ejemplo:
param coste {ORIGENES,DESTINOS}>=0; # indica el coste unitario del transporte
var Transp {ORIGENES,DESTINOS}>=0; # indica la cantidad a transportar
Este mtodo se usa en el ejemplo que ms adelante veremos en los ficheros transp.mod y
transp.dat.
B. Forma explcita completa (se consideran todos los pares ordenados): se da nombre
explcitamente al nuevo conjunto y, en su caso, se definen parmetros o variables sobre
dicho conjunto. Por ejemplo:
set RUTAS:={ORIGENES, DESTINOS};
param coste {RUTAS}>=0; # indica el coste unitario del transporte
var transp {RUTAS}>=0; # indica la cantidad a transportar
C. Forma explcita incompleta (no se consideran todos los pares ordenados): se da nombre
explcitamente al nuevo conjunto y, en su caso, se definen parmetros o variables sobre
dicho conjunto. Por ejemplo:
set RUTAS within {ORIGENES, DESTINOS};
param coste {RUTAS}>=0; # indica el coste unitario del transporte
var Transp {RUTAS}>=0; # indica la cantidad a transportar

3. Conjuntos de n-uplas.
De la misma forma que para pares, pueden definirse parmetros y variables con tres o ms
ndices, definiendo primero los conjuntos simples y despus el producto cartesiano. As, por
ejemplo, si se han definido tres conjuntos con nombres PRODUCTOS, PERIODOS y METODOS,
y queremos definir una variable con tres ndices x
ijk
basta poner:
var x {PRODUCTOS, PERIODOS,METODOS,}>=0;
Y del mismo modo para los parmetros.

4. Parmetros y expresiones.
Los datos de un modelo se introducen en este mediante su declaracin como parmetros. Son
posibles varias situaciones:
A. Parmetros unidimensionales. Basta una declaracin del tipo:
param m;
B. Parmetros vectoriales. Se asocian a conjuntos simples. Si DESTINOS es un conjunto
simple, basta una declaracin del tipo:
param demanda {DESTINOS};
Una alternativa vlida es poner:
param demanda {i in DESTINOS};
C. Parmetros matriciales. Se asocian a conjuntos de pares ordenados. Si RUTAS es un
conjunto de pares ordenados, basta una declaracin del tipo:
param coste {RUTAS};
Alternativas vlidas son:
param coste {(i,j) in RUTAS};
param coste {i in ORIGENES , j in DESTINOS};
En este ltimo caso se supone que ORIGENES y DESTINOS son conjuntos simples.

Restricciones sobre parmetros.
(ver los apuntes Breve introduccin al programa AMPL de Jess Sez Aguado, de fecha 18 de
febrero de 2004, p. 11).

Parmetros calculados.
(ver los apuntes Breve introduccin al programa AMPL de Jess Sez Aguado, de fecha 18 de
febrero de 2004, p. 12).

Expresiones.
Para la construccin de modelos de optimizacin un operador muy utilizado es sum, que suma
cierta expresin cuando se recorre los elementos de un conjunto, y corresponde a los
sumatorios en modelos matemticos. As se pueden usar expresiones del tipo:
sum {i in ORIGENES} oferta[i];
sum {j in DESTINOS} demanda [j];
sum {(i,j) in RUTAS} coste[i,j];
sum {i in ORIGENES, j in DESTINOS} coste[i,j];
5. Comandos ms utilizados.

Comandos Accin

data Lee el contenido de un archivo .dat.
display Muestra en pantalla los valores de conjuntos, parmetros y
variables.
expand Expande el modelo actual.
include Incluye ficheros externos.
model Lee el contenido de un archivo .mod.
printf Muestra en pantalla textos con formato.
reset Elimina de la memoria de AMPL el modelo y los datos anteriores.
reset data Elimina de la memoria de AMPL los datos anteriores.
show Muestra las componentes del modelo actual.
solve Resuelve el modelo actual.




PARTE VIII: OTROS COMANDOS

1. El comando LET.
A. Sirve para asignar o cambiar el valor de un parmetro ya declarado.
B. Ejemplo para un parmetro simple.
param a;
let a:=5;
display a;
let a:=10;
C. Ejemplo para un parmetro vectorial. Supongamos que se tiene declarado el conjunto
DESTINOS y sobe el mismo los parmetros oferta y demanda. Conocido este ltimo,
podemos poner:
let {i in DESTINOS} ofera[i]:=demanda[i];

2. El comando FOR.
A. Sirve para ejecutar repetidamente una serie de comandos (bucle) que se escribe entre
llaves, es decir, en la forma { serie de comandos}.
B. Ejemplo sencillo.
for {i in 1..n} {serie de comandos}.
C. Ejemplo si se tiene un conjunto simple cualquiera, llammosle CONTADOR.
for {i in CONTADOR} {serie de comandos}.
D. Ejemplo ms complejo. Supongamos que en un modelo hay un parmetro llamado tasa y
queremos resolver el modelo para los siguientes valores de tasa: 8, 9, 10, 11 y 12. Puede
hacerse lo siguiente:
set VALORES:= 8 9 10 11 12;
for {t in VALORES}
{let tasa:=t;
solve;
display;
}
3. Instrucciones para obtener diferentes valores de la solucin ptima
# Comandos para obtener diferentes valores de la solucin ptima SIN SABER los nombres de las
variables
# ver libro de AMPL (ed 2003) pgina 249.
# _nvars es el nmero de variables del modelo
# _varsname[j] es el nombre de la variable [j] del modelo
# _var[j].lb es la cota inferior de la variable [j] del modelo
# _var[j] es el valor actual de la variable [j] del modelo
# _var[j].ub es la cota superior de la variable [j] del modelo
# _var[j].rc es el coste reducido de la variable [j] del modelo

printf\n Valor de las variables\n\n;
display {j in 1.._nvars}
(_varname[j], _var[j].lb, _var[j], _var[j].ub,_var[j].rc);

# Comandos para obtener diferentes valores de la solucin ptima SIN SABER los nombres de las
restricciones
# ver libro de AMPL (ed 2003) pgina 249
# _ncons es el nmero de restricciones del modelo
# _conname[i] es el nombre de la restriccin [i] del modelo
# _con[i].body es el valor actual de la restriccin [i] del modelo
# _con[i].dual es el valor de la variable dual de la restriccin [i] del modelo
# _con[i].slack es el valor de la holgura de la restriccin [i] del modelo

printf\n Valor de las rectricciones\n\n;
display {i in 1.._ncons}
(_conname[i],_con[i].body, _con[i].dual, _con[i].slack);

4. Instrucciones para anlisis de sensibilidad
# Comandos para efectuar el anlisis de sensibilidad o tabla de rangos
# ver libro de AMPL (ed 2003) pgina
# debe estar activado: option solver cplex;
# debe estar activado: option cplex_options sensitibity;

printf\n Rango de los coeficientes de la funcin objetivo \n\n;
display {j in 1.._nvars}
(_varname[j], _var[j].down, _var[j].current, _var[j].up);

printf\n Rango de los coeficientes del lado derecho\n\n;
display {i in 1.._ncons}
(_conname[i],_con[i].dual, _con[i].down, _con[i].current, _con[i].up);





Ejercicio de aplicacin (matemtica y AMPL)
Problema de trasbordo o problema de flujo con coste mnimo (PFCM)
ENUNCIADO:
Widgetco produce dispositivos mecnicos en dos fbricas, una en Memphis y otra en Denver. La
fbrica en Memphis puede producir diariamente hasta 150 dispositivos y la fbrica en Denver
puede producir diariamente hasta 200. Los dispositivos se envan por avin a los clientes en Los
ngeles y en Boston. Los clientes en cada ciudad requieren diariamente 130 dispositivos. Debido a
falta de reglamentacin de las tarifas areas, Widgetco cree que podra ser ms barato mandar
algunos dispositivos a Nueva York o Chicago y despus mandarlos a sus destinos finales. Los costos
para mandar un dispositivo por avin se muestran en la siguiente tabla. Resolver el problema
anterior para minimizar el costo total de enviar los dispositivos requeridos hacia sus clientes.
Tabla de costes de envo:

Memphis Denver N.York Chicago L.A Boston
Memphis 0 - 8 13 25 28
Denver - 0 15 12 26 25
N.York - - 0 6 16 17
Chicago - - 6 0 14 16
L.A - - - - 0 -
Boston - - - - - 0

Como la oferta y la demanda del problema no coinciden, pues tenemos una oferta de 350
dispositivos y una demanda de 260 dispositivos, entonces creamos un destino ficticio que
demanda 90 dispositivos y tenemos ya un problema balanceado de trasbordo.
Todo problema de trasbordo se puede ver como un problema de transporte.
Podemos construir el siguiente cuadro de transporte balanceado:
N.York Chicago L.A Boston Ficticio OFERTA
Memphis 8 13 25 28 0 150
Denver 15 12 2 25 0 200
N.York 0 6 16 17 0 350
Chicago 6 0 14 16 0 350
DEMANDA 350 350 130 130 90

La oferta total son 350 dispositivos, como esta puede ser enviada a cualquiera de los puntos de
trasbordo, entonces se asigna a estos una oferta y una demanda de 350 dispositivos. Por tanto se
obliga a que todos los dispositivos que entren en estos puntos tengan que salir.
Utilizando la teora del transporte se resuelve:
FORMULACION MATEMTICA:
Variables de decisin:
x
ij
= dispositivos que se envan desde la ciudad i a la ciudad j

Modelo:
i,...,5 j 1,...,4, i para 0
1,...,5 j para
1,...,4 i para : a sujeta
Minimizar
4
1
5
1
4
1
5
1



ij
j
i
ij
i
j
ij
i j
ij ij
x
d x
o x
x c z



FICHEROS CREADOS:

Fichero practica3A.mod

### Prctica 3
# Problema del libro de Winston, pgina 379.
# Problema de flujo con coste mnimo resuelto con la teora del problema de transporte, con
formato 1.
# Fichero practica3A.mod

set ORIGENES;
set DESTINOS;

param oferta {ORIGENES}>=0; # vector que contiene las ofertas (oi)
param demanda {DESTINOS}>=0; # vector que contiene las demandas (dj)
param coste {ORIGENES,DESTINOS}>=0; # matriz con los costes de los envios del
ORIGEN i al DESTINO j (cij)

var X {ORIGENES,DESTINOS}>=0; # matriz con las variables de decisin (xij)

# Funcion objetivo. Minimizamos los costes
minimize objetivo:
sum{i in ORIGENES, j in DESTINOS} coste [i,j]* X [i,j];
# Restricciones de oferta en los ORIGENES
subject to restricciones_oferta {i in ORIGENES}:
sum {j in DESTINOS} X [i,j]<= oferta [i];
# Restricciones de demanda en los DESTINOS
subject to restricciones_demanda {j in DESTINOS}:
sum {i in ORIGENES} X [i,j]>= demanda [j];

Fichero practica3A.dat

### Prctica 3
# Problema del libro de Winston, pgina 379.
# Problema de flujo con coste mnimo resuelto con la teora del problema de transporte, con
formato 1.
# Fichero practica3A.dat

param: ORIGENES: oferta:=
Memphis 150
Denver 200
N.York 350
Chicago 350;
param: DESTINOS: demanda:=
N.York 350
Chicago 350
L.A 130
Boston 130
Ficticio 90;
param coste:
N.York Chicago L.A Boston Ficticio:=
Memphis 8 13 25 28 0
Denver 15 12 26 25 0
N.York 0 6 16 17 0
Chicago 6 0 14 16 0;
Fichero practica3A.run

### Prctica 3
# Problema del libro de Winston, pgina 379.
# Problema de flujo con coste mnimo resuelto con la teora del problema de transporte, con
formato 1.
# Fichero practica3A.run

reset;
model D:\users\redes\practica3\practica3A\practica3A.mod;
data D:\users\redes\practica3\practica3A\practica3A.dat;
option solver cplex;
solve;
display objetivo;
display X;

CPLEX 7.1.0: optimal solution; objective 6370
9 simplex iterations (8 in phase I)
objetivo = 6370
X :=
Chicago Boston 0
Chicago Chicago 350
Chicago Ficticio 0
Chicago L.A 0
Chicago N.York 0
Denver Boston 130
Denver Chicago 0
Denver Ficticio 70
Denver L.A 0
Denver N.York 0
Memphis Boston 0
Memphis Chicago 0
Memphis Ficticio 20
Memphis L.A 0
Memphis N.York 130
N.York Boston 0
N.York Chicago 0
N.York Ficticio 0
N.York L.A 130
N.York N.York 220
;

SOLUCIN DEL PROBLEMA CON AMPL:

Boston Chicago L.A N.York Ficticio
Memphis 0 0 0 130 20
Denver 130 0 0 0 70
N.York 0 0 130 220 0
Chicago 0 350 0 0 0


Al interpretar la solucin para el problema de transporte creado a partir de nuestro problema de
trasbordo, se ignoran los envos al destino ficticio y tambin los envos desde un punto a s mismo.
Los 20 que van al ficticio indican que no se producen. El enunciado nos dice que pueden producir
hasta 150 dispositivos, pero no necesariamente 150.
Entonces la solucin obtenida nos dice que:
-La compaa debe de producir 130 dispositivos en Memphis y los enva a L.A a travs de N. York.
-Producir tambin 130 dispositivos en Denver pero estos van directamente a Boston, sin realizar
trasbordo.
- Tenemos un coste de 6.370 dlares.

You might also like