From 3de9a6adae2fe5a00ec315ba34f08f6d91a5b265 Mon Sep 17 00:00:00 2001 From: Leandro Lucarella Date: Mon, 18 Dec 2006 18:30:47 +0000 Subject: [PATCH] =?utf8?q?Agrega=20un=20modo=20de=20salida=20intentando=20?= =?utf8?q?que=20sea=20m=C3=A1s=20f=C3=A1cil=20generar=20tablas=20con=20la?= =?utf8?q?=20evoluci=C3=B3n=20del=20planificador=20para=20el=20informe.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- trunk/src/Makefile | 4 +++- trunk/src/indicemagico.h | 18 ++++++++++++++ trunk/src/plugin.cpp | 9 ++++--- trunk/src/sistemaautonomo.cpp | 44 ++++++++++++++++++++++++++++++++++- trunk/src/sistemaautonomo.h | 20 +++++++++++++--- 5 files changed, 87 insertions(+), 8 deletions(-) diff --git a/trunk/src/Makefile b/trunk/src/Makefile index 36eb48f..87696de 100644 --- a/trunk/src/Makefile +++ b/trunk/src/Makefile @@ -1,7 +1,9 @@ BREVEDIR=../../breve_2.4/plugins # DEBUG -CXXFLAGS=-Wall -g -I$(BREVEDIR) -DDEBUG +#CXXFLAGS=-Wall -g -I$(BREVEDIR) -DDEBUG +# LOG de teorias +CXXFLAGS=-Wall -O2 -I$(BREVEDIR) -DLOG # OPTIMIZE #CXXFLAGS=-Wall -O2 -I$(BREVEDIR) -DNDEBUG diff --git a/trunk/src/indicemagico.h b/trunk/src/indicemagico.h index 01dae6d..9ad336e 100644 --- a/trunk/src/indicemagico.h +++ b/trunk/src/indicemagico.h @@ -114,23 +114,41 @@ public: }; template < typename T > +inline std::ostream& operator<< (std::ostream& os, CIndiceMagico& im) { unsigned c = im.count(); +#ifdef LOG + if (c-- == 0) return os << ""; + for (unsigned i = 0; i < c; ++i) + os << im[i] << ","; + os << im[c]; + return os; +#else // ! LOG if (c == 0) return os << "\t\tvacío\n"; for (unsigned i = 0; i < c; ++i) os << "\t\t" << im.keys(i) << ":\t" << im[i] << "\n"; return os; +#endif // LOG } template < typename T > +inline std::ostream& operator<< (std::ostream& os, CIndiceMagico& im) { unsigned c = im.count(); +#ifdef LOG + if (c-- == 0) return os << ""; + for (unsigned i = 0; i < c; ++i) + os << *im[i] << ","; + os << *im[c]; + return os; +#else // ! LOG if (c == 0) return os << "\t\tvacío\n"; for (unsigned i = 0; i < c; ++i) os << "\t\t" << im.keys(i) << ":\t" << *im[i] << "\n"; return os; +#endif // LOG } #endif diff --git a/trunk/src/plugin.cpp b/trunk/src/plugin.cpp index 9571aa2..cea7975 100644 --- a/trunk/src/plugin.cpp +++ b/trunk/src/plugin.cpp @@ -67,10 +67,13 @@ int SAbrSistemaAutonomoAddTeoria(brEval args[], brEval* result, void* data) CTeoria* t = (CTeoria*) BRPOINTER(args+1); sa->teorias.add(t->nombre, t); #ifdef DEBUG - std::cout << "Agrega teoria " << t->nombre << ":\n"; - std::cout << " .datos_iniciales:\n" << t->datos_iniciales << "\n"; - std::cout << " .datos_finales:\n" << t->datos_finales << "\n"; + std::cout << "Agrega teoria " << *t << ":\n"; + std::cout << "\tdatos_iniciales:\n" << t->datos_iniciales << "\n"; + std::cout << "\tdatos_finales:\n" << t->datos_finales << "\n"; #endif // DEBUG +#ifdef LOG + std::cout << "Agrega teoria: " << *t << "," << t->datos_iniciales << "," << t->datos_finales << "\n"; +#endif // LOG return EC_OK; } diff --git a/trunk/src/sistemaautonomo.cpp b/trunk/src/sistemaautonomo.cpp index 2c85e51..cf9eb04 100644 --- a/trunk/src/sistemaautonomo.cpp +++ b/trunk/src/sistemaautonomo.cpp @@ -36,12 +36,19 @@ void CSistemaAutonomo::plan() std::cout << "SA: Planificando...\n"; std::cout << "SA: \tentorno:\n" << p_entorno->datos << "\n"; std::cout << "SA: \tteorias:\n" << teorias << "\n"; - std::cout << "SA: \tdatos finales:\n" << m_datos_finales << "\n"; #endif // DEBUG +#ifdef LOG + std::cout << "Planificando...\n"; + std::cout << "Entorno:\n" << p_entorno->datos << "\n"; + std::cout << "Teorias:\n" << teorias << "\n"; +#endif // LOG planificar(p_entorno->datos, m_datos_finales, m_plan, p); #ifdef DEBUG std::cout << "SA: \tplan:\n" << m_plan << "\n"; #endif // DEBUG +#ifdef LOG + std::cout << "Plan:\n" << m_plan << "\n"; +#endif // LOG curr_theory = m_plan.begin(); #ifdef DEBUG if (curr_theory == m_plan.end()) @@ -72,6 +79,9 @@ CTeoria* CSistemaAutonomo::get_next_theory() #ifdef DEBUG std::cout << "SA: ejecuta teoria: " << **(curr_theory) << "\n"; #endif // DEBUG +#ifdef LOG + std::cout << "Ejecutando teoria:\n" << **(curr_theory) << "\n"; +#endif // LOG return *(curr_theory++); } } @@ -89,6 +99,11 @@ bool CSistemaAutonomo::validate_theory(CTeoria* t) std::cout << "SA: Entorno de verificacion:\n" << p_entorno->datos; #endif // DEBUG +#ifdef LOG + std::cout << "Verificacion...\n"; + std::cout << "Entorno:\n" << p_entorno->datos << "\n"; +#endif // LOG + // Verifico result = verificar_condicion(t->datos_finales) ; @@ -103,20 +118,33 @@ bool CSistemaAutonomo::validate_theory(CTeoria* t) std::cout << "SA: No verifica, aplicando heuristicas...\n"; std::cout << "SA: Aplicando heuristica de observacion\n"; #endif // DEBUG +#ifdef LOG + std::cout << "No verifica, aplicando heuristicas...\n"; + std::cout << "Aplicando heuristica de observacion:\n"; +#endif // LOG this->heuristca_observacion(*t) ; #ifdef DEBUG std::cout << "SA: Aplicando heuristica de generalizacion\n"; #endif // DEBUG +#ifdef LOG + std::cout << "Aplicando heuristica de generalizacion:\n"; +#endif // LOG this->heuristca_generalizacion(*t); #ifdef DEBUG std::cout << "SA: Aplicando heuristica de retraccion\n"; #endif // DEBUG +#ifdef LOG + std::cout << "Aplicando heuristica de retraccion:\n"; +#endif // LOG // Aplico heuristicas de correccion this->heuristca_retraccion(*t) ; } #ifdef DEBUG else std::cout << "SA: Verifica!\n"; #endif // DEBUG +#ifdef LOG + else std::cout << "Verifica!\n"; +#endif // LOG return result; } @@ -166,6 +194,9 @@ void CSistemaAutonomo::heuristca_observacion(CTeoria& t) std::cout << "SA: \tdatos_iniciales:\n" << nt.datos_iniciales << "\n"; std::cout << "SA: \tdatos_finales:\n" << nt.datos_finales << "\n"; #endif // DEBUG +#ifdef LOG + std::cout << "Agrega teoria: " << nt << "," << nt.datos_iniciales << "," << nt.datos_finales << "\n"; +#endif // LOG } @@ -227,6 +258,9 @@ void CSistemaAutonomo::heuristca_generalizacion(CTeoria& t) std::cout << "SA: \tdatos_iniciales:\n" << nt->datos_iniciales << "\n"; std::cout << "SA: \tdatos_finales:\n" << nt->datos_finales << "\n"; #endif // DEBUG +#ifdef LOG + std::cout << "Agrega teoria: " << *nt << "," << nt->datos_iniciales << "," << nt->datos_finales << "\n"; +#endif // LOG } } posicionCambio = -1; @@ -261,6 +295,11 @@ void CSistemaAutonomo::heuristca_retraccion(CTeoria& t) std::cout << "SA: Se modifica la teoria: " << t << ", el dato final '" << t.datos_finales.keys(modif) << "' puede tomar ahora cualquier valor\n"; #endif // DEBUG +#ifdef LOG + std::cout << "Se modifica teoria:\n" << t << "\nEl dato final '" + << t.datos_finales.keys(modif) << "' puede tomar ahora cualquier valor\n"; + std::cout << "Agrega teoria: " << t << "," << t.datos_iniciales << "," << t.datos_finales << "\n"; +#endif // LOG } } @@ -325,6 +364,9 @@ void CSistemaAutonomo::purgar_teorias() #ifdef DEBUG std::cout << "SA: Se purgo la teoria " << *teorias[pos] << "\n"; #endif // DEBUG +#ifdef LOG + std::cout << "Se purgo la teoria:\n" << *teorias[pos] << "\n"; +#endif // LOG if (size - 1 > max_teorias) purgar_teorias(); } diff --git a/trunk/src/sistemaautonomo.h b/trunk/src/sistemaautonomo.h index 91efc99..2a85b5c 100644 --- a/trunk/src/sistemaautonomo.h +++ b/trunk/src/sistemaautonomo.h @@ -136,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; } -- 2.43.0