Conteúdo

Actividades

Actividade 1 (NetLogo)

Imaginemos o cenário de uma nave que está poisada na lua e que tem a missão de recolher um conjunto de rochas para análise. A nave contém um conjunto de robôs exploradores que terão de procurar rochas e de as trazer para a nave.

DESAFIO 1

Vamos ter uma nave formada por patches azuis com o centro (0,0) e um raio de 5 unidades e uma mancha de rochas formadas por patches amarelos com um raio de 5 e com centro em (0.8 * max-pxcor,0.8 * max-pxcor). Notem que as constantes do NetLogo max-pxcor e max-pycor dão-nos os dois limites do mundo.

Temos um “slider” com a variável global robos que indica o número de robôs que queremos que explorem a lua.

Queremos que as tartarugas tenham tamanho 2 e que estejam inicialmente localizadas no centro da nave, o ponto (0,0). Queremos também que a forma das tartarugas seja do tipo prédefinido “bugs”.

Temos dois botões: O botão configura que cria a nave, a mancha de rochas e os exploradores e o botão executa (um botão forever) que como o nome indica executa repetidamente o comportamento dos robôs exploradores. Cada patch amarelo corresponde a uma rocha.

A figura em cima ilustra o interface que desejamos e o estado do mundo depois de carregarmos no botão configura.

O comportamento dos robôs é o seguinte. Vagueiam ao acaso à procura de rochas (não possuem nenhuma ideia onde estejam) e quando as encontram recolhem-nas e iniciam o caminho de regresso para a nave. Eles não sabem onde está a nave e, assim, terão de vaguear também ao acaso à procura da nave. Chegados à nave, voltam a partir para explorarem a lua à procura de mais rochas. Cada robô só pode transportar uma rocha de cada vez. Os robôs que procuram rochas devem ter a cor vermelha e os robôs que transportam rochas serão verdes. Como podemos ver na figura em cima, o centro vermelho corresponde à pilha de 50 robôs vermelhos (na situação inicial, eles não transportam rochas).

 

Notem que a superfície lunar não tem fronteiras, ou seja as tartarugas atravessam os limites do espaço reaparecendo no lado oposto!

A figura seguinte corresponde a um instantâneo capturado durante a missão de exploração. Podemos ver tartarugas (robôs) vermelhas e verdes, activamente à procura das rochas e da nave e também a mancha de rochas já parcialmente consumida.

 

 

DESAFIO 2

Vamos manter o cenário do desafio 1 e fazer uma ligeira modificação na capacidade e comportamento dos robôs exploradores. Vamos dotá-los com a capacidade de conhecerem onde se encontra a nave e de se poderem orientar na sua direcção quando transportam rochas de regresso à nave.

 

Na figura seguinte podemos ver um instantâneo da actividade de exploração em que os robôs de regresso à nave (os verdes) não andam desorientados sem saber onde a nave se encontra mas que, pelo contrário, se dirigem para ela pelo caminho mais curto (em linha recta).

 

DESAFIO 3

Vamos modificar o cenário do desafio 2, fazendo com que as rochas não se encontrem todas concentradas numa área mas que fiquem dispersas pela superfície da lua.

Teremos mais um slider onde definimos a densidade (percentagem) de rochas na superfície lunar.

Notem que os robôs mantêm o mesmo comportamento do desafio 2: vagueiam à procura das rochas e dirigem-se directamente para a nave para as depositar.

 

DESAFIO 4

Neste desafio pretendemos apenas acrescentar um gráfico (plot) que nos indica a evolução do número de rochas que existem por recolher e um monitor que indica o número preciso de rochas “à solta” na superfície lunar. Nem sempre queremos ver o gráfico da evolução das rochas não recolhidas e por isso temos um switch (plot?) que indica se queremos (on) ou não (off) escrever no gráfico.

Consideramos que as rochas que estão a ser transportadas pelos robôs e que ainda não chegaram à nave não são rochas por recolher.

Após pressionar o botão configura teremos o seguinte interface, para 100 robos e uma densidade de 45%, com o switch a on:

A seguir um “instantâneo” retirado no decurso da missão de exploração quando faltavam ainda 1428 rochas por recolher.

Por outro lado, como devem ter reparado nos desafios anteriores, os exploradores não têm a noção que as rochas se esgotaram e que não vale a pena explorar mais. Assim, queremos que façam com que o programa pare de ser executado logo que todas as rochas tenham chegado à nave e que não haja nem robôs a transportar rochas nem rochas por recolher. No fundo queremos que o botão execute seja desligado quando a missão tiver sido cumprida.

DESAFIO 5

Vamos alterar o desafio 4 em dois detalhes.

(1)  Vamos deslocar a nave para o canto superior direito.

(2)  Vamos limitar a superfície lunar com uma parede (patches a cor de rosa) de modo a que os robôs não atravessem as fronteiras de um lado para o outro. Assim, um robô quando chega perto de uma parede tem de a evitar, não podendo atravessá-la.

A figura seguinte ilustra bem a situação inicial desejada.

 

DESAFIO 6

Vamos modificar ligeiramente o cenário definido para o desafio 5. Agora os robôs podem transportar um número de rochas limitado a 5. Mas, há robôs com diferentes capacidades, uns mais robustos do que outros, podendo transportar mais ou menos rochas. Os robôs são criados com capacidades de transporte aleatórias entre 1 e 5.

Um robô só deveria regressar à nave depois de ter recolhido o número de rochas correspondente à sua capacidade máxima. No entanto, se assim fosse, quando se esgotassem as rochas não recolhidas teríamos ainda robôs a transportar rochas robôs esses que não esgotaram as respectivas capacidades e como não esgotaram a sua capacidade máxima não regressam à nave. Então, para resolver esse problema, resolvemos arranjar um parâmetro global, a paciência, que pode ser definida num slider e que indica que um robô tem uma paciência limitada entre recolhas. Ou seja, logo que tenha pegado numa rocha liga o seu relógio-paciência (põe-no a zero) e quando chegar ao limite da paciência regressa à nave e deposita as rochas que tiver em seu poder, mesmo que não tenha esgotado a sua capacidade máxima. A partir do momento em que recolheu a sua última rocha, cada passo que der implica um incremento no relógio-paciência.

 

A seguir mais um “snapshot” do modelo desejado, com 28 robôs com uma paciência limitada a 50 unidades e uma densidade de 6% de rochas:

 

© 2007 DI-FCUL – Todos os direitos reservados.

Design & Development by Core Factor