Ok, o procedimento reprodução
pedirá às turtles
que criem auto cópias
Nós usamos o procedimento hatch para fazer as turtles reproduzirem-se
Eu direi: peça para cada turtle chocar 2 turtles
como padrão, estas turtles terão
todos os atributos de seus pais
Eu mencionei anteriormente que precisaremos
rastrear as gerações.
Isso envolve dar variáveis personalizadas às turtles
Invocamos as turtles junto com as variáveis.
E a chamarei de "generation".
De agora em diante, quando criamos uma turtle, ela irá
automaticamente conter uma variável
chamada "generation".
Estes filhotes,
que entram em cena,
conterão aquela variável também.
E será automaticamente definida com o mesmo valor que a variável dos pais.
Mas não queremos isto.
Elas são a próxima geração,
então queremos que
elas definam sua própria geração.
Aqui temos que usar "generation of
myself plus one".
Acho que isto deva estar
entre colchetes.
Os comandos após "hatch" são aplicados aos filhotes recém-chegados.
Basicamente,
definirei sua geração como:
a minha geração, qualquer que seja, mais um.
Portanto, estou apenas incrementando-a.
Não estou certo se estes colchetes são necessários.
Eu posso ir em ajuda rápida.
Com certeza.
Realmente precisa estar entre parênteses.
Isto explica a diferença
entre "self" e "myself".
Chocaremos dois e definí-los.
Apenas para observá-los...
...vamos definir suas cores como vermelho e ir em frente 3.
Assim vericamos se reprodução funciona
Vamos tentar. Retornaremos aqui...
Irei comentar isto por enquanto.
Apenas para testarmos nosso código.
Agora iniciamos, e damos um passo.
E parece-me que todas as turtles...
Vamos por uma população menor, para que possamos observar.
Iniciamos com 5 turtles. damos um passo...
Imagino que estas herdaram
o título dos pais também.
As vezes é confuso
quando você está fazendo estes tipos de modelos
porque você não sabe exatamente quantas turtles possui.
Então você poderia ter algo mais simples na instrução como:
mostre a contagem de turtles.
Parece-me que há apenas
10 turtles, mais ou menos, mas quando vemos de fato
existem 15. Portanto, há sobreposição.
Outro modo de fazer isto é,
ao clicar ali,
você pode ver que as turtles 11 e 12 são coincidentes.
Está funcionando e os filhotes também estão herdando
o título dos seus pais, o que está causando sobreposição.
De qualquer forma, não precisamos nos preocupar por enquanto.
Então, reprodução funciona.
Talvez quiséssemos verificar se
o processo de geração funciona.
Vamos dar uma olhada na interface.
Se inspecionarmos esta turtle,
nós devemos ver que ela tem
uma variável de geração.
Eu não a vejo...
Vamos ver se esta tem.
Não está aí.
Algum erro ocorreu aqui.
Vamos comentar isto novamente.
Executar a Configuração...
...Inspecionar esta turtle...
Tudo bem, talvez eu não tenha inicializado, aqui temos a geração.
Esta é a geração 0.
Turtle 3 é da geração 0.
E quando damos um passo,
com um pouco de sorte,
ela será da geração 1.
Então estamos incrementando a geração.
A geração era originalmente 0 e agora é 1.
Logo, nosso recurso de geração está funcionando.
Ok, agora pediremos aos pais que morram.
Lembro-me que teremos que
rastrear em que geração estamos.
Iremos criar uma variável global chamada "current-generation"
Toda vez que dermos um passo, também
incrementaremos a geração atual.
Isto permitirá mantermos noção
de quem e quando deve morrer.
A cada passo, adicionamos uma unidade a esta variável que inicia em zero.
Em seguida diremos que os pais morrem.
Pediremos às turtles com geração menor que
ou igual à geração atual...
Você pode criar estes grupos de agentes...
...e se comunicar com grupos parciais.
Eu quero me comunicar somente com aquelas turtles cuja
variável de geração é menor ou igual à variavel de geração atual.
Talvez eu queira dizer que morram apenas as que sejam menores.
Então pediremos que estas gerações morram.
Vamos retornar...
...iniciar, dar um passo...
Ao invés de definí-las com vermelho,
definiremos com um número aleatório até 100.
Isto significa que têm cores diferentes.
Também iremos em frente um número aleatório.
Será temporário,
apenas para os visualizarmos.
Estamos visualizando as diferentes gerações...
As populações estão aumentando. Você pode ver as cores mudando.
Isto significa que...
...as gerações diferentes estão vindo,
nós podemos inspecionar estas turtles,
estamos apenas na geração 12,
mas já chocamos mais de 20.000 turtles.
É assim que crescimento exponencial da população
funciona, certo?
Nós conseguimos com que os pais morressem.
Nós precisamos de algum tipo de limitação.
Algo que dificulta a reprodução,
de forma que não tenhamos crescimento ilimitado.
Um modo fácil de fazer isto
é criar uma situação em que
os indivíduos morrem dependendo do quão lotado se encontra.
Vamos chamar isto de...
..."compete-with-nature".
Esta é uma ideia da biologia evolucionária,...
...indivíduos competindo uns com os outros,
e também com o ambiente
de algum modo.
Este é o caso em que estão de certa forma
competindo por um espaço,
mas eles são o ambiente também.
Vou fazer uma mudança, chamarei isto de "compete-for-space".