⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 aaa---mostdifferent.nlogo

📁 NETLOGO
💻 NLOGO
字号:
globals[  timestep          ; counts how much time has passed]turtles-own[  genome  genomei  genomef]to setup  locals [step]  clear-output  ca  set timestep 0  cct num-agents  [    set genomei 0    set genome list (random 2) (random 2)    repeat genome-size - 2 [            set genome lput (random 2) genome    ]    ; print genome    set step 0    repeat genome-size [      ifelse ( item step genome = 0 )      [ set genomei genomei * 2 ]      [ set genomei 1 + genomei * 2]      set step step + 1    ]    set genomef genomei / (2 ^ genome-size)    set color round(139.0 * genomef)    setxy (random-float screen-size-x)          (random-float screen-size-y)    ; randomize turtle locations  ]  setup-plot  plot-genomesendto go  if moving  [ move  ]  mate  set timestep timestep + 1  plot-genomesendto move  ask turtles  [    rt random-float 30 - random-float 30    fd 2  ]endto mate  locals [ difference biggest-difference most-different me friends step cross-over1 cross-over2]  without-interruption [    ask turtles [      set biggest-difference 0      set me self      set friends []      ask turtles in-radius region-size [        set friends lput self friends      ]      foreach friends [        set difference 0        set step 0        repeat genome-size [          if ( item step genome-of ? != item step genome-of me )            [ set difference difference + 1 ]          set step step + 1        ]        if ( difference > biggest-difference )        [  set biggest-difference difference           set most-different ?        ]      ]          set step 0          ;    set cross-over1 random (genome-size / 3.0) + round(genome-size / 3.0)    ifelse (fixed)       [ set cross-over1  crossover-location ]       [ ifelse (uniform)         [ set cross-over1 random genome-size ]         [ set cross-over1 random-normal (genome-size / 2.0) (genome-size / 6.0) ]       ]    set cross-over2 random 2    repeat genome-size [      ifelse (cross-over2 = 0)      [ if (step >= cross-over1)        [set genome replace-item step genome item step genome-of most-different]      ]      [ if (step < cross-over1)        [set genome replace-item step genome item step genome-of most-different]      ]      if (random one-over-mutation-rate = 0)      [set genome replace-item step genome (1 - (item step genome))]   ;   [ set genome-of most-different replace-item step genome-of most-different item step genome    ;  ]      set step step + 1    ]    set step 0    set genomei 0    repeat genome-size [      ifelse ( item step genome = 0 )      [ set genomei genomei * 2 ]      [ set genomei 1 + genomei * 2]      set step step + 1    ]    set genomef genomei / (2 ^ genome-size)    set color round(139.0 * genomef)         ]  ]endto plot-genomes  set-current-plot "Genomes"  set-current-plot-pen "genomes"  ask turtles [    plotxy timestep genomef  ]    set-current-plot "Genome-distribution"  set-current-plot-pen "agents"  histogram-from turtles [genomei]endto setup-plot  set-current-plot "Genomes"  set-plot-x-range 0 400  set-plot-y-range 0 1.0    set-current-plot "Genome-distribution"  set-plot-x-range 0 2 ^ genome-size  set-plot-y-range 0 round ((count turtles) / 5)  set-histogram-num-bars 100end@#$#@#$#@GRAPHICS-WINDOW2902270445750504.00101110CC-WINDOW54711024566Command CenterSLIDER145825291num-agentsnum-agents101000350101agentsBUTTON15177550setupsetupNIL1TOBSERVERTNILBUTTON791713950gogoT1TOBSERVERTNILPLOT2254282457genomestimestepgenome0.0400.00.01.0truetruePENS"genomes" 5.0 2 -5825686 falseMONITOR7883186180Time Steptimestep31SWITCH19098280131movingmoving01-1000BUTTON1521721550stepgoNIL1TOBSERVERTNILSLIDER1498186131region-sizeregion-size3501611NILPLOT7161081015403Genome-distributiongenomenumber0.01.00.01.0truefalsePENS"agents" 1.0 1 -16777216 trueSLIDER14136218169one-over-mutation-rateone-over-mutation-rate10050025051NILSLIDER14174186207genome-sizegenome-size12242041NILSWITCH192212282245fixedfixed11-1000SLIDER14211186244crossover-locationcrossover-location024211NILSWITCH191174281207uniformuniform11-1000@#$#@#$#@WHAT IS IT?-----------This NetLogo simulation is aimed at stimulating some thought about evolutionary processes.The basic idea is this:  there are a bunch of agents, each with a "genome" (a string of bits).  At each time step, each agent looks at its (nearby) neighbors and selects one to mate with.  The selection algorithm is to choose the neighbor who is most different (hamming distance of genomes) from you.  Reproduction is replacement of self by a single offspring, whose genome is the result of a crossover with the mate (a crossover point is selected; the new genome results from one parent up to the crossover point, and the other parent from there on -- which parent selected at random).  The crossover point is selected from a normal distribution with mean genome-size / 2, and standard deviation genome-size / 6.  There is also the possibility of mutation of a "gene" (a bit in the genome).HOW TO USE IT-------------Each pass through the GO function represents one time step.The histogram shows the number of agents having a given range of genomes.  The genomes are represented as the binary number corresponding to the genome bit string.@#$#@#$#@defaulttrue0Polygon -7500403 true true 150 5 40 250 150 205 260 250arrowtrue0Polygon -7500403 true true 150 0 0 150 105 150 105 293 195 293 195 150 300 150boxtrue0Polygon -7500403 true true 45 255 255 255 255 45 45 45circletrue0Circle -7500403 true true 35 35 230personfalse0Circle -7500403 true true 155 20 63Rectangle -7500403 true true 158 79 217 164Polygon -7500403 true true 158 81 110 129 131 143 158 109 165 110Polygon -7500403 true true 216 83 267 123 248 143 215 107Polygon -7500403 true true 167 163 145 234 183 234 183 163Polygon -7500403 true true 195 163 195 233 227 233 206 159spacecrafttrue0Polygon -7500403 true true 150 0 180 135 255 255 225 240 150 180 75 240 45 255 120 135thin-arrowtrue0Polygon -7500403 true true 150 0 0 150 120 150 120 293 180 293 180 150 300 150truck-downfalse0Polygon -7500403 true true 225 30 225 270 120 270 105 210 60 180 45 30 105 60 105 30Polygon -8630108 true false 195 75 195 120 240 120 240 75Polygon -8630108 true false 195 225 195 180 240 180 240 225truck-leftfalse0Polygon -7500403 true true 120 135 225 135 225 210 75 210 75 165 105 165Polygon -8630108 true false 90 210 105 225 120 210Polygon -8630108 true false 180 210 195 225 210 210truck-rightfalse0Polygon -7500403 true true 180 135 75 135 75 210 225 210 225 165 195 165Polygon -8630108 true false 210 210 195 225 180 210Polygon -8630108 true false 120 210 105 225 90 210turtletrue0Polygon -7500403 true true 138 75 162 75 165 105 225 105 225 142 195 135 195 187 225 195 225 225 195 217 195 202 105 202 105 217 75 225 75 195 105 187 105 135 75 142 75 105 135 105@#$#@#$#@NetLogo 2.1.0@#$#@#$#@@#$#@#$#@@#$#@#$#@

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -