Introdução de Complexidade tarefa 1, opção avançada.
Este é um vídeo tutorial destinado a opção avançada na tarefa.
Por favor abra o arquivo no Netlogo chamado MultipleAnts.Netlogo,
você pode encontrar este arquivo nos materiais do curso em nossa página.
Quando abrir a interface vai estar aparecendo assim;
Nós já fizemos algumas modificações nas 2 primeiras seções das tarefas,
e nós não eliminamos isso;
Então primeira coisa que vou fazer é recolorir as formigas,
para que elas sejam sempre vermelhas;
vou eliminar essas 2 linhas do código;
farei isto menos confuso;
Vamos voltar para interface onde nossa tarefa pede para criar uma trilha
de feromonas para que outras formigas que estejam atrás possam seguir,
uma vez que achem comida, e testar isso pra ver se é mais rápido
que o método atual apresentado.
Vamos então para a seção do código;
primeiro criamos um caminho variável e chamamos de feromônio, faça isto aqui;
agora desça para Setup para estabelecer os caminhos não apenas
para os ninhos como também os feromonas;
Irei mudar o Set up nest para o Set up patches,
iremos ask patches para iniciar os feromonios serem zero, então
set feromônio zero;
Vamos verificar isso;
Agora queremos que as formigas deixem um rastro de feromonios,
depois de comerem a comida e voltarem para o ninho;
e também gostaríamos que essas outras formigas sigam o rastro de feromônios.
Para fazer isto desça para o procedimento "return- to-nest"
o qual nós escrevemos mais cedo e adicione uma linha "set pheromone"
para ser o nível de feromônio atual + 1.
Quero que você visualize quanto de feromônios tem cada caminho;
Eu vou chamar de set plabel para ser simplesmente um valor numérico
de feromônios;
você também pode usar cores diferentes para isto se quiser, mas acho que é
interessante usar a legenda para fazer isto.
Então vamos verificar isto e ver se funciona;
parece que sim, que a resposta para a coleta de comida e o retorno
para o ninho e deixar um rastro de feromônios como eles fazem,
o que aumenta numericamente.
Agora eu gostaria que os feromônios evaporassem com o tempo;
então vamos voltar para o código e fazer isto.
Vamos criar uma nova linha no procedimento anterior chamada
"evaporate- pheromone" então vamos escrever o procedimento para
"evaporate- pheromone", gostaríamos que os feromônios tenham
uma probabilidade de evaporar, o que significa um número entre 0 e 1;
Então vamos estabelecer um número variável e chamar de X,
o que será um acaso entre 0 e 1, então "random-float 1" então iremos
perguntar caminhos com feromônios maiores que zero
qualquer caminho que tenha feromônios.
Se a variável X é menor que a probabilidade que decidirmos
o que será uma barra que colocaremos na interface
que chamaremos essa barra de "probabilidade de evaporação"
então "probability-to-evaporate"
Então iremos estabelecer que o feromônio seja o valor atual -1,
para que o feromônio evapore gradualmente.
Nós também gostaríamos de ver isso então colocaremos uma "plabel".
Nós precisamos adicionar aquela barra que mencionei; para fazer isto
vá até a interface "Button" e adicione "slider" colocaremos de lado um pouco;
e chamaremos de "probalility-to-evaporate
e será um número entre 0 e 1
com incrementos de 0.1, que inicialmente seja .1 e pressione ok;
E agora movemos essa barra para debaixo das outras aqui, movendo
este gráfico um pouco mais para baixo e alinhar para que fique melhor;
e agora colocamos esta barra aqui embaixo, deixando do mesmo tamanho
das outras barras.
Então está pronto, revisamos e voltamos para a interface para rodar de novo.
Os níveis de feromônios deveriam decrescer e parece que eles estão,
isto é bom.
E agora o problema final é que as outras formigas sigam os rastros de feromonios
então faremos essa continuação.
A propósito, a maneira de selecionar janelas na interface e clicar em um
espaço em branco e arrastar sobre a barra que se queira;
você também pode clicar com o botão direito e editar de várias maneiras.
Agora voltaremos ao código e mudaremos o jeito com que se movem
as formigas em seu mundo.
vamos para to-look-for-food
e nós vamos adicionar um código aqui;
vamos estabelecer novas variáveis
digamos, "let pheromone-ahead"? scent -at-angle 0
e irei explicar o que isso significa em um segundo;
"let-pheromone-right?" scent-at-angle 45
"let-pheromone-left?" scent-at-angle -45
Então este código é bem parecido com o modelo das formigas nos
arquivos do Netlogo; basicamente estamos pedindo que cada formiga olhe
pra frente, um pouco para a direita e um pouco para a esquerda,
para determinar se há algo feromônio nessa direções, e se há para seguir o
feromônio e que se não tiver que se caminhe aleoatoriamente
o que será que manteremos este código igual daqui pra baixo;
Logo faremos uma série de declarações "ifelse";
ifelse (pheromone-right? > pheromone-ahead? or pheromone-left?>
pheromone-ahead);
[ifelse pherome-right? é maior que pheromone left? nós iremos para direita
45 e se não for nós iremos para a esquerda 45;
e se caso nenhum deles for verdade, o que significa que tem feromonios
na frente ou não se tem feromônios em nenhuma direção, vamos dizer que
se pheromone-ahead? = 0, então seguimos com este resto mesmo;
abre e fecha colchetes.
Revisamos e ele disse que não há nada chamado scent-at-angle, e é verdade
nós não estabelecemos um scent-at-angle ainda;
Então vamos para o final do código e reportaremos;
to-report scent-at-angle e colocaremos um ângulo
deixamos p patche-right-and-ahead e estas são primitivas do Netlogo;
Para todos que quiserem verificar o que Primitivas significa, podem selecionar e
clicar em quick-help e assim abrirá uma pequena sinopse sobre o que é.
Então nós usamos os ângulos que nós usamos e colocaremos a distância de 1;
se p= noboby ( ninguém) então não tem feromônios, reporte 0;
caso contrário reporte feromônios de p.
e é isso.
Revisamos o código, não há fecha colchetes para este colchete aberto,
temos uma mensagem de erro, parece que eu esqueci de fechar colchetes aqui;
Também notei que há alguns colchetes faltando nessas linhas, desculpe-me
sobre isto, agora revisemos e parece que está tudo certo, vamos voltar para
a interface e parece que o comportamento está muito bom,
nós poderíamos analizar isto um pouco mais e fazer observações melhores
sobre como está funcionando, mas vou deixar isto para você
Eu notei que tem muito para responder nos cantos deste mundo,
nós podemos consertar isso indo em settings selecionando word
horizontalmente e verticalmente e ok.
E parece que respondeu bem rápido, comendo toda a comida em 73 ticks;
no modelo anterior antes de adicionarmos os feromonios
e eles duram 128 ticks.
E esta foi a tarefa número 1, espero que vocês tenham gostado do tutorial.
Nós vemos na próxima!