Conteúdo

Actividades

Actividade 2 (NetLogo)

Temos um conjunto de flanadores, que são tartarugas que gostam de flanar. Flanar quer dizer vaguear sem um objectivo que não seja o próprio vaguear, "é ir por aqui e por ali". No nosso caso, flanar quer dizer mover-se ao acaso no espaço. Os nossos flanadores adoram passear mas não gostam nada de serem pisados e exigem um espaço privado mínimo que lhes é vital. O patch onde estão é o seu espaço pessoal mínimo, onde “os seus sapatos” estão em segurança. Existe então uma única restrição, eles vagueiam ao acaso mas não poderão partilhar o mesmo patch com ninguém.

DESAFIO 1

Os Flanadores que não gostam de ser pisados

Vamos ter um espaço vazio (sem fronteiras, enrolado como um donut) e homogéneo em que os flanadores se vão movimentar ao acaso. Não pode ficar mais do que 1 flanador por cada patch em cada momento. A figura associada aos flanadores é irrelevante, neste caso são triângulos.

Temos um “slider” com a variável global Percentagem-flanadores que indica a densidade inicial de flanadores. Os lugares iniciais dos flanadores são escolhidos ao acaso mas notem que não pode, logo na situação inicial, ficar mais do que 1 flanador no mesmo patch.

Temos três botões:

O botão inicia (não é forever) que cria os flanadores de acordo com a densidade fornecida (Percentagem-flanadores).

O botão avanca-se-vazio-afrente (forever - turtles) que manda executar repetidamente o comportamento dos flanadores.

O botão act-cor-do-patch (forever - patches) que manda os patches actualizarem as suas cores dependendo do número de flanadores que tiverem. Se um patch tiver mais do que um flanador ficará vermelho senão ficará preto. Este botão serve para verificar se tudo está bem (todo o espaço terá de ficar sempre preto).

O slider max-unidades varia entre 0 e 360 e corresponde a um número máximo que se pode rodar no sentido horário e  que será explicado mais em baixo, quando falarmos do comportamento pormenorizado dos flanadores

Por outro lado, precisamos de contar o número máximo de flanadores por patch, apenas para verificar de novo se tudo está bem. Para isso, usaremos um monitor (max-flanadores-por-patch) que indicará o maior número de flanadores por patch em cada instante. Para estar tudo bem o monitor deverá indicar sempre 1.

A figura em cima ilustra o interface que desejamos e o estado do mundo depois de carregarmos no botão inicia, para uma densidade de 11% de flanadores e uma rotação horária máxima de 39 graus.

O comportamento dos flanadores é muito simples: se o patch uma unidade à sua frente estiver livre, o flanador fica verde e avança 1 unidade senão fica amarelo e roda no sentido horário um valor aleatório que não excede o valor indicado no slider max-unidades.

A figura seguinte corresponde a um instantâneo capturado depois de termos carregado nos dois botões forever. Podemos ver flanadores amarelos e verdes a passearem sem se pisarem. Como se pode confirmar, 1 é o número máximo de flanadores por patch e não há patches vermelhos. Tudo está bem!

DESAFIO 2

Hieraquia de flanadores

Neste desafio, há flanadores mais importantes do que outros, e a indicação da importância é dada pelo próprio ID de cada tartaruga. A tartaruga de ID 0 é a menos importante e a tartaruga de maior ID será a mais importante, a tartaruga alfa. Por exemplo, se tivermos criado 100 flanadores, teremos o flanador 0, 1, 2 até ao 99. O 99 será o mais importante. A importância é relevante para a forma como passeiam. Assim, um flanador cede sempre a passagem a outro que seja mais importante do que ele. E ao ceder a passagem, pode acontecer que seja pisado. Queremos que as tartarugas que sejam pisadas emitam um som (uma espécie de queixume) e para isso vamos utilizar a extensão NetLogo “sound.jar”. Quanto mais importante o flanador maior deve ser a intensidade do seu queixume. (Ver no manual a secção referente à extensão “sound.jar” e exemplos de utilização de sons).

Outra variação em relação ao desafio 1 é que agora os flanadores têm um campo de visão que pode ser mais vasto do que apenas o patch em frente uma unidade. Todos os flanadores terão um campo de visão circular com centro no patch onde estão e com um raio variável definido por um slider global chmado visao.

Queremos também ver o número de vezes que os flanadores tiveram que esperar para verificar se existe uma relação entre esse valor e a hieraquia. Em princípio, esperamos que o flanador menos importante seja o que espera um maior número de vezes e que o mais importante nunca tenha de esperar por ninguém, porque tem a prioridade máxima.

Vamos utilizar comandos “perspective” do NetLogo. Queremos poder seguir o flanador mais fraco e também o flanador mais forte. Vejam no manual os comandos referentes à secção “perspective”.

Interface

Vamos manter um “slider” com a variável global Percentagem-flanadores que indica a densidade inicial de flanadores. Os lugares iniciais dos flanadores são escolhidos ao acaso mas notem que continua a não poder, logo na situação inicial, ficar mais do que 1 flanador no mesmo patch.

Vamos ter um slider visao que indica o raio do campo circular de visão de cada flanador. 

Temos 5 botões:

O botão inicia (não é forever) que cria os flanadores de acordo com a densidade fornecida (Percentagem-flanadores).

O botão manda-flanar (forever - observer) que manda executar repetidamente o comportamento dos flanadores. Será um botão síncrono porque manda executar todas o seu comportamento e só manda executar de novo quando todos tenham acabado.

Os dois botões segue mais fraco e segue mais forte que mandam seguir os flanadores mais fraco e mais forte, respectivamente. (Ver os comandos relativos à mudança de perspectiva).

O botão grafico que mostra o número de vezes que cada flanador teve de esperar para dar prioridade aos mais importantes do que ele. É preciso ter cuidado ao utilizar este botão porque se for pressionado enquanto o botão manda-flanar estiver a ser executado pode gerar muita confusão. É melhor mandarem os flanadores pararem de flanar sempre que queiram ver os gráficos. Outra solução, mais complexa, é tentarem utilizar o comando stop.

A figura seguinte ilustra o interface desejado e corresponde a um instantâneo capturado depois de termos carregado no botão inicia, para uma densidade de flanadores de 3%. Esses 3% de densidade corresponderam a 22 flanadores (Id 0 até ID 21). Notem que o campo de visão tem o raio de duas unidades.

O Comportamento dos flanadores

Como dissemos atrás, os flanadores zigzagueiam sempre que não tenham ninguém no seu campo de visão ou se o flanador mais próximo dentro do campo de visão seja menos importante do que ele. Caso contrário têm de ficar quietinhos, correndo sériamente o risco de serem pisados, se os outros passaram exactamente no patch em que estiverem.

Os flanadores com caminho livre são verdes com a excepção do flanador 0 (o menos importante) que fica vermelho e do mais importante que fica azul.

Os flanadores à espera são amarelos excepto o menos importante que é laranja.

Observando os dois flanadores (o menos e o mais importante)

Para além de termos cores específicas para os flanadores mais e menos importantes queremos seguir-lhes o rasto utilizando os comandos NetLogo referentes à perspectiva e para os seguirmos criámos dois botões.

A figura seguinte corresponde a um instantâneo do programa depois de mandarmos flanar as tartarugas durante um certo tempo. Podemos ver que a tartaruga vermelha está a ser seguida. O gráfico mostra o número de vezes que cada uma das tartarugas teve de esperar para dar prioridade a outras mais importantes.

© 2007 DI-FCUL – Todos os direitos reservados.

Design & Development by Core Factor