Olá, aqui é John Boward, com o curso de complexidade
Vou apresentar algumas soluções para o...
...conjunto final de problemas avançado sobre séries dinâmicas...
...e será bastante divertido. Na verdade, iremos construir um modelo no NetLogo...
...a partir do zero e você poderá ver como eu abordo a construção de modelos.
Claro, há diversas maneiras de fazê-los e
o principal quando você começa a programar é apenas brincar e...
...não ter medo de cometer vários erros porque o único jeito de aprender
é errar milhares de vezes.
Eu já passei por estes modelos,
já construi várias centenas de modelos e estou certo de que cometerei erros...
...construindo este aqui...
... mas isto faz parte da programação.
Nível Avançado: nós faremos...
...um modelo...
...que usa crescimento populacional baseado em agentes,
não estamos baseando-o de verdade numa equação,
estamos de fato criando pequenas entidades que...
...reproduzem-se, e veremos se podemos...
...construir um comportamento que o...
...modelo logístico de população...
...pretende descrever. Assim, de certo modo conseguimos...
...tal comportamento, mas obtendo-o do...
...real comportamento de agentes.
Portanto, é interessante filosoficamente
...que esses tipos de modelos são de muito baixo nível...
...e o real comportamento coletivo surge de...
...propriedades e interações dos agentes.
Vamos direto para ele. Aqui temos Netlogo, a tela que você tem quando o inicia.
Uma simples interface
Quando eu inicio um novo modelo, sempre...
...adiciono...
...geralmente um botão de Passo, ...
...num modelo como este e ...
um botão de Prossiga.
Estes, é claro, referem-se a procedimentos que não foram escritos ainda.
Além disso, sempre tenho o cuidado de...
...alinhar coisas e manter o espaçamento entre meus botões...
É somente um cisma, mas é como eu prefiro.
Eu também rotulo...
...meus modelos. Assim eu posso lembrar o que eles são, futuramente...
Pronto!
Isso é basicamente o que eu faço ao iniciar a construção de um modelo.
Vamos lá. Vamos ver o que podemos fazer: nós queremos criar...
...um punhado de agentes e queremos que eles...
...reproduzam e então plotaremos...
...um gráfico para visualizar se parece com aquela curva sigmóide.
Então, plotaremos também.
Vamos fazer o básico...
...e chamaremos este gráfico de...
..."population".
Sabemos que...
...será população em relação ao tempo, é sempre recomendável rotular logo os...
....eixos, para que você não esqueça
[digitando]
OK, algumas preliminares já foram feitas.
O que de fato faremos em seguida será criar um...
...módulo de Configuração que cria alguns agentes, então vamos direto ao código...
...e diremos "to setup"...
...e eu sempre escrevo o...
...começo e o final primeiramente, porque eu sei que teremos que fazer isso.
Sabemos que nós queremos criar um certo número...
...inicialmente. Provavelmente teremos uma...
...barra para isto, mas podemos...
...vamos fazer uma barra de imediato para que possamos nos livrar...
...disso também. Então, voltamos para a interface.
Fazemos uma barra e chamamos-na...
..."initial-population"...
...e geralmente eu copio isto...
...e assim iremos...
...criar este tanto...
...de população inicial, e assim temos a oportunidade de...
...dar a estas...
...novas entidades algumas propriedades, então direi defina suas cores como...
...verde. Defina suas formas...
...como, digamos, um círculo...
...e defina seus tamanhos...
...deixemos-os deste jeito. Inicialmente recebem o tamanho unitário.
Agora...
...logo veremos um problema com isto e eu apenas quero...
..lhes mostrar...
Agora a Configuração funciona e criaremos 50 indivíduos como padrão, e o que...
...irei fazer é...
...executar o módulo Configuração e você nota que...
...parece haver apenas um agente criado, mas na verdade há vinte e sete e...
...eles são todos...
...criados uns em cima dos outros...
Para que os façamos moverem...
nós teríamos que ir em frente...
...dissemos a eles para ir em frente 10.
Quando Cconfigurarmos, veríamos, ...
...já que eles possuem títulos aleatórios, que eles moveriam para fora.
Isto ainda não é o que queremos, correto? Parece...
...organizado demais e muito...
...artificial. Nós também não nos livramos do nosso primeiro agente.
Isto me lembra que quando nós Configuramos...
...quase sempre iniciamos com o "clear-all"...
...o atalho para isto é apenas "ca"...
...mas "clear-all" limpará tudo isso.
Ao invés de usar o comando "create", que é o...
...modo mais fácil de...
...criar uma população de agentes...
...iremos usar algo a mais e para isto...
...pediremos aos patches...
...pedirei determinado número de patches. Pedirei "n-of...
...initial-population"...
...então estou pedindo àquele tanto de patches...
...para...
"sprout"
...e obviamente, uma vez tendo decidido com quem estou falando,
estou falando com patches...
...e o que estou pedindo a eles para fazer é...
"brotar". Dizendo:
"hey vocês, 12 patches...
...cada um de vocês, eu quero que vocês brotem um e então...
...diga a ele que defina sua cor verde, e defina seu formato circular".
E mover para frente 10. Não precisamos mais deste "forward 10".
Vamos apenas ver se funciona...
Com certeza.
Ele aleatoriamente pede aos patches, toda vez que você clica...
...aleatoriamente pede a um determinado grupo de patches...
...27 neste caso, ou 80 deles...
Então agora temos uma população inicial...
...de patches que podemos controlar só com aquela linha de código.
Ok, o próximo passo
é pensar: o que queremos fazer com estes? Nós queremos...
...pedir a estes...
...agentes, estes pequenos pontos verdes..
...queremos que eles, basicamente, reproduzam.
Eles precisarão ser capazes de morrer...
...porque queremos uma geração que não se sobreponha, então...
..tem-se uma geração de pais que dá à luz outra geração...
...e os pais morrem. Isto significa que precisamos rastrear as gerações.
Nós também...
precisaremos que eles se espalhem, dispersem de forma que não...
...terminem uns em cima do outro...
...será mais fácil rastreá-los visualmente se eles...
...ficarem em seus próprios patches.
Ok. Não precisamos de nenhum tipo de procriação. Poderíamos fazer isto, mas
...se tornaria mais complicado. Então vamos ver como fazemos.
Eu direi que...
...eles reproduzirão a cada período.
Eu direi "step". Eles farão tudo que precisam fazer
isto é apenas um pseudo-código
Eu direi que eles precisam...
...reproduzir...
...pais precisam morrer...
...e os restantes dispersarão.
Aqui está.
Estes serão apenas nomes de procedimentos que não escrevi ainda...
...mas este trecho apenas chamará estes procedimentos, então...
...vamos pensar como a reprodução funcionará.