Escolar Documentos
Profissional Documentos
Cultura Documentos
Introdução à Inteligência
Artificial (IIA)
2022/23
Avaliação IIA
● Exame escrito - 12 Valores
1
30/09/22
Ficha 1
Introdução ao NetLogo
2
30/09/22
1. Introdução ao NetLogo
Link
Para obter o software, tutoriais, manual de utilizador, entre outras informações
sobre o NetLogo, aceder a:
http://ccl.northwestern.edu/netlogo
Instalar NetLogo
3
30/09/22
O que é?
Agentes
4
30/09/22
Funcionamento
● Utiliza-se o NetLogo para
○ Simulação de modelos existentes
○ Desenvolvimento de novos modelos de simulação
● O NetLogo tem três tipos de elementos
○ Turtles
■ Agentes que se movem no ambiente 2D
○ Patches
■ Células que constituem o ambiente 2D
○ Observador
■ Observa o mundo e pode atuar sobre ele (pessoa que usa e analisa a
simulação no NetLogo)
10
5
30/09/22
11
12
6
30/09/22
13
14
7
30/09/22
● Criação de procedimentos:
8
30/09/22
● Declaração de variáveis:
○ O Netlogo permite que a declaração de variáveis possa ser feita das
seguintes formas:
■ patches-own [var1 …] (variáveis específicas a cada patch);
■ turtles-own [var1 …] (variáveis específicas a cada agente);
■ globals [global1 …] (variáveis globais);
■ locals [local1 …] (variáveis temporárias definidas dentro de um
procedimento ou função).
17
● Para isso usa o comando with, conforme se pode ver nos exemplos
abaixo:
○ ask turtles with [sexo = 1] (todos os agentes com a variável sexo igual a 1);
○ ask turtles with [xcor > 0] (todos os agentes com a coordenada x maior que
zero);
○ ask patches with [pycor > 0] (todas as patches com a coordenada y maior que
zero).
18
9
30/09/22
19
20
10
30/09/22
21
● Instruções de controlo:
○ if condição [comandos]
■ Se a condição for verdadeira executa os comandos.
○ ifelse condição [comandos1][comandos2]
■ Se a condição for verdadeira executa comandos1, caso contrário
executa comandos2.
○ while [condicao][comandos]
■ Enquanto a condição for verdadeira executa comandos.
22
11
30/09/22
● Instruções de controlo:
○ Se a patch onde está o agente for verde, põe a patch a preto e
aumenta energia dele:
ask turtles
[
if pcolor = green
[
set pcolor black
set energy (energy + 10)
]
]
23
● Instruções de controlo:
○ Movimenta o agente 2 (turtle) até encontrar uma patch sem agentes:
ask turtle 2
[
while [any? other turtles-here]
[
fd 1
]
]
24
12
30/09/22
Nome do procedimento
a executar
Label do
botão
26
13
30/09/22
3. Utilização do NetLogo
27
28
14
30/09/22
Botões (para a
especificação de
parâmetros do
modelo a simular e Área de simulação
para a execução (ambiente onde se
de certos
vão movimentar os
procedimentos)
agentes definidos no
modelo)
Gráficos e
monitores (para
apresentação de
resultados)
29
Ambientes
Interface: ambiente gráfico, onde Info: ambiente de documentação, Code: ambiente de codificação,
se encontra a área de simulação, se onde se pode ver e escrever onde se pode ver e implementar
adicionam botões, gráficos e
monitores, entre outras coisas, e informações sobre o modelo. Para código, escrito em linguagem Logo,
onde se pode visualizar o progresso se escrever essas informações que irá controlar a simulação ou o
da simulação deve-se pressionar o botão Edit comportamento do modelo
30
15
30/09/22
Área de simulação
● Ambiente em que se movimentam os agentes
● Constituído por uma grelha bidimensional de
células
● Para configurar as dimensões:
○ Pressionar o botão direito do rato sobre a grelha
○ Selecionar a opção Edit
○ Alterar as coordenadas máximas para o eixo dos XX
(max-pxcor) e dos YY (max-pycor)
● A origem é a célula central, que tem
coordenadas (0, 0)
31
Simulação
● Realizar a simulação do modelo Wolf Sheep
Predation, efetuando os seguintes passos
○ Pressionar o botão setup, de forma a inicializar o
modelo (definir quantas ovelhas e quantos lobos
existem inicialmente no ambiente, qual a sua taxa de
reprodução, limpar a área gráfica de simulação e
colocar-lhe as patches com e sem relva, as ovelhas e
os lobos, etc.)
○ Pressionar o botão go, de forma a ver como o
ambiente se vai transformando ao longo do tempo
○ Voltar a pressionar o botão go quando pretender parar
a simulação
○ Voltar a pressionar o botão go (continua do ponto onde
foi parada) e deixar que a simulação termine por si
32
16
30/09/22
● monitores
● gráficos
Parametrização
● A parametrização do modelo é feita mexendo em certos botões existentes na área Interface.
● O NetLogo permite alterar os parâmetros associados a esses botões e que controlam o
funcionamento dos modelos (antes e durante a simulação).
● No modelo do exemplo existem:
○ Switches (interruptores) – que ativam/desativam um determinado parâmetro do modelo definido
○ Sliders (cursores) – que atribuem um valor (de entre uma gama de valores possíveis) a um determinado
parâmetro do modelo criado
34
17
30/09/22
Equilíbrio
35
Centro de comando
● ask patches [set pcolor yellow]
● setup
18
30/09/22
37
Análise do código
● Tentar encontrar no código as instruções que fazem as seguintes tarefas
○ Criar dois tipos de turtles, lobos e ovelhas
○ Criar o número de lobos e ovelhas estipulados nas variáveis correspondentes
○ Reprodução dos lobos: como se cria o 2º lobo, qual a energia com que fica?
○ Morte dos lobos ou ovelhas
○ Comer a erva, o que acontece à energia de quem come, o que acontece à patch onde estava
a relva?
○ Fazer crescer a relva de tempos a tempos
○ No separador Interface edite o gráfico e analise as instruções que permitem atualizar os
dados durante a execução do modelo
38
19
30/09/22
Análise do código
● Criar dois tipos de turtles, lobos e ovelhas
39
Análise do código
● Criar o número de lobos e ovelhas estipulados nas variáveis correspondentes
setxy x y
20
30/09/22
Análise do código
● Reprodução dos lobos: como se cria o 2º lobo, qual a energia com que fica?
Análise do código
● Morte dos lobos ou ovelhas
42
21
30/09/22
Análise do código
● Comer a erva, o que acontece à energia de quem come, o que acontece à
patch onde estava a relva?
43
Análise do código
● Fazer crescer a relva de tempos a tempos
44
22
30/09/22
Análise do código
● No separador Interface edite o gráfico e analise as instruções que permitem
atualizar os dados durante a execução do modelo
45
4. Exercício
Criação de um modelo básico
46
23
30/09/22
Modelo básico
● Com os conceitos adquiridos na aula, siga o tutorial da Ficha 1 e implemente
o modelo netlogo proposto
47
48
24
30/09/22
Modelo básico
● No separador Code, escrever o código dos procedimentos associados a cada
um dos botões
49
Modelo básico
● Ir para o separador Interface e executar a simulação do modelo,
pressionando primeiro no botão Setup (que inicializa o modelo) e depois no
Go
● Alterar a posição e a orientação inicial das pessoas (turtles), acrescentando
o código no procedimento Setup
25
30/09/22
Modelo básico
● Executar novamente a simulação do
modelo e ver o resultado desta mudança
de código (pode diminuir a velocidade de
visualização no slider da barra principal
para ver melhor os efeitos do código
introduzido)
● No código do procedimento Setup, alterar
o parâmetro de orientação de movimento,
o heading, de 90 para 0 e ver a diferença
ao executar a simulação do modelo
● Colocar as pessoas num movimento
aleatório, alterando a sua orientação
(heading) para random 360
51
Modelo básico
● Acrescentar um Slider para controlar o número de pessoas
○ Na janela que aparece aquando da criação do Slider, definir uma variável global, de nome
pessoas, que tenha possa ter valores entre 0 e 10 e com o valor inicial de 5
○ Alterar no código do procedimento Setup de maneira a que o número de turtles a criar
corresponda ao valor da variável pessoas, inicializada no slider
52
26
30/09/22
Modelo básico
● A energia de uma turtle
normalmente está ligada às tarefas
que faz (por exemplo, perde
energia ao se movimentar e ganha
energia ao se alimentar).
Acrescentar energia às pessoas
● Inicializar cada pessoa com um
valor de energia aleatória positiva,
de valor máximo 100
53
Modelo básico
● Colocar energia de cada pessoa a
diminuir uma unidade a cada
movimento que fazem, a pessoa a
morrer quando a sua energia for
menor ou igual a zero e marcar a
vermelho o local onde as pessoas
morreram patch-here (analisa
● Parar a simulação do modelo quando célula onde o agente
está)
não existirem pessoas (parar o botão
forever)
● Executar a simulação do modelo e
verificar todas as alterações
54
27
30/09/22
Modelo básico
● Alimentação das pessoas (este alimento será
representado por patches verdes e dará energia
às pessoas que chegam a essas patches. Essa
energia serve para se conseguirem movimentar
durante mais tempo), fazer o seguinte:
○ Acrescentar no procedimento Setup o código que
manda executar um novo procedimento chamado
Setup-patches
○ Acrescentar o procedimento Setup-patches ao código
já existente, o qual coloca, de forma aleatória, algumas
patches a cor verde, na área de simulação
○ Acrescentar no final do procedimento Go o código que
manda executar um novo procedimento chamado
Comer
○ d«Acrescentar o procedimento Comer ao código já
existente, o qual deteta a cor da patch e, se esta for
verde, passa-a a preto e aumenta a energia da pessoa
55
Modelo básico
● Adicionar um Monitor para ver o número de pessoas que se encontram vivas
ao longo da execução da simulação do modelo
56
28
30/09/22
Modelo básico
● A informação do monitor pode
ser vista em forma de gráfico
○ Acrescentar um Plot
○ Atualização do gráfico ao longo do
tempo
■ No fim do procedimento em
Go, acrescentar a instrução
tick
■ No início do procedimento
Setup, após a instrução clear-
all, adicionar a instrução reset-
ticks
57
Modelo básico
● A instrução breed permite criar vários tipos
de turtles. Criar dois tipos de pessoas,
homens e mulheres,
○ É necessário criar termos para a utilização da breed
no plural (ex: homens) e no singular (ex: homem)
○ Comentar a linha create-turtles pessoas e set color
yellow, no procedimento Setup
○ Editar o Slider que mostra o número de pessoas e
alterar a variável global para nmulheres
○ Criar mais um Slider na interface gráfica, similar ao
anterior, para definir o número de mulheres, com a
variável global nhomens
58
29
30/09/22
Modelo básico
● No procedimento em Setup, adicionar
código de modo a atribuir às mulheres
a cor vermelha e tamanho 1.5 e dar
aos homens cor azul e tamanho 1
59
Modelo básico
● Altere o procedimento Go de forma a
que as mulheres e os homens
gastem, respectivamente, 2 e 1
unidades de energia, quando se
movimentarem, e que, quando
morrerem, as mulheres deixem uma
patch vermelha e os homens uma
azul
60
30
30/09/22
Modelo básico
● Editar o gráfico e alterá-lo para que tenha duas canetas, uma para registar o
número de homens e outra para registar o número de mulheres
61
31