You are on page 1of 9

Memorias Secuenciacin y

Programacin




Amador Garca, Gabriel Amalio 47557776-D
Gonzlez Jimnez, Alba M 28639574-C
ndice

Secuenciacin
La secuenciacin en matemticas es la ordenacin de tareas de forma ms
ptima para que se tarde el mnimo tiempo posible en realizar las tareas
ya sea dentro o fuera de plazo (al ser fuera de plazo, se penaliza).
A travs del siguiente ejemplo, se ver ms claro lo que es una
secuenciacin:
Tenemos una peluquera en la cual acuden varios clientes, para realizarse
distintos tratamientos:
El cliente A quiere realizarse un corte de pelo y unas mechas. (Tardara 20
minutos si se atendiera en el instante 0).
El cliente B quiere realizarse solamente un corte de pelo. (Tardara 5
minutos si se atendiera en el instante 0).
El cliente C quiere realizarse un tinte. (Tardara 30 minutos si se atendiera
en el instante 0).
El cliente D quiere realizarse un tinte y mechas. (Tardara 45 minutos si se
atendiera en el instante 0).
Cada tratamiento tiene una duracin de: corte de pelo = 5 minutos,
mechas = 15 minutos y tinte = 30 minutos. Y nuestra tienda, tan solo
dispone de 2 peluqueros, uno que realiza corte de pelo y tinte, y otro que
solo realiza mechas.
Todos los clientes acuden a la misma hora y debemos ordenarlos de modo
que el cliente que solo quiere realizarse un corte de pelo no tarde ms de
lo esperado (en este caso lo esperado para el cliente B serian 5 minutos).
El tiempo medio en este ejemplo, sera el tiempo total dividido entre 4 (el
nmero de individuos).
Tiempo medio = (4*20+3*5+2*30+1*45)/4 = 50 minutos.
Si suponemos que el tratamiento de un cliente tarda T y del segundo
cliente t minutos, donde T > t, obtenemos *(4*T+3*t) minutos que
aadir al tiempo medio. Si estos clientes se tratan en orden inverso,
obtenemos *(4*t+3*t) minutos solamente contribuyen al tiempo medio
por lo que se reduce el tiempo medio ya que *(t-T) < 0. Con esto
podemos deducir que lo ms ptimo sera tratar primero al paciente con
tratamiento ms corto, el segundo cliente, debera ser el segundo
tratamiento ms corto y as sucesivamente.
Este tipo de ejercicios, se podran representar como una tabla de tareas
que quiere procesar un ordenador, o varios. Para cada tarea podemos
definir unas variables como:
Pi = tiempo de proceso. Tiempo que Ji necesita de procesado en la
mquina.
Di = fecha de vencimiento. Tiempo por el cual Ji debera estar
terminada.
Ci = tiempo de terminacin. Tiempo en el cual el proceso de Ji est
completado.
Li = retraso. Li = Ci- Di
Ti = tardanza. Ti = max {0, Ci- Di}.

Mtodos de resolucin
Para este tipo de problemas, existen varios algoritmos dependiendo del
nmero de mquinas que deseemos usar, es decir, podemos paralelizar el
trabajo si disponemos de varios peluqueros (en nuestro ejemplo) que
realicen las mismas tareas. Por ejemplo, podemos atender al cliente A y al
cliente B a la misma vez, si tuviramos dos peluqueros que sepan cortar el
pelo y estuvieran disponibles a la vez.

Lawlers Algorithm
Se trata de un algoritmo para una sola maquina que secuencia primero las
ultimas tareas a realizar. En cada iteracin, se deciden las variables que no
preceden a ninguna y se selecciona la tarea que cumpla el criterio definido
(minimizar el max de la funcion determinada). Este proceso continuar
hasta tener programadas todas las tareas.
Como podemos entender del parrafo anterior, mediante el algoritmo de
Lawler se empieza programando las tareas finales para acabar con las
iniciales. Todo esto se ver mas claro en el ejercicio que debemos resolver
posteriormente.

Smith's Algorithm
Otro algoritmo para realizar secuenciacion es el algoritmo de Smith. Al
igual que el de Lawler se secuencia en una sola maquina y tambin va
desde la tarea final hasta la inicial.
Seleccionamos una tarea J con el tiempo de procesado mas largo, la cual
se pondr la ltima y se elimina del problema. Tras esto, se continua la
iteracin y se vuelve a realizar el mismo paso, pero con el problema
reducido (sin la tarea J). Se continua asi, hasta obtener el orden de las
tareas.
Para verlo mas claro, lo ilustraremos mediante el siguiente ejemplo:
Johnson's Algorithm para dos maquinas
Este algoritmo a diferencia de los anteriores, se aplica en dos maquinas
distintas. Se utiliza para secuenciar n tareas a realizar en dos maquinas en
el mismo orden.
Todas las tareas se colocan en una lista con el tiempo que tardan en
realizarse en cada maquina. Tras esto, se selecciona la tarea con menor
tiempo de procesamiento, si este tiempo es en la maquina uno, la tarea
sera la primera en realizarse, si es en la maquina dos, sera la ultima a
realizar y una vez programado se elimina de la lista de tareas. Una vez
hecho este paso, se repite eliminando todas las tareas y obteniendo el
orden para ejecutarlas.
Existe una variante del algoritmo de Johnson en el cual no es necesario
pasar las tareas por ambas maquinas o no en orden al menos.
En esta version del algoritmo, programamos las tareas en cuatro listas S1
en la cual las tareas pasaran primero por la maquina 1 y posteriormente
por la maquina 2, otra lista S2 donde programaremos las tareas que
pasaran primero por la maquina 2 y posteriormente por la maquina 1, en
S3 programamos las tareas que solamente necesitan procesar por la
maquina 1 y en S4 las que necesita ser procesadas por la maquina 2. Como
este algoritmo procesa de manera distinta las tareas, puede ocurrir que
alguna maquina quede ociosa esperando tareas que aun esten
procesandose en la otra maquina. Por ejemplo: S1 = T1,T3,T2, S2 = T6, T4,
T5, S3 = T7, S4 = T8, por lo que obtendriamos que la maquina 1 procesaria
T1, T3, T2, T7, T6, T4 y T5 y la maquina 2 procesa T6, T4, T5, T8, T1, T3 y
T2. Se intercalan la lista S3 en la maquina uno entre S1 y S2 para evitar
quedar ociosa puesto que S2 no termina hasta que no se procesan todas
sus tareas, al igual ocurre con S4.

Johnson's Algorithm para tres maquinas
Al igual que el anterior algoritmo, se trata del procesado de una lista de
tareas por tres maquinas, primero por la maquina 1, maquina 2 y por
ultimo se procesa en la maquina 3. De nuevo nuestra meta es minimizar el
tiempo de procesado en las 3 maquinas.
Normalmente, el algoritmo de johnson solo funciona correctamente para
dos maquinas, pero para multiples maquinas (m > 2) en algunos casos
concretos se puede obtener una solucion. Todo se basa en reducir el
problema de manera que obtengamos dos maquinas y resolverla
mediante el algoritmo de johnson para dos maquinas.
Por ultimo, comentar que Johnson funciona cuando ambas colas tienen el
mismo numero de tareas, por lo que es una restriccion clara.
Ejemplo Algoritmo de Lawler
Vamos a resolver el siguiente ejercicio propuesto:
Nos piden que encontremos una secuencia de estas 8 tareas, que
minimice el maximo de alfai*Ti.
Lo primero que debemos hacer es obtener las tareas ultimas a realizar, es
decir las que no precedan a ninguna otra. En nuestro caso serian J4, J5 y
J7, a estas tareas, se les calcula la funcin que queremos resolver, en
nuestro caso alfai*Ti.
F4 = 24, F5 = 30, F7=18, como nos piden minimizar, nos quedamos con la
tarea mas pequea, en este caso J7, se elimina de la lista y se vuelven a
realizar los calculos.
En la segunda iteracion, tenemos las tareas J3, J4 y J5 que no preceden a
ninguna, por lo que se realizan los calculos con dichas tareas.
Obtenemos: F3 = 12, F4 = 15, F5 = 25, como la ms pequea es el valor de
J3, sera la penultima tarea a realiza y se elimina de la lista de tareas
pendientes.
Tras realizar, repetidamente, las iteraciones, obtenemos el orden de
ejecucin de atras a alante de todas las tareas, siendo ste: J7, J3, J4, J5,
J8, J2, J1 y por ltimo, J6.