]> git.llucax.com Git - z.facultad/75.68/celdas.git/blobdiff - trunk/src/sistemaautonomo.h
Se cambia de lugar la purgación de teorías porque podía pasar que se purge una teoria...
[z.facultad/75.68/celdas.git] / trunk / src / sistemaautonomo.h
index a7debcda606e70ada033f97fe116b5c815c48359..819db8a3813d9a4214e4c5ba6df72b3d42682ff9 100644 (file)
@@ -57,7 +57,7 @@ typedef double t_dato ;
 // 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.
 // 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          20
+#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.
 
 // 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.
@@ -66,6 +66,11 @@ typedef double t_dato ;
 // Poner INFINITO si se desea deshabilitar esta opcion.
 #define PLANES_MAXIMOS_TESTEADOS       10
 
 // 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
 
 // Es la minima relacion P/K que puede tener una teoria para considerarse como aceptable.
 #define TOLERANCIA                                     0.75
 
@@ -125,30 +130,6 @@ public:
                p = ini_p ;
        }
 
                p = ini_p ;
        }
 
-//private:
-       CTeoria(const CTeoria& t):
-               nombre(t.nombre),
-               datos_iniciales(t.datos_iniciales),
-               funcion(t.funcion),
-               datos_finales(t.datos_finales),
-               k(t.k),
-               p(t.p)
-       {
-               std::cout << "-----> CTeoria::operator=(" << t << ") <-----\n";
-       }
-       CTeoria& operator= (const CTeoria& t)
-       {
-               std::cout << "-----> " << *this << "::operator=(" << t << ") <-----\n";
-               nombre = t.nombre;
-               funcion = t.funcion;
-               k = t.k;
-               p = t.p;
-               datos_iniciales = t.datos_iniciales;
-               datos_finales = t.datos_finales;
-               return *this;
-       }
-
-
 public:        
        // Cantidad de veces que se probo la teoria.
        unsigned long                   k ;
 public:        
        // Cantidad de veces que se probo la teoria.
        unsigned long                   k ;
@@ -212,7 +193,12 @@ public:
        CSistemaAutonomo(): p_entorno(new CEntorno) {}
 
        // Destructor
        CSistemaAutonomo(): p_entorno(new CEntorno) {}
 
        // Destructor
-       ~CSistemaAutonomo() { delete p_entorno; }
+       ~CSistemaAutonomo()
+       {
+               delete p_entorno;
+               for (unsigned i = 0; i < teorias.count(); ++i)
+                       delete teorias[i];
+       }
 
        // Genera un nuevo plan
        void plan();
 
        // Genera un nuevo plan
        void plan();
@@ -250,6 +236,9 @@ protected:
        // Si dentro de las teorias se encuentra unaque solo difiera de los datos del entorno en una condicíon inicial => se agrega una nueva teoria igual pero con ANY en esa condicion.
        void heuristca_generalizacion(CTeoria&);
 
        // Si dentro de las teorias se encuentra unaque solo difiera de los datos del entorno en una condicíon inicial => se agrega una nueva teoria igual pero con ANY en esa condicion.
        void heuristca_generalizacion(CTeoria&);
 
+       // Purga las teorias que no son muy exitosas.
+       void purgar_teorias();
+
 public:
 
        
 public: