#include <stdio.h>
#include <stdlib.h>
#include <time.h>
typedef enum { false, true } boolean;
int main ()
{
float datos[3][4];
datos[0][0] = 1;
datos[1][0] = 1;
datos[2][0] = 1;
datos[0][1] = 1;
datos[1][1] = 0;
datos[2][1] = 0;
datos[0][2] = 0;
datos[1][2] = 1;
datos[2][2] = 0;
datos[0][3] = 0;
datos[1][3] = 0;
datos[2][3] = 0;
float pesos[3];
srand48(time(NULL));
pesos[0] = (drand48() * 2) - 2;
pesos[1] = (drand48() * 2) - 2;
pesos[2] = (drand48() * 2) - 2;
boolean aprendiendo = true;
int salidaEntera;
int cont;
float salidaReal;
float tasaDeAprendizaje = 0.3;
float error;
while (aprendiendo) {
aprendiendo = false;
for (cont = 0; cont <= 3; cont ++) {
salidaReal = datos[0][cont] * pesos[0] + datos[1][cont] * pesos[1] + pesos[2];
if ( salidaReal > 0 ){
salidaEntera = 1;
}else{
salidaEntera = 0;
}
error = datos[2][cont] - salidaEntera;
if (error != 0) {
pesos[0] = pesos[0] + tasaDeAprendizaje * error * datos[0][cont];
pesos[1] = pesos[1] + tasaDeAprendizaje * error * datos[1][cont];
pesos[2] = pesos[2] + tasaDeAprendizaje * error * 1;
aprendiendo = true;
}
}
}
for (cont = 0; cont <= 3; cont++ ) {
salidaReal = datos[0][cont]*pesos[0] + datos[1][cont]*pesos[1] + pesos[2];
if ( salidaReal > 0 ){
salidaEntera = 1;
}else{
salidaEntera = 0;
}
printf ("%d \n",salidaEntera);
}
return 0;
}