População
Quantidade fixa de indivíduos da população. Mínimo: 1
Ex: 10 para dez indivíduos.
Aviso: Ideal manter esse número abaixo ou igual a 10000 para não
crashar o
site.
Forma de seleção
Escolhe a forma como a seleção do indivíduo dominante ocorrerá.
- Elitismo: O melhor indivíduo cruzará com todos os
outros.
- Roleta: Se uma população estagnar durante X gerações, a
mutação
aumenta. Após esse incremento, a estagnação zera.
- Torneio: Similar à acumulativa. Porém, se o incremento total
atingir um teto, ela reiniciará.
Geração inferior dos genes
Lista de N termos com o limite inferior de cada gene para a geração de
novos
indivíduos. A lista deverá ser separada por ";". Caso algum valor seja nulo, ele será
o valor do limite respectivo, ou -100 caso ele não exista.
Exemplo para 2 genes (N = 2):
Ex: "0; -10000": Em gerações de novos indivíduos, os menores valores
possíveis para os genes 1 e 2 são 0 e -10000, respectivamente.
Geração superior dos genes
Lista de N termos com o limite superior de cada gene para a geração de
novos
indivíduos. A lista deverá ser separada por ";". Caso algum valor seja nulo, ele será
o valor do limite respectivo, ou 100 caso ele não exista.
Exemplo para 2 genes (N = 2):
Ex: "25; 5": Em gerações de novos indivíduos, os maiores valores
possíveis para os genes 1 e 2 são 25 e 5, respectivamente.
Escape
A não ser quando especificado no código da função, ela retornará esse
valor caso
o resultado seja indefinido. Ideal deixar esse número próximo de "menos infinito" para não
conflitar com outros valores.
Ex: -9999999 será o valor que a função retornará caso ela tente
dividir
por
0 ou efetuar logaritmos de números negativos.
Tempo de geração
Quantidade do tempo, em milisegundos, de renderização das gerações.
Nulo para ser
instantâneo
Ex: 300 para 0.3 segundos.
Redimensionamento
Quantidade de indivíduos visíveis nos gráficos do melhor indivíduo e
da margem de
erro
Ex: 2000 para os 2000 indivíduos mais recentes.
Quantidade de pontos
O programa modelará a função inicialmente (caso só haja um gene) com
essa
quantidade de pontos, espaçados igualmente entre os limites mínimo e máximo da função (-1000 e
1000, se não houver).
Ex: 500 utilizará 500 pontos para modelar a função.
Aviso: Para evitar crashar o site, favor deixar o valor igual ou
abaixo de
10000.
VALOR IDEAL: 1000
Margem de Erro
Valor a ser comparado no gráfico de Margem de Erro
Ex: 30 compara o melhor indivíduo atual com o valor 30
Gerações visíveis
Quantidade de gerações que serão representadas no gráfico. Para um
gene apenas, todos os indivíduos das ultimas N gerações serão mostrados no gráfico.
Ex: 5 mostrará todos os indivíduos das últimas 5
gerações.
Aviso: Por questões de desempenho, recomenda-se que o total de pontos
mostrados (gerações visíveis * população) não seja maior que 100.
VALOR IDEAL: 5
Quantidade de genes
Quantidade de genes de cada indivíduo, isto é, de variáveis da
função
Ex: 8 para oito variáveis.
Prob. de mutação de cada gene
Lista de N termos com a probabilidade de mutação de cada gene. A lista
deverá ser
separada por ";". Ela será reajustada para que cada termo corresponda a uma probabilidade. A
soma das probabilidades sempre será 1.
Exemplos para 2 genes (N = 2):
Ex: "0.3; 0.7": = (30%, 70%). 30% de chance de mutar o primeiro, 70%
de
mutar o segundo.
Ex: "3; 7": = (30%, 70%).
Ex: "1; 1": = (50% a 50%).
Ex: "1; 0": = (100%, 0%).
Ex: "4": = (100%, 0%). Termos a menos: O restante será igual a
0%.
Ex: "2; 3; 4": = (40%, 60%). Termos a mais: Considera-se apenas os N
primeiros.
Prob. de mutação de X genes
Lista de N termos com a probabilidade de X genes serem mutados de uma
vez. A
lista deverá ser separada por ";". Ela será reajustada para que cada termo
corresponda a uma probabilidade. A soma das probabilidades sempre será 1. Geralmente,
probabilidades assim seguem a Curva de Gauss, isto é, há mais chance de metade dos genes serem
mutados do que todos ou apenas um (sempre algum gene será mutado).
Exemplos para 2
genes (N = 2):
Ex: "0.3; 0.7": = (30%, 70%). 30% de chance de mutar apenas um gene,
70%
de
mutar os dois.
Ex: "3; 7": = (30%, 70%).
Ex: "1; 1": = (50% a 50%).
Ex: "0; 1": = (0%, 100%) (sempre muta os dois).
Ex: "4": = (100%, 0%). Termos a menos: O restante será igual a
0%.
Ex: "2; 3; 4": = (40%, 60%). Termos a mais: Considera-se apenas os N
primeiros.
Probabilidade de Catástrofe
Chances de ocorrer uma catástrofe, seguindo as orientações do modelo
selecionado.
Quando uma catástrofe ocorrer, os indivíduos não sofrem mutações. Nulo para ela nunca
ocorrer.
Ex: 0.001 para 0.1% de chances de ocorrer a catástrofe.
Tipo da Catástrofe
Escolhe a forma como a catástrofe ocorrerá. Para todas as formas, se a
quantidade
fornecida for igual ou maior à quantidade de indivíduos, todos, menos o melhor, serão
substituídos.
- Mais apto: Os N piores indivíduos (exceto o melhor) serão
substituídos.
- Praga: Os N melhores indivíduos (exceto o melhor) serão
substituídos.
- Disruptiva: Os N indivíduos medianos (exceto o melhor) serão
substituídos. Se N e a quantidade de indivíduos tiverem a mesma paridade, os N indivíduos
serão exatamente o centro da lista. Caso contrário, eles se aproximarão do pior.
- Estabilizadora: Os N indivíduos extremais (exceto o melhor)
serão
substituídos, isto é, os N/2 melhores e os N/2 piores. Caso N seja ímpar, mata os (N+1)/2
piores e os (N-1)/2 melhores.
N mortos pela catástrofe
MAIS APTO/PRAGA/DISRUPTIVA/ESTABILIZADORA: Determina quantos serão
mortos pela
catástrofe. Se o número
fornecido for maior que o número de indivíduos, a catástrofe matará todos, menos o melhor.
Ex. MAIS APTO: 4 para matar os 4 piores indivíduos.
Ex. PRAGA: 7 para matar os 7 melhores indivíduos, exceto o
melhor.
Ex. DISRUPTIVA: 3 para matar os 3 indivíduos medianos, exceto o
melhor.
Ex. ESTABILIZADORA: 7 para matar os 7 melhores indivíduos, exceto o
melhor.
Limite inferior dos genes
Lista de N termos com o limite inferior de cada gene, isto é, ele
nunca será
menor que esse valor. A lista deverá ser separada por ";". Deixe algum valor nulo para não haver
limite.
Exemplo para 2 genes (N = 2):
Ex: "-100; 0": O primeiro gene terá seu menor valor possível igual a
-100,
enquanto o segundo será 0 ou positivo.
Limite superior dos genes
Lista de N termos com o limite superior de cada gene, isto é, ele
nunca será
maior que esse valor. A lista deverá ser separada por ";". Deixe algum valor nulo para não haver
limite.
Exemplo para 2 genes (N = 2):
Ex: "50; 0": O primeiro gene terá seu maior valor possível igual a
50,
enquanto o segundo será 0 ou negativo.
Mutação base
Base da variabilidade genética.
Ex: 0.5 incrementa, a princípio, 0.5 no gene.
Prob. Mutação positiva
Probabilidade da mutação ser para mais (ideal: 50%).
Ex: 0.7 para 70% de chance.
Tipo da mutação
Escolhe a forma como a mutação ocorrerá. Para definir quantos e quais
genes serão
mais mutáveis, altere os valores da seção "Genética".
Para todas as formas abaixo, a
probabilidade de mutação positiva se aplica.
- Padrão: O gene será mutado exatamente pela mutação
base.
- Acumulativa: Se uma população estagnar durante X gerações, a
mutação
aumenta. Após esse incremento, a estagnação zera.
- Acumulativa limitada: Similar à acumulativa. Porém, se o
incremento total
atingir um teto, ela reiniciará.
- Caótica: A mutação base se torna aleatória.
Estagnação
Quantidade de gerações necessárias para configurar uma estagnação.
Ex: 50 para estagnação após 50 gerações com o mesmo máximo.
Incremento da mutação
Em quanto a mutação base será incrementada.
Ex: 0.1 para a Mutação base aumentar em 0.1.
Teto da mutação
Limite da mutação.
Ex: 100 para que, se com o incremento a mutação chegar a 100, então
ela
reiniciará.
Lim. inf. da mutação
Lista de N termos positivos com o limite inferior da mutação de cada
gene. A
lista
deverá ser separada por ";". Caso algum valor seja nulo, ele será 0.
Exemplo para 2 genes (N
= 2):
Ex: "0; 3": A mutação mínima do primeiro gene é 0, enquanto que, a
do
segundo, é 3.
Lim. sup. da mutação
Lista de N termos positivos com o limite superior da mutação de cada
gene. A
lista
deverá ser separada por ";". Caso algum valor seja nulo, ele será
o valor do teto da mutação.
Exemplo para 2 genes (N = 2):
Ex: "10; 100": A mutação máxima do primeiro gene é 10, enquanto que,
a do
segundo, é 100.
Coef. de mut. atual:
Melhor Atual:
Melhores ao longo do tempo:
Passe o mouse aqui para ver as especificações da função.
A função a ser inserida na caixa é processada na linguagem JavaScript (não
requer
";"). O pedaço de código é convertido com uma função "eval", ou seja, não é necessário incluir
nenhuma função mãe.
Observações:
- É possível utilizar as bibliotecas padrões (como Math). O valor
de f() é o
mesmo retornado pelo
código, com a tag "return".
- As variáveis (genes) são passadas por meio de um array de N
elementos de nome
"p". Para acessar, basta utilizar p[0], p[1], etc. Se preferir, defina no começo do código "let
x = p[0]; let y = p[1];" etc.
- É possível utilizar a função poli() para gerar polinômios. Seu
primeiro
parâmetro é a variável e os X seguintes são os coeficientes de um polinômio de grau
X-1, em ordem decrescente.
Ex: "return poli(p[0], 3, 2, 4/5);" é equivalente a return 3*x*x + 2*x +
4/5
Ex: "return Math.sin(p[0])/p[0]" retorna sen(p[0])/p[0]. Note que, se
p[0] =
0,
a função retornará o valor de escape.