]> git.llucax.com Git - z.facultad/75.68/celdas.git/commitdiff
Agrega un modo de salida intentando que sea más fácil generar tablas con la evolución...
authorLeandro Lucarella <llucax@gmail.com>
Mon, 18 Dec 2006 18:30:47 +0000 (18:30 +0000)
committerLeandro Lucarella <llucax@gmail.com>
Mon, 18 Dec 2006 18:30:47 +0000 (18:30 +0000)
trunk/src/Makefile
trunk/src/indicemagico.h
trunk/src/plugin.cpp
trunk/src/sistemaautonomo.cpp
trunk/src/sistemaautonomo.h

index 36eb48f81a23030c1e3c0fae1d232c51ede4307a..87696de3bbc61262de7c432bd7326306e5bfb7f3 100644 (file)
@@ -1,7 +1,9 @@
 \r
 BREVEDIR=../../breve_2.4/plugins\r
 # DEBUG\r
 \r
 BREVEDIR=../../breve_2.4/plugins\r
 # DEBUG\r
-CXXFLAGS=-Wall -g -I$(BREVEDIR) -DDEBUG\r
+#CXXFLAGS=-Wall -g -I$(BREVEDIR) -DDEBUG\r
+# LOG de teorias\r
+CXXFLAGS=-Wall -O2 -I$(BREVEDIR) -DLOG\r
 # OPTIMIZE\r
 #CXXFLAGS=-Wall -O2 -I$(BREVEDIR) -DNDEBUG\r
 \r
 # OPTIMIZE\r
 #CXXFLAGS=-Wall -O2 -I$(BREVEDIR) -DNDEBUG\r
 \r
index 01dae6d734429c0b14be51c81c72b74ee0e28f63..9ad336e62dc778bf41da49109f8775624539f8cd 100644 (file)
@@ -114,23 +114,41 @@ public:
 };
 
 template < typename T >
 };
 
 template < typename T >
+inline
 std::ostream& operator<< (std::ostream& os, CIndiceMagico<T>& im)
 {
        unsigned c = im.count();
 std::ostream& operator<< (std::ostream& os, CIndiceMagico<T>& 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;
        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 >
 }
 
 template < typename T >
+inline
 std::ostream& operator<< (std::ostream& os, CIndiceMagico<T*>& im)
 {
        unsigned c = im.count();
 std::ostream& operator<< (std::ostream& os, CIndiceMagico<T*>& 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;
        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
 }
 
 #endif
index 9571aa29a1aa05cc907335bee410a48a16112b95..cea797554d1105500b2c7db46b7fe873379abe27 100644 (file)
@@ -67,10 +67,13 @@ int SAbrSistemaAutonomoAddTeoria(brEval args[], brEval* result, void* data)
        CTeoria* t = (CTeoria*) BRPOINTER(args+1);\r
        sa->teorias.add(t->nombre, t);\r
 #ifdef DEBUG\r
        CTeoria* t = (CTeoria*) BRPOINTER(args+1);\r
        sa->teorias.add(t->nombre, t);\r
 #ifdef DEBUG\r
-       std::cout << "Agrega teoria " << t->nombre << ":\n";\r
-       std::cout << "  .datos_iniciales:\n" << t->datos_iniciales << "\n";\r
-       std::cout << "  .datos_finales:\n" << t->datos_finales << "\n";\r
+       std::cout << "Agrega teoria " << *t << ":\n";\r
+       std::cout << "\tdatos_iniciales:\n" << t->datos_iniciales << "\n";\r
+       std::cout << "\tdatos_finales:\n" << t->datos_finales << "\n";\r
 #endif // DEBUG\r
 #endif // DEBUG\r
+#ifdef LOG\r
+       std::cout << "Agrega teoria: " << *t << "," << t->datos_iniciales << "," << t->datos_finales << "\n";\r
+#endif // LOG\r
        return EC_OK;\r
 }\r
 \r
        return EC_OK;\r
 }\r
 \r
index 2c85e518eb2bc21b82100a8f4a4f319a4ee03c30..cf9eb045d9c8ac57382003f59234efb7e41246ed 100644 (file)
@@ -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: 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
 #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
        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())
        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 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++);
        }
 }
                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
 
        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) ;
 
        // 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
                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
                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
                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
                // 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;
 }
 
        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
        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
                                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;
                        }
                }
                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
                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 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();
 }
 
        if (size - 1 > max_teorias) purgar_teorias();
 }
 
index 91efc991adf91d64068245a7f2909d9cb3b29a09..2a85b5c56d42df307c6c61f143d47a6106d31bd5 100644 (file)
@@ -136,10 +136,24 @@ public:
 inline
 std::ostream& operator<< (std::ostream& os, const CTeoria& t)
 {
 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
        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<CTeoria*>& 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;
 }
 
 
 }