Olá, tenho uma aplicação simples, uma rede neural, e estou com esse problema
o codigo é o seguinte:
import java.util.Scanner;
import javax.swing.JOptionPane;
public class perceptron_multilayer {
// Definição de Constantes
final static int NCAMOCULTA = 1; // número de camadas ocultas
final static int OCULTA = 2; // número de neurônios da camada oculta
final static int ENTRADA = 2; // número de neurônios da camada de entrada
final static int SAIDA = 1; // número de neurônios da camada de saida
final static int EXEMPLOS = 1; // numero de exemplos de entrada para treinamento
//Início da Declaração das Variáveis Globais
static double W[][][] = new double[30][30][30], BIAS[][] = new double[30][30], // os números 3 se devem ao fato de não se saber quando é escondida ou saida
X[][] = new double[EXEMPLOS][30], //vetores de entrada
D[][] = new double[EXEMPLOS][30], //vetores de saida
ERRO[][] = new double[EXEMPLOS][30], NI[][] = new double[30][30], PHI[][] = new double[30][30], ERRODES, //valor do erro desejável ou aceitável
ETA, //taxa de aprendizagem
ERROINST, // Erro Instantâneo
ERROMG = 0, //Erro Médio Global
PHILINHA[][] = new double[30][30],//vetor de philinha para correção
DELTA[][] = new double[30][30]; //vetor dos deltas para correção dos pesos e bias
static int K, I, J, A, B, VAR, EPOCAS, //numero de epocas de treinamento
FUNCAO;
/* static int k = K + 1;
static int i = I + 1;
static int j = J + 1;*/
//Término da Declaração das Variáveis Globais
//Programa Principal
public static void main(String[] args) {
EntradaBiasePesosIniciais();
SaidaBiasePesosIniciais();
EntraEpocas();
PreencheVetorEntrada();
PreencheVetorSaida();
PreencheOutrasConfiguracoes();
ProcessoIterativo();
System.out.printf("........................\n");
// System.out.println("PAUSE");
JOptionPane.showMessageDialog(null, "PAUSE");
}
//Término do Programa Principal
/* Função de Processo Iterativo*/
/* Função de Processo Iterativo*/
static void ProcessoIterativo() {
// System.out.printf("Iniciando o processo iterativo...\n");
JOptionPane.showMessageDialog(null,"Iniciando o processo iterativo...\n");
for (A = 0; A < EPOCAS; A++) {
for (B = 0; B < EXEMPLOS; B++) {
//Calcula ni e phi da camada de entrada
for (I = 0; I < OCULTA; I++) {
NI[0][I] = 0; // k de camada e i de neurônio
for (J = 0; J < ENTRADA; J++) {
NI[0][I] = NI[0][I] + W[0][J][I] * X[B][J];
}
NI[0][I] = NI[0][I] + BIAS[0][I];
//System.out.printf("NI[1][%d] = %f\n", I+1, NI[0][I]);
switch (FUNCAO) {
case 1:
if (NI[0][I] > 0) {
PHI[0][I] = 1;
} else {
PHI[0][I] = 0;
}
break;
case 2:
PHI[0][I] = 1 / (1 + Math.exp(-NI[0][I]));
break;
}//fim do switch case
//System.out.printf("PHI[1][%d] = %f\n", I+1, PHI[0][I]);
}//fim do for i
//Calcula ni e phi das camadas restantes
for (K = 1; K < NCAMOCULTA + 1; K++) {
if (K == NCAMOCULTA) {
VAR = SAIDA; //última camada - ni da camada de saida
} else {
VAR = OCULTA; //camadas intermediárias - ni das camadas intermediárias
}
for (I = 0; I < VAR; I++) {
NI[K][I] = 0;
for (J = 0; J < OCULTA; J++) {
NI[K][I] = NI[K][I] + W[K][J][I] * PHI[K - 1][J];
}
NI[K][I] = NI[K][I] + BIAS[K][I];
//System.out.printf("NI[%d][%d] = %f\n", K+1, I+1, NI[K][I]);
switch (FUNCAO) {
case 1:
if (NI[K][I] > 0) {
PHI[K][I] = 1;
} else {
PHI[K][I] = 0;
}
break;
case 2:
PHI[K][I] = 1 / (1 + Math.exp(-NI[K][I]));
break;
}//fim do case
if (K == NCAMOCULTA) {
int k = K +1;
int i = I + 1;
System.out.printf("PHI[%d][%d] = %f\n", K + 1, I + 1, PHI[K][I]);
JOptionPane.showMessageDialog(null, "PHI["+k+"]["+i+"] =\n"+PHI[K][I]);
}
} //fim do for i
} // fim do K
/* Cálculo do Erros */
for (K = 1; K < NCAMOCULTA + 1; K++) {
for (I = 0; I < SAIDA; I++) {
ERRO[K][I] = D[B][I] - PHI[K][I];
// System.out.printf("DESEJADO[%d][%d] = %f\n", B + 1, I + 1, D[B][I]);
// System.out.printf("ERRO[%d][%d] = %f\n", K + 1, I + 1, ERRO[K][I]);
int k = K +1;
int i = I + 1;
int b = B + 1;
JOptionPane.showMessageDialog(null, "DESEJADO["+b+"]["+i+"] =\n" + D[B][I]);
JOptionPane.showMessageDialog(null, "ERRO["+k+"]["+i+"] = %d\n" + ERRO[K][I]);
}
ERROINST = 0;
for (I = 0; I < SAIDA; I++) {
ERROINST = ERROINST + ERRO[K][I] * ERRO[K][I] / 2;
}
ERROMG = (ERROMG * (A * EXEMPLOS + B) + ERROINST) / (A * EXEMPLOS + (B + 1));
//System.out.printf("ERROMG = %f\n", ERROMG);
if (ERROMG < ERRODES) {
break;
}
/* Fim Cálculo do Erros */
} // fim do K
/* retropropagação do erro */
/* cálculo de philinha e delta */
/* cálculo de philinha e delta da última camada*/
for (I = 0; I < SAIDA; I++) {
PHILINHA[NCAMOCULTA][I] = Math.exp(-NI[NCAMOCULTA][I]) / ((1 + Math.exp(-NI[NCAMOCULTA][I])) * (1 + Math.exp(-NI[NCAMOCULTA][I])));
DELTA[NCAMOCULTA][I] = -ERRO[NCAMOCULTA][I] * PHILINHA[NCAMOCULTA][I];
//System.out.printf("PHILINHA[%d][%d] = %f\n", NCAMOCULTA+1, I+1, PHILINHA[NCAMOCULTA][I]);
//System.out.printf("DELTA[%d][%d] = %f\n", NCAMOCULTA+1, I+1, DELTA[NCAMOCULTA][I]);
}
/* cálculo de philinha e delta das camadas intermediarias*/
for (K = 1; K < NCAMOCULTA; K++) {
for (I = 0; I < OCULTA; I++) {
PHILINHA[K][I] = Math.exp(-NI[K][I]) / ((1 + Math.exp(-NI[K][I])) * (1 + Math.exp(-NI[K][I])));
//System.out.printf("PHILINHA[%d][%d] = %f\n", K+1, I+1, PHILINHA[K][I]);
DELTA[K][I] = 0;
for (J = 0; J < OCULTA; J++) {
DELTA[K][I] = DELTA[K][I] + PHILINHA[K][I] * DELTA[K + 1][J] * W[K + 1][I][J];
}
//System.out.printf("DELTA[%d][%d] = %f\n", K+1, I+1, DELTA[K][I]);
}
}
/* cálculo de philinha e delta da primeira camada*/
for (I = 0; I < OCULTA; I++) {
PHILINHA[0][I] = Math.exp(-NI[0][I]) / ((1 + Math.exp(-NI[0][I])) * (1 + Math.exp(-NI[0][I])));
//System.out.printf("PHILINHA[1][%d] = %f\n", I+1, PHILINHA[0][I]);
DELTA[0][I] = 0;
for (J = 0; J < OCULTA; J++) {
DELTA[0][I] = DELTA[0][I] + PHILINHA[0][I] * DELTA[1][J] * W[1][I][J];
}
//System.out.printf("DELTA[1][%d] = %f\n", I+1, DELTA[0][I]);
}
/* Ajuste dos pesos e dos bias */
//ajuste das outras camadas
for (K = 1; K < NCAMOCULTA + 1; K++) {
if (K == NCAMOCULTA) {
VAR = SAIDA; //última camada - ni da camada de saida
} else {
VAR = OCULTA; //camadas intermediárias - ni das camadas intermediárias
}
for (I = 0; I < VAR; I++) {
for (J = 0; J < OCULTA; J++) {
W[K][J][I] = W[K][J][I] - ETA * DELTA[K][I] * PHI[K - 1][J];
//System.out.printf("W[%d][%d][%d] = %f\n", K+1, J+1, I+1, W[K][J][I] );
}
BIAS[K][I] = BIAS[K][I] - ETA * DELTA[K][I] * PHI[K - 1][I];
//System.out.printf("BIAS[%d][%d] = %f\n", K+1, I+1, BIAS[K][I] );
}
}
//ajuste da primeira camada
for (I = 0; I < OCULTA; I++) {
for (J = 0; J < ENTRADA; J++) {
W[0][J][I] = W[0][J][I] - ETA * DELTA[0][I] * X[B][J];
//System.out.printf("W[1][%d][%d] = %f\n", J+1, I+1, W[0][J][I] );
}
BIAS[0][I] = BIAS[0][I] - ETA * DELTA[0][I] * X[B][I];
//System.out.printf("BIAS[1][%d] = %f\n", I+1, BIAS[0][I] );
}
//??????
if (ERROMG < ERRODES) {
// System.out.printf("Finalizado pelo erro em %d epocas de treinamento!\n", X);
JOptionPane.showMessageDialog(null, "Finalizado pelo erro em "+ X +" epocas de treinamento!\n");
break;
}
} // fim do B
} // fim do A
}
/* Término Função de Processo Iterativo*/
/* Função de Entrada de Bias e Pesos Iniciais*/
static void EntradaBiasePesosIniciais() {
// System.out.printf("Bias e pesos iniciais...\n");
JOptionPane.showMessageDialog(null, "Bias e pesos iniciais...\n");
//Entrada dos Pesos Iniciais e Bias
for (K = 0; K < NCAMOCULTA + 1; K++) {
if (K == 0) //primeira camada
{
// System.out.printf("ENTRADA e 1 a. CAMADA OCULTA...\n");
JOptionPane.showMessageDialog(null, "ENTRADA e 1 a. CAMADA OCULTA...\n");
for (I = 0; I < ENTRADA; I++) {
for (J = 0; J < OCULTA; J++) {
// System.out.printf("Informe o peso entre o neuronio %d da camada de entrada e o neuronio %d da 1a. camada oculta :", I + 1, J + 1);
// System.out.printf("Informe W[%d][%d][%d]:", K + 1, I + 1, J + 1);
int i = I + 1;
int j = J + 1;
int k = K + 1 ;
W[K][I][J] = Double.parseDouble(JOptionPane.showInputDialog("Informe o peso entre o neuronio "+ i +" da camada de entrada e o neuronio "+j+" da 1a. camada oculta :\n" +
"Informe W["+k+"]["+i+"]["+j+"]:"));
/* Scanner in = new Scanner(System.in);
W[K][I][J] = in.nextDouble();*/
//scanf("%f", &W[K][I][J]);
}
}
for (I = 0; I < OCULTA; I++) {
int i = I + 1;
int j = J + 1;
int k = K + 1 ;
/* System.out.printf("Informe o bias do neuronio %d da 1a. camada oculta :", I + 1);
System.out.printf("Informe BIAS[%d][%d]:", K + 1, I + 1);
Scanner in = new Scanner(System.in);
BIAS[K][I] = in.nextDouble();*/
//scanf("%f", &BIAS[K][I]);
BIAS[K][I] = Double.parseDouble(JOptionPane.showInputDialog("Informe o bias do neuronio "+ i +"da 1a. camada oculta :\n" +
"Informe BIAS["+k+"]["+i+"]"));
}
} else if (K == NCAMOCULTA) //ultima camada
{
System.out.printf("%d a. CAMADA OCULTA e SAIDA\n", K);
for (I = 0; I < OCULTA; I++) {
for (J = 0; J < SAIDA; J++) {
int i = I + 1;
int j = J + 1;
int k = K + 1 ;
/* System.out.printf("Informe o peso entre o neuronio %d da %d a. camada oculta e o neuronio %d da camada de saida :", I + 1, K, J + 1);
System.out.printf("Informe W[%d][%d][%d]:", K + 1, I + 1, J + 1);
Scanner in = new Scanner(System.in);
W[K][I][J] = in.nextDouble();*/
W[K][I][J] = Double.parseDouble(JOptionPane.showInputDialog("Informe o peso entre o neuronio "+i+" da "+k+" a. camada oculta e o neuronio "+j+" da camada de saida :\n" +
"Informe W["+k+"]["+i+"]["+j+"]:"));
//scanf("%f", &W[K][I][J]);
}
}
for (I = 0; I < SAIDA; I++) {
int i = I + 1;
int j = J + 1;
int k = K + 1 ;
/* System.out.printf("Informe o bias do neuronio %d da camada de saida :", I + 1);
System.out.printf("Informe BIAS[%d][%d]:", K + 1, I + 1);
Scanner in = new Scanner(System.in);
BIAS[K][I] = in.nextDouble();*/
BIAS[K][I] = Double.parseDouble(JOptionPane.showInputDialog("Informe o bias do neuronio "+i+" da camada de saida :\n" +
"Informe BIAS["+k+"]["+i+"]:"));
//scanf("%f", &BIAS[K][I]);
}
} else //camadas ocultas
{
int k = K + 1 ;
// System.out.printf("%d a. CAMADA OCULTA e %d a. CAMADA OCULTA\n", K, K + 1);
JOptionPane.showMessageDialog(null, ""+K+" a. CAMADA OCULTA e "+k+" a. CAMADA OCULTA\n");
for (I = 0; I < OCULTA; I++) {
for (J = 0; J < OCULTA; J++) {
int i = I + 1;
int j = J + 1;
/* System.out.printf("Informe o peso entre o neuronio %d da %d a. camada oculta e o neuronio %d da %d a. camada oculta :", I + 1, K, J + 1, K + 1);
System.out.printf("Informe W[%d][%d][%d]:", K + 1, I + 1, J + 1);
Scanner in = new Scanner(System.in);
W[K][I][J] = in.nextDouble();*/
W[K][I][J] = Double.parseDouble(JOptionPane.showInputDialog("Informe o peso entre o neuronio "+i+" da "+K+" a. camada oculta e o neuronio "+j+" da "+k+" a. camada oculta :\n" +
"Informe W["+k+"]["+i+"]["+j+"]:"));
// scanf("%f", &W[K][I][J]);
}
}
for (I = 0; I < OCULTA; I++) {
int i = I + 1;
/* System.out.printf("Informe o bias do neuronio %d da %d camada oculta :", I + 1, K + 1);
System.out.printf("Informe BIAS[%d][%d]:", K + 1, I + 1);
Scanner in = new Scanner(System.in);
BIAS[K][I] = in.nextDouble();*/
BIAS[K][I] = Double.parseDouble(JOptionPane.showInputDialog("Informe o bias do neuronio "+i+" da "+k+" camada oculta :\n" +
"Informe BIAS["+k+"]["+i+"]:"));
// scanf("%f", &BIAS[K][I]);
}
}
}
/* W[0][0][0] = 0.7;
W[0][0][1] = -0.8;
W[0][1][0] = 0.5;
W[0][1][1] = -0.6;
W[1][0][0] = -0.3;
W[1][0][1] = 0.4;
W[1][1][0] = 0.5;
W[1][1][1] = -0.7;
W[2][0][0] = 0.8;
W[2][1][0] = -0.5;
BIAS[0][0] = 0.5;
BIAS[0][1] = -0.7;
BIAS[1][0] = 0.6;
BIAS[1][1] = -0.8;
BIAS[2][0] = 0.4;
System.out.printf("PESOS E BIAS PREENCHIDOS AUTOMATICAMENTE\n");*/
}
/* Término Função de Entrada de Bias e Pesos Iniciais*/
/* Função de Saída de Bias e Pesos Iniciais*/
static void SaidaBiasePesosIniciais() {
//Apresentação dos Pesos Iniciais e Bias
// System.out.printf("Pesos iniciais e Bias :\n");
JOptionPane.showMessageDialog(null,"Pesos iniciais e Bias :");
for (K = 0; K < NCAMOCULTA + 1; K++) {
if (K == 0) {
// System.out.printf("ENTRADA e 1 a. CAMADA OCULTA...");
JOptionPane.showMessageDialog(null,"ENTRADA e 1 a. CAMADA OCULTA...:");
for (I = 0; I < ENTRADA; I++) {
for (J = 0; J < OCULTA; J++) {
int i = I + 1;
int j = J + 1;
int k = K + 1 ;
// System.out.printf("Peso entre o neuronio %d da camada de entrada e o neuronio %d 1a. camada oculta = %f\n", I + 1, J + 1, W[K][I][J]);
JOptionPane.showMessageDialog(null,"Peso entre o neuronio "+i+" da camada de entrada e o neuronio "+j+" 1a. camada oculta = \n"+W[K][I][J]);
}
}
int i = I + 1;
int j = J + 1;
int k = K + 1 ;
//System.out.printf("W[%d][%d][%d] = %f\n", K + 1, I + 1, J + 1, W[K][I][J]);
JOptionPane.showMessageDialog(null,"W["+k+"]["+i+"]["+j+"] = "+W[K][I][J]);
for (I = 0; I < OCULTA; I++) //printf("Bias do neuronio %d da 1a. camada oculta = %f\n", I+1, K+1, BIAS[K][J]);
{
//System.out.printf("BIAS[%d][%d] = %f\n", K + 1, I + 1, BIAS[K][I]);
JOptionPane.showMessageDialog(null,"BIAS["+k+"]["+i+"] = "+BIAS[K][I]);
}
} else if (K == NCAMOCULTA) {
// System.out.printf("%d a. CAMADA OCULTA e SAIDA\n", K);
JOptionPane.showMessageDialog(null,""+K+"a. CAMADA OCULTA e SAIDA");
for (I = 0; I < OCULTA; I++) {
for (J = 0; J < SAIDA; J++) //printf("Peso entre o neuronio %d da %d a. camada oculta e o neuronio %d da camada de saida = %f\n", I+1, K, J+1, W[K][I][J]);
{
int i = I + 1;
int j = J + 1;
int k = K + 1 ;
// System.out.printf("W[%d][%d][%d] = %f\n", K + 1, I + 1, J + 1, W[K][I][J]);
JOptionPane.showMessageDialog(null,"W["+k+"]["+i+"]["+j+"] ="+W[K][I][J]);
}
}
for (I = 0; I < SAIDA; I++) //printf("Bias do neuronio %d da camada de saida = %f\n", I+1, BIAS[K][J]);
{
int i = I + 1;
int k = K + 1 ;
//System.out.printf("BIAS[%d][%d] = %f\n", K + 1, I + 1, BIAS[K][I]);
JOptionPane.showMessageDialog(null,"BIAS["+k+"]["+i+"] = "+BIAS[K][I]);
}
} else {
int k = K + 1 ;
//System.out.printf("%d a. CAMADA OCULTA e %d a. CAMADA OCULTA\n", K, K + 1);
JOptionPane.showMessageDialog(null,""+K+"a. CAMADA OCULTA e "+k+"a. CAMADA OCULTA");
for (I = 0; I < OCULTA; I++) {
int i = I + 1;
int j = J + 1;
// System.out.printf("Bias do neuronio %d da %d camada oculta = %f\n", I + 1, K, BIAS[K][I]);
JOptionPane.showMessageDialog(null,"Bias do neuronio "+i+" da "+K+" camada oculta = "+BIAS[K][I]);
for (J = 0; J < OCULTA; J++) //printf("Peso entre o neuronio %d da %d a. camada oculta e o neuronio %d da %d a. camada oculta = %f\n", I+1, K, J+1, K+1, W[K][I][J]);
{
//System.out.printf("W[%d][%d][%d] = %f\n", K + 1, I + 1, J + 1, W[K][I][J]);
JOptionPane.showMessageDialog(null,"W["+k+"]["+i+"]["+j+"] = "+W[K][I][J]);
}
}
for (I = 0; I < OCULTA; I++) //printf("Bias do neuronio %d da %d camada oculta = %f\n", I+1, K+1, BIAS[K][J]);
{
int i = I + 1;
//System.out.printf("BIAS[%d][%d] = %f\n", K + 1, I + 1, BIAS[K][I]);
JOptionPane.showMessageDialog(null,"BIAS["+k+"]["+i+"] = "+BIAS[K][I]);
}
}
}
}
/* Término Função de Saida de Bias e Pesos Iniciais*/
static void EntraEpocas() {
/* System.out.printf("Entre com o numero de epocas de treinamento:\n");
Scanner in = new Scanner(System.in);
EPOCAS = in.nextInt();*/
EPOCAS = Integer.parseInt(JOptionPane.showInputDialog("Entre com o numero de epocas de treinamento:"));
//scanf("%d", &EPOCAS);
// EPOCAS = 100;
// System.out.printf("NUMERO DE EPOCAS PREENCHIDOS AUTOMATICAMENTE\n");
}
static void PreencheVetorEntrada() {
//Preenchimento dos vetores de entrada
//System.out.printf("Entre com os vetores de exemplos de treinamento de entrada:\n");
JOptionPane.showMessageDialog(null,"Entre com os vetores de exemplos de treinamento de entrada:");
for (I = 0; I < EXEMPLOS; I++) {
int i = I+1;
// System.out.printf("Informe o numero binario que representa o %d o. elemento de treinamento\n", I + 1);
JOptionPane.showMessageDialog(null,"Informe o numero binario que representa o "+i+" o. elemento de treinamento");
for (J = 0; J < ENTRADA; J++) {
int j = J +1;
/* System.out.printf("Informe o %d o. numero:", J + 1);
Scanner in = new Scanner(System.in);
X[I][J] = in.nextDouble();*/
X[I][J] = Double.parseDouble(JOptionPane.showInputDialog("Informe o "+j+"o. numero:"));
// scanf("%f", &X[I][J]);
}
}
/* X[0][0] = 1;
X[0][1] = 1;*/
// System.out.printf("VETORES DE ENTRADA PREENCHIDOS AUTOMATICAMENTE\n");
}
static void PreencheVetorSaida() {
//Preenchimento dos vetores de saida
// System.out.printf("Entre com os vetores de exemplos de treinamento de saida:\n");
JOptionPane.showMessageDialog(null,"Entre com os vetores de exemplos de treinamento de saida:\n");
for (I = 0; I < EXEMPLOS; I++) {
int i = I+1;
// System.out.printf("Preencha os valores que representam as saidas esperadas do %d o.elemento\n", I + 1);
JOptionPane.showMessageDialog(null,"Preencha os valores que representam as saidas esperadas do "+i+" o.elemento\n");
for (J = 0; J < SAIDA; J++) {
int j = I+1;
/*System.out.printf("Informe o %d o. numero:", J + 1);
Scanner in = new Scanner(System.in);
D[I][J] = in.nextDouble();*/
D[I][J] = Double.parseDouble(JOptionPane.showInputDialog("Informe o "+j+" o. numero:\n"));
//scanf("%f", &D[I][J]);
}
}
// D[0][0] = 0;
// System.out.printf("VETORES DE SAIDA PREENCHIDOS AUTOMATICAMENTE\n");
}
static void PreencheOutrasConfiguracoes() {
//Outras configurações
/* System.out.printf("Entre com o valor da taxa de aprendizagem:\n");
Scanner in = new Scanner(System.in);
ETA = in.nextDouble();*/
//scanf("%f", &ETA);
ETA = Double.parseDouble(JOptionPane.showInputDialog("Entre com o valor da taxa de aprendizagem:\n"));
/* System.out.printf("Entre com o erro máximo desejado:\n");
Scanner in2 = new Scanner(System.in);
ERRODES = in2.nextDouble();
//scanf("%f", &ERRODES);*/
ERRODES = Double.parseDouble(JOptionPane.showInputDialog("Entre com o erro máximo desejado:\n"));
/* System.out.printf("Entre com funcao desejada[(1) degrau, (2)sigmoide]:\n");
Scanner in3 = new Scanner(System.in);
FUNCAO = in.nextInt();*/
// scanf("%d", &FUNCAO);
FUNCAO = Integer.parseInt(JOptionPane.showInputDialog("Entre com funcao desejada[(1) degrau, (2)sigmoide]:\n"));
/* ETA = 0.8;
ERRODES = -1;
FUNCAO = 2; */
}
}
a exception ocorre neste trecho:
for (K = 1; K < NCAMOCULTA + 1; K++) {
for (I = 0; I < SAIDA; I++) {
ERRO[K][I] = D[B][I] - PHI[K][I];
// System.out.printf("DESEJADO[%d][%d] = %f\n", B + 1, I + 1, D[B][I]);
// System.out.printf("ERRO[%d][%d] = %f\n", K + 1, I + 1, ERRO[K][I]);
int k = K +1;
int i = I + 1;
int b = B + 1;
JOptionPane.showMessageDialog(null, "DESEJADO["+b+"]["+i+"] =\n" + D[B][I]);
JOptionPane.showMessageDialog(null, "ERRO["+k+"]["+i+"] = %d\n" + ERRO[K][I]);
}
ERROINST = 0;
for (I = 0; I < SAIDA; I++) {
ERROINST = ERROINST + ERRO[K][I] * ERRO[K][I] / 2;
}
ERROMG = (ERROMG * (A * EXEMPLOS + B) + ERROINST) / (A * EXEMPLOS + (B + 1));
//System.out.printf("ERROMG = %f\n", ERROMG);
if (ERROMG < ERRODES) {
break;
}
/* Fim Cálculo do Erros */
} // fim do K
na terceira linha, eu sei que esse erro ocorre quando manipulamos um elemento que está fora do intervalo do array,
mas não estou conseguindo enxergar isso na aplicação :? , se alguem poder ajudar, fico grato…