140 likes | 596 Views
Solució del problema dels robots i els contenidors mitjançant un sistema d’agents reactius El problema : Definicions Els robots poden fer diferents accions. Un robot r i pot: Caminar des de la seva posició p i fins a una altra qualsevol.
E N D
Solució del problema dels robots i els contenidors mitjançant un sistema d’agents reactius
Els robots poden fer diferents accions. Un robot ri pot: • Caminar des de la seva posició pi fins a una altra qualsevol. • Carregar un contenidor (sempre que robot i contenidor estiguin a la mateixa posició). • Transportar un contenidor, un cop carregat, fins a qualsevol posició. • Deixar el contenidor que està carregant a la posició on ell mateix es troba.
Per tal de simplificar el problema considerarem que : • Cada robot es mou sempre (quan es mou) a la mateixa velocitat. • Els robots no triguen temps en carregar o descarregar un contenidor. Això és, els actes de carregar i descarregar són instantanis • Tots els robots poden carregar tots els contenidors, però no poden carregar més d’un de cop.
El problema, llavors, consisteix a trobar, si existeix, una seqüència d’accions que permeti als robots transportar tots els contenidors al seu punt de destí de manera que cap contenidor sigui lliurat desprès de la seva data límit.
Complexitat del problema El problema pertany a la classe de complexitat NP. És a dir, no existeix cap algorisme que garanteixi trobar una solució (si existeix) en un temps raonable. Qualsevol algorisme que garanteixi trobar una solució, si existeix, consistirà bàsicament en examinar totes les possibilitats en quant a l’ordre en que es deuen lliurar els contenidors i quin robot ha de fer cada lliurament. Aquest nombre de possibilitats creix exponencialment amb el nombre de contenidors i robots.
100 D1 142.10 (25,85) C2, 300 D3 (70,60) (12,55) 90.62 309.43 195.95 C3, 400 C1, 300 D2 (85,50) 236.26 (10,10) (90,10) 14.14 (0,0) 0 100 The robot carries a container The robot carries nothing Get container 1 with deadline 300 at point 10,10. Time is 14.14 Deliver it at point 25,85. Time is 90.62 Get container 2 with deadline 300 at point 70,60. Time is 142.10 Deliver it at point 90,10. Time is 195.95 Get container 3 with deadline 400 at point 85,50. Time is 236.26 Deliver it at point 12,55. Time is 309.43
100 D1 (25,85) C2, 400 291.47 D3 (70,60) (12,55) 233.26 90.62 160.08 345.32 C3, 250 C1, 100 D2 (85,50) (10,10) (90,10) 14.14 (0,0) 0 100 The robot carries a container The robot carries nothing Get container 1 with deadline 100 at point 10,10. Time is 14.14 Deliver it at point 25,85. Time is 90.62 Get container 3 with deadline 250 at point 85,50. Time is 160.08 Deliver it at point 12,55. Time is 233.26 Get container 2 with deadline 400 at point 70,60. Time is 291.47 Deliver it at point 90,10. Time is 345.32
D1 (25,85) 263.74 C2, 180 D3 (70,60) 311.75 (12,55) 356.03 92.24 146.09 C3, 400 C1, 300 D2 186.40 (85,50) (10,10) (90,10) 14.14 (0,0) 0 100 100 The robot carries a container The robot carries nothing Get container 1 with deadline 300 at point 10,10. Time is 14.14 Let it at point 55.73,48.11 and get container 2 with deadline 180 at point 70,60. Time is 92.24 Deliver it at point 90,10. Time is 146.09 Get container 3 with deadline 400 at point 85,50. Time is 186.40 Let it at point 55.73,48.11 and get container 1 with deadline 300 at point 55.73,48.11. Time is 215.73 Deliver it at point 25,85. Time is 263.74 Get container 3 with deadline 400 at point 55.73,48.11. Time is 311.75 Deliver it at point 12,55. Time is 356.03
C2, 300 141.42 (0,100) 212.13 D (50,50) 70,71 C1, 300 (0,0) Get container 1 with deadline 300 at point 0,0. Time is 0 Deliver it at point 50,50. Time is 70.71 Get container 2 with deadline 300 at point 0,100. Time is 141.42 Deliver it at point 50,50. Time is 212.13
C2, 200 (0,100) 100 170.71 220,71 D 270,71 (50,50) C1, 300 (0,0) Get container 1 with deadline 300 at point 0,0. Time is 0 Let it at point 0,50 and get container 2 with deadline 200 at point 0,100. Time is 100 Deliver it at point 50,50. Time is 170.71 Get container 1 with deadline 300 at point 0,50. Time is 220.71 Deliver it at point 50,50. Time is 270.71
C2, 200 (0,100) 129,2 200 209.1 D (40.9; 50) 218.2 (50,50) C1, 218.2 (0,0) Get container 1 with deadline 218.2 at point 0,0. Time is 0 Let it at point 40.9; 50 and get container 2 with deadline 200 at point 0,100. Time is 129,2 Deliver it at point 50,50. Time is 200 Get container 1 with deadline 218.2 at point 40.9; 50 . Time is 209.1 Deliver it at point 50,50. Time is 218.2
Podem intentar solucionar el problema de dues formes: CENTRALITZADA : Hi ha una espècie de cervell central que planifica el que ha de fer cada robot. DISTRIBUIDA : Cada robot pren les seves decisions i intenta cooperar amb els altres per a resoldre el problema. Nosaltres intentarem una solució d’aquest tipus. Farem servir un sistema d’agents reactius (sistema Multi-Agent). El comportament de cada agent vindrà determinat per un mecanisme molt simple, però veurem com aquest comportament individual simple pot fer emergir un comportament global del sistema molt complex i eficient.
Suposem que els contenidors emeten un senyal d’intensitat inversament proporcional al temps que resta fins a la seva data límit de lliurament. Cada robot lliure va a buscar aquell contenidor pel qual rep la senyal més intensa (les senyals s’atenuen amb la distància). Tal com està implementat al simulador, cada robot lliure es dirigirà a buscar el contenidor que minimitzi la funció On RemTime és el temps que queda per lliurar el contenidor i DistToCont és la distancia del contenidor al robot. K1,K2,A1 i A2 són paràmetres que podem ajustar per a millorar el rendiment del sistema.