X-Git-Url: https://git.llucax.com/z.facultad/75.68/celdas.git/blobdiff_plain/d341574030ac5443b1aa739060e751826aea7016..02829c0a943fc03f7b6c85d18d2d210395f05086:/trunk/src/sistemaautonomo.cpp diff --git a/trunk/src/sistemaautonomo.cpp b/trunk/src/sistemaautonomo.cpp index 73394ea..2eeb8dd 100644 --- a/trunk/src/sistemaautonomo.cpp +++ b/trunk/src/sistemaautonomo.cpp @@ -1,6 +1,10 @@ #include "sistemaautonomo.h" +#ifdef DEBUG +#include +#endif // DEBUG + //-------------------------------------------------------------------------------------------- //-- Funciones Auxiliares @@ -20,6 +24,77 @@ bool incluye_a (CIndiceMagico& a, CIndiceMagico& 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& datos_iniciales, } - +/* //-------------------------------------------------------------------------------------------- //-- bool CSistemaAutonomo::ejecutar (CIndiceMagico& plan) @@ -231,3 +305,4 @@ bool CSistemaAutonomo::ejecutar (CIndiceMagico& plan) // return result ; } +*/