From 38252dfa17d6be81f176feceb8b4fbe612a9b597 Mon Sep 17 00:00:00 2001 From: Leandro Lucarella Date: Thu, 14 Dec 2006 01:27:56 +0000 Subject: [PATCH] =?utf8?q?Adaptaci=C3=B3n=20de=20Sistema=20Aut=C3=B3nomo?= =?utf8?q?=20para=20que=20pueda=20hablar=20m=C3=A1s=20f=C3=A1cil=20con=20B?= =?utf8?q?reve.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- trunk/doc/Documentacion.doc | Bin 0 -> 189440 bytes trunk/src/Makefile | 4 +- trunk/src/SistemaAutonomo.tz | 20 +++++++-- trunk/src/SistemaAutonomoDemo.tz | 70 ++++++++++++++++++++----------- trunk/src/indicemagico.h | 7 +++- trunk/src/main.cpp | 38 ++++------------- trunk/src/plugin.cpp | 41 ++++++++++++------ trunk/src/sistemaautonomo.cpp | 62 ++++++++++++++++++++++++++- trunk/src/sistemaautonomo.h | 47 ++++++++++++++------- 9 files changed, 198 insertions(+), 91 deletions(-) create mode 100644 trunk/doc/Documentacion.doc diff --git a/trunk/doc/Documentacion.doc b/trunk/doc/Documentacion.doc new file mode 100644 index 0000000000000000000000000000000000000000..893c673874db6ffd61a8d0301dd1a74b11f25312 GIT binary patch literal 189440 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 literal 0 HcmV?d00001 diff --git a/trunk/src/Makefile b/trunk/src/Makefile index cb15e54..d72514e 100644 --- a/trunk/src/Makefile +++ b/trunk/src/Makefile @@ -6,8 +6,8 @@ targets=test plugin.so all: $(targets) -plugin.so: plugin.o $(BREVEDIR)/brevePlugin.a - $(CXX) $(CPPFLAGS) -shared -o $@ plugin.o $(BREVEDIR)/brevePlugin.a +plugin.so: plugin.o sistemaautonomo.o $(BREVEDIR)/brevePlugin.a + $(CXX) $(CPPFLAGS) -shared -o $@ plugin.o sistemaautonomo.o $(BREVEDIR)/brevePlugin.a test: main.o sistemaautonomo.o $(CXX) $(LDFLAGS) -o test *.o diff --git a/trunk/src/SistemaAutonomo.tz b/trunk/src/SistemaAutonomo.tz index 147c776..b7c3cc7 100644 --- a/trunk/src/SistemaAutonomo.tz +++ b/trunk/src/SistemaAutonomo.tz @@ -1,4 +1,3 @@ -@use Control. @plugin "plugin.so" (SAbrFunctions). @@ -44,19 +43,32 @@ Object : SistemaAutonomo { + to add teoria theTeoria (object): SistemaAutonomoAddTeoria(ptr, (theTeoria get-ptr)). - + to set value theValue (float) with-name theName (string): + + to set-entorno value theValue (float) with-name theName (string): SistemaAutonomoSetValue(ptr, theName, theValue). - + to update entorno theEntorno (hash): + + to set-dato-final value theValue (float) with-name theName (string): + SistemaAutonomoSetDatoFinal(ptr, theName, theValue). + + + to update-entorno entorno theEntorno (hash): nombre (string). foreach nombre in keys(theEntorno): { print "Seteando valor de entorno ", nombre, " con ", theEntorno{nombre}. - self set value theEntorno{nombre} with-name nombre. + self set-entorno value theEntorno{nombre} with-name nombre. + } + + + to update-datos-finales datos-finales datos (hash): + nombre (string). + foreach nombre in keys(datos): { + print "Seteando valor de dato final ", nombre, " con ", datos{nombre}. + self set-dato-final value datos{nombre} with-name nombre. } + to plan: SistemaAutonomoPlan(ptr). + + to has-next-theory: + return SistemaAutonomoHasNextTheory(ptr). + + to get-next-theory: t (object). t = new Teoria. diff --git a/trunk/src/SistemaAutonomoDemo.tz b/trunk/src/SistemaAutonomoDemo.tz index 5c8fdd4..391d5bc 100644 --- a/trunk/src/SistemaAutonomoDemo.tz +++ b/trunk/src/SistemaAutonomoDemo.tz @@ -10,49 +10,69 @@ Control : SistemaAutonomoController { sa (object). teoria (object). entorno (hash). + datos-finales (hash). print "Llena entorno". - entorno{"sensor1"} = 10.5. - entorno{"sensor2"} = 1.5. + entorno{"sensor"} = 0. + entorno{"movido"} = 0. print "Crea Sistema autónomo". sa = new SistemaAutonomo. print "Crea Teorías". - teorias = 3 new Teorias. - teorias{0} init named "t1" with-action 1. - teorias{1} init named "t2" with-action 2. - teorias{2} init named "t3" with-action 3. - - print "Carga datos a las teorías". - (teorias{0}) set-dato-inicial name "sensor1" value 10.5. - (teorias{0}) set-dato-inicial name "sensor2" value 0.5. - (teorias{1}) set-dato-inicial name "sensor1" value 0.5. - (teorias{1}) set-dato-inicial name "sensor2" value 10.5. - (teorias{2}) set-dato-inicial name "sensor1" value 5.5. - (teorias{2}) set-dato-inicial name "sensor2" value 5.5. + teorias = 2 new Teorias. + teorias{0} init named "t1" with-action "avanza". + (teorias{0}) set-dato-inicial name "sensor" value 0. + (teorias{0}) set-dato-inicial name "movido" value -3000000. + (teorias{0}) set-dato-final name "sensor" value -3000000. + (teorias{0}) set-dato-final name "movido" value 1. + + teorias{1} init named "t2" with-action "retrocede". + (teorias{1}) set-dato-inicial name "sensor" value 1. + (teorias{1}) set-dato-inicial name "movido" value -3000000. + (teorias{1}) set-dato-final name "sensor" value -3000000. + (teorias{1}) set-dato-final name "movido" value 1. print "Agrega teorías al sistema autónomo". sa add teoria (teorias{0}). sa add teoria (teorias{1}). - sa add teoria (teorias{2}). print "Actualiza entorno". - sa update entorno entorno. + sa update-entorno entorno entorno. + print "Ponemos condición final esperada para el plan". + datos-finales{"movido"} = 1. + sa update-datos-finales datos-finales datos-finales. print "Calcula el plan". sa plan. - print "Obtiene próxima teoría". - teoria = sa get-next-theory. - print "Obtiene datos de la teoría teoría". - print(teoria get-nombre). - print(teoria get-accion). - print "Valida teoría". - if (sa validate theory teoria): { - print "valida". + print "Vemos si tiene una teoría más". + while (sa has-next-theory): { + print "Sí, tiene". + print "Obtiene próxima teoría". + teoria = sa get-next-theory. + print "Obtiene datos de la teoría teoría". + print(teoria get-nombre). + print(teoria get-accion). + if ((teoria get-accion) == "avanza"): { + entorno{"sensor"} = 1. + entorno{"movido"} = 1. + } + if ((teoria get-accion) == "retrocede"): { + entorno{"sensor"} = 0. + entorno{"movido"} = 1. + } + print "Valida teoría". + sa update-entorno entorno entorno. + if (sa validate theory teoria): { + print "valida". + } + else { + print "Teoria no valida, salimos". + } + print "Vemos si tiene una teoría más". } + print "No, no tiene". free teorias{0}. free teorias{1}. - free teorias{2}. free sa. } diff --git a/trunk/src/indicemagico.h b/trunk/src/indicemagico.h index a90412a..49f18f1 100644 --- a/trunk/src/indicemagico.h +++ b/trunk/src/indicemagico.h @@ -17,8 +17,9 @@ class CIndiceMagico { public: std::string* m_nombres ; - T* m_datos ; - unsigned m_cant ; + T* m_datos ; + unsigned m_cant ; + typedef T* iterator; public: CIndiceMagico() @@ -43,6 +44,8 @@ public: } public: + iterator begin() { return m_datos; } + iterator end() { return m_datos + m_cant; } void add(const char* nombre, const T dato) { //Si ya existía, lo borro diff --git a/trunk/src/main.cpp b/trunk/src/main.cpp index a259805..3886fcf 100644 --- a/trunk/src/main.cpp +++ b/trunk/src/main.cpp @@ -2,28 +2,6 @@ #include "main.h" #include -// -double AvanzarX(CEntorno& e) -{ - avanzo_en_x = true ; - return 0 ; -} - - -double AvanzarY(CEntorno& e) -{ - avanzo_en_y = true ; - return 0 ; -} - - -double AvanzarZ(CEntorno& e) -{ - avanzo_en_z = true ; - return 0 ; -} - - // void CMiEntorno::inicializar() { @@ -57,13 +35,13 @@ void CMiEntorno::actualizar() int main(int argc, char** argv) { // - CMiEntorno e ; + CMiEntorno e ; CSistemaAutonomo a ; e.inicializar() ; // Inicializo las teorias - CTeoria t1("Avanzar_X_1", &AvanzarX, 1, 1) ; + CTeoria t1("Avanzar_X_1", "AvanzarX", 1, 1) ; t1.datos_iniciales.add ("robot.sensor_1", 0) ; t1.datos_iniciales.add ("robot.sensor_2", ANY) ; t1.datos_iniciales.add ("robot.sensor_3", ANY) ; @@ -71,13 +49,13 @@ int main(int argc, char** argv) t1.datos_iniciales.add ("robot.avanzo_en_y", ANY) ; t1.datos_iniciales.add ("robot.avanzo_en_z", ANY) ; t1.datos_finales.add ("robot.avanzo_en_x", 1) ; - t1.datos_finales.add ("robot.avanzo_en_y", 0) ; - t1.datos_finales.add ("robot.avanzo_en_z", 0) ; + t1.datos_finales.add ("robot.avanzo_en_y", ANY) ; + t1.datos_finales.add ("robot.avanzo_en_z", ANY) ; t1.datos_finales.add ("robot.sensor_1", ANY) ; t1.datos_finales.add ("robot.sensor_2", ANY) ; t1.datos_finales.add ("robot.sensor_3", ANY) ; - CTeoria t2("Avanzar_Y_1", &AvanzarY, 1, 1) ; + CTeoria t2("Avanzar_Y_1", "AvanzarY", 1, 1) ; t2.datos_iniciales.add ("robot.sensor_1", ANY) ; t2.datos_iniciales.add ("robot.sensor_2", 0) ; t2.datos_iniciales.add ("robot.sensor_3", ANY) ; @@ -91,7 +69,7 @@ int main(int argc, char** argv) t2.datos_finales.add ("robot.sensor_2", ANY) ; t2.datos_finales.add ("robot.sensor_3", ANY) ; - CTeoria t3("Avanzar_Z_1", &AvanzarZ, 1, 1) ; + CTeoria t3("Avanzar_Z_1", "AvanzarZ", 1, 1) ; t3.datos_iniciales.add ("robot.sensor_1", ANY) ; t3.datos_iniciales.add ("robot.sensor_2", ANY) ; t3.datos_iniciales.add ("robot.sensor_3", 0) ; @@ -119,7 +97,7 @@ int main(int argc, char** argv) CIndiceMagico plan ; CIndiceMagico datos_finales ; - datos_finales.add ("robot.avanzo_en_y", 1) ; + datos_finales.add ("robot.avanzo_en_x", 1) ; a.planificar (a.p_entorno->datos, datos_finales, plan, p) ; @@ -128,7 +106,7 @@ int main(int argc, char** argv) // Ejecuto el plan - a.ejecutar(plan) ; +// a.ejecutar(plan) ; return 0 ; diff --git a/trunk/src/plugin.cpp b/trunk/src/plugin.cpp index c91f570..a1098e6 100644 --- a/trunk/src/plugin.cpp +++ b/trunk/src/plugin.cpp @@ -4,15 +4,12 @@ /////////////////////////// CTeoria ///////////////////////// -double NoOp(CEntorno&) { return 0.0; } // FIXME (hack horrible porque no puedo usar ptr a fun) - // pointer{Teoria} TeoriaNew(string, string, int, int) int SAbrTeoriaNew(brEval args[], brEval* result, void* data) { result->set(new CTeoria( BRSTRING(args), - NoOp, // FIXME (no hay puntero a funcion, poner BRINT(args+1)) - //BRSTRING(args+1), + BRSTRING(args+1), BRINT(args+2), BRINT(args+3))); return EC_OK; @@ -85,29 +82,43 @@ int SAbrSistemaAutonomoSetValue(brEval args[], brEval* result, void* data) return EC_OK; } +// void SistemaAutonomoSetDatoFinal(pointer{SistemaAutonomo}, string, float) +int SAbrSistemaAutonomoSetDatoFinal(brEval args[], brEval* result, void* data) +{ + CSistemaAutonomo* sa = (CSistemaAutonomo*) BRPOINTER(args); + sa->m_datos_finales.set_val(BRSTRING(args+1), BRDOUBLE(args+2)); + return EC_OK; +} + // void SistemaAutonomoPlan(pointer{SistemaAutonomo}) int SAbrSistemaAutonomoPlan(brEval args[], brEval* result, void* data) { - // TODO CSistemaAutonomo* sa = (CSistemaAutonomo*) BRPOINTER(args); - // TODO sa->plan(); + CSistemaAutonomo* sa = (CSistemaAutonomo*) BRPOINTER(args); + sa->plan(); return EC_OK; } -// pointer SistemaAutonomoGetNextTheory(pointer{SistemaAutonomo}) +// bool SistemaAutonomoHasNextTheory(pointer{SistemaAutonomo}) +int SAbrSistemaAutonomoHasNextTheory(brEval args[], brEval* result, void* data) +{ + CSistemaAutonomo* sa = (CSistemaAutonomo*) BRPOINTER(args); + result->set(sa->has_next_theory()); + return EC_OK; +} + +// pointer{Teoria} SistemaAutonomoGetNextTheory(pointer{SistemaAutonomo}) int SAbrSistemaAutonomoGetNextTheory(brEval args[], brEval* result, void* data) { - // TODO CSistemaAutonomo* sa = (CSistemaAutonomo*) BRPOINTER(args); - // TODO result->set(sa->get_next_theory()); - result->set(new CTeoria("test", NoOp, 1, 1)); // FIXME + CSistemaAutonomo* sa = (CSistemaAutonomo*) BRPOINTER(args); + result->set(sa->get_next_theory()); return EC_OK; } // bool SistemaAutonomoValidateTheory(pointer{SistemaAutonomo}, pointer{Teoria}) int SAbrSistemaAutonomoValidateTheory(brEval args[], brEval* result, void* data) { - // TODO CSistemaAutonomo* sa = (CSistemaAutonomo*) BRPOINTER(args); - // TODO result->set(sa->validate_theory((CTeoria*) BRPOINTER(args+1))); - result->set(true); // FIXME + CSistemaAutonomo* sa = (CSistemaAutonomo*) BRPOINTER(args); + result->set(sa->validate_theory((CTeoria*) BRPOINTER(args+1))); return EC_OK; } @@ -139,8 +150,12 @@ DLLEXPORT void SAbrFunctions(void *data) AT_NULL, AT_POINTER, AT_POINTER, 0); brNewBreveCall(data, "SistemaAutonomoSetValue", SAbrSistemaAutonomoSetValue, AT_NULL, AT_POINTER, AT_STRING, AT_DOUBLE, 0); + brNewBreveCall(data, "SistemaAutonomoSetDatoFinal", SAbrSistemaAutonomoSetDatoFinal, + AT_NULL, AT_POINTER, AT_STRING, AT_DOUBLE, 0); brNewBreveCall(data, "SistemaAutonomoPlan", SAbrSistemaAutonomoPlan, AT_NULL, AT_POINTER, 0); + brNewBreveCall(data, "SistemaAutonomoHasNextTheory", SAbrSistemaAutonomoHasNextTheory, + AT_INT, AT_POINTER, 0); brNewBreveCall(data, "SistemaAutonomoGetNextTheory", SAbrSistemaAutonomoGetNextTheory, AT_POINTER, AT_POINTER, 0); brNewBreveCall(data, "SistemaAutonomoValidateTheory", SAbrSistemaAutonomoValidateTheory, diff --git a/trunk/src/sistemaautonomo.cpp b/trunk/src/sistemaautonomo.cpp index 2b988f0..48e458c 100644 --- a/trunk/src/sistemaautonomo.cpp +++ b/trunk/src/sistemaautonomo.cpp @@ -20,6 +20,65 @@ bool incluye_a (CIndiceMagico& a, CIndiceMagico& b) return result ; } +//-------------------------------------------------------------------------------------------- +//-- +void CSistemaAutonomo::plan() +{ + double p = 1.0; + m_plan.clear(); + planificar(p_entorno->datos, m_datos_finales, m_plan, p); + curr_theory = m_plan.begin(); +} + +//-------------------------------------------------------------------------------------------- +//-- +#include // XXX FIXME +bool CSistemaAutonomo::has_next_theory() +{ + return curr_theory != m_plan.end(); +} + +//-------------------------------------------------------------------------------------------- +//-- +CTeoria* CSistemaAutonomo::get_next_theory() +{ + if (curr_theory == m_plan.end()) + { + m_datos_finales.clear(); + return 0; + } + else + { + return curr_theory++; + } +} + +//-------------------------------------------------------------------------------------------- +//-- +bool CSistemaAutonomo::validate_theory(CTeoria* t) +{ + bool result ; + + result = verificar_condicion(t->datos_finales) ; + + + // Si fallo la teoria + if (!result) + { + // Aplico heuristicas de correccion + this->heurisitca_retraccion(*t) ; + } + else + { + t->p++ ; + } + + // Aplico heuristicas de observacion + this->heurisitca_observacion(*t) ; + this->heurisitca_generalizacion(*t); + + return result; +} //-------------------------------------------------------------------------------------------- @@ -183,7 +242,7 @@ void CSistemaAutonomo::planificar ( CIndiceMagico& datos_iniciales, } - +/* //-------------------------------------------------------------------------------------------- //-- bool CSistemaAutonomo::ejecutar (CIndiceMagico& plan) @@ -230,3 +289,4 @@ bool CSistemaAutonomo::ejecutar (CIndiceMagico& plan) // return result ; } +*/ diff --git a/trunk/src/sistemaautonomo.h b/trunk/src/sistemaautonomo.h index ce08cfa..91db5e2 100644 --- a/trunk/src/sistemaautonomo.h +++ b/trunk/src/sistemaautonomo.h @@ -30,7 +30,7 @@ typedef double t_dato ; #define ANY -3000000 -#define t_fnc(name) double (*name)(CEntorno&) +//#define t_fnc(name) double (*name)(CEntorno&) #define INFINITO 9999999 //CORREGIR: Poner aca el numero maximo que puede tomar un unsigend long @@ -44,7 +44,7 @@ typedef double t_dato ; // Precision en la comparacion de atributos. // Poner en 0 si se quiere hacer la comparacion exacta. -#define PRECISION 0.50000 +#define PRECISION 0.150000 // Cuando se ejecuta un plan, se espera que al termina el ultimo paso se hallan alcanzado las condiciones finales. // Es posible que las condiciones finales se alcancen en algun paso previo. @@ -97,7 +97,7 @@ public: CIndiceMagico datos_iniciales ; // La funcion que se debe ejecutar para hacer valer la teoria. - double (*funcion)(CEntorno& e) ; + std::string funcion ; // TODO std::string accion; Debería ser el nombre de la acción que va a realizar el BREVE // Condiciones finales que deben cumplirsem luego de ejecutar la funcion final valiendo la condicion inicial @@ -107,13 +107,13 @@ public: CTeoria() { nombre = "" ; - funcion = NULL ; + funcion = "" ; k = 1 ; p = 1 ; } CTeoria(const char* ini_nombre, - double (*ini_funcion)(CEntorno& e), + const char* ini_funcion, unsigned long ini_k, unsigned long ini_p) { @@ -166,7 +166,10 @@ class CSistemaAutonomo { public: // El entono en el que se mueve el SA. - CEntorno* p_entorno ; + CEntorno* p_entorno ; + + // Datos finales a utilizar al hacer + CIndiceMagico m_datos_finales; // Las teorias que tiene el SA. CIndiceMagico teorias ; @@ -178,9 +181,27 @@ public: // Destructor ~CSistemaAutonomo() { delete p_entorno; } + // Genera un nuevo plan + void plan(); + + // Indica si hay una teoria mas para ejecutar + bool has_next_theory(); + + // Obtiene la próxima teoría del plan actual + CTeoria* get_next_theory(); + + // Retorna true si los valores de la condicion coinciden con los valores del entorno. + bool validate_theory(CTeoria*) ; + +protected: // Retorna true si los valores de la condicion coinciden con los valores del entorno. bool verificar_condicion(CIndiceMagico& datos) ; + // plan actual + CIndiceMagico m_plan; + + // teoria actual + CIndiceMagico::iterator curr_theory; protected: @@ -199,18 +220,16 @@ protected: public: - void planificar ( CIndiceMagico& datos_iniciales, - CIndiceMagico& datos_finales, - CIndiceMagico& plan, - double& p, - unsigned long numero_de_llamada=0) ; + void planificar (CIndiceMagico& datos_iniciales, + CIndiceMagico& datos_finales, + CIndiceMagico& plan, + double& p, + unsigned long numero_de_llamada=0) ; // Ejecuta una serie de pasos. // Retorna true si se alcanza la condicion final. - bool ejecutar (CIndiceMagico& plan) ; - - +// bool ejecutar (CIndiceMagico& plan) ; } ; -- 2.43.0