]> git.llucax.com Git - z.facultad/75.68/celdas.git/blobdiff - trunk/src/sistemaautonomo.cpp
Mejora debug para IndiceMagico (agregando especialización de template para punteros).
[z.facultad/75.68/celdas.git] / trunk / src / sistemaautonomo.cpp
index 73394ea48f964180cce0494dd8e0c003cf879761..2eeb8dd64b5905ce9984e5a67909d729dd8ce9e1 100644 (file)
@@ -1,6 +1,10 @@
 
 #include "sistemaautonomo.h"
 
+#ifdef DEBUG
+#include <iostream>
+#endif // DEBUG
+
 
 //--------------------------------------------------------------------------------------------
 //-- Funciones Auxiliares
@@ -20,6 +24,77 @@ bool incluye_a (CIndiceMagico<t_dato>& a, CIndiceMagico<t_dato>& b)
        return result ;
 }
 
+//--------------------------------------------------------------------------------------------
+//--
+void CSistemaAutonomo::plan()
+{
+       double p = 1.0;
+       m_plan.clear();
+#ifdef DEBUG
+       std::cout << "entorno:\n" << p_entorno->datos << "\n";
+       std::cout << "datos finales:\n" << m_datos_finales << "\n";
+#endif // DEBUG
+       planificar(p_entorno->datos, m_datos_finales, m_plan, p);
+#ifdef DEBUG
+       std::cout << "plan:\n" << m_plan << "\n";
+#endif // DEBUG
+       curr_theory = m_plan.begin();
+#ifdef DEBUG
+       if (curr_theory == m_plan.end())
+               std::cout << "No hay teorías\n";
+       else
+               std::cout << "curr teoria: " << &*curr_theory << "=" << curr_theory->nombre << "\n";
+#endif // DEBUG
+}
+
+//--------------------------------------------------------------------------------------------
+//--
+bool CSistemaAutonomo::has_next_theory()
+{
+       return curr_theory != m_plan.end();
+}
+
+//--------------------------------------------------------------------------------------------
+//--
+CTeoria* CSistemaAutonomo::get_next_theory()
+{
+       if (curr_theory == m_plan.end())
+       {
+               m_datos_finales.clear();
+               return 0;
+       }
+       else
+       {
+               return &*(curr_theory++);
+       }
+}
+
+//--------------------------------------------------------------------------------------------
+//--
+bool CSistemaAutonomo::validate_theory(CTeoria* t)
+{
+       bool result ;
+
+       result = verificar_condicion(t->datos_finales) ;
+
+
+       // Si fallo la teoria
+       if (!result)
+       {
+               // Aplico heuristicas de correccion
+               this->heurisitca_retraccion(*t) ;
+       }
+       else
+       {
+               t->p++ ;
+       }
+
+       // Aplico heuristicas de observacion
+       this->heurisitca_observacion(*t) ;
+       this->heurisitca_generalizacion(*t);
+
+       return result;
+}
 
 
 //--------------------------------------------------------------------------------------------
@@ -73,10 +148,9 @@ void CSistemaAutonomo::heurisitca_generalizacion(CTeoria& t)
        CTeoria nt ; //Nueva Teoria
        unsigned i ;
        int count = 0;
-       int k = 0;
-       int j = 0;
+       unsigned k = 0;
+       unsigned j = 0;
        int posicionCambio = -1;
-       bool seguir = true;
        unsigned cantidadTeorias = 0;
        std::string nombreTeoria;
 
@@ -184,7 +258,7 @@ void CSistemaAutonomo::planificar ( CIndiceMagico<t_dato>&  datos_iniciales,
 }
 
 
-
+/*
 //--------------------------------------------------------------------------------------------
 //--
 bool CSistemaAutonomo::ejecutar (CIndiceMagico<CTeoria>& plan)
@@ -231,3 +305,4 @@ bool CSistemaAutonomo::ejecutar (CIndiceMagico<CTeoria>& plan)
        //
        return result ;
 }
+*/