// --- 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);
        }
Example #2
0
        // --- 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);
            }
        }