X-Git-Url: https://git.llucax.com/z.facultad/75.68/celdas.git/blobdiff_plain/02829c0a943fc03f7b6c85d18d2d210395f05086..651df9d4bd2ec484ec71c80d7dd2165d7cf4290e:/trunk/src/sistemaautonomo.h diff --git a/trunk/src/sistemaautonomo.h b/trunk/src/sistemaautonomo.h index dd82f82..a7debcd 100644 --- a/trunk/src/sistemaautonomo.h +++ b/trunk/src/sistemaautonomo.h @@ -5,7 +5,7 @@ #include "indicemagico.h" #include #include -//#include +#include // DEFINICIONES: @@ -83,13 +83,15 @@ bool incluye_a (CIndiceMagico&, CIndiceMagico&) ; +class CTeoria; +std::ostream& operator<< (std::ostream& os, const CTeoria& t); // CTeoria class CTeoria { public: - std::string nombre ; + std::string nombre ; // Condiciones iniciales de la teoria. // Cada condicion se representa como un par (clave, valor), que se leen como clave=valor +/- PRECISION. @@ -123,6 +125,29 @@ 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. @@ -138,9 +163,12 @@ public: } ; inline -std::ostream& operator<< (std::ostream& os, CTeoria& t) +std::ostream& operator<< (std::ostream& os, const CTeoria& t) { - return os << t.nombre << " > " << t.funcion; + 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"; } @@ -177,7 +205,7 @@ public: CIndiceMagico m_datos_finales; // Las teorias que tiene el SA. - CIndiceMagico teorias ; + CIndiceMagico teorias ; public: // Constructor @@ -203,31 +231,31 @@ public: bool verificar_condicion(CIndiceMagico& datos) ; // plan actual - CIndiceMagico m_plan; + CIndiceMagico m_plan; // teoria actual - CIndiceMagico::iterator curr_theory; + CIndiceMagico::iterator curr_theory; protected: // Heuristica de observacion. // Segun la teoria que se ejecuto, se crea una nueva teoria con TODOS/ALGUNOS valores actuales del entorno como condicion_final. - void heurisitca_observacion(CTeoria&) ; + void heuristca_observacion(CTeoria&) ; // Heuristica de correccion por retraccion. // Si una teoria no se verifico como correcta, se crea una nueva quitandole las condiciones_finales que no se verifican. - void heurisitca_retraccion(CTeoria&) ; + void heuristca_retraccion(CTeoria&) ; //Heuristica de generalizacion. // 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 heurisitca_generalizacion(CTeoria&); + void heuristca_generalizacion(CTeoria&); public: void planificar (CIndiceMagico& datos_iniciales, CIndiceMagico& datos_finales, - CIndiceMagico& plan, + CIndiceMagico& plan, double& p, unsigned long numero_de_llamada=0) ;