Olá, esse é o primeiro post que faço aqui no GUJ, e tenho uma dúvida quando a um algoritmo Perceptron que tenho que fazer para a faculdade, por enquanto está mais ou menos assim:
public class Operacoes
{
public static void main(String []a)
{
double QT = 5, TR = 0, U, Erro, TxApr , Epoca;
int N,K,L,M;
double Y[] = new double [30];
double W[] = new double [4];
double WAnterior[] = new double [4];
for(TR=1;TR<QT;TR++)
{
double X[][] = { {-1,0.012,1.456,2.456},{-1,5.752,4.223,0.123},
{-1,4.785,0.056,12.111},{-1,7.236,4.654,1.336},{-1,4.782,5.233,0.321},
{-1,9.456,2.222,3.001},{-1,5.612,3.336,4.622},{-1,2.321,4.969,1.997},
{-1,5.664,3.221,6.456},{-1,7.223,5.112,},{-1,4.775,0.645,2.330},
{-1,4.777,9.995,3.118},{-1,11.112,6.302,4.445},{-1,6.312,7.845,2.113},
{-1,9.666,6.666,3.332},{-1,7.782,5.236,4.008},{-1,6.312,4.523,9.997},
{-1,0.001,0.002,5.003},{-1,5.112,9.725,12.201},{-1,3.672,1.128,3.645},
{-1,6.521,-2.324,},{-1,8.004,7.820,3.222},{-1,-4.035,6.301,7.232},
{-1,8.222,-0.022,4.223},{-1,7.366,2.111,-4.555},{-1,3.606,7.565,2.221},
{-1,3.662,1.118,-4.971},{-1,0.111,0.222,0.333},{-1,0.223,1.256,7.212},
{-1,9.223,-4.502,1.164}};
double D[] = {-1,-1,1,1,-1,1,-1,-1,1,1,-1,1,1,1,
1,1,-1,-1,1,-1,1,-1,1,1,1,-1,-1,-1,1,-1};
M = 30;
N = 4;
for(int i=0;i<N;i++)
{
W[i] = (double) (Math.random()*1000);
WAnterior[i] = W[i];
}
Erro = 1;
TxApr = 0.01;
Epoca = 0;
while(Erro ==1)
{
Erro = 0;
for(L = 0; L<M ; L++)
{
U = 0;
K = 0;
for(K = 0;K<N; K++)
{
U = U + X[L][K] * W[K];
}
if(U < 0)
Y[L] = 1;
else
Y[L] = -1;
if(D[L] != Y[L])
{
for(K=0;K<N;K++)
{
W[K] = W[K] + TxApr * (D[L]-Y[L]*X[L][K]);
}
Erro = 1;
}
}
Epoca = Epoca + 1;
}
}
}
}
Sempre recebo a mensagem de erro: Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 4
Nesse caso o problema seria com alguma posição do vetor que não exista e que esteja tentando utilizar?
Não sei se ficou claro, mas caso possam me ajudar, agradeço desde já.
mas o local que ocorre o erro eh aqui