Académique Documents
Professionnel Documents
Culture Documents
import
import
import
import
import
java.awt.event.ActionEvent;
java.awt.event.ActionListener;
javax.swing.JOptionPane;
javax.swing.*;
java.math.BigDecimal;
java.math.RoundingMode;
1f
-1f
1f
-1f
,
,
,
,
-1f},
-1f},
-1f},
-1f}
};
// salidasDeseadas para el perceptron
float[] salidasDeseadas=new float[4];
int establecioSalidas=0;
static float[] pesos = {1.0f,-1.0f,-0.5f};
static float factorAprendizaje=.5f;
public static void main(String args[]){
new PerceptronSimple();
}
PerceptronSimple(){
JFrame ventana=new JFrame();
ventana.setVisible(true);
ventana.setSize(500,300);
ventana.setDefaultCloseOperation(ventana.EXIT_ON_CLOSE);
ventana.setTitle("PERCEPTRON SIMPLE");
ventana.setResizable(false);
ventana.setLocationRelativeTo(null);
JDesktopPane esc=new JDesktopPane();
//les asignamos una posicion a los componentes
entrenar.setBounds(140,220,100,20);
probar.setBounds(260,220,100,20);
imagen.setBounds(5,10,500,250);
//ponemos a escuchar por algun evento a los botones y menuitem
entrenar.addActionListener(this);
probar.addActionListener(this);
or.addActionListener(this);
and.addActionListener(this);
}
}
// ya una ves que el perceptron este entrenado podemos dar clic
en el boton probar y nos ira pidiendo las entradas
// y nos debera de dar la salida correcta para cada entrada
}else if(e.getSource()==probar){
String x1=JOptionPane.showInputDialog(null,"Ingresa la primera ent
rada");
String x2=JOptionPane.showInputDialog(null,"Ingresa la segunda ent
rada");
float [] entradasPrueba=new float[3];
entradasPrueba [0]=Float.parseFloat(x1); //entrada neurona 1
entradasPrueba [1]=Float.parseFloat(x2); //entrada neurona 2
entradasPrueba [2]=-1f;
//entrada para el umbral
float resultado = probarRed(entradasPrueba);
JOptionPane.showMessageDialog(null,resultado);
}
if(e.getSource()==or){
// definimos las salidas deseadas para la compuerta logica or
salidasDeseadas[0]=1f;
salidasDeseadas[1]=1f;
salidasDeseadas[2]=1f;
salidasDeseadas[3]=-1f;
establecioSalidas=1;
}
if(e.getSource()==and){
// definimos las salidas deseadas para la compuerta logica and
salidasDeseadas[0]=1f;
salidasDeseadas[1]=-1f;
salidasDeseadas[2]=-1f;
salidasDeseadas[3]=-1f;
establecioSalidas=1;
}
}
public static float funcionActivacion(float[] entradas){
funcionActivacion = 0.0f;
System.out.println("metodo funcionActivacion");
for(int i = 0; i < entradas.length; i++){
// se multiplica cada peso por cada entrada y se suma
funcionActivacion += pesos[i] * entradas[i];
//redondeamos a 2 decimales el valor de la funcion activacion
String val = funcionActivacion+"";
BigDecimal big = new BigDecimal(val);
big = big.setScale(2, RoundingMode.HALF_UP);
funcionActivacion=big.floatValue();
System.out.println("Multiplicacion");
System.out.println("w"+i+" * "+"x "+i);
System.out.println(pesos[i] +"*" +entradas[i]);
}
System.out.println("y = "+funcionActivacion);
//se determina el valor de la salida
if(funcionActivacion >= 0)
funcionActivacion = 1;
else if(funcionActivacion < 0)
funcionActivacion = -1;
return funcionActivacion;
}
//metodo para verificar si hay o no error
public static float error(float salidaDeseada){
System.out.println("Salida deseada - salida");
error = salidaDeseada - funcionActivacion;
System.out.println(salidaDeseada+" - "+funcionActivacion);
return error;
}
//metodo para el reajuste de pesos
public void calculaPesos(float[] entradas,float salidas){
if(error != 0){
for(int i = 0; i < entradas.length; i++){
System.out.println(pesos[i]+" + (2 * .5) * "+salidas+" * "+entradas[i])
;
this.pesos[i]=pesos[i]+(2.0f*.5f)*(salidas*entradas[i]);
String val = this.pesos[i]+"";
BigDecimal big = new BigDecimal(val);
big = big.setScale(2, RoundingMode.HALF_UP);
funcionActivacion=big.floatValue();
System.out.println("salida");
System.out.println("AHORA LOS PESOS CAMBIARON A :"+ this.pesos[i]);
}
}
}
public float probarRed(float [] entradasPrueba){
float result;
funcionActivacion = 0.0f;
System.out.println("----------PROBANDO EL PERCEPTRON ---------");
for(int i = 0; i <=2 ; i++){
funcionActivacion += pesos[i] * entradasPrueba[i];
String val = funcionActivacion+"";
BigDecimal big = new BigDecimal(val);
big = big.setScale(2, RoundingMode.HALF_UP);
funcionActivacion=big.floatValue();
System.out.println("Multiplicacion");
System.out.println("w"+i+" * "+"x "+i);
System.out.println(pesos[i] +"*" +entradasPrueba[i]);
}
System.out.println("y = "+funcionActivacion);
if(funcionActivacion >= 0)
funcionActivacion = 1;
else if(funcionActivacion < 0)
funcionActivacion = -1;
result=funcionActivacion;
return result;
}
}