Você está na página 1de 5

Teste modelo de Simulao de Sistemas Sociais Abril 2012 Durao: 40 minutos.

O teste com consulta (de quaisquer documentos, no permitida a consulta de computadores ou telemveis). O teste vale 20% da avaliao da UC -Considere o modelo das colectividades dado nas aulas, com a seguinte especificao: Os agentes so inicialmente distribudos aleatoriamente e no tm memria da sua posio ou da posio anterior dos outros agentes Cada agente faz o seguinte: Conta quantos agentes existem na sua vizinhana, de acordo com o parmetro local-radius Se o nmero de agentes for maior que um dado limiar, o agente orienta-se numa direco oposta ao agente com mais vizinhos dentro do seu raio de viso, movendo-se depois uma distncia aleatria Se o nmero de agentes for menor que um dado limiar, o agente orienta-se na direco do agente com mais vizinhos dentro do seu raio de viso, movendose depois uma distncia aleatria Em anexo apresenta-se uma possvel soluo de implementao. Considere agora as seguintes alteraes ao modelo. Neste novo modelo, o conceito de vizinhana de um agente passa a no ser baseada na localizao e distncia (raio) espacial, mas antes na existncia de ligaes (links) entre agentes (o parmetro local-radius deixa, desta forma, de ser usado): Inicialmente os agentes so distribudos aleatoriamente e cada agente liga-se at outros 5 agentes, escolhidos aleatoriamente Cada agente faz o seguinte: Os vizinhos de um agente so os agentes a ele ligados directamente Em cada iterao o agente perde uma das suas ligaes escolhida aleatoriamente, e ganha uma nova ligao para um qualquer agente escolhido aleatoriamente e dentro do seu raio de viso Se o nmero de vizinhos for maior que um dado limiar, o agente orienta-se numa direco oposta ao agente com mais vizinhos dentro do seu raio de viso, movendo-se depois uma distncia aleatria

Se o nmero de vizinhos for menor que um dado limiar, o agente orienta-se na direco do agente com mais vizinhos dentro do seu raio de viso, movendose depois uma distncia aleatria Seguidamente apresenta-se uma implementao parcial do novo modelo. No projector apresenta-se a visualizao da execuo do modelo (no teste modelo no fornecido a visualizao da execuo). Complete o programa nos stios assinalados.
breed [agents agent] agents-own [visible around] to setup clear-all ask patches [set pcolor white] create-agents 300 [ set color green set size 2 setxy random-pxcor random-pycor set heading random 360 ;; garantir que cada agente est no seu prprio patch while [any? other agents-here] [fd 1] ] ;; criar at 5 links aleatrios por agente ask agents [ let r random 5 // completer o cdigo ] end to go if ticks >= 500 [stop] ask agents [count-those-around] ask agents [move] tick end to count-those-around set around my-links set visible agents with [self != myself] in-radius visible-radius ;; o agente perde uma das suas ligaes (se existirem) // completar ;; criar um link para algum agente dentro do seu raio de viso (se existir algum dentro do raio de viso) // completar end to move if any? visible [ ifelse my-links > threshold [ face-away set color red ] [ face-towards set color green] fd random speed

;; certificar-se que para num patch vazio while [any? other agents-here] [fd 1] ] end ;; orientar-se para o agente com o maior nmero de agentes na vizinhana to face-towards face max-one-of visible [around] end ;; orientar-se na direco oposta ao agente com o maior nmero de agentes na vizinhana to face-away set heading towards max-one-of visible [around] - 180 end

Anexo Implementao do modelo original


;; - Gilbert, Nigel. (2007). A generic model of collectivities. ;; Cybernetics and Systems: An International Journal, 38 (7), 695-706. ;; - Code from Agent-Based Models, Nigel Gilbert, Sage Publications, 2008.

breed [agents agent] agents-own [around visible] to setup clear-all ask patches [set pcolor white] create-agents 500 [ set color green set size 2 setxy random-pxcor random-pycor set heading random 360 ;; garantir que cada agente est no seu prprio patch while [any? other agents-here] [fd 1] ] end to go if ticks >= 500 [stop] ask agents [count-those-around] ask agents [move] tick end ;; memorizar o nmero de agentes na vizinhana dentro de local-radius a ;; os outros agentes que se podem ver dentro de visible-radius to count-those-around set around count agents with [self != myself] in-radius local-radius set visible agents with [self != myself] in-radius visible-radius end to move if any? visible [ ifelse around > threshold [ face-away set color red ] [face-towards set color green] fd random speed ;; certificar-se que para num patch vazio while [any? other agents-here] [fd 1] ] end ;; orientar-se para o agente com o maior nmero de agentes na vizinhana to face-towards face max-one-of visible [around] end

;; orientar-se na direco oposta ao agente com o maior nmero de agentes na vizinhana to face-away set heading towards max-one-of visible [around] - 180 end