TProcura
Biblioteca em C++ para testes paramétricos de algoritmos, e coleção de algoritmos de procura e otimização
Loading...
Searching...
No Matches
Teste 8 Damas - Codificação por Permutação

| TesteTVector | Aspirador 1 | Aspirador 2 | Puzzle 8 | 8 Damas | Partição | 8 Damas CI | 8 Damas CP | Partição CB |

Execução de exemplo com base no problema das 8 damas, com codificação por permutação. Pode acompanhar o teste executando as ações localmente.

No Visual Studio, selecione o projeto TProcuraMelhorativa, e execute-o. No Linux na pasta .../TProcura/Melhorativa/Teste execute make seguido de ./bin/Release/TProcuraMelhorativa

Sumário

┌─ Teste TProcuraMelhorativa ──┐
│ 1 - 8 Damas (Inteira)        │
│ 2 - 8 Damas (Permutacao)     │
│ 3 - Partição (Binária)       │
└──────────────────────────────┘
Opção: 2

Ação 1 - Ver instâncias

Vamos entrar no problema 8 Damas Permutação, insira: 2.

8 Damas (Permutação)
┌─ ⚙ Parâmetros ──────────────────────────────────────────────────────
│ P1(ALGORITMO): Algoritmo Evolutivo | P2(NIVEL_DEBUG): NADA | P3(SEMENTE): 1
│ P4(LIMITE_TEMPO): 10 | P5(LIMITE_ITERACOES): 1000000 | P6(POPULACAO): 20
│ P7(PROB_CRUZAR): 100 | P8(PROB_MUTAR): 50 | P9(SELECAO): Roleta | P10(PRESSAO): 150
│ P13(SOBREVIVENCIA): Idade | P14(PERC_DESCENDENTES): 100 | P16(ELITISMO): 1
│ P17(IMIGRANTES): 1 | P18(DIVERSIDADE): Limpeza | P19(DIST_MINIMA): 0
│ P20(TIPO_CRUZAR): Order | P21(TIPO_MUTAR): 0 | P22(TIPO_VIZINHO): inserir
│ P23(LIMITE_VIZINHOS): 0 | P24(TIPO_DISTANCIA): Hamming
└──────────────────────────────────────────────────────────────────────
::  ::  ::  ::♛ 
  ::  ::♛ ::  ::
::  ::♛ ::  ::  
♛ ::  ::  ::  ::
::  ♛   ::  ::  
  ::  ::  ♛   ::
::♛ ::  ::  ::  
  ::  ::  ::♛ ::
┌─ ☰ Menu ─────────┬────────────────┬─────────────────────┬──────────────┐
│ 1 📄   Instância  │ 2 🔍  Explorar │ 3 ⚙   Parâmetros    │ 4 ✔  Solução │
│ 5 ⚖   Indicadores │ 6 ►   Executar │ 7 🛠️  Configurações │ 8 🧪  Teste  │
└───────────────────┴────────────────┴─────────────────────┴──────────────┘
Opção: 

Vamos seguir o exemplo das 8 damas, codificação inteira, e alterar para uma instância mais pequena, de tamanho 4. Insira: 1; 4.

Opção: 1
┌─ 📄 Instância ───────────────────────────────────────────────────────
│ ID atual: 8  Intervalo: [4–40]  
│ Prefixo atual: 'instancia_' 
└──────────────────────────────────────────────────────────────────────
Novo ID (ENTER mantém) ou novo prefixo (texto): 4
8 Damas (Permutação)
...
♛   ::  
  ::  ♛ 
::♛ ::  
  ::♛ ::
...
Opção: 

A solução inicial usada na codificação inteira (onde podem ocorrer duas damas na mesma coluna) não tem representação na codificação por permutação, em que apenas se permutam posições sem repetições

Ação 2 - Resolver manualmente

Vamos resolver a instância manualmente. Insira: 2

Opção: 2
 │ 🏆  ⏱  💰 g:0
─┴───────────────────
::  ♛   
♛ ::  ::
::  ::♛ 
  ♛   ::
─┬───────────────────
 ├─┬─ 📆 0 ⏱  ──── 💰 g0-6
 │ ├───── 🧍🧑‍🤝‍🧑🚶‍ ───── 
 │ │ 🧍 1   1 2 3 0  💰 g:4
 │ │ 🧍 2   3 2 1 0  💰 g:6
 │ │ 🧍 3   2 0 3 1  💰 g:0
 │ ├───── 📏  ───── 
 │ │  🧍  1    2    3    
 │ │ ────┼────┼────┼────┼
 │ │ 1   │    │   2│   3│
 │ │ 2   │   2│    │   4│
 │ │ 3   │   3│   4│    │
 │ │ ────┴────┴────┴────┴
 │ └─■ ⚡ Operação (1 🦠 Mutar, 2 🧬 Cruzar, 3 🧍🧍Vizinhos):

Ao gerar a população inicial foi encontrada de imediato uma solução de custo 0; por isso não foi necessário gerar uma população de tamanho 4.

Assim, vamos sair e colocar uma dimensão maior para poder ver os operadores. Insira: 0; 1; 6; 2.

 │ └─■ ⚡ Operação (1 🦠 Mutar, 2 🧬 Cruzar, 3 🧍🧍Vizinhos): 0
 └──────────────── 
8 Damas (Permutação)
...
::  ♛   
♛ ::  ::
::  ::♛ 
  ♛   ::
...
Opção: 1
┌─ 📄 Instância ───────────────────────────────────────────────────────
│ ID atual: 4  Intervalo: [4–40]  
│ Prefixo atual: 'instancia_' 
└──────────────────────────────────────────────────────────────────────
Novo ID (ENTER mantém) ou novo prefixo (texto): 6
8 Damas (Permutação)
...
::  ::  ♛   
♛ ::  ::  ::
::  ::  ::♛ 
  ::  ♛   ::
::♛ ::  ::  
  ::♛ ::  ::
...
Opção: 2
 ├─┬─ 📆 0 ⏱  ──── 💰 g2-4
 │ ├───── 🧍🧑‍🤝‍🧑🚶‍ ───── 
 │ │ 🧍 1   2 1 4 3 5 0  💰 g:4
 │ │ 🧍 2   0 2 4 5 3 1  💰 g:2
 │ │ 🧍 3   5 0 2 3 1 4  💰 g:3
 │ │ 🧍 4   0 4 5 2 3 1  💰 g:4
 │ ├───── 📏  ───── 
 │ │  🧍  1    2    3    4    
 │ │ ────┼────┼────┼────┼────┼
 │ │ 1   │    │   5│   5│   6│
 │ │ 2   │   5│    │   6│   3│
 │ │ 3   │   5│   6│    │   6│
 │ │ 4   │   6│   3│   6│    │
 │ │ ────┴────┴────┴────┴────┴
 │ └─■ ⚡ Operação (1 🦠 Mutar, 2 🧬 Cruzar, 3 🧍🧍Vizinhos):

Agora sim, temos uma população de 4 elementos com custos de 2 a 4. Vamos começar por testar o operador de mutação. Insira: 1; 1.

│ └─■ ⚡ Operação (1 🦠 Mutar, 2 🧬 Cruzar, 3 🧍🧍Vizinhos): 1
 │ ┌───── 🦠  ───── 
 │ │ 🧍  [1-4]: 1
 │ │ 🧍   2 1 4 3 5 0  mutar vizinho inserir (0,0)
 │ │ 🦠   2 1 4 3 5 0 
 │ │ ::  ♛   ::  
 │ │   ♛   ::  ::
 │ │ ::  ::  ♛   
 │ │   ::  ♛   ::
 │ │ ::  ::  ::♛ 
 │ │ ♛ ::  ::  ::
 │ └────────────── 
 ├─┬─ 📆 1 ⏱  ──── 💰 g2-4
 │ ├───── 🧍🧑‍🤝‍🧑🚶‍ ───── 
 │ │ 🧍 1   2 1 4 3 5 0  💰 g:4
 │ │ 🧍 2   0 2 4 5 3 1  💰 g:2
 │ │ 🧍 3   5 0 2 3 1 4  💰 g:3
 │ │ 🧍 4   0 4 5 2 3 1  💰 g:4
 │ ├───── 📏  ───── 
 │ │  🧍  1    2    3    4    
 │ │ ────┼────┼────┼────┼────┼
 │ │ 1   │    │   5│   5│   6│
 │ │ 2   │   5│    │   6│   3│
 │ │ 3   │   5│   6│    │   6│
 │ │ 4   │   6│   3│   6│    │
 │ │ ────┴────┴────┴────┴────┴
 │ └─■ ⚡ Operação (1 🦠 Mutar, 2 🧬 Cruzar, 3 🧍🧍Vizinhos):

Aqui o operador de mutação é uma inserção: o elemento removido acabou por ser inserido na mesma posição (0), pelo que a permutação não sofreu alterações. Vamos repetir. Insira: 1; 1.

 │ └─■ ⚡ Operação (1 🦠 Mutar, 2 🧬 Cruzar, 3 🧍🧍Vizinhos): 1
 │ ┌───── 🦠  ───── 
 │ │ 🧍  [1-4]: 1
 │ │ 🧍   2 1 4 3 5 0  mutar vizinho inserir (1,3)
 │ │ 🦠   2 4 3 1 5 0 
 │ │ ::  ♛   ::  
 │ │   ::  ::♛ ::
 │ │ ::  ::♛ ::  
 │ │   ♛   ::  ::
 │ │ ::  ::  ::♛ 
 │ │ ♛ ::  ::  ::
 │ └────────────── 
 ├─┬─ 📆 2 ⏱  ──── 💰 g2-4
 │ ├───── 🧍🧑‍🤝‍🧑🚶‍ ───── 
 │ │ 🧍 1   2 4 3 1 5 0  💰 g:4
 │ │ 🧍 2   0 2 4 5 3 1  💰 g:2
 │ │ 🧍 3   5 0 2 3 1 4  💰 g:3
 │ │ 🧍 4   0 4 5 2 3 1  💰 g:4
 │ ├───── 📏  ───── 
 │ │  🧍  1    2    3    4    
 │ │ ────┼────┼────┼────┼────┼
 │ │ 1   │    │   6│   6│   5│
 │ │ 2   │   6│    │   6│   3│
 │ │ 3   │   6│   6│    │   6│
 │ │ 4   │   5│   3│   6│    │
 │ │ ────┴────┴────┴────┴────┴
 │ └─■ ⚡ Operação (1 🦠 Mutar, 2 🧬 Cruzar, 3 🧍🧍Vizinhos):

Tal como na representação inteira, há vários operadores de mutação, sendo o mesmo verdade para os restantes operadores de cruzamento e vizinhança.

Desta vez inserimos o elemento na posição 1 (segundo na ordem), na posição 3 (quarto na ordem). Todos os outros elementos ficaram iguais. Em termos de custos ficou igual, continuam 4 pares de damas a atacarem-se, embora sejam pares distintos.

Vamos agora ao operador de cruzamento, vamos cruzar os dois melhores elementos. Insira: 2; 2; 3; 4.

 │ └─■ ⚡ Operação (1 🦠 Mutar, 2 🧬 Cruzar, 3 🧍🧍Vizinhos): 2
 │ ┌───── 🧬  ───── 
 │ │ 🧍 Pai [1-4]: 2
 │ │ 🧍 Mãe [1-4]: 3
 │ │ 🧍 Filho [1-4]: 4
 │ │ 
 │ │ 🧍 Pai   0 2 4 5 3 1 
 │ │ 🧍 Mãe   5 0 2 3 1 4  cruzamento OX 4 - 5
 │ │ 🧬 Filho 5 0 2 4 3 1 
 │ │ ::  ::  ::♛ 
 │ │ ♛ ::  ::  ::
 │ │ ::  ♛   ::  
 │ │   ::  ::♛ ::
 │ │ ::  ::♛ ::  
 │ │   ♛   ::  ::
 │ └────────────── 
 ├─┬─ 📆 3 ⏱  ──── 💰 g2-4
 │ ├───── 🧍🧑‍🤝‍🧑🚶‍ ───── 
 │ │ 🧍 1   2 4 3 1 5 0  💰 g:4
 │ │ 🧍 2   0 2 4 5 3 1  💰 g:2
 │ │ 🧍 3   5 0 2 3 1 4  💰 g:3
 │ │ 🧍 4   5 0 2 4 3 1  💰 g:2
 │ ├───── 📏  ───── 
 │ │  🧍  1    2    3    4    
 │ │ ────┼────┼────┼────┼────┼
 │ │ 1   │    │   6│   6│   6│
 │ │ 2   │   6│    │   6│   4│
 │ │ 3   │   6│   6│    │   3│
 │ │ 4   │   6│   4│   3│    │
 │ │ ────┴────┴────┴────┴────┴
 │ └─■ ⚡ Operação (1 🦠 Mutar, 2 🧬 Cruzar, 3 🧍🧍Vizinhos):

Neste caso o filho herdou os três primeiros elementos da mãe; os restantes elementos mantiveram a ordem em que aparecem no pai. Há apenas 2 pares de damas que se atacam, tal como na mãe.

Podemos agora testar o operador de vizinhança, tendo como ponto de partida o estado 4 com custo 2. Insira: 3; 4.

 │ └─■ ⚡ Operação (1 🦠 Mutar, 2 🧬 Cruzar, 3 🧍🧍Vizinhos): 3
 │ ┌───── 🧍🧍 ───── 
 │ │ 🧍 [1-4]: 4
 │ │ 🧍   5 0 2 4 3 1  vizinhança inserir (limite 0)
 │ ├───── Vizinhos ───── 
 │ │ 🧍 1   0 5 2 4 3 1  💰 g:3
 │ │ 🧍 2   0 2 5 4 3 1  💰 g:4
 │ │ 🧍 3   0 2 4 5 3 1  💰 g:2
 │ │ 🧍 4   0 2 4 3 5 1  💰 g:5
 │ │ 🧍 5   0 2 4 3 1 5  💰 g:4
 │ │ 🧍 6   0 5 2 4 3 1  💰 g:3
 │ │ 🧍 7   5 2 0 4 3 1  💰 g:2
 │ │ 🧍 8   5 2 4 0 3 1  💰 g:2
 │ │ 🧍 9   5 2 4 3 0 1  💰 g:4
 │ │ 🧍 10  5 2 4 3 1 0  💰 g:4
 │ │ 🧍 11  2 5 0 4 3 1  💰 g:3
 │ │ 🧍 12  5 2 0 4 3 1  💰 g:2
 │ │ 🧍 13  5 0 4 2 3 1  💰 g:5
 │ │ 🧍 14  5 0 4 3 2 1  💰 g:6
 │ │ 🧍 15  5 0 4 3 1 2  💰 g:3
 │ │ 🧍 16  4 5 0 2 3 1  💰 g:3
 │ │ 🧍 17  5 4 0 2 3 1  💰 g:4
 │ │ 🧍 18  5 0 4 2 3 1  💰 g:5
 │ │ 🧍 19  5 0 2 3 4 1  💰 g:4
 │ │ 🧍 20  5 0 2 3 1 4  💰 g:3
 │ │ 🧍 21  3 5 0 2 4 1  💰 g:1
 │ │ 🧍 22  5 3 0 2 4 1  💰 g:1
 │ │ 🧍 23  5 0 3 2 4 1  💰 g:4
 │ │ 🧍 24  5 0 2 3 4 1  💰 g:4
 │ │ 🧍 25  5 0 2 4 1 3  💰 g:1
 │ │ 🧍 26  1 5 0 2 4 3  💰 g:2
 │ │ 🧍 27  5 1 0 2 4 3  💰 g:5
 │ │ 🧍 28  5 0 1 2 4 3  💰 g:5
 │ │ 🧍 29  5 0 2 1 4 3  💰 g:4
 │ │ 🧍 30  5 0 2 4 1 3  💰 g:1
 │ │ 🧍 [1-30]:

Há 30 vizinhos, existindo vários com custo 1. Vamos escolher um deles e repetir o processo. Insira: 30; 3; 4;

 │ │ 🧍 [1-30]: 30
 │ │ 
 │ 🏆  ⏱  💰 g:1
─┴───────────────────
 │ │ ::  ::  ::♛ 
 │ │ ♛ ::  ::  ::
 │ │ ::  ♛   ::  
 │ │   ::  ::♛ ::
 │ │ ::♛ ::  ::  
 │ │   ::  ♛   ::
─┬───────────────────
 │ └────────────── 
 ├─┬─ 📆 4 ⏱  ──── 💰 g1-4
 │ ├───── 🧍🧑‍🤝‍🧑🚶‍ ───── 
 │ │ 🧍 1   2 4 3 1 5 0  💰 g:4
 │ │ 🧍 2   0 2 4 5 3 1  💰 g:2
 │ │ 🧍 3   5 0 2 3 1 4  💰 g:3
 │ │ 🧍 4   5 0 2 4 1 3  💰 g:1
 │ ├───── 📏  ───── 
 │ │  🧍  1    2    3    4    
 │ │ ────┼────┼────┼────┼────┼
 │ │ 1   │    │   6│   6│   6│
 │ │ 2   │   6│    │   6│   6│
 │ │ 3   │   6│   6│    │   2│
 │ │ 4   │   6│   6│   2│    │
 │ │ ────┴────┴────┴────┴────┴
 │ └─■ ⚡ Operação (1 🦠 Mutar, 2 🧬 Cruzar, 3 🧍🧍Vizinhos): 3
 │ ┌───── 🧍🧍 ───── 
 │ │ 🧍 [1-4]: 4
 │ │ 🧍   5 0 2 4 1 3  vizinhança inserir (limite 0)
 │ ├───── Vizinhos ───── 
 │ │ 🧍 1   0 5 2 4 1 3  💰 g:1
 │ │ 🧍 2   0 2 5 4 1 3  💰 g:2
 │ │ 🧍 3   0 2 4 5 1 3  💰 g:2
 │ │ 🧍 4   0 2 4 1 5 3  💰 g:2
 │ │ 🧍 5   0 2 4 1 3 5  💰 g:1
 │ │ 🧍 6   0 5 2 4 1 3  💰 g:1
 │ │ 🧍 7   5 2 0 4 1 3  💰 g:3
 │ │ 🧍 8   5 2 4 0 1 3  💰 g:3
 │ │ 🧍 9   5 2 4 1 0 3  💰 g:2
 │ │ 🧍 10  5 2 4 1 3 0  💰 g:1
 │ │ 🧍 11  2 5 0 4 1 3  💰 g:2
 │ │ 🧍 12  5 2 0 4 1 3  💰 g:3
 │ │ 🧍 13  5 0 4 2 1 3  💰 g:4
 │ │ 🧍 14  5 0 4 1 2 3  💰 g:4
 │ │ 🧍 15  5 0 4 1 3 2  💰 g:2
 │ │ 🧍 16  4 5 0 2 1 3  💰 g:3
 │ │ 🧍 17  5 4 0 2 1 3  💰 g:7
 │ │ 🧍 18  5 0 4 2 1 3  💰 g:4
 │ │ 🧍 19  5 0 2 1 4 3  💰 g:4
 │ │ 🧍 20  5 0 2 1 3 4  💰 g:4
 │ │ 🧍 21  1 5 0 2 4 3  💰 g:2
 │ │ 🧍 22  5 1 0 2 4 3  💰 g:5
 │ │ 🧍 23  5 0 1 2 4 3  💰 g:5
 │ │ 🧍 24  5 0 2 1 4 3  💰 g:4
 │ │ 🧍 25  5 0 2 4 3 1  💰 g:2
 │ │ 🧍 26  3 5 0 2 4 1  💰 g:1
 │ │ 🧍 27  5 3 0 2 4 1  💰 g:1
 │ │ 🧍 28  5 0 3 2 4 1  💰 g:4
 │ │ 🧍 29  5 0 2 3 4 1  💰 g:4
 │ │ 🧍 30  5 0 2 4 3 1  💰 g:2
 │ │ 🧍 [1-30]: 

Neste caso temos novamente vários vizinhos de custo 1, mas nenhum de custo 0. Vamos escolher o primeiro e terminar. Insira: 1; 0.

 │ │ 🧍 [1-30]: 1
 │ │ 
 │ │ ♛   ::  ::  
 │ │   ::  ::  ♛ 
 │ │ ::  ♛   ::  
 │ │   ::  ::♛ ::
 │ │ ::♛ ::  ::  
 │ │   ::  ♛   ::
 │ └────────────── 
 ├─┬─ 📆 5 ⏱  ──── 💰 g1-4
 │ ├───── 🧍🧑‍🤝‍🧑🚶‍ ───── 
 │ │ 🧍 1   2 4 3 1 5 0  💰 g:4
 │ │ 🧍 2   0 2 4 5 3 1  💰 g:2
 │ │ 🧍 3   5 0 2 3 1 4  💰 g:3
 │ │ 🧍 4   0 5 2 4 1 3  💰 g:1
 │ ├───── 📏  ───── 
 │ │  🧍  1    2    3    4    
 │ │ ────┼────┼────┼────┼────┼
 │ │ 1   │    │   6│   6│   6│
 │ │ 2   │   6│    │   6│   5│
 │ │ 3   │   6│   6│    │   4│
 │ │ 4   │   6│   5│   4│    │
 │ │ ────┴────┴────┴────┴────┴
 │ └─■ ⚡ Operação (1 🦠 Mutar, 2 🧬 Cruzar, 3 🧍🧍Vizinhos): 0
 └──────────────── 
8 Damas (Permutação)
...
::  ::  ::♛ 
♛ ::  ::  ::
::  ♛   ::  
  ::  ::♛ ::
::♛ ::  ::  
  ::  ♛   ::
...
Opção: 

Ação 3 - Algoritmos evolutivos

Vamos agora ver os algoritmos evolutivos nos diferentes níveis de debug, para esta instância de tamanho 6.

Insira: 1; 6; 3; 2; 1; ENTER;6.

Opção: 6
═╤═ ►  Execução iniciada ═══.
 │ 🏆  ⏱  💰 g:1
─┴───────────────────
♛   ::  ::  
  ::  ::  ♛ 
::  ::♛ ::  
  ♛   ::  ::
::  ::  ♛   
  ::♛ ::  ::
─┬───────────────────
 │ 🏆  ⏱  💰 g:0
─┴───────────────────
::  ::♛ ::  
♛ ::  ::  ::
::  ::  ♛   
  ♛   ::  ::
::  ::  ::♛ 
  ::♛ ::  ::
─┬───────────────────
 ├─ Parâmetros ─ P1=1 P2=1 P3=1 P4=10 P5=1000000 P6=20 P7=100 P8=50 P9=1 P10=150 P13=1
 ├─ ⚙   ─ P14=100 P16=1 P17=1 P18=3 P19=0 P20=3 P21=0 P22=1 P23=0 P24=1
═╧═ 🏁  Execução terminada ⏱    ═══
8 Damas (Permutação)
┌─ ⚙ Parâmetros ──────────────────────────────────────────────────────
│ P1(ALGORITMO): Algoritmo Evolutivo | P2(NIVEL_DEBUG): ATIVIDADE | P3(SEMENTE): 1
│ P4(LIMITE_TEMPO): 10 | P5(LIMITE_ITERACOES): 1000000 | P6(POPULACAO): 20
│ P7(PROB_CRUZAR): 100 | P8(PROB_MUTAR): 50 | P9(SELECAO): Roleta | P10(PRESSAO): 150
│ P13(SOBREVIVENCIA): Idade | P14(PERC_DESCENDENTES): 100 | P16(ELITISMO): 1
│ P17(IMIGRANTES): 1 | P18(DIVERSIDADE): Limpeza | P19(DIST_MINIMA): 0
│ P20(TIPO_CRUZAR): Order | P21(TIPO_MUTAR): 0 | P22(TIPO_VIZINHO): inserir
│ P23(LIMITE_VIZINHOS): 0 | P24(TIPO_DISTANCIA): Hamming
└──────────────────────────────────────────────────────────────────────
::  ::♛ ::  
♛ ::  ::  ::
::  ::  ♛   
  ♛   ::  ::
::  ::  ::♛ 
  ::♛ ::  ::
┌─ ⚖ Indicadores ─────────────────────────────────────────────────────
│ I1(Resultado): 0 | I2(Tempo(ms)): 0 | I3(Iterações): 169 | I4(Épocas): 7 | 
│ I5(Gerações): 174
└──────────────────────────────────────────────────────────────────────
...
Opção: 

Esta execução sabemos que há 7 épocas, pelo que este exemplo é bom para ser visto com maior detalhe. Vamos passar para o modo de detalhe seguinte. Insira: 1; 6; 3; 2; 2; ENTER;6.

Opção: 6
═╤═ ►  Execução iniciada ═══
 │ 🏆  ⏱  💰 g:1
─┴───────────────────
♛   ::  ::  
  ::  ::  ♛ 
::  ::♛ ::  
  ♛   ::  ::
::  ::  ♛   
  ::♛ ::  ::
─┬───────────────────
 ├─── 📆 0 ⏱  ──── 💰 g1-8
 ├─── 📆 1 ⏱  ──── 💰 g1-6
 ├─── 📆 2 ⏱  ──── 💰 g1-9
 ├─── 📆 3 ⏱  ──── 💰 g1-9
 ├─── 📆 4 ⏱  ──── 💰 g1-8
 ├─── 📆 5 ⏱  ──── 💰 g1-7
 ├─── 📆 6 ⏱  ──── 💰 g1-11
 │ 🏆  ⏱  💰 g:0
─┴───────────────────
::  ::♛ ::  
♛ ::  ::  ::
::  ::  ♛   
  ♛   ::  ::
::  ::  ::♛ 
  ::♛ ::  ::
─┬───────────────────
 ├─ Parâmetros ─ P1=1 P2=2 P3=1 P4=10 P5=1000000 P6=20 P7=100 P8=50 P9=1 P10=150 P13=1
 ├─ ⚙   ─ P14=100 P16=1 P17=1 P18=3 P19=0 P20=3 P21=0 P22=1 P23=0 P24=1
═╧═ 🏁  Execução terminada ⏱    ═══
8 Damas (Permutação)
┌─ ⚙ Parâmetros ──────────────────────────────────────────────────────
│ P1(ALGORITMO): Algoritmo Evolutivo | P2(NIVEL_DEBUG): PASSOS | P3(SEMENTE): 1
│ P4(LIMITE_TEMPO): 10 | P5(LIMITE_ITERACOES): 1000000 | P6(POPULACAO): 20
│ P7(PROB_CRUZAR): 100 | P8(PROB_MUTAR): 50 | P9(SELECAO): Roleta | P10(PRESSAO): 150
│ P13(SOBREVIVENCIA): Idade | P14(PERC_DESCENDENTES): 100 | P16(ELITISMO): 1
│ P17(IMIGRANTES): 1 | P18(DIVERSIDADE): Limpeza | P19(DIST_MINIMA): 0
│ P20(TIPO_CRUZAR): Order | P21(TIPO_MUTAR): 0 | P22(TIPO_VIZINHO): inserir
│ P23(LIMITE_VIZINHOS): 0 | P24(TIPO_DISTANCIA): Hamming
└──────────────────────────────────────────────────────────────────────
::  ::♛ ::  
♛ ::  ::  ::
::  ::  ♛   
  ♛   ::  ::
::  ::  ::♛ 
  ::♛ ::  ::
┌─ ⚖ Indicadores ─────────────────────────────────────────────────────
│ I1(Resultado): 0 | I2(Tempo(ms)): 0 | I3(Iterações): 169 | I4(Épocas): 7 | 
│ I5(Gerações): 174
└──────────────────────────────────────────────────────────────────────
...
Opção: 

Podemos observar que os custos vão de 1 até à volta de 10. Confirma-se que a melhor solução nunca é degradada com a atual configuração. Vamos avançar no nível de debug. Insira: 1; 6; 3; 2; 3; ENTER;6.

Opção: 6
═╤═ ►  Execução iniciada ═══
 │ 🏆  ⏱  💰 g:1
─┴───────────────────
♛   ::  ::  
  ::  ::  ♛ 
::  ::♛ ::  
  ♛   ::  ::
::  ::  ♛   
  ::♛ ::  ::
─┬───────────────────
 ├─┬─ 📆 0 ⏱  ──── 💰 g1-8 [📏 0-6 (μ=4, melhor/pior 4)]
 │ │🧍     1    2    3    4    5    6    7    8    9   10 
 │ │────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼
 │ │   0│   4   2   3   4   6   6   4   2   5   4│
 │ │  10│   2   3   2   5   6   8   2   2   1   3│
 │ └──────────────────────────────────── 
 ├─┬─ 📆 1 ⏱  ──── 💰 g1-6 [📏 2-6 (μ=5, melhor/pior 6)]
 │ │🧍     1    2    3    4    5    6    7    8    9   10 
 │ │────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼
 │ │   0│   4   2   2   6   1   2   3   5   4   2│
 │ │  10│   4   2   4   4   2   5   1   3   6   5│
 │ └──────────────────────────────────── 
 ├─┬─ 📆 2 ⏱  ──── 💰 g1-9 [📏 2-6 (μ=4, melhor/pior 4)]
 │ │🧍     1    2    3    4    5    6    7    8    9   10 
 │ │────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼
 │ │   0│   4   4   9   3   5   4   3   1   3   3│
 │ │  10│   9   3   4   7   1   1   3   4   4   2│
 │ └──────────────────────────────────── 
 ├─┬─ 📆 3 ⏱  ──── 💰 g1-9 [📏 2-6 (μ=5, melhor/pior 6)]
 │ │🧍     1    2    3    4    5    6    7    8    9   10 
 │ │────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼
 │ │   0│   1   1   3   2   3   3   2   9   2   2│
 │ │  10│   7   7   3   2   7   3   4   3   3   4│
 │ └──────────────────────────────────── 
 ├─┬─ 📆 4 ⏱  ──── 💰 g1-8 [📏 2-6 (μ=4, melhor/pior 3)]
 │ │🧍     1    2    3    4    5    6    7    8    9   10 
 │ │────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼
 │ │   0│   8   3   3   1   2   2   1   1   7   3│
 │ │  10│   3   4   5   6   3   3   2   7   1   5│
 │ └──────────────────────────────────── 
 ├─┬─ 📆 5 ⏱  ──── 💰 g1-7 [📏 2-6 (μ=5, melhor/pior 6)]
 │ │🧍     1    2    3    4    5    6    7    8    9   10 
 │ │────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼
 │ │   0│   5   1   5   4   2   2   1   2   3   4│
 │ │  10│   2   5   2   6   7   5   4   4   4   2│
 │ └──────────────────────────────────── 
 ├─┬─ 📆 6 ⏱  ──── 💰 g1-11 [📏 2-6 (μ=5, melhor/pior 5)]
 │ │🧍     1    2    3    4    5    6    7    8    9   10 
 │ │────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼
 │ │   0│   7   5   1   4   2   5   2   5   3   2│
 │ │  10│   3   3   2  11   2   7   4   2   7   3│
 │ └──────────────────────────────────── 
 │ 🏆  ⏱  💰 g:0
─┴───────────────────
::  ::♛ ::  
♛ ::  ::  ::
::  ::  ♛   
  ♛   ::  ::
::  ::  ::♛ 
  ::♛ ::  ::
─┬───────────────────
 ├─ Parâmetros ─ P1=1 P2=3 P3=1 P4=10 P5=1000000 P6=20 P7=100 P8=50 P9=1 P10=150 P13=1
 ├─ ⚙   ─ P14=100 P16=1 P17=1 P18=3 P19=0 P20=3 P21=0 P22=1 P23=0 P24=1
═╧═ 🏁  Execução terminada ⏱    ═══
8 Damas (Permutação)
┌─ ⚙ Parâmetros ──────────────────────────────────────────────────────
│ P1(ALGORITMO): Algoritmo Evolutivo | P2(NIVEL_DEBUG): DETALHE | P3(SEMENTE): 1
│ P4(LIMITE_TEMPO): 10 | P5(LIMITE_ITERACOES): 1000000 | P6(POPULACAO): 20
│ P7(PROB_CRUZAR): 100 | P8(PROB_MUTAR): 50 | P9(SELECAO): Roleta | P10(PRESSAO): 150
│ P13(SOBREVIVENCIA): Idade | P14(PERC_DESCENDENTES): 100 | P16(ELITISMO): 1
│ P17(IMIGRANTES): 1 | P18(DIVERSIDADE): Limpeza | P19(DIST_MINIMA): 0
│ P20(TIPO_CRUZAR): Order | P21(TIPO_MUTAR): 0 | P22(TIPO_VIZINHO): inserir
│ P23(LIMITE_VIZINHOS): 0 | P24(TIPO_DISTANCIA): Hamming
└──────────────────────────────────────────────────────────────────────
::  ::♛ ::  
♛ ::  ::  ::
::  ::  ♛   
  ♛   ::  ::
::  ::  ::♛ 
  ::♛ ::  ::
┌─ ⚖ Indicadores ─────────────────────────────────────────────────────
│ I1(Resultado): 0 | I2(Tempo(ms)): 0 | I3(Iterações): 169 | I4(Épocas): 7 | 
│ I5(Gerações): 174
└──────────────────────────────────────────────────────────────────────
...
Opção: 

Podemos observar que a diversidade mantém-se, sendo a distância média de 4 a 5 unidades. Já sabiamos a variação do melhor e pior custo, mas ao ver o mapa completo podemos ter a noção de que o pior custo é apenas de um ou outro elemento. A maior parte dos elementos têm um custo baixo. Há épocas que têm mais que um elemento com custo 1, mas a população não fica dominada por soluções todas do mesmo custo. Vamos ver agora o detalhe completo. Insira: 1; 6; 3; 2; 4; ENTER; 6.

Opção: 6
═╤═ ►  Execução iniciada ═══
 │ 🏆  ⏱  💰 g:1
─┴───────────────────
♛   ::  ::  
  ::  ::  ♛ 
::  ::♛ ::  
  ♛   ::  ::
::  ::  ♛   
  ::♛ ::  ::
─┬───────────────────
 ├─┬─ 📆 0 ⏱  ──── 💰 g1-8
 │ ├───── 🧍🧑‍🤝‍🧑🚶‍ ───── 
 │ │ 🧍 1   2 1 4 3 5 0  💰 g:4
 │ │ 🧍 2   0 2 4 5 3 1  💰 g:2
 │ │ 🧍 3   5 0 2 3 1 4  💰 g:3
 │ │ 🧍 4   0 4 5 2 3 1  💰 g:4
 │ │ 🧍 5   1 2 5 4 3 0  💰 g:6
 │ │ 🧍 6   4 0 1 2 3 5  💰 g:6
 │ │ 🧍 7   2 5 4 0 3 1  💰 g:4
 │ │ 🧍 8   2 4 1 0 3 5  💰 g:2
 │ │ 🧍 9   4 0 2 1 3 5  💰 g:5
 │ │ 🧍 10  0 5 4 2 3 1  💰 g:4
 │ │ 🧍 11  1 5 3 0 4 2  💰 g:2
 │ │ 🧍 12  2 1 3 0 5 4  💰 g:3
 │ │ 🧍 13  1 2 0 5 3 4  💰 g:2
 │ │ 🧍 14  0 2 4 3 5 1  💰 g:5
 │ │ 🧍 15  4 0 1 2 3 5  💰 g:6
 │ │ 🧍 16  1 0 3 4 5 2  💰 g:8
 │ │ 🧍 17  4 2 1 5 3 0  💰 g:2
 │ │ 🧍 18  1 4 5 0 2 3  💰 g:2
 │ │ 🧍 19  0 5 3 1 4 2  💰 g:1
 │ │ 🧍 20  4 3 0 5 1 2  💰 g:3
 │ ├───── 📏  ───── 
 │ │ 🧍    🧍   📏  
 │ │ ────┼────┼────┼
 │ │ 1   2   │   5│
 │ │ 3   4   │   6│
 │ │ 5   6   │   5│
 │ │ 7   8   │   3│
 │ │ 9   10  │   5│
 │ │ 11  12  │   4│
 │ │ 13  14  │   5│
 │ │ 15  16  │   5│
 │ │ 17  18  │   6│
 │ │ 19  20  │   5│
 │ │ ────┴────┴────┴
 │ ├─┬─── FASE 🧩  Selecionar 20 🧑‍🤝‍🧑 pais ───── 
 │ │ ├───── Roleta, pressão 150 ───── 
 │ │ │ 100%    1    2    3    4    5    6    7    8    9   10 
 │ │ │ ────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼
 │ │ │    0│  41  62  57  43  30  28  46  72  38  49│
 │ │ │   10│  67  54  70  36  33  25  64  59  75  51│
 │ │ ├───── Número de seleções ───── 
 │ │ │ #Pai    1    2    3    4    5    6    7    8    9   10 
 │ │ │ ────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼
 │ │ │    0│   1   2   1   1   0   1   1   1   1   1│
 │ │ │   10│   1   1   2   0   1   0   2   1   1   1│
 │ │ └──────────────────────────────────── 
 │ ├─┬─── FASE 🧬  Reproduzir 20 pais ───── 
 │ │ ├───── Pais (🧑‍🤝‍🧑 ) ───── 
 │ │ │ 🧍     1    2    3    4    5    6    7    8    9   10 
 │ │ │ ────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼
 │ │ │    0│   2  17  19   4   3  17   7  20   2  13│
 │ │ │   10│   1  13  12   9  10  11   6  15  18   8│
 │ │ ├───── Pais (💰 ) ───── 
 │ │ │ 🧍     1    2    3    4    5    6    7    8    9   10 
 │ │ │ ────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼
 │ │ │    0│   2   2   1   4   3   2   4   3   2   2│
 │ │ │   10│   4   2   3   5   4   2   6   6   2   2│
 │ │ ├───── Filhos (💰 ) 🧬 10  🦠 10 ───── 📈 3 🟰 10 📉 7
 │ │ │ 🧍     1    2    3    4    5    6    7    8    9   10 
 │ │ │ ────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼
 │ │ │    0│   6   3   1   5   2   4   4   2   4   2│
 │ │ │   10│   4   5   3   5   2   1   6   2   2   4│
 │ │ └──────────────────────────────────── 
 │ ├─┬─── FASE ⚔️  Sobrevivência ───── 
 │ │ ├───── ⏳  Idade ───── 
 │ │ ├───── 🚶‍🌍 Imigrantes  7✖ →🆕 ───── 
 │ │ └──────────────────────────────────── 
 │ └───── FASE 🌈  Diversidade - limpeza ───── 
 ├─┬─ 📆 1 ⏱  ──── 💰 g1-6
 │ ├───── 🧍🧑‍🤝‍🧑🚶‍ ───── 
 │ │ 🧍 1   0 4 5 2 3 1  💰 g:4
 │ │ 🧍 2   4 0 5 2 1 3  💰 g:2
 │ │ 🧍 3   2 4 0 1 3 5  💰 g:2
 │ │ 🧍 4   4 0 1 2 3 5  💰 g:6
 │ │ 🧍 5   0 2 5 3 1 4  💰 g:1
 │ │ 🧍 6   0 5 4 2 1 3  💰 g:2
 │ │ 🧍 7   2 1 3 0 5 4  💰 g:3
 │ │ 🧍 8   2 1 0 5 3 4  💰 g:5
 │ │ 🧍 9   1 2 4 3 5 0  💰 g:4
 │ │ 🧍 10  1 2 0 5 3 4  💰 g:2
 │ │ 🧍 11  1 0 2 4 5 3  💰 g:4
 │ │ 🧍 12  4 0 3 5 1 2  💰 g:2
 │ │ 🧍 13  4 0 5 1 2 3  💰 g:4
 │ │ 🧍 14  3 2 1 5 4 0  💰 g:4
 │ │ 🧍 15  5 0 2 4 3 1  💰 g:2
 │ │ 🧍 16  5 3 4 1 2 0  💰 g:5
 │ │ 🧍 17  0 5 3 1 4 2  💰 g:1
 │ │ 🧍 18  4 1 5 3 0 2  💰 g:3
 │ │ 🧍 19  1 4 5 2 3 0  💰 g:6
 │ │ 🧍 20  0 4 5 3 2 1  💰 g:5
 │ ├───── 📏  ───── 
 │ │ 🧍    🧍   📏  
 │ │ ────┼────┼────┼
 │ │ 1   2   │   4│
 │ │ 3   4   │   4│
 │ │ 5   6   │   4│
 │ │ 7   8   │   3│
 │ │ 9   10  │   4│
 │ │ 11  12  │   5│
 │ │ 13  14  │   6│
 │ │ 15  16  │   5│
 │ │ 17  18  │   5│
 │ │ 19  20  │   4│
 │ │ ────┴────┴────┴
 │ ├─┬─── FASE 🧩  Selecionar 20 🧑‍🤝‍🧑 pais ───── 
 │ │ ├───── Roleta, pressão 150 ───── 
 │ │ │ 100%    1    2    3    4    5    6    7    8    9   10 
 │ │ │ ────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼
 │ │ │    0│  43  62  59  28  75  64  51  36  41  67│
 │ │ │   10│  38  57  46  49  70  30  72  54  25  33│
 │ │ ├───── Número de seleções ───── 
 │ │ │ #Pai    1    2    3    4    5    6    7    8    9   10 
 │ │ │ ────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼
 │ │ │    0│   1   1   2   0   2   1   1   1   0   2│
 │ │ │   10│   1   1   1   1   1   1   1   1   1   0│
 │ │ └──────────────────────────────────── 
 │ ├─┬─── FASE 🧬  Reproduzir 20 pais ───── 
 │ │ ├───── Pais (🧑‍🤝‍🧑 ) ───── 
 │ │ │ 🧍     1    2    3    4    5    6    7    8    9   10 
 │ │ │ ────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼
 │ │ │    0│  10  12  13   3  15   5   2  16  18  19│
 │ │ │   10│  11  10  17  14   5   6   3   8   1   7│
 │ │ ├───── Pais (💰 ) ───── 
 │ │ │ 🧍     1    2    3    4    5    6    7    8    9   10 
 │ │ │ ────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼
 │ │ │    0│   2   2   4   2   2   1   2   5   3   6│
 │ │ │   10│   4   2   1   4   1   2   2   5   4   3│
 │ │ ├───── Filhos (💰 ) 🧬 10  🦠 14 ───── 📈 1 🟰 12 📉 7
 │ │ │ 🧍     1    2    3    4    5    6    7    8    9   10 
 │ │ │ ────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼
 │ │ │    0│   4   4   1   3   1   1   7   4   3   9│
 │ │ │   10│   3   3   1   3   4   5   3   9   4   4│
 │ │ └──────────────────────────────────── 
 │ ├─┬─── FASE ⚔️  Sobrevivência ───── 
 │ │ ├───── ⏳  Idade ───── 
 │ │ ├───── 🚶‍🌍 Imigrantes  18✖ →🆕 ───── 
 │ │ └──────────────────────────────────── 
 │ └───── FASE 🌈  Diversidade - limpeza ───── 
 ├─┬─ 📆 2 ⏱  ──── 💰 g1-9
 ├─┬─ 📆 3 ⏱  ──── 💰 g1-9
 ├─┬─ 📆 4 ⏱  ──── 💰 g1-8
 ├─┬─ 📆 5 ⏱  ──── 💰 g1-7
 │ ├───── 🧍🧑‍🤝‍🧑🚶‍ ───── 
 │ │ 🧍 1   4 0 2 1 3 5  💰 g:5
 │ │ 🧍 2   4 0 1 3 5 2  💰 g:1
 │ │ 🧍 3   0 3 2 1 5 4  💰 g:5
 │ │ 🧍 4   5 4 3 1 0 2  💰 g:4
 │ │ 🧍 5   3 2 5 1 4 0  💰 g:2
 │ │ 🧍 6   2 1 5 3 0 4  💰 g:2
 │ │ 🧍 7   5 4 1 3 0 2  💰 g:1
 │ │ 🧍 8   0 2 5 1 3 4  💰 g:2
 │ │ 🧍 9   0 3 4 2 1 5  💰 g:3
 │ │ 🧍 10  4 5 1 3 2 0  💰 g:4
 │ │ 🧍 11  0 5 3 1 2 4  💰 g:2
 │ │ 🧍 12  4 1 2 5 0 3  💰 g:5
 │ │ 🧍 13  1 4 2 5 0 3  💰 g:2
 │ │ 🧍 14  1 4 5 2 3 0  💰 g:6
 │ │ 🧍 15  2 3 4 5 1 0  💰 g:7
 │ │ 🧍 16  3 2 4 0 5 1  💰 g:5
 │ │ 🧍 17  1 3 2 5 0 4  💰 g:4
 │ │ 🧍 18  1 3 0 4 5 2  💰 g:4
 │ │ 🧍 19  4 2 1 0 5 3  💰 g:4
 │ │ 🧍 20  4 3 5 0 2 1  💰 g:2
 │ ├───── 📏  ───── 
 │ │ 🧍    🧍   📏  
 │ │ ────┼────┼────┼
 │ │ 1   2   │   4│
 │ │ 3   4   │   5│
 │ │ 5   6   │   5│
 │ │ 7   8   │   6│
 │ │ 9   10  │   6│
 │ │ 11  12  │   6│
 │ │ 13  14  │   4│
 │ │ 15  16  │   5│
 │ │ 17  18  │   4│
 │ │ 19  20  │   4│
 │ │ ────┴────┴────┴
 │ ├─┬─── FASE 🧩  Selecionar 20 🧑‍🤝‍🧑 pais ───── 
 │ │ ├───── Roleta, pressão 150 ───── 
 │ │ │ 100%    1    2    3    4    5    6    7    8    9   10 
 │ │ │ ────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼
 │ │ │    0│  33  75  38  41  57  62  72  67  54  46│
 │ │ │   10│  59  30  64  28  25  36  49  51  43  70│
 │ │ ├───── Número de seleções ───── 
 │ │ │ #Pai    1    2    3    4    5    6    7    8    9   10 
 │ │ │ ────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼
 │ │ │    0│   0   2   1   0   1   2   1   2   1   1│
 │ │ │   10│   1   0   2   0   1   0   1   1   1   2│
 │ │ └──────────────────────────────────── 
 │ ├─┬─── FASE 🧬  Reproduzir 20 pais ───── 
 │ │ ├───── Pais (🧑‍🤝‍🧑 ) ───── 
 │ │ │ 🧍     1    2    3    4    5    6    7    8    9   10 
 │ │ │ ────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼
 │ │ │    0│   2  17  15  13   2   8  11   6   8   9│
 │ │ │   10│  10  13   5  20  18   7  19   3   6  20│
 │ │ ├───── Pais (💰 ) ───── 
 │ │ │ 🧍     1    2    3    4    5    6    7    8    9   10 
 │ │ │ ────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼
 │ │ │    0│   1   4   7   2   1   2   2   2   2   3│
 │ │ │   10│   4   2   2   2   4   1   4   5   2   2│
 │ │ ├───── Filhos (💰 ) 🧬 10  🦠 10 ───── 📈 0 🟰 14 📉 6
 │ │ │ 🧍     1    2    3    4    5    6    7    8    9   10 
 │ │ │ ────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼
 │ │ │    0│   2   4   7   2  11   2   3   3   2   3│
 │ │ │   10│   5   2   5   2   4   1   5   5   7   2│
 │ │ └──────────────────────────────────── 
 │ ├─┬─── FASE ⚔️  Sobrevivência ───── 
 │ │ ├───── ⏳  Idade ───── 
 │ │ ├───── 🚶‍🌍 Imigrantes  1✖ →🆕 ───── 
 │ │ └──────────────────────────────────── 
 │ └───── FASE 🌈  Diversidade - limpeza ─────  🧹 3
 ├─┬─ 📆 6 ⏱ 1ms  ──── 💰 g1-11
 │ ├───── 🧍🧑‍🤝‍🧑🚶‍ ───── 
 │ │ 🧍 1   4 5 3 2 1 0  💰 g:7
 │ │ 🧍 2   0 3 2 1 5 4  💰 g:5
 │ │ 🧍 3   0 4 1 3 5 2  💰 g:1
 │ │ 🧍 4   1 3 0 4 5 2  💰 g:4
 │ │ 🧍 5   4 3 5 0 2 1  💰 g:2
 │ │ 🧍 6   5 3 2 1 4 0  💰 g:5
 │ │ 🧍 7   4 2 5 0 3 1  💰 g:2
 │ │ 🧍 8   4 5 3 1 2 0  💰 g:5
 │ │ 🧍 9   4 0 3 2 5 1  💰 g:3
 │ │ 🧍 10  0 2 4 1 5 3  💰 g:2
 │ │ 🧍 11  1 2 3 5 0 4  💰 g:3
 │ │ 🧍 12  3 0 5 4 2 1  💰 g:3
 │ │ 🧍 13  0 2 5 1 3 4  💰 g:2
 │ │ 🧍 14  5 0 1 2 3 4  💰 g:11
 │ │ 🧍 15  1 4 2 5 0 3  💰 g:2
 │ │ 🧍 16  2 3 4 5 1 0  💰 g:7
 │ │ 🧍 17  3 1 2 5 4 0  💰 g:4
 │ │ 🧍 18  2 5 1 3 0 4  💰 g:2
 │ │ 🧍 19  4 3 5 1 0 2  💰 g:7
 │ │ 🧍 20  0 4 2 5 1 3  💰 g:3
 │ ├───── 📏  ───── 
 │ │ 🧍    🧍   📏  
 │ │ ────┼────┼────┼
 │ │ 1   2   │   6│
 │ │ 3   4   │   4│
 │ │ 5   6   │   5│
 │ │ 7   8   │   5│
 │ │ 9   10  │   5│
 │ │ 11  12  │   6│
 │ │ 13  14  │   4│
 │ │ 15  16  │   5│
 │ │ 17  18  │   6│
 │ │ 19  20  │   6│
 │ │ ────┴────┴────┴
 │ ├─┬─── FASE 🧩  Selecionar 20 🧑‍🤝‍🧑 pais ───── 
 │ │ ├───── Roleta, pressão 150 ───── 
 │ │ │ 100%    1    2    3    4    5    6    7    8    9   10 
 │ │ │ ────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼
 │ │ │    0│  33  38  75  43  64  36  70  41  49  72│
 │ │ │   10│  54  57  67  25  62  28  46  59  30  51│
 │ │ ├───── Número de seleções ───── 
 │ │ │ #Pai    1    2    3    4    5    6    7    8    9   10 
 │ │ │ ────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼
 │ │ │    0│   1   1   1   1   1   1   2   0   1   2│
 │ │ │   10│   1   1   1   1   1   1   1   1   0   1│
 │ │ └──────────────────────────────────── 
 │ ├─┬─── FASE 🧬  Reproduzir 20 pais ───── 
 │ │ ├───── Pais (🧑‍🤝‍🧑 ) ───── 
 │ │ │ 🧍     1    2    3    4    5    6    7    8    9   10 
 │ │ │ ────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼
 │ │ │    0│  15   6   5  14   3   2  10   1  10  12│
 │ │ │   10│   9  20   7  16  13  18   7  11   4  17│
 │ 🏆  ⏱ 1ms  💰 g:0
─┴───────────────────
::  ::♛ ::  
♛ ::  ::  ::
::  ::  ♛   
  ♛   ::  ::
::  ::  ::♛ 
  ::♛ ::  ::
─┬───────────────────
 │ │ ├───── Pais (💰 ) ───── 
 │ │ │ 🧍     1    2    3    4    5    6    7    8    9   10 
 │ │ │ ────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼
 │ │ │    0│   2   5   2  11   1   5   2   7   2   3│
 │ │ │   10│   3   3   2   7   2   2   2   3   4   4│
 │ │ ├───── Filhos (💰 ) 🧬 10  🦠 9 ───── 📈 4 🟰 13 📉 3
 │ │ │ 🧍     1    2    3    4    5    6    7    8    9   10 
 │ │ │ ────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼
 │ │ │    0│   4   6   4  11   2   3   5   5   2   0│
 │ │ │   10│   2   1   2   7   3   2   2   5   3   4│
 │ │ └──────────────────────────────────── 
 ├─ Parâmetros ─ P1=1 P2=4 P3=1 P4=10 P5=1000000 P6=20 P7=100 P8=50 P9=1 P10=150 P13=1
 ├─ ⚙   ─ P14=100 P16=1 P17=1 P18=3 P19=0 P20=3 P21=0 P22=1 P23=0 P24=1
═╧═ 🏁  Execução terminada ⏱   1ms  ═══
8 Damas (Permutação)
┌─ ⚙ Parâmetros ──────────────────────────────────────────────────────
│ P1(ALGORITMO): Algoritmo Evolutivo | P2(NIVEL_DEBUG): COMPLETO | P3(SEMENTE): 1
│ P4(LIMITE_TEMPO): 10 | P5(LIMITE_ITERACOES): 1000000 | P6(POPULACAO): 20
│ P7(PROB_CRUZAR): 100 | P8(PROB_MUTAR): 50 | P9(SELECAO): Roleta | P10(PRESSAO): 150
│ P13(SOBREVIVENCIA): Idade | P14(PERC_DESCENDENTES): 100 | P16(ELITISMO): 1
│ P17(IMIGRANTES): 1 | P18(DIVERSIDADE): Limpeza | P19(DIST_MINIMA): 0
│ P20(TIPO_CRUZAR): Order | P21(TIPO_MUTAR): 0 | P22(TIPO_VIZINHO): inserir
│ P23(LIMITE_VIZINHOS): 0 | P24(TIPO_DISTANCIA): Hamming
└──────────────────────────────────────────────────────────────────────
::  ::♛ ::  
♛ ::  ::  ::
::  ::  ♛   
  ♛   ::  ::
::  ::  ::♛ 
  ::♛ ::  ::
┌─ ⚖ Indicadores ─────────────────────────────────────────────────────
│ I1(Resultado): 0 | I2(Tempo(ms)): 1 | I3(Iterações): 169 | I4(Épocas): 7 | 
│ I5(Gerações): 174
└──────────────────────────────────────────────────────────────────────
...
Opção: 

Podemos identificar na última época o filho 10 com custo 0, gerado por pais de custo 2 e 3. Vamos colocar os pais, que são os elementos 10 e 12, junto com o filho com a solução:

  • Pai: 0 2 4 1 5 3
  • Mãe: 3 0 5 4 2 1
  • Filho: 3 0 4 1 5 2

É visível que os dois primeiros elementos do filho provêm de um dos pais, enquanto os restantes provêm do outro. Nenhum dos pais tinha custo 1. Se a população estivesse dominada por elementos de custo 1, a probabilidade de selecionar simultaneamente estes dois pais seria menor, reduzindo a hipótese de gerar a solução por cruzamento

Ação 4 - Testes empíricos

Atendendo ao volume de parâmetros nos algoritmos evolutivos, estes testes vão utilizar desde logo um cluster (Deucalion).

Resultados Deucalion

Neste estudo foi identificada a melhor parametrização para este problema e codificação: P6=10 P7=0 P8=100 P9=2 P11=10 P12=100 P13=3 P14=100 P15=2 P16=3 P17=1 P18=3 P19=0 P24=1 P21=0 P22=2 P23=0.

Podemos ver como a alteração da parametrização afeta este exemplo:

Opção: 6
═╤═ ►  Execução iniciada ═══
 ├─┬─ 📆 0 ⏱  ──── 💰 g2-6
 │ ├───── 🧍🧑‍🤝‍🧑🚶‍ ───── 
 │ │ 🧍 1   2 1 4 3 5 0  💰 g:4
 │ │ 🧍 2   0 2 4 5 3 1  💰 g:2
 │ │ 🧍 3   5 0 2 3 1 4  💰 g:3
 │ │ 🧍 4   0 4 5 2 3 1  💰 g:4
 │ │ 🧍 5   1 2 5 4 3 0  💰 g:6
 │ │ 🧍 6   4 0 1 2 3 5  💰 g:6
 │ │ 🧍 7   2 5 4 0 3 1  💰 g:4
 │ │ 🧍 8   2 4 1 0 3 5  💰 g:2
 │ │ 🧍 9   4 0 2 1 3 5  💰 g:5
 │ │ 🧍 10  0 5 4 2 3 1  💰 g:4
 │ ├───── 📏  ───── 
 │ │  🧍  1    2    3    4    5    6    7    8    9    10   
 │ │ ────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼
 │ │ 1   │    │   5│   5│   6│   5│   6│   4│   5│   6│   5│
 │ │ 2   │   5│    │   6│   3│   4│   5│   3│   5│   5│   2│
 │ │ 3   │   5│   6│    │   6│   6│   5│   6│   6│   4│   6│
 │ │ 4   │   6│   3│   6│    │   4│   4│   4│   4│   5│   2│
 │ │ 5   │   5│   4│   6│   4│    │   5│   5│   5│   5│   5│
 │ │ 6   │   6│   5│   5│   4│   5│    │   5│   3│   2│   4│
 │ │ 7   │   4│   3│   6│   4│   5│   5│    │   3│   5│   2│
 │ │ 8   │   5│   5│   6│   4│   5│   3│   3│    │   4│   5│
 │ │ 9   │   6│   5│   4│   5│   5│   2│   5│   4│    │   5│
 │ │ 10  │   5│   2│   6│   2│   5│   4│   2│   5│   5│    │
 │ │ ────┴────┴────┴────┴────┴────┴────┴────┴────┴────┴────┴
 │ ├─┬─── FASE 🧩  Selecionar 10 🧑‍🤝‍🧑 pais ───── 
 │ │ ├───── Torneio, tamanho 10, probabilidade melhor 100 ───── 
 │ │ ├───── Número de seleções ───── 
 │ │ │ #Pai    1    2    3    4    5    6    7    8    9   10 
 │ │ │ ────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼
 │ │ │    0│   0   5   1   0   0   0   0   4   0   0│
 │ │ └──────────────────────────────────── 
 │ ├─┬─── FASE 🧬  Reproduzir 10 pais ───── 
 │ │ ├───── Pais (🧑‍🤝‍🧑 ) ───── 
 │ │ │ 🧍     1    2    3    4    5    6    7    8    9   10 
 │ │ │ ────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼
 │ │ │    0│   8   2   3   2   8   8   8   2   2   2│
 │ 🏆  ⏱  💰 g:0
─┴───────────────────
::  ::  ♛   
  ::♛ ::  ::
♛   ::  ::  
  ::  ::  ♛ 
::  ::♛ ::  
  ♛   ::  ::
─┬───────────────────
 │ │ ├───── Pais (💰 ) ───── 
 │ │ │ 🧍     1    2    3    4    5    6    7    8    9   10 
 │ │ │ ────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼
 │ │ │    0│   2   2   3   2   2   2   2   2   2   2│
 │ │ ├───── Filhos (💰 ) 🧬 0  🦠 10 ───── 📈 1 🟰 4 📉 5
 │ │ │ 🧍     1    2    3    4    5    6    7    8    9   10 
 │ │ │ ────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼
 │ │ │    0│   4   0   3   2   4   2   5   6   2   3│
 │ │ └──────────────────────────────────── 
 ├─ Parâmetros ─ P1=1 P2=4 P3=1 P4=10 P5=1000000 P6=10 P7=0 P8=100 P9=2 P11=10 P12=100
 ├─ ⚙   ─ P13=3 P14=100 P15=2 P16=3 P17=1 P18=3 P19=0 P20=3 P21=0 P22=2 P23=0 P24=1
═╧═ 🏁  Execução terminada ⏱    ═══
8 Damas (Permutação)
┌─ ⚙ Parâmetros ──────────────────────────────────────────────────────
│ P1(ALGORITMO): Algoritmo Evolutivo | P2(NIVEL_DEBUG): COMPLETO | P3(SEMENTE): 1
│ P4(LIMITE_TEMPO): 10 | P5(LIMITE_ITERACOES): 1000000 | P6(POPULACAO): 10
│ P7(PROB_CRUZAR): 0 | P8(PROB_MUTAR): 100 | P9(SELECAO): Torneio | P11(TAMANHO_TORNEIO): 10
│ P12(PROB_MELHOR_TORNEIO): 100 | P13(SOBREVIVENCIA): round-robin | P14(PERC_DESCENDENTES): 100
│ P15(Q_ROUND_ROBIN): 2 | P16(ELITISMO): 3 | P17(IMIGRANTES): 1 | P18(DIVERSIDADE): Limpeza
│ P19(DIST_MINIMA): 0 | P20(TIPO_CRUZAR): Order | P21(TIPO_MUTAR): 0 | P22(TIPO_VIZINHO): trocaPar
│ P23(LIMITE_VIZINHOS): 0 | P24(TIPO_DISTANCIA): Hamming
└──────────────────────────────────────────────────────────────────────
::  ::  ♛   
  ::♛ ::  ::
♛   ::  ::  
  ::  ::  ♛ 
::  ::♛ ::  
  ♛   ::  ::
┌─ ⚖ Indicadores ─────────────────────────────────────────────────────
│ I1(Resultado): 0 | I2(Tempo(ms)): 0 | I3(Iterações): 21 | I4(Épocas): 1 | 
│ I5(Gerações): 20
└──────────────────────────────────────────────────────────────────────
...
Opção: 

Com a configuração otimizada, bastou uma época para encontrar a solução para esta instância. O filho 2 foi gerado de dois pais de custo 2, e tem um irmão de custo 4. Os pais são os elementos 8 e 2. Estes pais têm ambos o melhor custo, e foram escolhidos como pais 4 e 5 vezes. Esta situação ocorre atendendo a que o método de seleção é um torneio de tamanho 10. Acabou por não serem vezes a mais, já que fizeram para também nos elementos 7 e 8, e tiveram filhos de custo 5 e 6.

| TesteTVector | Aspirador 1 | Aspirador 2 | Puzzle 8 | 8 Damas | Partição | 8 Damas CI | 8 Damas CP | Partição CB |