X-Git-Url: https://git.llucax.com/z.facultad/75.68/celdas.git/blobdiff_plain/a88df59fdcc06b0ff24616e1bf0c8bf58bbca41d..22822a747c21df2f9d99acd8dd2f3f3a9ea54a9a:/trunk/src/sistemaautonomo.h diff --git a/trunk/src/sistemaautonomo.h b/trunk/src/sistemaautonomo.h index 819db8a..2a85b5c 100644 --- a/trunk/src/sistemaautonomo.h +++ b/trunk/src/sistemaautonomo.h @@ -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 @@ -146,10 +136,24 @@ public: inline std::ostream& operator<< (std::ostream& os, const CTeoria& t) { +#ifdef LOG + return os << t.nombre << "," << t.funcion << "," << t.p << "," << t.k; +#else // ! LOG return os << "CTeoria(nombre=" << t.nombre << ", funcion=" << t.funcion - << ", p=" << t.p << ", k=" << t.k << /*", ciclos=" << t.ciclos <<*/ ")"; -// << "):\n\tdatos_iniciales:\n" << t.datos_iniciales -// << "\tdatos_finales:\n" << t.datos_finales << "\n"; + << ", p=" << t.p << ", k=" << t.k << ")"; +#endif // LOG +} + +template < > +inline +std::ostream& operator<< (std::ostream& os, CIndiceMagico& im) +{ + unsigned c = im.count(); + if (c-- == 0) return os << ""; + for (unsigned i = 0; i < c; ++i) + os << *im[i] << "\n"; + os << *im[c]; + return os; } @@ -188,9 +192,22 @@ public: // Las teorias que tiene el SA. CIndiceMagico 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()