X-Git-Url: https://git.llucax.com/z.facultad/75.68/celdas.git/blobdiff_plain/651df9d4bd2ec484ec71c80d7dd2165d7cf4290e..9d2694b6708c33f0eeb0537032687872e0056e4b:/trunk/src/sistemaautonomo.h?ds=sidebyside diff --git a/trunk/src/sistemaautonomo.h b/trunk/src/sistemaautonomo.h index a7debcd..819db8a 100644 --- a/trunk/src/sistemaautonomo.h +++ b/trunk/src/sistemaautonomo.h @@ -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. -#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. @@ -66,6 +66,11 @@ 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 @@ -125,30 +130,6 @@ public: 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 ; @@ -212,7 +193,12 @@ public: 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(); @@ -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&); + // Purga las teorias que no son muy exitosas. + void purgar_teorias(); + public: