• No se han encontrado resultados

Algoritmo de Floyd-Warshall para el cálculo de la matriz de distancias

Así pues con el algoritmo de Floyd-Warshall podemos calcular el momento preciso en que se puede ejecutar una acción y también cuando esta terminará. Este mismo algoritmo se puede utilizar para realizar un reschedule del plan cuando ocurre un retraso.

3.10. - Floyd-Warshall vs PC-2

Como se ha visto el propio algoritmo de Floyd-Warshall se puede utilizar para propagar las restricciones temporales en lugar del algoritmo PC-2. Floyd- Warshall está acotado en O(n3) donde n es el número de timepoints al igual que PC-

2. Se podría pensar entonces en utilizar el algoritmo de Floyd-Warshall en lugar de PC-2, más teniendo en cuenta que Floyd-Warshall tiene una serie de ventajas.

Floyd-Warshall es un algoritmo completo y se puede utilizar para determinar la red STN mínima. Si hay una inconsistencia siempre la detecta. Por el contrario PC-2 es un algoritmo aproximado. PC-2 es un algoritmo aproximado porque como se ha mostrado utiliza propagación de restricciones local y en esto estriba precisamente su ventaja frente a Floyd-Warshall.

Floyd-Warshall es un algoritmo que propaga siempre todas las restricciones en la red por lo tanto en media es siempre un algoritmo de orden O(n3), mientras

que PC-2 solamente propaga las restricciones locales (en el peor de los casos puede propagarlas todas y ser incluso más lento que Floyd-Warshall) con lo que en promedio es un algoritmo muy rápido. Además se demuestra que PC-2 detecta todas las posibles inconsistencias, es decir toda inconsistencia detectada por Floyd-Warshall es también detectada por PC-2.

3.11. - Comparativa con otros planifica dores

temporales

El uso de redes STN para la codificación de restricciones temporales en planificación no es nueva y existen diversos planificadores que hacen uso de ellas.

En planificación jerárquica HTN uno de los primeros planificadores que hacen uso de ellas es Oplan [133] en que a diferencia de HTNP2 la mayoría de las restricciones temporales tenían que codificarse de forma explícita en la red STN. En HTNP2 solamente se hacen explícitas las restricciones de sincronización de tareas de redes distintas, el resto de restricciones son manejadas de forma automática por el planificador simplificando mucho la escritura de dominios.

SHOP2 [28] no hace uso de una red STN, pero provee un mecanismo llamado MTP (Muti-Timeline Preprocessing) que mediante el uso de literales fluents en el estado va calculando el schedule del plan. SHOP2 es incapaz de calcular múltiples

schedules como HTNP2 y es incapaz de representar deadlines y hacer sincronización

entre tareas, además que el peso de llevar el cálculo de tiempo recae sobre el escritor de dominios. De esta forma HTNP2 produce un conjunto de schedules flexibles que se pueden adaptar a posibles retrasos, mientras que SHOP2 calcula un único schedule [72].

Además en SHOP2 el plan obtenido es lineal, mientras que HTNP2 gracias al uso que hace de la estructura de vínculos causales el plan obtenido es un plan parcial.

Ixtet [79] es un planificador que también hace uso de redes STN. Las relaciones temporales causa efecto son codificadas mediante dos predicados sencillos que representan eventos o cambios instantáneos en el estado y assertions que representan literales que se mantienen a lo largo del tiempo.

A pesar del costo que supone al algoritmo de planificación la gestión del modelo temporal y la propagación de las restricciones temporales asociadas HTNP2 sigue siendo un planificador bastante eficiente. La Gráfica 2 muestra una comparativa de uso de tiempo de CPU entre el planificador HTNP2 y SHOP2. Se ha escogido este planificador por que es el que quizás es más parecido a HTNP2 en cuanto a la estructura del dominio y por tanto se pueden escribir dominios que son aproximadamente equivalentes. En el eje x se muestran distintos problemas para el dominio del zeno-travel (hard time) temporal adaptado por SHOP2 para su participación en la IPC del 2002 mientras que en el eje y se muestra el tiempo consumido por los planificadores en segundos. Se puede apreciar claramente que HTNP2 es más rápido que SHOP2 en todos los dominios. Puesto que los dominios de HTNP2 se han escrito siguiendo la estructura de los dominios utilizados por SHOP2

(no se ha hecho uso de expresiones o construcciones en HTNP2 no soportadas por SHOP2 que pudieran acelerar el tiempo de procesamiento) también se aprecia como las curvas son simétricas.

Gráfica 2: Comparativa en tiempo de CPU entre HTNP2 y SHOP2

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 0,00 2,50 5,00 7,50 10,00 12,50 15,00 17,50 20,00 22,50 25,00 27,50 30,00 32,50 35,00 37,50

Eficiencia HTNP2 vs SHOP2

SHOP2 HTNP2 Número de problema T ie m p o e n s e g u n d o s

4. -

4. - Mejorando la eficiencia del planificadorMejorando la eficiencia del planificador

temporal

temporal

Un objetivo sin un plan es sólo un deseo.

Antonie de Saint-Esupery, (1900-1944), escritor francés.

Durante el capítulo 3 se ha presentado un modelo de planificación temporal basado en el paradigma de planificación jerárquica HTN y en el uso de redes STN. Se ha presentado el planificador HTNP2 que hace uso de un algoritmo de satisfacción de restricciones PC-2 (Path Consistency 2) que se basa en mantener la propiedad de camino consistencia de las redes STN.

A pesar de que se ha demostrado que PC-2 es un algoritmo eficiente en problemas complejos, la carga computacional necesaria para mantener el modelo temporal es elevada y sería deseable disponer de algoritmos más eficientes. En este capítulo se presenta el algoritmo de planificación HTNP2CL que hace uso de una inferencia temporal distinta basada en la estructura causal del plan que lo hace más eficiente.

4.1. - Usando la estructura del plan para mejorar la

efi ciencia

El algoritmo PC-2 es un algoritmo de propagación de restricciones incremental. Cada vez que se añade una restricción temporal a la red temporal puede ocurrir uno de los siguientes tres casos:

 Se reduce el intervalo que restringe la distancia entre dos

timepoints, mediante la intersección con la nueva restricción.

restricción.

 Se añade un nuevo nodo (timepoint) a la red STN y uno o más arcos que lo conectan con el resto de la red.

Una vez hecho esto es necesario propagar los cambios aplicados al resto de la red para comprobar si esta sigue siendo consistente.

Como se explicó PC-2 utiliza una estructura tipo cola para ir almacenando las restricciones que es preciso revisar. PC-2 hace propagación local en caminos de longitud dos (parten de un timepoint i pasan por uno intermedio j y terminan en otro k) para detectar inconsistencias. Cada vez que una restricción es modificada en la red STN, todos los timepoints y sus conexiones con la restricción modificada son revisadas, de esta forma la modificación se va extendiendo al resto de la red:

5. if changed(Rij) then:

6. for l= 1 to n:

7. if l!= i and l != j then:

8. Q )Q {l , i , jl , j, i , 1l n , l'i ,l ' j}

Documento similar