8aker [1] definió en forma sencilla el scheduling como el ... · 4.1.3 Reglas de dominación. 28 ....

18
- ,"' ... . DESARROLLO DE UNA HERRAMIENTA ANALiTICA- HEURíSTICA PARA RESOLVER EL PROBLEMA DE LA AMACiÓN DE TAREAS (SCHEDULING) .. U ".\ TI¡ <1n....O N .... Cl0 NAL DE C OLOMBIA -' 51;1».' -.tt'. nHIJ H DEPTO. DE BIBLIOTECAS BIBLIOTECA MINAS LUIS FERNANDO MORENO VELÁSQUEZ INFORME DE AÑO SABÁTICO UNIVERSIDAD NACIONAL DE - SEDE MEDEllíN MEDEllíN MARZO DE 2005

Transcript of 8aker [1] definió en forma sencilla el scheduling como el ... · 4.1.3 Reglas de dominación. 28 ....

. ~ - ,"'....

DESARROLLO DE UNA HERRAMIENTA ANALiTICA­

HEURíSTICA PARA RESOLVER EL PROBLEMA DE LA

AMACiÓN DE TAREAS (SCHEDULING) ~~

..~ U ".\TI¡ <1n....O N ....Cl0 NAL DE C OLOMBIA -' 51;1».' -.tt'.nHIJH

DEPTO. DE BIBLIOTECAS BIBLIOTECA MINAS

LUIS FERNANDO MORENO VELÁSQUEZ

INFORME DE AÑO SABÁTICO

UNIVERSIDAD NACIONAL DE COlO~BIA - SEDE MEDEllíN

MEDEllíN

MARZO DE 2005

11':'-v. ",¡i< ~~..:.;;........

U NlVER.SlOAD N ACIONAL DE COLOMBIA Sl:. Il't ~Wl )~LLtH

DEPTO. DE BIBLIOtECAS BIBLIOTECA MINAS

CONTENIDO

pág

INTRODUCCiÓN 1

1. DESCRIPCiÓN Y REPRESENTACiÓN DEL PROBLEMA 3

2. FORMAS DE CLASIFICAR Y RESOLVER EL PROBLEMA 6

DE SCHEDULlNG

3. ESTADO DEL ARTE 10

3.1 ALGORITMOS EXACTOS 10

3.2 ALGORITMOS HEURíSTICOS 18

4. TÉCNICAS A UTILIZAR 21

4.1 CONCEPTOS GENERALES 21

4.1.1 Cotas inferiores. 21

4.1.2 La búsqueda local. 25

4.1.3 Reglas de dominación. 28

4.2 ENFRIAMIENTO SIMULADO (SA) 30

4.2.1 Criterio para la generación de cada secuencia de

actividades (aleatoria o determinística). 36

4.2.2 Forma en que se genera un vecindario para cada secuencia 34

4.2.3 Valor de los parámetros de entrada. 34

UNIVERSIDAD NACIONAL DE COLOMBIA

DEPTO. DE BIBLIOTECAS BIBLIOTECA MINAS

pág

4.3. BÚSQUEDA TABÚ (TS) 35

4.3.1 Criterio para la generación de cada secuencia

de actividades (aleatoria o determinística). 37

4.3.2 Forma en que se genera un vecindario para cada secuencia 38

4.3.3 Valor de los parámetros de entrada 38

4.4 ALGORITMO EXACTO MODIFICADO (AEM) 40

4.5 UN ALGORITMO HEURíSTICO PARA RESOLVER EL RCPSP 43

5. EJEMPLO NUMÉRICO 50

5.1 DESARROLLO DEL ALGORITMO CON EL EJEMPLO NUMÉRICO 53

6. EVALUACiÓN Y ANÁLISIS DE RESULTADOS 57

6.1 RESULTADOS DE ENFRIAMIENTO SIMULADO (SA) 59

6.2 RESULTADOS DE LA BÚSQUEDA TABÚ (TS) 60

6.3 RESULTADOS DEL ALGORITMO HEURíSTICO MODIFICADO

(AEM) 61

6.4 INTERFAZ DE EJECUCiÓN 64

6.5 ANÁLISIS COMPARATIVO 67

7. CONCLUSIONES 69

pág

8. TRABAJO FUTURO 72

9. PROCESO DE SOCIALIZACiÓN 73

BIBLIOGRAFíA 75

ANEXOS 77

ANEXO A MENÚ DE EJECUCiÓN DEL AEM 78

ANEXO B SEUDOCÓDIGO DEL ALGORITMO AEM 87

INTRODUCCiÓN

8aker [1] definió en forma sencilla el scheduling como el problema de asignar recursos

escasos a actividades durante un intervalo de tiempo. De esta definición han surgido

variaciones tales como invertir el orden de la asignación (actividades a recursos en

lugar de recursos a actividades) y suprimir la palabra escasos, debido a que en

realidad los recursos no tienen que ser escasos para realizar la asignación . Todas

estas definiciones dan una idea muy general del problema que se trata de resolver y

que, así sea sin plantearlo formalmente, lo viene resolviendo la humanidad desde hace

miles de años. Además, aunque ese problema se encuentra en organizaciones de

gran tamaño, tiene pleno sentido a nivel de hogar, y en general en muchas de las

actividades cotidianas, familiares y rutinarias del hombre.

Esta definición, aparentemente tan sencilla y meramente cualitativa, da origen a

definiciones, formalizaciones y discusiones de tipo matemático cuando se trata de

resolver el problema general del scheduling, el cual se vuelve un problema muy

complejo en la medida en que crece su tamaño y cuando se descubre la imposibilidad

matemática de encontrar un algoritmo general que resuelva en forma práctica el

problema, a pesar de la potencia de los computadores actuales.

Teóricamente, sería fácil plantear un algoritmo que resolviera el problema más general

de sCheduling , el cual si se ejecutara en un computador al que se le diera un tiempo no

limitado para encontrar la solución, la encontraría o detectaría su no existencia (no

factibilidad) en caso de no haberla. Pero por tratarse de un problema NP-hard obtener

la solución en tiempos razonables, aún para problemas de tamaño mediano, es

prácticamente imposible.

Por lo tanto , toda la discusión sobre el scheduling se centra en los algoritmos prácticos

que cada autor, desde su enfoque, plantea como eficientes.

En este trabajo se presenta un enfoque basado en un algoritmo determinístico (exacto)

al cual se le introducen algunas variaciones y aproximaciones que lo vuelven

heurístico, que constituyen la originalidad del trabajo, a la vez que se presenta también

el desarrollo de otros dos algoritmos de los más utilizados para la solución del

problema del scheduling: la búsqueda tabú (tabu search) y el enfriamiento simulado

(simulated annealing) y se realizan comparaciones entre los tres enfoques para medir

su eficiencia,

Con la descripción detallada de los algoritmos que se realiza a continuación y los

archivos y programas anexos en medios digitales se cumple con los objetivos

generales del trabajo que dicen textualmente "Desarrollar un algoritmo híbrido:

analítico heurístico para resolver algunos problemas de programación de tareas y

construir un prototipo de software que implemente el algoritmo desarrollado,

2

1. DESCRIPCiÓN Y REPRESENTACiÓN DEL PROBLEMA

Existen numerosas formas de plantear y resolver el problema de scheduling , las

cuales van desde casos muy particulares como Open Shop, Job Shop, Flow Shop y

Permutation Flow Shop, hasta formas más generales como el RCPSP.

A lo largo de este trabajo las palabras trabajo, actividad , tarea , job se consideran

sinónimas, aunque en otros contextos diferentes puedan no serlo.

La definición formal del problema que se aborda en este trabajo dada por Le Pape

(1994) en [2] se presenta a continuación.

Dado un conjunto de m recursos (R1 ... Rm) con capacidades dadas (C 1 ...Cm), un

conjunto de n actividades (A1 ...An) con duraciones dadas (d 1 . ..dn), un conjunto de

restricciones temporales que imponen precedencias y demoras entre los tiempos de

inicio y de terminación de las actividades, y un conjunto de requerimientos de los

recursos, que especifican para cada i y cada j, 1 ~ i ~ m, 1 ~ j ~ n, la cantidad q¡j del

recurso R¡ necesaria para la ejecución de la actividad Aj, el objetivo del scheduling es:

"asignar tiempos de inicio y de terminación a las actividades, de modo que se

satisfagan las restricciones y se minimice la duración total del proyecto".

Esta definición corresponde al problema RCPSP. Su forma es bastante general , ya

que comprende por ejemplo los cuatro casos particulares mencionados arriba. Sin

embargo no es la más general de todas, ya que pueden agregarse elementos

adicionales que hacen el problema mucho más complejo, tales como ventanas

temporales para la realización de las actividades, posibilidades disyuntivas, es decir

que las actividades pueden realizarse de distintos modos (problema multimodal) cada

uno de las cuales consume cantidades diferentes de recursos (este caso es

3

notablemente más difícil, pues es bien sabido en matemáticas y en investigación de

operaciones la dificultad adicional cuando se manejan restricciones de tipo "o",

restricciones disyuntivas, adicionalmente a las tradicionales restricciones de tipo "y",

restricciones que deben satisfacerse todas. También existen generalizaciones

mayores cuando se contemplan los casos de posibilidades de interrupción de las

actividades (non-preemption), manejo de recursos no renovables (que disminuyen con

el tiempo a medida que éste transcurre y que nos llevan a la consideración de

agotamiento y de inventarios, manejo de costos y otras generalizaciones, de las

cuales sólo se mencionan algunas.

Específicamente y puesto de otro modo, el problema objeto de este trabajo, es el

siguiente:

Un conjunto de trabajos tienen que ser programados (scheduled) sujeto a

restricciones temporales y de recursos . Las restricciones temporales se expresan

mediante relaciones de precedencia entre pares de trabajos que indican que un

trabajo no puede empezar antes de la terminación de otros trabajos denominados los

predecesores . Mientras está en proceso cada trabajo requiere una cierta cantidad de

recursos renovables (e.g . máquinas o personal) y la disponibilidad de estos recursos

es limitada. Una solución al problema (un schedule) se denomina factible por

precedencias (o por restricciones temporales) si respeta todas las restricciones

temporales y factible por recursos si respeta todas las restricciones de recursos (nunca

el conjunto de trabajos que están en ejecución en un punto del tiempo excede la

capacidad de ninguno de los recursos). El objetivo es encontrar un schedule factible

por precedencias y por recursos que minimice la duración total del proyecto

(makespan). El schedule como se definió antes consiste en asignar tiempos de inicio

y de terminación a los trabajos, aunque es suficiente con determinar los tiempos de

inicio, pues los de terminación se pueden obtener a partir de los de inicio y la duración

de los trabajos

En adelante se hace referencia al problema objeto de este trabajo como el problema

RCPSP (Resource-Constrained Project Scheduling Problem) tal como se describió en

el párrafo anterior.

4

A pesar de las variantes más complejas y generales descritas anteriormente, el

problema RCPSP tal como se presenta sigue siendo de mucho interés por parte de los

investigadores del scheduling, ya que por ser del tipo NP-hard no se conocen

algoritmos eficientes para problemas de tamaño moderado. Así , por ejemplo, para

muchos problemas de 60 actividades y 4 recursos no se conoce la solución óptima y

un problema de 60 actividades ya es un problema que se puede considerar pequeño

para muchas empresas de la vida real. De acuerdo con esto, el problema es relevante

tanto desde el punto de vista teórico como desde el punto de vista práctico.

En la determinación del grado de dificultad del problema es más crítico el número de

actividades que el de recursos, ya que son las actividades las que dan origen a la

explosión combinatoria del problema.

5

2. FORMAS DE CLASIFICAR Y RESOLVER EL PROBLEMAS DE SCHEDULlNG

Dado que existen numerosas formas de plantear y resolver el problema del scheduling

se realiza a continuación una descripción abreviada de algunos de los criterios de

clasificación más utilizados en la literatura[3]

Según el enfoque. Métodos analíticos o de investigación operativa como la

programación de enteros, el método de ramal y límite y programación dinámica ;

métodos de inteligencia artificial tales como problemas de satisfacción de

restricciones, búsqueda tabú, enfriamiento o temple simulado, algoritmos genéticos,

colonia de hormigas y GRASP, y métodos más especializados como técnicas que

utilizan el concepto de energía, blackboard y market models.

Según la existencia de función objetivo. En caso de no existir función objetivo, se trata

de encontrar alguna solución que satisfaga todas las restricciones .

Según la función de optimización o Función Objetivo (cuando existe) . Minimización del

tiempo total de finalización del scheduling o makespan (la más utilizada), minimización

del tiempo promedio de todos los trabajos, minimización de los inventarios en proceso,

maximización del porcentaje de utilización de los recursos, minimización de alguna

función de costos (que puede ser variable según los tipos de costo que se quieran

involucrar en el proceso de optimización).

Según la intervención de un experto. Los problemas se pueden resolver con la

intervención de un experto o por un proceso totalmente automático mediante un

computador.

6

Según la forma de recorrer el árbol en el proceso de solución (cuando se utiliza

estructura de árbol) . El árbol que va constituyendo la solución al problema de

scheduling se puede recorrer de dos maneras básicas, en profundidad o en anchura,

las cuales pueden ser mejoradas mediante técnicas heurísticas con el fin de podar

(evitar recorrer) algunas de las soluciones. El método de construcción de un árbol se

utiliza especialmente cuando se hace una enumeración exhaustiva .

Según la regla de despacho (Dispatching). Para la forma de escoger la siguiente

operación a la que se le asigna un recurso . Se conocen en la literatura más de 100

reglas, siendo las siguientes algunas de las más importantes:

• SPT: Shortest Processing Time. Tiempo de procesamiento más corto .

• LPT: Longest Processing Time. Tiempo de procesamiento mas largo. Nótese

como esta regla y la anterior son opuestas. Sin embargo, ambas pueden utilizarse

según los objetivos buscados y sin que ninguna de las dos domine a la otra.

• EDD: Earliest Due Date. Fecha de entrega más temprana.

• Min Slack: Mínimo tiempo de holgura , o sea la diferencia entre la fecha de entrega

y el tiempo restante de proceso.

• FIFO: Primero en llegar primero en ser despachado.

• Mínimo cociente entre tiempo de proceso y suma de todos los tiempos de proceso.

• Número más pequeño de operaciones pendientes.

Aunque cada una de estas reglas busca un objetivo definido, de ninguna de ellas

puede decirse que sea superior a las demás, ni que la aplicación de ellas garantice la

solución óptima. Sin embargo, según Hastings [4] , estas reglas sí se pueden

categorízar como las que tienen en cuenta solo una operación y las que consideran la

totalidad de las operaciones.

También existen formas de combinar reglas de manera estática (ponderaciones) o

dinámíca (según el estado de la solución) .

Para el caso del presente trabajo se consideran dos clasificaciones importantes ya que

una de las técnicas utilizadas recurre a algoritmos heurísticos paralelos que

7

construyen la solución parcialmente paso a paso, por lo que se debe justificar su

utilización

Estas clasificaciones son:

• Tipo de algoritmo: exacto o heurístico.

• Forma de seleccionar las actividades (esquema): serial o paralelo.

Los algoritmos exactos garantizan la solución óptima, en tanto que los heurísticos no

la garantizan, aunque pueden llegar a ella , con bastante probabilidad, en la medida en

que el algoritmo heurístico sea eficiente y se le de tiempo suficiente (o

equivalentemente número de iteraciones) para recorrer el espacio de soluciones.

En cuanto a los esquemas serial y paralelo, descritos en [5], se puede decir que cada

uno de los dos esquemas está asociado con una lista de prioridad que determina el

orden en que se consideran los trabajos para su ejecución .

De un trabajo se dice que está disponible (o elegible) en un punto t del tiempo si todos

sus predecesores han sido terminados en el punto t del tiempo.

A continuación se definen las características de los dos esquemas.

Esquema paralelo: toma en consideración el tiempo (usualmente se empieza en t=O o

t=1) . En cualquier tiempo t se puede iniciar el proceso de varios trabajos, de acuerdo

con el orden definido en la lista L de prioridades. Si no se pueden iniciar ningún trabajo

elegible en el tiempo t, entonces se mueve t hasta el siguiente punto de terminación de

alguno de los trabajos que están activos (en ejecución). Aunque se podría pensar que

basta con incrementar el tiempo 1 unidad , se ve claramente, que mientras no se

produzca la terminación de algún trabajo ninguno de los elegibles podría empezar,

puesto que si lo pudiera en t+1, entonces también hubiera podido iniciarse en t, ya que

las condiciones de disponibilidad de recursos no han cambiado entre t y t+1. Por esa

razón sólo se considera el siguiente punto en el tiempo donde se produzca la

8

terminación de un trabajo . De esta forma se va avanzando en el tiempo con la

programación de los trabajos. El esquema se denomina paralelo porque en un punto

del tiempo se pueden iniciar varios trabajos simultáneamente.

Esquema serial : toma en consideración los trabajos uno por uno. Del orden dado por

la lista de elegibles se toma un trabajo y se inicia tan pronto como sea posible con

respecto a los trabajos ya programados, terminados o no, hasta el momento. La lista

de elegibles se determina, al igual que en el caso anterior, teniendo en cuenta las

relaciones de precedencia, es decir son elegibles aquellos cuyos predecesores ya han

sido terminados. Aunque a primera vista pareciera ser un esquema más ineficiente,

puesto que los trabajos se inician uno por uno, sin embargo tiene la ventaja sobre el

esquema paralelo de que un trabajo se puede iniciar en un punto hacia atrás en el

tiempo, dado que haya la disponibilidad de recursos y que su duración lo permita.

Existen algoritmos que utilizan los dos esquemas, sin embargo en el presente trabajo

aunque se consideran tres algoritmos diferentes, el tercero de ellos que constituye el

núcleo del trabajo ya que es el aporte principal se utiliza el esquema paralelo, aunque

se le introducen variantes que describiremos más adelante para determinar de la lista

de trabajos elegibles el subconjunto de los realmente elegidos. Cuando no todos los

elegibles se pueden iniciar (schedule) se dice que se ha producido un conflicto de

recursos y se debe utilizar algún criterio pa~a seleccionar sólo algunos de ellos.

Resumiendo, de las diferentes formas de resolver el problema de scheduling , en el

presente trabajo se opta por la exploración de dos métodos heurísticos tradicionales:

Búsqueda Tabú y Enfriamiento Simulado y un tercer método también heurístico, pero

basado en la simplificación de un algoritmo analítico exacto, que como dijimos

anteriormente se describe luego con más detalle. Este tercer método se denomina

AEM (Algoritmo Heurístico Modificado). Se realizan varias ejecuciones utilizando cada

uno de estos métodos y se procede con un análisis comparativo de los resultados

obtenidos en cada uno de ellos.

9

3. ESTADO DEL ARTE

Como el AEM del presente trabajo toma como base un algoritmo exacto para

convertirlo por simplificaciones en un algoritmo heurístico, se hará un recuento de los

algoritmos exactos y posteriormente de los heurísticos.

3.1 ALGORITMOS EXACTOS

Algunos de los algoritmos exactos se encuentran descritos en Pritsker et al (1969) [6] ,

Balas (1970) [7], Davies and Heidorn (1971) [8], Talbot y Patterson (1978) [9],

Christofides et al (1987) [10] Y muchos otros.

Para el presente trabajo es de especial importancia el algoritmo desarrollado por

Demeulemeester y Herroelen (1992) [11], porque aunque el algoritmo exacto utilizado

como base no es el de estos dos autores se utiliza una estrategia de árbol similar a la

de ellos.

Sin embargo antes de mencionar el algoritmo de Demeulemeester y Herroelen se hará

una descripción de dos estrategias para tratar de resolver el RCPSP en forma exacta

por medio de programación entera, es decir algoritmos que garantizan el óptimo, que

como ya se ha mencionado sólo son útiles en la práctica para problemas pequeños. A

pesar de esta limitación, uno de los aspectos importantes de estos algoritmos es que

se pueden utilizar para derivar de ellos, por medio de simplificaciones y

modificaciones, algoritmos heurísticos, que aunque pierden la característica de

garantizar el óptimo se acercan a él, como se muestra en los resultados comparativos

expuestos al final del trabajo, en tiempos notablemente inferiores al de los algoritmos

exactos.

Existen otros algoritmos que garantizan el óptimo como la programación dinámica ,

pero no se abordan en este trabajo.

10

La forma simple tradicional de plantear el problema RCPSP que se describió en el

numeral 2 mediante programación entera es:

(1 )

Is¡

s.a. L ~¡t = 1 (2)

t=es¡

Is¡ Is¡

L t*~t - L t*f,¡t ;:: d¡ (i ,j) E H (3)

t=es¡ t=es¡

L rik L ~¡t sbk t=O.. , Tmax; k = 1 .. , m (4)

iEX T=a(t,i)

~j t E (0,1) iEX (5)

donde: Is¡ = late start de la actividad i (tiempo de inicio más tardío)

es¡ = early start de la actividad i (tiempo de inicio más temprano)

~¡ t = variable binaria =1 si y sólo si la actividad 1 empieza al principio del

período t

X = conjunto de actividades

H = conjunto (i ,j) de precedencias , donde (i ,j) significa que i es predecesor de j

r¡k = cantidad que la actividad i consume del recurso k durante su ejecución

11

a(t,i) =max(O, t-d¡ + 1)

bk =disponibilidad del recurso k (constante durante la duración del proyecto)

En este planteamiento siempre se consideran dos actividades artificiales (dummy jobs)

que son la primera y la última (1 y n) con duración cero y con consumo cero de todos

los recursos y que se utilizan con el fin de que la red que representa el proyecto tenga

un solo punto de inicio y un solo punto de terminación .

La ecuación (1) es la funcion objetivo: makespan o duración total del proyecto.

La ecuación (2) representan la restricciones de no interrupción (non-preemption) , es

decir las que obligan a que una actividad debe continuarse hasta su terminación una

vez iniciada.

Las ecuaciones (3) representan las restricciones de precedencia : una actividad debe

iniciar después de terminadas todas las predecesoras

Las ecuaciones (4) representan las restricciones de recursos : en cualquier tiempo la

cantidad de recursos utilizados por todas las actividades en ejecución no debe superar

la disponibilidad del recurso .

Aunque es fácil la solución del problema mediante cualquier programa de

programación entera como CPLEX, lingo, lindo, etc y también lo es la generación

automática de todas las restricciones y la función objetivo en función de las

precedencias, los consumos de los recursos y sus disponibilidades, es notorio el

deterioro del tiempo de ejecución cuando se incrementa el número de actividades.

Cabe recordar que la dificultad del problema está más asociada con el número de

actividades que con el número de recursos, pues son las actividades las que dan

origen a la explosión combinatoria del problema.

12

Aunque las restricciones (2), (3) Y (4) son fáciles de plantear, como se mencionó en el

párrafo anterior, hay que tener presente que en cada conjunto de ellas pueden existir

cientos y hasta miles para problemas no muy grandes. Por ello las versiones poco

potentes de lingo y lindo no son en la práctica muy útiles para la solución del

problema, desde el punto de vista de capacidad del paquete, adicional al ya

mencionado problema del tiempo de ejecución.

El planteamiento de programación entera entonces es útil para entender en que

consiste el problema y obtener conclusiones teóricas . Sin embargo existe una

característica del planteamiento de programación entera adicional, esa sí de mucha

utilidad , y es el hecho de que permite la obtención de cotas inferiores, mediante la

técnica de relajación (ignorar algunas restricciones: usualmente las difíciles).

Sobre la utilidad de una cota inferior se hablará más adelante, pero para la obtención

de cotas existe un planteamiento de programación entera del problema mucho más

complejo matemáticamente, pero de mayor utilidad para tal fin descrita por Mingozzi et

al en [12]

El nuevo del RCPSP hecho por Mingozzi aparece a continuación .

Antes de plantear el problema se define una solución al RCPSP como una secuencia

de subconjuntos de actividades S = (RI1 , R12 , • . • , RII ') donde t* es el tiempo de

terminación del proyecto y R It E S corresponde a un conjunto de actividades en

progreso en el tiempo t que satisfacen las siguientes dos condiciones

i) Se satisfacen las restricciones de recursos

ii) No existen relaciones de precedencia entre cada par i,j con i<j , es decir las

actividades del conjunto se pueden realizar simultáneamente.

Se denomina subconjunto factible cualquier subconjunto R de actividades de X'

13

Con estas definiciones el planteamiento del problema RCPSP es el siguiente:

(6)

t=esn

s.a.

Is¡

L [L Yltl =d¡ iEX' (7)

IER¡ t=es¡

L YI::::1 t=1 .. . . Tmax (8)

IER

~¡I ~ L YI - L YI-1 iE X'. t= es¡ .. .. Is¡ (9)

IER¡ IER¡

Is¡

iEX' (10)

t= es¡

ISj Is¡

L ~j l - L ~I ~ d¡ (i.j) E H (11 )

t= eSj t= es¡

YIt E (0,1) IER . t=1 ... . Tmax (12)

~¡I E (0.1) iEX. t= es¡ .... Is¡ (13)

14