Sunteți pe pagina 1din 5

Desarrollo del algoritmo de PERCEPTRON utilizando python.

Compilador usado: LiClipse

'''
Created on 30 de mar. de 2016
@author: Luis Valle
'''
'PARAMETROS DE NUESTRA FUNCION'
W1=[0,0,0,0,0]
W2=[0,0,0,0,0]
X1=[0,0,0,0,0]
X2=[0,0,0,0,0]
B=[0,0,0,0,0]
Y=[0,0,0,0,0]
v=[0,0,0,0,0]
'ASIGNACIONES DE PESOS'
W1[0]=0
W2[0]=0
B[0]=0
v[0]=0
i=0
alfa=1
teta=0
t=0
'VALORES DE ENTRADA, EJECUTANDO FUNCION LOGICA OR'
X1[0]=1
X2[0]=1
Y[0]=1
X1[1]=1
X2[1]=-1
Y[1]=1
X1[2]=-1
X2[2]=1
Y[2]=1
X1[3]=-1
X2[3]=-1
Y[3]=-1
print("MODELO DE PERCCEPTRON, FUNCION LOGICA OR")
print("Pesos actualizados")
print("w1 w2 b v y")
print (W1[0],' ',W2[0],' ',B[0],' ',v[i],' ',t)
while i < 4:
v[i]=(W1[i]*X1[i])+(W2[i]*X2[i])+B[i]
if v[i]>teta:
t=1

if v[i]==teta:
t=0
if v[i]<teta:
t=-1
if t!=Y[i]:
W1[i+1]=W1[i]+alfa*X1[i]*Y[i];
W2[i+1]=W2[i]+alfa*X2[i]*Y[i];
B[i+1]=B[i]+alfa*Y[i];
print("Pesos actualizados")
print("w1 w2 b v y")
print (W1[i+1],' ',W2[i+1],' ',B[i+1],' ',v[i],' ',t)
else:
W1[i+1]=W1[i]
W2[i+1]=W2[i]
B[i+1]=B[i]
print("Pesos actualizados")
print("w1 w2 b v y")
print (W1[i+1],' ',W2[i+1],' ',B[i+1],' ',v[i],' ',t)
i +=1
FUNCIONAMIENTO Y RESULTDO DEL CODIGO (entrada OR)

Desarrollo del algoritmo de PERCEPTRON utilizando c++.


Compilador usado: Dev C++

#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
int i=0;// variable de conteo
// parametros de nuestra funcion
double w1[10],w2[10],b[10],v[10];
double x1[10],x2[10],y[10];
//asignacion de pesos
w1[0]=0;
w2[0]=0;
b[0]=0;
v[0]=0;
int alfa=1;
int teta=0;
int t=0;
//Funcion logica a Ejecutar OR
x1[0]=1; x2[0]=1; y[0]=1;
x1[1]=1; x2[1]=-1; y[1]=1;
x1[2]=-1; x2[2]=1; y[2]=1;
x1[3]=-1; x2[3]=-1; y[3]=-1;
//MODELO SIMPLE DE PERCEPTRON
cout << "modelo DE perceptron, funcion logica OR" << endl;
cout<<"pesos actualizados:"<<"\n"<<"W1 W2 b v y"<<endl<<w1[i]<<"
"<<w2[i]<<" "<<b[i]<<" "<<v[i]<<" "<<t<<endl<<endl;
while(i<4)
{
v[i]=(w1[i]*x1[i])+(w2[i]*x2[i])+b[i];
if(v[i]>teta)
{t=1;}
else if(v[i]==teta)
{t=0;}
else if(v[i]<teta)
{t=-1;}
if(t!=y[i])
{

w1[i+1]=w1[i]+alfa*x1[i]*y[i];
w2[i+1]=w2[i]+alfa*x2[i]*y[i];
b[i+1]=b[i]+alfa*y[i];
cout<<"pesos actualizados:"<<"\n"<<"W1 W2 b v
y"<<endl<<w1[i+1]<<" "<<w2[i+1]<<" "<<b[i+1]<<" "<<v[i]<<"
"<<t<<endl<<endl;
}
else
{
w1[i+1]=w1[i];
w2[i+1]=w2[i];
b[i+1]=b[i];
cout<<"pesos actualizados:"<<"\n"<<"W1 W2 b v
y"<<endl<<w1[i+1]<<" "<<w2[i+1]<<" "<<b[i+1]<<" "<<v[i]<<"
"<<t<<endl<<endl;
}
i++;
}
cin.ignore();
return 0 ;
}
FUNCIONAMIENTO Y RESULTDO DEL CODIGO (entrada OR)

GUIA DE USUARIO

1. Establecemos los parmetros y variables que va a utilizar nuestro


algoritmo(PERCEPTRO)
2. Asignacin de pesos acorde al algoritmo utilizado, en nuestro caso
inicializamos W1, W2 y B igual a 0.
3. Escogemos teta=0 y la razn de aprendizaje alfa=1.
4. Activamos las unidades de entradas X1=S1 Y X2=S2, acorde a la funcin
lgica a analizar
(funcin OR).
5. Calculamos el campo local inducido v=(w1*x1)+(w2*x2)+b;
6. Activamos las unidades de salidas y=1 si v >teta, y=0 si -teta >= v =<
teta, v < teta
7. Actualizamos los pesos segn las condiciones dadas para el algoritmo de
PERCEPTRON
Si y!=t
1. W1[Nuevo]=W1[Anterior]+alfa*X1*Y;
2.

W2[Nuevo]=W2[Anterior]+alfa*X2*Y;

3. B[Nuevo]=B[Anterior]+alfa*Y;

Si y=t
1. W1[Nuevo]=W1[Anterior]
2.

W2[Nuevo]=W2[Anterior]

3. B[Nuevo]=B[Anterior]

8. Finalizamos el bucle

S-ar putea să vă placă și