X-Git-Url: https://git.llucax.com/z.facultad/75.68/celdas.git/blobdiff_plain/b914931109eeea8f1dd22f82147fd755c86c1084..22822a747c21df2f9d99acd8dd2f3f3a9ea54a9a:/trunk/src/sistemaautonomo.cpp?ds=sidebyside diff --git a/trunk/src/sistemaautonomo.cpp b/trunk/src/sistemaautonomo.cpp index 7bc390b..695e538 100644 --- a/trunk/src/sistemaautonomo.cpp +++ b/trunk/src/sistemaautonomo.cpp @@ -31,16 +31,24 @@ void CSistemaAutonomo::plan() { double p = 1.0; m_plan.clear(); + if (teorias.count() > max_teorias) purgar_teorias(); #ifdef DEBUG 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()) @@ -48,7 +56,6 @@ void CSistemaAutonomo::plan() else std::cout << "SA: curr teoria: " << **curr_theory << "\n"; #endif // DEBUG - if (teorias.count() > TEORIAS_MAX) purgar_teorias(); } //-------------------------------------------------------------------------------------------- @@ -69,6 +76,12 @@ CTeoria* CSistemaAutonomo::get_next_theory() } else { +#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++); } } @@ -82,6 +95,15 @@ bool CSistemaAutonomo::validate_theory(CTeoria* t) // Aumento k (cantidad de veces que se probó la teoría ++t->k; +#ifdef 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) ; @@ -96,17 +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 - this->heuristca_generalizacion(*t); +#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; } @@ -156,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 } @@ -217,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; @@ -251,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 } } @@ -272,7 +321,7 @@ void CSistemaAutonomo::planificar (CIndiceMagico& datos_iniciales, if ( incluye_a(datos_iniciales, datos_finales) ) return ; - if ( numero_de_llamada > PASOS_MAXIMOS_DE_PLAN ) return ; + if (numero_de_llamada > max_pasos) return ; for (i = 0; i < teorias.count(); i++) if ( incluye_a(teorias[i]->datos_iniciales, datos_iniciales) ) @@ -313,8 +362,11 @@ void CSistemaAutonomo::purgar_teorias() } teorias.remove(pos); #ifdef DEBUG - std::cout << "SA: Se purgo la teoria " << teorias[pos] << "\n"; + std::cout << "SA: Se purgo la teoria " << *teorias[pos] << "\n"; #endif // DEBUG - if (size - 1 > TEORIAS_MAX) purgar_teorias(); +#ifdef LOG + std::cout << "Se purgo la teoria:\n" << *teorias[pos] << "\n"; +#endif // LOG + if (size - 1 > max_teorias) purgar_teorias(); }