martes, 26 de abril de 2016

Entrenamiento red neuronal

#include <stdio.h>
#include <math.h>


int main()
{
    printf("Red neuronal\n");
    const double EULER = 2.71828182845904523536;
int p[4][2] = {(0,0),
 (0,1),
 (1,0),
 (1,1)};

int w[] = {60,40};
double d[4];
int i;
    double suma = 0;
    int s = 0;

for (i=0; i<4; i++)
{
suma = ((-1)*(((p[i+1][1])*w[1])+((p[i+1][2])*w[2])));
s = 1/(1+(pow(EULER, suma)));
printf("suma: %d\n", suma);
printf("Salida: %d\n", s);

}
getchar();
    getchar();
}

Jarras

class Jarra: def __init__(self, inicial = 0, final = 0):
self.inicial = inicial
self.final = final
def acciones(self, estado):
jarra_4 = estado[0]
jarra_3 = estado[1]
l = []
if jarra_4 > 0:
l.append("vaciar jarra 4 litros")
if jarra_3 < 3:
l.append("pasar jarra 4 litros a jarra de 3")
if jarra_4 < 4:
l.append("llenar jarra de 4 litros")
if jarra_3 > 0:
l.append("pasar jarra 3 litros a jarra de 4")
if jarra_3 > 0:
l.append("vaciar jarra 3 litros")
if jarra_3 < 3:
l.append("llenar jarra de 3 litros")
return l
def bombear_agua(self, estado, accion):
jarra4 = estado[0]
jarra3 = estado[1]
if accion == "llenar jarra de 4 litros":
return (4, jarra3)
elif accion == "llenar jarra de 3 litros":
return (jarra4, 3)
elif accion == "vaciar jarra de 4 litros":
return (0, jarra3)
elif accion == "vaciar jarra de 3 litros":
return (jarra4, 0)
elif accion == "pasar jarra 4 litros a jarra de 3":
return (jarra4 - 3 + j3, 3) if jarra3+jarra4 >= 3 else (0, jarra3 + jarra4)
else:
return (jarra3 + jarra4, 0) if jarra3+jarra4 <= 4 else (4, jarra3 - 4 + jarra4)
def solucion(self, estado):
return estado[0] == 2
j = Jarra()
print(j.acciones((0,0))

martes, 19 de abril de 2016

Minimax

MINIMAX( posición, profundidad, jugador) 
comienzo 
Si SUFICIENTE (posición, profundidad) entonces
    resultado.VALOR = ESTATICA (posición, jugador); 
    resultado.CAMINO = NULO;
    return resultado;
sino
     Sucesores := GENMOV (posición, jugador);
     Si EstaVacia (Sucesores) entonces

    resultado.VALOR = ESTATICA (posición, jugador);
     resultado.CAMINO = NULO; return resultado;
sino
    resultadoMejor.VALOR = MININT; por cada sucesor de Sucesores
    resultadoSucesor := MINIMAX (sucesor, profundidad+1, CONTRARIO (jugador)); 
    Si resultadoMejor.VALOR < - resultadoSucesor.VALOR entonces
    resultadoMejor.VALOR := - resultadoSucesor.VALOR;
     resultadoMejor.CAMINO := sucesor + resultadoSucesor.CAMINO;
                fin si;
            fin por; 
        return resultadoMejor;
     fin sino;
 fin sino;
fin MINIMAX