---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 + -
显示快捷键?