-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMain.java
More file actions
41 lines (35 loc) · 1.57 KB
/
Copy pathMain.java
File metadata and controls
41 lines (35 loc) · 1.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import java.util.ArrayList;
import java.util.List;
import Interfaces.IIndividuo;
import Models.Factory;
public class Main {
public static void main(String[] args) {
Factory factory = new Factory();
int tamanho = 20;
int totalGeracoes = 1000;
int numeroGeracao = 0;
List<IIndividuo> pop = factory.createPopIni(tamanho, numeroGeracao);
List<List<IIndividuo>> fronteiras;
do {
factory.makeChildren(pop, numeroGeracao);
List<IIndividuo> nextPop = new ArrayList<>();
fronteiras = NSGAII.fnds(pop);
int i;
for (i = 0; i < fronteiras.size(); i++) {
if (nextPop.size() + fronteiras.get(i).size() > tamanho) break;
nextPop.addAll(fronteiras.get(i));
}
NSGAII.crowdingDistance(fronteiras.get(i));
Utils.sort(fronteiras.get(i), "distance");
nextPop.addAll(fronteiras.get(i).subList((fronteiras.get(i).size() - (tamanho - nextPop.size())), fronteiras.get(i).size()));
pop = nextPop;
System.out.println("Geracao: " + numeroGeracao + " - Distancia: " + pop.get(3).getDistance());
// Plota nas gerações desejadas
if (numeroGeracao == 0 || numeroGeracao == 9 || numeroGeracao == 49 || numeroGeracao == 199 || numeroGeracao == 999) {
PlotUtils.plotObjetivos(pop, numeroGeracao + 1); // +1 pois começa do 0
}
numeroGeracao++;
}while(numeroGeracao < totalGeracoes);
NSGAII.imprimirFronteiras(fronteiras);
}
}