miércoles, 30 de noviembre de 2011

TECNOLOGÍA II: AIMMS

AIMMS

Es un sistema de programa de optimización, que permite  por medio de su tecnología de optimización  tomar decisiones complejas de forma más eficiente, con el fin de encontrar y analizar sus mejores soluciones.
Uno de los problemas que se pueden programar en esta herramienta son los problemas de transporte, por medio de un ejemplo se  observara la forma de resolverlo.
Descripción del problema
Desde dos plantas, se envían camiones de cerveza a cinco clientes durante un periodo de tiempo determinado. La capacidad de suministro de cada planta así como la demanda de cada cliente (medido en camiones de cerveza) son conocidas. Los costes de transporte de un camión cargado al desplazarse desde  una planta a un cliente también se conocen.
El objetivo es encontrar un plan de envíos con el mínimo costo  de acuerdo con el cual desplazar los camiones de cerveza de tal forma que se satisfaga la demanda y de manera que los envíos no excedan la capacidad de cada planta de cerveza.
Clientes plantas
Costo de transporte unitario
Madrid      Tarragona   Santander   Albacete     Sevilla
capacidad
Cáceres
297                  831           573                  504           264
47
Zamora
248                  694           344                  499           536
63
Demanda
31                     16              22                    12             28



Datos de entrada del problema de la cerveza
Declaraciones del problema:
Índices:
P  plantas
C  clientes
Parámetros:
Op oferta o capacidad de cada planta p
Dc demanda de cada cliente c
CTpc  coste unitario de transporte desde p a c
Variables:
Xpc  camiones transportados desde p a c
Z  coste total de transporte
Al ser solucionado y analizado, se desea obtener el menor costo de trasporte a las diferentes ciudades y además que se cumpla con la demanda, por lo tanto se obtiene lo siguiente.
Minimize:        pcxpc

Subject to:   
                        pc Op      p
                       
                        pc Dc    c
                            
xpc 0 p, c

Ya es de suponer que se tiene el programa de AIMMS instalado en el ordenador, por lo tanto se procede a introducir los índices:

1.     Abrimos la declaration section, haciendo doble clic en el icono.

Después de haber abierto la declaration se activaran los iconos en la barra de herramientas. Esto es con el fin de insertar el identificador estándar.

2.     A continuación se agregan el conjunto de plantas de la siguiente manera.

 Presiona el botón Set . Se crea un nuevo conjunto de árbol de modelo
 el nombre a colocar es “planta” y se prosigue a dar enter con el fin de confirmar.

3.     Declaramos  el índice p como un atributo del conjunto de plantas.
Entonces se abre la ventana realizando doble clic en el nodo “plantas”. Quedara de la siguiente manera.



Entonces declaramos el índice p.

Moviendo el cursor al campo “Index”, y se da clic en el campo vacio. Donde se procede a colocar la letra “p” y ce cierra la ventana presionando el icono  que tiene por nombre Check, commit and close.

3.     Ahora  se declaran el conjunto de clientes, a donde van los productos, a esta declaración se le denotara con la letra “c” de la misma forma que se declaro el conjunto de plantas con el índice “p”. el árbol va quedando de la siguiente manera.

4.     Ahora se procede a declarar los parámetros, se relaiza d ela misma forma en la que se declaran los conjunto “plantas y clientes”.

Entonces introducimos el parámetro de “oferta “. Se realiza de la siguiente forma:

Se presiona el icono de introducir un parámetro . En el árbol de modelo se abrirá un nuevo parámetro la cual se llamara “oferta (p)”  y se presiona enter para confirmar o registrar el nombre

El identificador p que esta dentro de el paréntesis es el indicador de oferta.

De la misma forma se realiza en el árbol un nuevo parámetro pero ahora es llamado “demanda(c)”

5.     Ahora se procede a declarar los parámetros, se relaiza d ela misma forma en la que se declaran los conjunto “plantas y clientes”.

Entonces introducimos el parámetro de “oferta “. Se realiza de la siguiente forma:

Se presiona el icono de introducir un parámetro . En el árbol de modelo se abrirá un nuevo parámetro la cual se llamara “oferta (p)”  y se presiona enter para confirmar o registrar el nombre

El identificador p que esta dentro de el paréntesis es el indicador de oferta.

De la misma forma se realiza en el árbol un nuevo parámetro pero ahora es llamado “demanda(c)”

6.     Se introduce el ultimo parámetro la cual es lo que se desea buscar, este se llamara “costo unitario Transporte” este parámetro es de dos dimensiones (P,c), se ingresa  con el siguiente nombre .”costo Unitario Transporte (p,c), por lo tanto el árbol de decisión queda de la siguiente forma.
Esta variable es utilizad apara dar el valor de la función objetivo.

7.     Se  ingresan las variables, es de la misma forma de ingresar los parámetros.

Se presiona el icono . Se creara una variable nueva en el árbol de modelo, la cual se

Llamara “Transporte (p,c)”   y se presiona enter para confirmar el nombre.

8.     Ahora se hace click ene le nodo de “trasporte” en el árbol . La ventana de dialogo resultante permite especificar el rango de valores que puede tener la variable “trasporte”.
En este caso se selecciona el “ standard Range” y “nonnegative”. Y se termina dándole click en ok


9.     Ahora se introduce la definición variable
sum[ (p,c), UnitTransportCost(p,c) * Transport(p,c) ]


10.     Introducimos las restricciones de oferta y demanda, cada una con su propia definición

Se realiza el mismo procedimiento de las variables con la única diferencia del icono en este caso se hace click en el icono


La restricción oferta
Restricción demanda, de esta forma quedara
11.     Seleccionar  la entrada ‘Mathematical Program’ mediante el icono . Se presiona el botón ok y se procede a escribir “planminimocostoTransporte”
12.     Se rellena  la ventana de características del programa 

13.     El asistente para la definición objetivo, requiere seleccionar una variable escalar. Se realiza de la siguiente forma

14.     Introducimos ahora los datos que nos brinda el problema.

Los datos del conjunto de plantas se ingresan de la siguiente forma.
Se abre la ventana de carácter del conjunto plantas y se presiona el botón Data
Mueve el ratón a la página de datos tal, se le da clic en el campo vacío en la parte superior de la pagina y se procede a escribe ‘Caceres’ como primer elemento del conjunto y enter.
luego  Zamora, enter y así sucesivamente con el resto de datos

15.     Se ingresan los elementos del conjunto clientes de la misma formas de el conjunto plantas,

16.     Ingresamos los datos que van relacionados con los parámetros.

Parámetro ‘Oferta’.
Abre la ventana de características del parámetro ‘Oferta’,
Presiona el botón Data ,
Mueve el raton a la primera celda y haz clic,
Escribe el numero 47,
Presiona la tecla Enter para registrar el primer valor,
Escribe el número 63,
Presiona la tecla Enter para registrar el segundo valor, y
Cierra la pagina de datos presionando el boton Close

17.     Ingresan los valores de los parámetros de demanda de la misma forma que se han ingresado los de la oferta  De esta forma se verán los datos.    
18.     Se procede a guardar el problema o cambios relazados mediante el icono  Check, commit and close

19.  Calculo de la solución

Ya obtenemos el resultado que nos ofrece el problema se introduce
Dos líneas de código dentro del cuerpo del procedimiento MainExecution que
Existe por defecto (y que esta vacío).
Hacer clic en la variable MainExecution en el árbol del modelo.

Es la solución del problema mostrado dando clic derecho, ventana emergente  y comando
Data.
El resultado obtenido es que Cáceres envía 6 unidades a Madrid, 12 Albacete y 28 a Sevilla.
Y Zamora envía 25 unidades a Madrid 16 Tarragona y 22 a Santander.

No hay comentarios:

Publicar un comentario