---formigas.nlogo
来自「NETLOGO」· NLOGO 代码 · 共 537 行
NLOGO
537 行
globals [ tempo distancia horizonte-olfactivo tamanho-migalha quantidade-inicial-feromonas Patch-Fronteira c-c lista-x lista-y lista-tipo ]turtles-own [ transporta-comida? quantidade-depositada ]patches-own [ feromonas comida cor ninho? cheiro-de-ninho ]to Preparar Preparar-Graf clear-graphics set tempo 0 set horizonte-olfactivo 45 set tamanho-migalha 3 set quantidade-inicial-feromonas 40 set lista-x (list) set lista-y (list) set lista-tipo (list) Preparar-Formigas Preparar-Patches do-plottingendto Preparar-Graf set-current-plot-pen "comida amarela" ppu plotxy 0 0 set-current-plot-pen "comida vermelha" ppu plotxy 0 0 set-current-plot-pen "comida verde" ppu plotxy 0 0 set-current-plot-pen "comida azul" ppu plotxy 0 0endto Preparar-Formigas set-default-shape turtles "ant" cct formigas [ set size 2 set color orange rt random-float 360 set transporta-comida? false ]endto Preparar-Patches set Patch-Fronteira patches with [ abs pxcor = screen-edge-x or abs pycor = screen-edge-y ] ask patches [ set feromonas 0 set comida 0 set ninho? distancexy 0 0 < 5 set cheiro-de-ninho 200 - distancexy 0 0 if ninho? [ set pcolor blue ] ]endto Executar ask turtles [ Mover-Formigas ] diffuse feromonas taxa-difusao-feromonas / 100 ask Patch-Fronteira [ set feromonas 0 ] ask patches [ Actualizar-Patches ] set tempo tempo + 1 do-plottingendto Actualizar-Patches ifelse ninho? [ set pcolor blue ] [ ifelse comida > 0 [ set pcolor cor ] [ set feromonas feromonas * (100 - taxa-evap-feromonas) / 100 set pcolor scale-color green feromonas 0 50 ] ]endto Mover-Formigas if who < tempo [ ifelse transporta-comida? [ set color brown + 1 Regressar-ao-Ninho ] [ set color orange Procurar-Comida ] ]endto Regressar-ao-Ninho ifelse ninho? [ set transporta-comida? false rt 180 forward 1 ] [ set feromonas feromonas + quantidade-depositada set quantidade-depositada quantidade-depositada - 1 if quantidade-depositada < 1 [ set quantidade-depositada 1 ] Cheirar-Ninho rt random horizonte-olfactivo - random horizonte-olfactivo forward 1 ]endto Procurar-Comida ifelse comida > 0 [ set transporta-comida? true set comida comida - 1 set quantidade-depositada quantidade-inicial-feromonas rt 180 ] [ Universo-Finito ifelse feromonas < 0.05 [ rt random horizonte-olfactivo - random horizonte-olfactivo ] [ if feromonas < 2 [ Cheirar-Feromonas ] ] forward 1 ]endto Cheirar-Feromonas locals [ alcance cheiro-esquerda cheiro-frente cheiro-direita ] Universo-Finito rt random horizonte-olfactivo - random horizonte-olfactivo set alcance alcance-olfactivo set cheiro-esquerda 0 set cheiro-frente 0 set cheiro-direita 0 while [ alcance > 0 ] [ set cheiro-esquerda cheiro-esquerda + feromonas-of patch-left-and-ahead horizonte-olfactivo alcance set cheiro-frente cheiro-frente + feromonas-of patch-ahead alcance set cheiro-direita cheiro-direita + feromonas-of patch-right-and-ahead horizonte-olfactivo alcance set alcance alcance - 1 ] if (cheiro-direita > cheiro-frente) or (cheiro-esquerda > cheiro-frente) [ ifelse cheiro-direita > cheiro-esquerda [ rt horizonte-olfactivo ] [ lt horizonte-olfactivo ] ]endto-report alcance-olfactivo ifelse inteligencia = "baixa" [ report 0 ] [ ifelse inteligencia = "alta" [ report 7 ] [ report 1 ] ]endto Cheirar-Ninho locals [ cheiro-esquerda cheiro-frente cheiro-direita ] Universo-Finito set cheiro-esquerda cheiro-de-ninho-of patch-left-and-ahead horizonte-olfactivo 1 set cheiro-frente cheiro-de-ninho-of patch-ahead 1 set cheiro-direita cheiro-de-ninho-of patch-right-and-ahead horizonte-olfactivo 1 if (cheiro-direita > cheiro-frente) or (cheiro-esquerda > cheiro-frente) [ ifelse cheiro-direita > cheiro-esquerda [ rt horizonte-olfactivo ] [ lt horizonte-olfactivo ] ]endto Universo-Finito if abs xcor > screen-edge-x - 1 [ set heading towardsxy-nowrap 0 ycor ] if abs ycor > screen-edge-y - 1 [ set heading towardsxy-nowrap xcor 0 ]endto Depositar-Comida locals [ mx my ] set mx round mouse-xcor set my round mouse-ycor ask patch 0 0 [ set distancia distancexy-nowrap mx my ] if mouse-down? [ set lista-x lput mx lista-x ;;pega na lista inicial e devolve a lista inicial com o novo elemento set lista-y lput my lista-y ;; "" ifelse forma-da-migalha = "regular" [ Depositar-Migalha-Regular mx + 0.75 my + 0.75 set lista-tipo lput 1 lista-tipo ] [ Depositar-Migalha-Aleatoria mx + 0.75 my + 0.75 set lista-tipo lput -1 lista-tipo ] ask patches with [ distancexy-nowrap mx my <= tamanho-migalha ] [ if cor-migalha = "amarela" [ set cor yellow ] if cor-migalha = "vermelha" [ set cor red ] if cor-migalha = "verde" [ set cor lime ] if cor-migalha = "azul" [ set cor cyan ] ] ask random-one-of patches with [ distancexy-nowrap mx my <= tamanho-migalha ] [ set lista-tipo replace-item (length lista-tipo - 1) lista-tipo (last lista-tipo * cor) ] ask patches [ Actualizar-Patches ] stop ]endto Depositar-Migalha-Regular [ x y ] ask patches with [ distancexy-nowrap x y <= tamanho-migalha ] [ set comida comida + 10 * (tamanho-migalha - distancexy-nowrap x y) ] ask Patch-Fronteira [ set comida 0 ]endto Depositar-Migalha-Aleatoria [ x y ] locals [ comida-total migalha ] set comida-total tamanho-migalha * tamanho-migalha while [ comida-total > 0 ] [ ask patches with [ distancexy-nowrap x y <= tamanho-migalha ] [ without-interruption [ set migalha 1 + random-float comida-total set comida comida + migalha set comida-total comida-total - migalha ] ] ] ask Patch-Fronteira [ set comida 0 ]endto repor locals [ mcor ] Preparar-graf clear-graphics set tempo 0 set horizonte-olfactivo 45 set tamanho-migalha 3 set quantidade-inicial-feromonas 40 Preparar-Formigas Preparar-Patches ( foreach lista-tipo lista-x lista-y [ ifelse ?1 > 0 [ Depositar-Migalha-Regular ?2 + 0.75 ?3 + 0.75 set mcor ?1 ] [ Depositar-Migalha-Aleatoria ?2 + 0.75 ?3 + 0.75 set mcor -1 * ?1 ] ask patches with [ distancexy-nowrap ?2 ?3 <= tamanho-migalha ] [ set cor mcor ] ] ) ask patches [ Actualizar-Patches ] do-plottingendto do-plotting if not plot? [ stop ] set-current-plot "Comida Disponivel" set-current-plot-pen "comida amarela" set c-c 0 ask patches with [ pcolor = yellow ] [ without-interruption [ set c-c c-c + comida ] ] ppd plotxy tempo c-c set-current-plot-pen "comida vermelha" set c-c 0 ask patches with [ pcolor = red ] [ without-interruption [ set c-c c-c + comida ] ] ppd plotxy tempo c-c set-current-plot-pen "comida verde" set c-c 0 ask patches with [ pcolor = lime ] [ without-interruption [ set c-c c-c + comida ] ] ppd plotxy tempo c-c set-current-plot-pen "comida azul" set c-c 0 ask patches with [ pcolor = cyan ] [ without-interruption [ set c-c c-c + comida ] ] ppd plotxy tempo c-cend; Vers鉶 ICES Copyright 2004, Centro de F韘ica Te髍ica e Computacional; *** NetLogo Model Copyright Notice ***;; This model was created as part of the project:; PARTICIPATORY SIMULATIONS: NETWORK-BASED DESIGN FOR SYSTEMS LEARNING IN; CLASSROOMS. The project gratefully acknowledges the support of the; National Science Foundation (REPP program) -- grant number REC #9814682.;; Copyright 2001 by Uri Wilensky. Updated 2001. All rights reserved.;; Permission to use, modify or redistribute this model is hereby granted,; provided that both of the following requirements are followed:; a) this copyright notice is included.; b) this model will not be redistributed for profit without permission; from Uri Wilensky.; Contact Uri Wilensky for appropriate licenses for redistribution for; profit.;; To refer to this model in academic publications, please use:; Wilensky, U. (2001). NetLogo L-SystemFractals model.; http://ccl.northwestern.edu/netlogo/models/L-SystemFractals.; Center for Connected Learning and Computer-Based Modeling,; Northwestern University, Evanston, IL.;; In other publications, please use:; Copyright 1998 by Uri Wilensky. All rights reserved. See; http://ccl.northwestern.edu/netlogo/models/L-SystemFractals; for terms of use.;; *** End of NetLogo Model Copyright Notice ***@#$#@#$#@GRAPHICS-WINDOW11056359334348.0110000CC-WINDOW6599279665Command CenterBUTTON577169648202PrepararPrepararNIL1TOBSERVERTSLIDER773599978632taxa-evap-feromonastaxa-evap-feromonas01001011%BUTTON648169720202ExecutarExecutarT1TOBSERVERTSWITCH428599572632plot?plot?01-1000SLIDER5775877791formigasformigas020010011NILPLOT563250983593Comida DisponivelTempoComida0.0100.00.020.0truefalsePENS"comida amarela" 1.0 0 -256 true"comida vermelha" 1.0 0 -65536 true"comida verde" 1.0 0 -16711936 true"comida azul" 1.0 0 -16711681 trueBUTTON577136720169Depositar ComidaDepositar-ComidaT1TOBSERVERTSLIDER572599773632taxa-difusao-feromonastaxa-difusao-feromonas01005011%CHOICE57791720136cor-migalhacor-migalha"amarela" "vermelha" "verde" "azul"2MONITOR767141927190distancia ao formigueirodistancia31MONITOR577202720251NILtempo01CHOICE279599429644forma-da-migalhaforma-da-migalha"aleatoria" "regular"1CHOICE7774698391inteligenciainteligencia"baixa" "media" "alta"1MONITOR72092847141patch-horizontalround mouse-xcor01MONITOR84792983141patch-verticalround mouse-ycor01BUTTON777207917240Repor AmbientereporNIL1TOBSERVERTBUTTON6061173544Limpar Gr醘icoclear-all-plotsNIL1TOBSERVERT@#$#@#$#@SISTEMAS ADAPTATIVOS - INTRODU敲O ---------------------As formigas e as suas col髇ias t阭 despertado o interesse de investigadores das mais diversas 醨eas cient韋icas, dada a sua caracter韘tica exemplar de, possuidoras de comportamentos individuais simples, serem no entanto capazes de evidenciar formas de organiza玢o e comportamento colectivos extraordin醨iamente complexos. Esta emerg阯cia de comportamento colectivo complexo tem servido de met醘ora a explora珲es em 醨eas t鉶 distantes da mirmecologia como a Neuroci阯cia, a F韘ica, a Ci阯cia da Computa玢o e Vida Artificial.Tal como nos bandos de aves ou cardumes de peixes, nas col髇ias de formigas n鉶 existe um l韉er (ou mesmo uma hierarquia de l韉eres) que determina o comportamento individual de cada elemento da popula玢o com um fim comum bem determinado. Pelo contr醨io, esse fim comum resulta da conjuga玢o/interac玢o entre os elementos da popula玢o de forma "espont鈔ea". No entanto, e ao contr醨io dos bandos de aves e cardumes de peixes, existe nas col髇ias de formigas uma sofistica玢o adicional: O denominado "feedback positivo".Com efeito, o elenco de ac珲es que caracterizam o comportamento individual das formigas
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?