// 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.
// 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
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 ;
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();
// 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: