// --- funcion evalua cada accion, estado y recompensa. Retorna la accion a tomar private String funcionQ(String aA, Bloque eA) // valores Actuales : accionActual, estadoActual, recompensaActual { String accion = "nada"; if (nomemory) { Q.FilasAER = new List <ColumnasAER>(); Q.Movimientos = new List <string>(); float rA = evaluarRecompensa(aA, eA); ColumnasAER tupla = new ColumnasAER(aA, eA, 0, rA); // agrega la tupla directo en la tabla Q.addTupla(tupla); accion = tupla.accion; nomemory = false; return(accion); } if (Q.getTupla(aA, eA) != null) // busca la tupla en la tabla { float rA = evaluarRecompensa(Q, aA, eA); ColumnasAER tupla = Q.getActionMaxQ(aA, eA, rA); // agrega la tupla en la tabla Q.addTupla(tupla); accionAnterior = tupla; accion = tupla.accion; // - Debug.WriteLine("La tupla si esta"); } else { float rA = evaluarRecompensa(Q, aA, eA); ColumnasAER tupla = new ColumnasAER(aA, eA, 0, rA); // agrega la tupla directo en la tabla Q.addTupla(tupla); accion = tupla.accion; } return(accion); }
// --- funcion evalua cada accion, estado y recompensa. Retorna la accion a tomar private String funcionQ(String aA, Bloque eA) // valores Actuales : accionActual, estadoActual, recompensaActual { TablaAER Q = new TablaAER(); String accion = "nada"; // guardar // XML.Serialize(Q, "memoria"); // cargar // XML.Deserialize<TablaAER>("memoria"); // verificamos si existe el archivo memoria //if (contacto) //{ // rA = 1; // contacto = false; //} if (File.Exists("memoria")) { // cargar memoria Q = XML.Deserialize <TablaAER>("memoria"); if (Q.getTupla(aA, eA) != null) // busca la tupla en la tabla { float rA = evaluarRecompensa(Q, aA, eA); ColumnasAER tupla = Q.getActionMaxQ(aA, eA, rA); // agrega la tupla en la tabla Q.addTupla(tupla); accion = tupla.accion; // - Debug.WriteLine("La tupla si esta"); } else // si no la encuentra { float rA = evaluarRecompensa(Q, aA, eA); ColumnasAER tupla = new ColumnasAER(aA, eA, 0, rA); // agrega la tupla directo en la tabla Q.addTupla(tupla); accion = tupla.accion; // - Debug.WriteLine("La tupla no esta"); } XML.Serialize(Q, "memoria"); return(accion); } // algoritmo que se ejecuta por defecto cuando no existe memoria else { // crear informacion Q.FilasAER = new List <ColumnasAER>(); float rA = evaluarRecompensa(Q, aA, eA); ColumnasAER tupla = new ColumnasAER(aA, eA, 0, rA); Q.FilasAER.Add(tupla); // se agrega el moviemiento a su memoria Q.Movimientos = new List <String>(); Q.Movimientos.Add(aA); // guardar informacion en memoria XML.Serialize(Q, "memoria"); // cerrar archivo // asigna la accion actual como accion por defecto accion = aA; // retorna la accion // - Debug.WriteLine("No existe memoria"); return(accion); } }