Você está na página 1de 4

Abrir un archivo en bloc de notas:

En este primer archivo vamos a escribir el modelo de flow shop como lo vimos en clase. Una vez escrito se ver asi:
Cada vez que se coloque el signo numeral, AMPL interpretara que es un comentario y no una instruccin. Una vez se termine el comentario se
pasa a la lnea siguiente. Es decir el programa correra sin estos comentarios. Los comentarios son para organizacin por parte del usuario.

Se procede ahora a declarar los conjuntos a utilizar, en nuestro caso son posicin, maquina, trabajo, para esto
se coloca la palabra set y despus el nombre del conjunto y se termina la instruccin con ; (punto y coma)

Se pueden agregar comentarios despus de cada parmetro colocando el smbolo #.

Se procede ahora a declarar los parmetros que son normalmente valores constantes a los que se hara
referencia en el modelo. Para eso se coloca el trmino param y el nombre del parmetro y se termina la
instruccin con ; (punto y coma). En el caso del tiempo de procesamiento se debe indicar los ndices en este
caso j, m, indicando en los conjuntos en que se movern en esta caso el ndice j se mover en el conjunto (set)
trabajo y m en el de las maquinas. Mirar que en este ultimo caso el parmetro p (tiempo de procesamiento)
esta asociado a duplas (j,m), por la cual la notacin varia en relacin con lo anteriores parmetros. Las duplas
en parntesis, los set en llaves y la relacin de los dos entre llaves tambin. Si es un solo subndice el que se va
a trabajar se eliminan los parntesis y la llave interna, dejando solo la llave externa.
Se declaran ahora las variables con las que vamos a trabajar. En nuestro caso son , , . Como en el caso del parmetro , se debe
indicar los subndices de cada variable y en los conjuntos que se mover. La notacin usada para esto es la misma que en el parmetro .
Adicionalmente una vez se cierre la llave se indica si la variable es binaria, entera, no negativa, etc. Una vez se indica esta condicin de la variable
se culmina la instruccin con ; (punto y coma). Si es un solo subndice el que se va a trabajar se eliminan los parntesis y la llave interna, dejando
solo la llave externa.

Se pueden agregar comentarios despus de cada variable colocando el smbolo #.

Se escribe la funcin objetivo. En nuestro caso en minimizacin entonces se escribe la palabra minimize. Una vez se escribe minimize (o
maximize si es maximizacin) se coloca el nombre de la funcin objetivo. Esto puede ser costo, tiempo, o cualquier otro nombre, en nuestro
caso le llamamos simplemente z. Despus del nombre se colocan : (dos puntos). Despus de los dos puntos se coloca la funcin objetivo. En
nuestro caso es minimizar el Cmax, que no es ms que el C de la ltima posicin de la ltima mquina, es decir . K,M son parmetros que
se indicaron en la seccin de los parmetros. Una vez se termina la formulacin de la funcin objetivo se termina la instruccin con ; (punto y
coma). Tener en cuenta que los subndices van en corchetes y separados por comas.

Se escriben las restricciones. Para esto despus de la instruccin de la funcin objetivo, se coloca subject to y se coloca el nombre de la primera restriccin. Este
nombre al igual que en la funcin objetivo puede ser cualquiera. En este caso simplemente se llam r1. De manera seguida al nombre de la restriccin se coloca
los ndices que generaran las restricciones de esa familia. En este caso el ndice m que se mover en el conjunto maquinas. En este caso la notacin es igual a la
de los parmetros y variables (llaves, parntesis) y a manera seguida : (dos puntos). Tener presente que r1 NO es una sola restriccin sino una FAMILIA de
restricciones. En este caso esa sola restriccin lo que hace es generar las siguientes restricciones si tuviramos 4 maquinas:

0 = 11

11 = 12

12 = 13

13 = 14

Una vez se escribe cada restriccin se termina con ; (punto y coma). Esta restriccin en particular asegura que el tiempo de inicio de la primera posicin de la
primera mquina sea 0 y el tiempo de inicio de las maquinas siguientes en la posicin 1 sea igual al tiempo de finalizacin de la posicin 1 en la maquina
inmediatamente anterior. Tener en cuenta que los subndices van en corchetes y separados por comas.
La segunda restriccin asegura que el tiempo de inicio de una posicin k en una maquina cualquiera debe ser mayor o igual al tiempo de finalizacin del
tiempo de finalizacin de esa misma posicin pero en la maquina predecesora. Si tenemos 5 trabajos (posiciones) y 4 maquinas esa restriccin se
convierte 20 restricciones.

La tercera restriccin asegura que el tiempo de inicio de una posicin en una maquina sea mayor o igual al tiempo de finalizacin de la posicin anterior
en esa misma maquina.

La cuarta restriccin se convertir en 20 restricciones para un problema de 5 trabajos y 4 maquinas (son las duplas posibles) y lo que hace es calcular el
tiempo de finalizacin de cada posicin, de cada maquina, (revisar como esta escrita la sumatoria). Esta restriccin corresponde en nuestro modelo de
clase a

= + , (, ).

Las restricciones 5 y 6 se aseguran que cada posicin solo tenga una asignacin y que cada trabajo este asignado a una sola posicin en cada maquina.
La ultima restriccin se escribe porque el flow shop es permutacional es decir que el orden de los trabajos es el mismo en todas las maquinas.

Una vez escrito el modelo se debe guardar con cualquier nombre pero con la terminacin .mod, por ejemplo
flowshop.mod, clase.mod, etc.

Se procede ahora a abrir un nuevo archivo de bloc de notas.

Se definen los conjuntos. En este caso son 5 trabajos, 5 posiciones, y 2 maquinas. Se


coloca la palabra set el nombre conjunto de igual forma que en el archivo .mod, y
seguidamente se coloca := (dos puntos igual), y se colocan los elementos separados
por espacio. Una vez se termina de listar los elementos de los conjuntos se termina con
; (punto y coma). Se procede ahora con los parmetros colocando la palabra param el
nombre del parmetro y := (dos puntos igual). Se coloca el valor al que corresponde
cada uno de estos parmetros (K, J, M). Finalmente se colocan los valores para en
una matriz. En este caso 2 maquinas 5 trabajos. Revisar la notacin, donde se coloca :
(dos puntos) donde se coloca := (dos puntos igual) y donde va ; (punto y coma). En
caso que los valores vayan con decimales se utiliza . (punto) y no , (coma) como
separador de decimales.

Este archivo se puede guardar con cualquier nombre pero con terminacin .dat (modelo.dat, clase.dat, etc).
Abrir ahora un tercer archivo en bloc de notas.

En este tercer archivo se coloca en primer lugar el comando solve seguido de ; (punto y coma). En este
caso colocamos tambin display para que muestre los valores finales de c, s, x. Mostrara los valores para
cada una de las tuplas de cada variable. Al final colocar tambin ; (punto y coma).

Este tercer archivo debe guardarse con la terminacin .run (modelo.run, caso.run,etc).