I have a genetic algorithm job where an agent has to walk in an environment and every time he leaves, he gains negative score. The paths that this agent traverses are generated randomly, so I made an arraylist that stores these several arrays, since the program will be restarted several times.
Now I need an arraylist that stores out of the main class the arrays / paths that did not leave the environment and from there classify and reproduce the best ones.
Here is the two agent code:
Random posicoes = new Random(); // tamanho do vetor com as posições do agente
int aux = posicoes.nextInt(10)+4;
String [] agente_3= new String[aux];
String [] agente_4= new String[aux];
String [] direcoes ={"N","L","S","O"};
System.out.print("AGENTE_03: ");
for (int i = 0; i < agente_3.length; i++) {
int indiceDirecao = posicoes.nextInt(direcoes.length);
String dir = direcoes[indiceDirecao];
agente_3[i] = dir;
System.out.printf("[%s]",agente_3[i]);
}
System.out.println("");
//***********************************************************
System.out.print("AGENTE_04: ");
for (int i = 0; i < agente_4.length; i++) {
int indiceDirecao = posicoes.nextInt(direcoes.length);
String dir = direcoes[indiceDirecao];
agente_4[i] = dir;
System.out.printf("[%s]", agente_4[i]);
}
System.out.println("\n");
int Linha3 = 0;
int Coluna3 = 0;
int Linha4 = 0;
int Coluna4 = 0;
//*********************************AGENTE 3 ***********************************************
if(agente_3[i] == "N"){ // N
Linha3 = Linha3 - 1;
Coluna3 = Coluna3;
}else if(agente_3[i] == "S"){ // S
Linha3 = Linha3 + 1;
Coluna3 = Coluna3;
}else if(agente_3[i] == "L"){ // L
Coluna3 = Coluna3 + 1;
Linha3 = Linha3;
}else if(agente_3[i] == "O"){ // O
Coluna3 = Coluna3 - 1;
Linha3 = Linha3;
}
//*********************************AGENTE 4 ***********************************************
if(agente_4[i] == "N"){ // N
Linha4 = Linha4 - 1;
Coluna4 = Coluna4;
}else if(agente_4[i] == "S"){ // S
Linha4 = Linha1 + 1;
Coluna4 = Coluna4;
}else if(agente_4[i] == "L"){ // L
Coluna4 = Coluna4 + 1;
Linha4 = Linha4;
}else if(agente_4[i] == "O"){ // O
Coluna4 = Coluna4 - 1;
Linha4 = Linha4;
}
System.out.println("");
if((Linha3 >= 0 && Linha3 < 4 ) && (Coluna3>=0 && Coluna3 < 4)){
System.out.print("\n\tAGENTE_03 DENTRO AMBIENTE\n");
System.out.printf("Linha:%d Coluna:%d", Linha3, Coluna3);
System.out.println("");
///////////////**************** guarda o agente q n saiu do ambiente **************///////////
arrayList.add(Arrays.toString(agente_3));
/* for(String agente : arrayList){
System.out.println(agente);
}*/
int r3=0;
r3++;
System.out.println(" R: " + r3);
List.add(r3);
}else{
System.out.printf("\n\tAGENTE_03 FORA DO AMBIENTE\n");
System.out.printf("Linha:[%d] Coluna:[%d]", Linha3, Coluna3);
System.out.println("");
int r3=0;
r3--;
System.out.println(" R: " + r3);
List.add(r3);
}
System.out.println("");
if((Linha4 >= 0 && Linha4 < 4 ) && (Coluna4>=0 && Coluna4 < 4)){
System.out.print("\n\tAGENTE_04 DENTRO AMBIENTE\n");
System.out.printf("Linha:%d Coluna:%d", Linha4, Coluna4);
System.out.println("");
///////////////**************** guarda o agente q n saiu do ambiente **************///////////
arrayList.add(Arrays.toString(agente_4));
/* for(String agente : arrayList){
System.out.println( agente);
}*/
int r4=0;
r4++;
System.out.println(" R: " + r4);
List.add(r4);
}else{
System.out.printf("\n\tAGENTE_04 FORA DO AMBIENTE\n");
System.out.printf("Linha:[%d] Coluna:[%d]", Linha4, Coluna4);
System.out.println("");
int r4=0;
r4--;
System.out.println(" R: " + r4);
List.add(r4);
}
System.out.println("");
Collections.sort(List, Collections.reverseOrder());
for(int rank : List){
System.out.print( rank);
}
System.out.println();
System.out.println();
List listaCopia = new ArrayList(arrayList);
for (Object i : listaCopia) {
System.out.println(i);
}
System.out.println();
}
}
How to store multiple arrays even after restarting the program?