Sou iniciante em java e estou com uma dúvida.
Preciso fazer um cálculo w(new)=w(old)+xi*y
Os vetores do w e do x eu ja tenho.
Como faço para implementar o y pois ele vale 1 e -1.
Como posso organizar isso.
Agradeço a todos.
Sou iniciante em java e estou com uma dúvida.
Preciso fazer um cálculo w(new)=w(old)+xi*y
Os vetores do w e do x eu ja tenho.
Como faço para implementar o y pois ele vale 1 e -1.
Como posso organizar isso.
Agradeço a todos.
Como assim? Não entendi…
Se o y depender de alguma condição coloque um “if”.
Vou te passar o código e embaixo tem os comentários do que tem que ser feito.
É um trabalho de inteligência artificial.É o algoritmo de hebb.
Obrigado pela atenção.
[code]import javax.swing.*;
import java.awt.Container;
public class trabalho extends JApplet {
public static void main(String[] args) {
int cont=0;
int cont1=0;
//Cria Vetor X com posicoes definidas.
String X[][] = { { “#”, “.”, “.”, “.”, “#” },
{ “.”, “#”, “.”, “#”, “.” }, { “.”, “.”, “#”, “.”, “.” },
{ “.”, “#”, “.”, “#”, “.” }, { “#”, “.”, “.”, “.”, “#” } };
//Cria Vetor Auxiliar para X.
int Aux1[][] = new int[5][5];
//Cria Vetor O com posicoes definidas.
String O[][] = { { “.”, “#”, “#”, “#”, “.” },
{ “#”, “.”, “.”, “.”, “#” }, { “#”, “.”, “.”, “.”, “#” },
{ “#”, “.”, “.”, “.”, “#” }, { “.”, “#”, “#”, “#”, “.” } };
//Cria Vetor Auxiliar para O.
int Aux2[][] = new int[5][5];
//Cria Vetor de Teste.
String Teste[][] = new String[5][5];
//Cria Vetor Auxiliar de Teste.
int Aux3[][] = new int[5][5];
int entrada[][]=new int[5][5];
//Imprime saida Vetor X em uma caixa de dialogo 5x5.
String SaidaX = “”;
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
SaidaX = SaidaX + " " + X[i][j];
}
SaidaX = SaidaX + “\n”;
}
//Imprime saida Vetor O em uma caixa de dialogo 5x5.
String SaidaO = “”;
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
SaidaO = SaidaO + " " + O[i][j];
}
SaidaO = SaidaO + “\n”;
}
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
if (X[i][j].equals("#")) {
Aux1[i][j] = 1;
}else{
if(X[i][j].equals(".")) {
Aux1[i][j] = -1;
} else {
Aux1[i][j] = 0;
}
}
}
}
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
if (O[i][j].equals("#")) {
Aux2[i][j] = 1;
} else {
if (O[i][j].equals(".")) {
Aux2[i][j] = -1;
} else {
Aux2[i][j] = 0;
}
}
}
}
String ResultadoX = “”;
for(int i=0;i<5;i++){
for(int j=0;j<5;j++){
ResultadoX=ResultadoX+" “+Aux1[i][j];
}
ResultadoX=ResultadoX+”\n";
}
String ResultadoO = “”;
for(int i=0;i<5;i++){
for(int j=0;j<5;j++){
ResultadoO=ResultadoO+" “+Aux2[i][j];
}
ResultadoO=ResultadoO+”\n";
}
JOptionPane.showMessageDialog(null, “\n” + SaidaX);
JOptionPane.showMessageDialog(null, “\n” + SaidaO);
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
}
}
for(int i=0;i<5;i++){
for(int j=0;j<5;j++){
}
}
JOptionPane.showMessageDialog(null,"\n “+ResultadoX);
JOptionPane.showMessageDialog(null,”\n "+ResultadoO);
//vetor de pesos inicializando de 0
int[]w=new int[25];
for(int i=0;i<25;i++){
w[i]=0;
}
for(int i=0;i<5;i++){
for(int j=0;j<5;j++){
entrada[i][j] =Integer.parseInt(JOptionPane.showInputDialog(“Valores para entrada”+i+"\n"+j));
}
}
//ajuste de pesos
int[]x=new int[25];
int[]y=new int[2];
for(int i=0;i<25;i++){
w[i]=w[i]+x[i]*y[i];
}
JOptionPane.showMessageDialog(null,"O valor dos pesos é "+w);
String SaidaTeste="";
for(int i=0;i<5;i++){
for(int j=0;j<5;j++){
SaidaTeste = SaidaTeste + " " + Teste[i][j];
}
SaidaTeste = SaidaTeste + “\n”;
}
int j=4;
int cont2=0;
for(int i=0;i<5;i++){
if(Teste[i][i].equals("#")){
cont=cont+1;
}else{
if(Teste[i][j].equals("#")){
cont=cont+1;
}
j=j-1;
}
}
//int y=0;
for(int i=1;i<5;i++){
if((Teste[i][0].equals("#"))||(Teste[i][4].equals("#"))||(Teste[0][i].equals("#"))||(Teste[4][i]).equals("#")){
cont1=cont1+1;
}
//y=y+1;
}
JOptionPane.showMessageDialog(null," "+SaidaTeste);
if(cont>cont1){
JOptionPane.showMessageDialog(null,“Esta letra é mais parecida com X”);
}else{
JOptionPane.showMessageDialog(null,“Esta letra é mais parecida com O”);
}
System.exit(0);
}
}
[/code]
//Reconhecer o ‘X’ e o ‘O’ e fazer testes para ver qual se aproxima mais de uma das duas letras.
//Valores de entrada=x1,x2…x25
//Valores de y(saída)=1 e -1
//No caso o ‘x’ vale 1 e o ‘o’ vale -1 como saída
//Seria mais ou menos assim x1,x2,x3…x25|y o ‘.’ vale -1
// fazendo o ‘x’: 1 ,-1, -1…1 |1 o ‘#’ vale 1
// fazendo o ‘o’: -1, 1, 1…-1 |-1
//Seria assim para fazer:
//passo1-Inicializar pesos
// w1=0(i=1 até n)(O n seria o número de neurônios de entrada’x’)
//passo2-Para cada par de entrada faça(vai fazer duas vezes pois tem duas saídas no y)
//passo3-Valores de entrada
//passo4-Valores de saída
//passo5-Ajuste de pesos(tem uma fórmula w1(new)=w1(old)+xi*y
// (i=1 até n)
//Ja tem alguma coisa que ta certa mas preciso de ajuda para fazer o resto*
//Se tu não souber pede para o teu professor dar uma ajuda.
//E tem mais um cálculo que ele diz que é para fazer testes.
//y-in=x[1].w[1]+x[2].w[2]…x[25].w[25].
//Tem essa outra fórmula que ele passou: x.w–>teste
// y.y–>treinameto*\
Brother, uma dica:
Todo vez que for postar códigos aqui no fórum, poste o mesmo entre as tags CODE que aparece no editor para facilitar a leitura!
Abraço…
Para saber como usar a tag code, leia: