#include "sistemaautonomo.h"
+#ifdef DEBUG
+#include <iostream>
+#endif // DEBUG
+
//--------------------------------------------------------------------------------------------
//-- Funciones Auxiliares
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;
+}
//--------------------------------------------------------------------------------------------
}
-
+/*
//--------------------------------------------------------------------------------------------
//--
bool CSistemaAutonomo::ejecutar (CIndiceMagico<CTeoria>& plan)
//
return result ;
}
+*/