@use Control. @use SistemaAutonomo. Controller SistemaAutonomoController. Control : SistemaAutonomoController { + to init: teorias (list). sa (object). teoria (object). entorno (hash). datos-finales (hash). print "Crea Sistema autonomo". sa = new SistemaAutonomo. sa init with-max-pasos 4 with-max-teorias 15. print "Llena entorno". entorno{"sensor1"} = 0. entorno{"sensor2"} = 0. entorno{"sensor3"} = 0. entorno{"sensor4"} = 0. entorno{"movido"} = 0. print "Actualiza entorno". sa update-entorno with entorno. print "Crea Teoria 1". teorias = 2 new Teorias. teorias{0} init named "avanzar X 1" with-action "avanzarX". print "Carga datos iniciales Teoria 1". (teorias{0}) set-dato-inicial name "sensor1" value ANY. (teorias{0}) set-dato-inicial name "sensor2" value ANY. (teorias{0}) set-dato-inicial name "sensor3" value ANY. (teorias{0}) set-dato-inicial name "sensor4" value ANY. (teorias{0}) set-dato-inicial name "movido" value ANY. print "Carga datos finales Teoria 1". (teorias{0}) set-dato-final name "sensor1" value ANY. (teorias{0}) set-dato-final name "sensor2" value ANY. (teorias{0}) set-dato-final name "sensor3" value ANY. (teorias{0}) set-dato-final name "sensor4" value ANY. (teorias{0}) set-dato-final name "movido" value ANY. print "Crea Teoria 2". teorias{1} init named "avanzar X 2" with-action "avanzarX". print "Carga datos iniciales Teoria 2". (teorias{1}) set-dato-inicial name "sensor1" value ANY. (teorias{1}) set-dato-inicial name "sensor2" value ANY. (teorias{1}) set-dato-inicial name "sensor3" value ANY. (teorias{1}) set-dato-inicial name "sensor4" value ANY. (teorias{1}) set-dato-inicial name "movido" value ANY. print "Carga datos finales Teoria 1". (teorias{1}) set-dato-final name "sensor1" value ANY. (teorias{1}) set-dato-final name "sensor2" value ANY. (teorias{1}) set-dato-final name "sensor3" value ANY. (teorias{1}) set-dato-final name "sensor4" value ANY. (teorias{1}) set-dato-final name "movido" value ANY. print "Agrega teorias al sistema autonomo". sa add teoria (teorias{0}). sa add teoria (teorias{1}). print "Ponemos condicion final esperada para el plan". datos-finales{"movido"} = 1. sa update-datos-finales with datos-finales. print "Calcula el plan". sa plan. print "Vemos si tiene una teoria mas". while (sa has-next-theory): { print "Si, tiene". print "Obtiene proxima teoria". teoria = sa get-next-theory. print "Obtiene datos de la teoria". print(teoria get-nombre). print(teoria get-accion). if ((teoria get-accion) == "avanzarX"): { entorno{"sensor1"} = 1. entorno{"movido"} = 1. } print "Valida teoria". sa update-entorno with entorno. if (sa validate theory teoria): { print "valida". } else { print "Teoria no valida, salimos". } print "Vemos si tiene una teoria mas". } print "No, no tiene". free teorias{0}. free teorias{1}. free sa. }