]> git.llucax.com Git - z.facultad/75.68/celdas.git/commitdiff
Se agregan la máxima cantidad de pasos al planificar y la máxima cantidad de teorías...
authorLeandro Lucarella <llucax@gmail.com>
Sun, 17 Dec 2006 23:38:30 +0000 (23:38 +0000)
committerLeandro Lucarella <llucax@gmail.com>
Sun, 17 Dec 2006 23:38:30 +0000 (23:38 +0000)
trunk/src/breve/Celdas.tz
trunk/src/breve/SistemaAutonomo.tz
trunk/src/breve/SistemaAutonomoDemo.tz
trunk/src/plugin.cpp
trunk/src/sistemaautonomo.cpp
trunk/src/sistemaautonomo.h

index 7c1afdc5d79b018d6edb469e9e8104d3b3dd3fb6..6ed43f40714beba737928c83e6fdf1d7bf4edf9b 100644 (file)
@@ -7,7 +7,7 @@
 @use SistemaAutonomo.\r
 \r
 @define CELDAS_MAX_VELOCITY 30.\r
-@define CELDAS_TURNO 100.\r
+@define CELDAS_TURNO 80.\r
 @define CELDAS_SENSOR_THRESHOLD 9.\r
 \r
 PhysicalControl : CeldasControl {\r
@@ -255,6 +255,7 @@ CeldasLightVehicle : CeldasVehicle (aka CeldasVehicles) {
 \r
                # Configuracion de sistema autonomo\r
                sa = new SistemaAutonomo.\r
+               sa init with-max-pasos 4 with-max-teorias 15.\r
                iterate = 0.\r
                plan_finished = 1. # así planificamos apenas empezamos\r
 \r
index 3bcf5c11da3d77103f89c0140f0679115c7953cf..e2fd6b8e1f944ab70d4335d8445cfba475735269 100644 (file)
@@ -37,8 +37,8 @@ Object : SistemaAutonomo {
        + variables:\r
                ptr (pointer).\r
 \r
-       + to init:\r
-               ptr = SistemaAutonomoNew().     \r
+       + to init with-max-pasos max-pasos = 4 (int) with-max-teorias max-teorias = 15 (int):\r
+               ptr = SistemaAutonomoNew(max-pasos, max-teorias).\r
                \r
        + to add teoria theTeoria (object):\r
                SistemaAutonomoAddTeoria(ptr, (theTeoria get-ptr)).\r
index aff71cd9ddb11b3c255b4e1d7354c59db308f874..9a79373bc9eebd1f14685ed6640678f9ee664fe9 100644 (file)
@@ -14,6 +14,7 @@ Control : SistemaAutonomoController {
 
                print "Crea Sistema autonomo".
                sa = new SistemaAutonomo.
+               sa init with-max-pasos 4 with-max-teorias 15.
 
                print "Llena entorno".
                entorno{"sensor1"} = 0.
index 52e1404a4c17231fa4fbba8dc04300b03d366849..9571aa29a1aa05cc907335bee410a48a16112b95 100644 (file)
@@ -53,10 +53,10 @@ int SAbrTeoriaGetAccion(brEval args[], brEval* result, void* data)
 \r
 /////////////////////////// CSistemaAutonomo /////////////////////////\r
 \r
-// pointer{SistemaAutonomo} SistemaAutonomoNew()\r
+// pointer{SistemaAutonomo} SistemaAutonomoNew(int, int)\r
 int SAbrSistemaAutonomoNew(brEval args[], brEval* result, void* data)\r
 {\r
-       result->set(new CSistemaAutonomo());\r
+       result->set(new CSistemaAutonomo(BRINT(args), BRINT(args+1)));\r
        return EC_OK;\r
 }\r
 \r
@@ -143,7 +143,7 @@ DLLEXPORT void SAbrFunctions(void *data)
        brNewBreveCall(data, "TeoriaGetAccion", SAbrTeoriaGetAccion,\r
                       AT_STRING, AT_POINTER, 0);\r
        brNewBreveCall(data, "SistemaAutonomoNew", SAbrSistemaAutonomoNew,\r
-                      AT_POINTER, 0);\r
+                      AT_POINTER, AT_INT, AT_INT, 0);\r
        brNewBreveCall(data, "SistemaAutonomoAddTeoria", SAbrSistemaAutonomoAddTeoria,\r
                       AT_NULL, AT_POINTER, AT_POINTER, 0);\r
        brNewBreveCall(data, "SistemaAutonomoSetValue", SAbrSistemaAutonomoSetValue,\r
index bb04b5bbfc772478818001ba8db30f231b5c255b..54b13cc2c2a4c8f2a6bb5715b7bf3f7a30c55dc2 100644 (file)
@@ -31,7 +31,7 @@ void CSistemaAutonomo::plan()
 {
        double p = 1.0;
        m_plan.clear();
-       if (teorias.count() > TEORIAS_MAX) purgar_teorias();
+       if (teorias.count() > max_teorias) purgar_teorias();
 #ifdef DEBUG
        std::cout << "SA: Planificando...\n";
        std::cout << "SA: \tentorno:\n" << p_entorno->datos << "\n";
@@ -272,7 +272,7 @@ void CSistemaAutonomo::planificar (CIndiceMagico<t_dato>&   datos_iniciales,
 
        if ( incluye_a(datos_iniciales, datos_finales) ) return ;
 
-       if ( numero_de_llamada > PASOS_MAXIMOS_DE_PLAN ) return ;
+       if (numero_de_llamada > max_pasos) return ;
 
        for (i = 0; i < teorias.count(); i++)
                if ( incluye_a(teorias[i]->datos_iniciales, datos_iniciales) )
@@ -315,6 +315,6 @@ void CSistemaAutonomo::purgar_teorias()
 #ifdef DEBUG
        std::cout << "SA: Se purgo la teoria " << *teorias[pos] << "\n";
 #endif // DEBUG
-       if (size - 1 > TEORIAS_MAX) purgar_teorias();
+       if (size - 1 > max_teorias) purgar_teorias();
 }
 
index 819db8a3813d9a4214e4c5ba6df72b3d42682ff9..91efc991adf91d64068245a7f2909d9cb3b29a09 100644 (file)
@@ -54,11 +54,6 @@ typedef double t_dato ;
 
 // [Planificador]
 
-// Cantidad maxima de pasos que puede tener un plan.
-// Cuanto mas grande sea este numero, mas ciclos puede tardar el proceso de planificacion.
-// Este valor es un compromiso entre performance y eficiencia.
-#define PASOS_MAXIMOS_DE_PLAN          4
-
 // El metodo de planificacion puede encontrar varios planes, y de ellos elige el mejor.
 // Si se hace seleccionar TODOS los posibles planes, puede tardar demasiado.
 // Una opcion es determinar una cantidad maxima de posibles planes que se pueden testear.
@@ -66,11 +61,6 @@ typedef double t_dato ;
 // Poner INFINITO si se desea deshabilitar esta opcion.
 #define PLANES_MAXIMOS_TESTEADOS       10
 
-// Cantidad máxima de teorías que puede tener el planificador. Al haber muchas teorías el
-// tarda demasiado tiempo en planificar, por lo tanto es necesario sacar algunas teorías
-// para que sea utilizable.
-#define TEORIAS_MAX                    20
-
 // Es la minima relacion P/K que puede tener una teoria para considerarse como aceptable.
 #define TOLERANCIA                                     0.75
 
@@ -188,9 +178,22 @@ public:
        // Las teorias que tiene el SA.
        CIndiceMagico<CTeoria*>         teorias ;
 
+       // Cantidad maxima de pasos que puede tener un plan.
+       // Cuanto mas grande sea este numero, mas ciclos puede tardar el proceso de planificacion.
+       // Este valor es un compromiso entre performance y eficiencia.
+       unsigned max_pasos;
+
+       // Cantidad máxima de teorías que puede tener el planificador. Al haber muchas teorías el
+       // tarda demasiado tiempo en planificar, por lo tanto es necesario sacar algunas teorías
+       // para que sea utilizable. El valor en realidad no es la cantidad máxima, pueden haber
+       // más, pero en cada nueva planificación se seleccionan las mejores max_teorias teorias.
+       unsigned max_teorias;
+
 public:
        // Constructor
-       CSistemaAutonomo(): p_entorno(new CEntorno) {}
+       CSistemaAutonomo(unsigned max_pasos = 4, unsigned max_teorias = 15):
+               p_entorno(new CEntorno), max_pasos(max_pasos),
+               max_teorias(max_teorias) {}
 
        // Destructor
        ~CSistemaAutonomo()