-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathmodel_pheromones_2nests.nlogo
More file actions
3514 lines (3316 loc) · 108 KB
/
model_pheromones_2nests.nlogo
File metadata and controls
3514 lines (3316 loc) · 108 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
extensions [profiler]
;; Two Nest Updates
;; X at the beginning create two nests with two different populations
;; X each ant will need to know which nest it is from
;; X ants see other nests as food sources
;; X at each food source, ants return to the closest nest and join that nest with a certain probability
;; X keep track of amount of food in each nest. Ants can only take food if there is food to take
;; X set food source and nest locations using absolute coordinates
;; X orient ants towards food source or nest they returned from
;; Realism Updates
;; X food sources have rate of food production. ants bring back constant amount of food if they can
;; X nest consumption proportional to population
;; X nest and food sources have max amount of food they can store
;; lets get everything in the right units
;; X 30mx30m area
;; X ants move @ 1cm/s -> each tick is 100 seconds, should reference everything else from this (mainly food production), nothing should be larger than one patch for the most part
;; X maximum trail length possible to maintain should be about 25m (sandor data, he probably got that figure from somewhere else)
;; X make nest maximum proportional to the amount of nests in the ant and the load per ant (from lecheval)
;; X make it so that ants will return from other nest empty-handed if there's no food there instead of continuing on to search at other food sources and then joining the new nest
;; ants need to return to a nest following the same trails they used to get there --> nest stack?
;; if an ant passes through/near a nest, add that to the stack
;; on the return trip, the ants pops off the stack and goes to that nest until it gets home
;; Quality of life updates
;; X food and nest labels for ease of use
;; X trail strength monitor (ants on trail / distance)
;; X get food source with the strongest and weakest trails and monitor
;; moving averages?
;; > network efficiency plot
;; > all vertices
;; > nests only
;; > network robustness plot Seems it would be best to use ready-made functions and do all of this in R or python
;; > all vertices Would be good to figure out how we convert the data we have into a graph though
;; > nests only
;; Experiment Updates
;; X Function to set a food source's production rate by number
;; X Function to report a food source's production rate by number
;; X Capability to set a start and stop time for exclusion and make that exclusion happen
;; X add directionality to internest strengths
;; X Need to make it so that the strength between a nest and a food source is only counting ants that will actually return to that food source
;; X Trail strengths sum across all nests, we have to interpret which nest they are actually going to / coming from
;; X Need a function that returns the distance from a point to the nearest nest
;; X When excluding the weakest trail, it needs to be a trail that is actually being used
;; X Need to be able to set a threshold for "in use", which should clearly be 2.5 ants / m <--> "10 for 400"
;; Major overhaul, everything that can be is list-based now.
;; It does seem to run slower but it is significantly easier to modify things now
patches-own [
chemical1
chemical2
chemical3
chemical4
chemical5
chemical ;; total amount of chemical
chemicalnest
nest-number
source-number
]
turtles-own [
;; statuses: "at nest", "return-from-1", "return-from-2", "return-from-3", "return-from-4", "return-from-5", "foraging-for-1", "foraging-for-2", "foraging-for-3", "foraging-for-4", "foraging-for-5", "foraging"
;; corresponds with status: 0 , 10 , 20 , 30 , 40 , 50 , 1 , 2 , 3, , 4, , 5, , 99
status ;; variable telling the turtle what it is currently doing (integer form)
;; status key is listed above with status variable
prevfood ;; variable holding the information for which food source each ant has been to most recently, 1 indexed with positive indicating food sources and negative indicating nests
nest ;; variable holding which nest each turtle is from
]
;;;;;;;;;;;;;;;;;;;;;;;;
;;; Setup procedures ;;;
;;;;;;;;;;;;;;;;;;;;;;;;
globals [
excluded-source-production
source-locs
source-food
nest-locs
nest-food
nest-maxs
food-productions
food-maxs
]
to setup
clear-all
setup-patches
set food-productions (read-from-string food-production)
set food-maxs (read-from-string food-max)
set-default-shape turtles "bug"
let pop (read-from-string population)
(foreach (n-values (length pop) [i -> i]) pop
[[i p] ->
create-turtles p [
set size 0.28
set status 0
set nest i
set color red
let loc (item i nest-locs)
let x (first loc)
let y (last loc)
setxy x y
right random 360
]
])
reset-ticks
end
to setup-patches
ask patches [
set nest-number -1
set source-number -1
setup-nests
setup-food
recolor-patch
]
end
to setup-nests ;; patch procedure
set nest-locs (read-from-string nest-loc)
set nest-food (n-values (length nest-locs) [0])
set nest-maxs (n-values (length nest-locs) [0])
(foreach (n-values (length nest-locs) [i -> i]) (nest-locs)
[[i loc] ->
let x (first loc)
let y (last loc)
if (distancexy x y < 1)[
set nest-number i
]
ask patch (x + 5) y [set plabel "N" set plabel-color violet]
ask patch (x + 10) y [set plabel i set plabel-color violet]
]
)
end
to setup-food ;; patch procedure
set source-locs (read-from-string source-loc)
set source-food (read-from-string food-init)
(foreach (n-values (length source-locs) [ i -> i ]) (source-locs)
[[i loc] ->
let x (first loc)
let y (last loc)
if (distancexy x y < 1)[
set source-number i
]
ask patch (x + 5) y [set plabel "T" set plabel-color 66]
ask patch (x + 10) y [set plabel i set plabel-color 66]
]
)
end
to recolor-patch ;; patch procedure
;; give color to nest and food sources
(ifelse nest-number >= 0 [
set pcolor violet
]
source-number >= 0 [
set pcolor 66
][
set pcolor scale-color magenta (chemical1 + chemical2 + chemical3 + chemical4 + chemical5 + chemicalnest) 0.05 20
])
end
;;;;;;;;;;;;;;;;;;;;;
;;; Go procedures ;;;
;;;;;;;;;;;;;;;;;;;;;
to go ;; forever button
ask turtles [
(ifelse
color = red [ ; foraging
if nest-number >= 0[
set status 0
]
look-for-food
]
color = blue [ ; returning with food
return-to-nest
]
color = yellow [ ; returning without food
return-to-nest-no-food
])
wiggle
fd 1
]
; don't think I can do this with an array :(
diffuse chemical1 (diffusion-rate / 100)
diffuse chemical2 (diffusion-rate / 100)
diffuse chemical3 (diffusion-rate / 100)
diffuse chemical4 (diffusion-rate / 100)
diffuse chemical5 (diffusion-rate / 100)
diffuse chemicalnest (diffusion-rate / 100)
ask patches [
set chemical1 chemical1 * (100 - evaporation-rate) / 100 ;; slowly evaporate chemical
set chemical2 chemical2 * (100 - evaporation-rate) / 100
set chemical3 chemical3 * (100 - evaporation-rate) / 100
set chemical4 chemical4 * (100 - evaporation-rate) / 100
set chemical5 chemical5 * (100 - evaporation-rate) / 100
set chemicalnest chemicalnest * (100 - evaporation-rate) / 100
set chemical chemical1 + chemical2 + chemical3 + chemical4 + chemical5 + chemicalnest
recolor-patch
]
; Update food stores, either producing them for sources or consuming them in nests
(foreach (n-values (length source-locs) [i -> i])
[[i] ->
set source-food (replace-item i source-food ((item i source-food) + (item i food-productions)))
if item i source-food > item i food-maxs [
set source-food (replace-item i source-food (item i food-maxs))
]
])
(foreach (n-values (length nest-locs) [i -> i])
[[i] ->
set nest-food (replace-item i nest-food ((item i nest-food) - (count turtles with [nest = i]) * food-consumption))
if item i nest-food < 0 [
set nest-food (replace-item i nest-food 0)
]
set nest-maxs (replace-item i nest-maxs (storage-factor * (count turtles with [nest = i]) * carrying-capacity))
])
;Exclusion Experiment
if exclude? [
(ifelse
ticks = exclusion-start [exclude]
ticks = exclusion-stop [include]
)
]
tick
end
to return-to-nest ;; turtle procedure
ifelse nest = nest-number [
; back in foraging mode
set color red
; drop off food
set nest-food (replace-item nest nest-food (item nest nest-food + carrying-capacity))
if item nest nest-food > item nest nest-maxs [
set nest-food (replace-item nest nest-food (item nest nest-maxs))
]
; reset location to center of nest
let loc item nest nest-locs
let x first loc
let y last loc
setxy x y
;set heading to be towards most recent food source with a certain probability
if random(100) / 100 < fprob [
(ifelse
prevfood > 0 [
set loc item (prevfood - 1) source-locs ; minus 1 because prevfood is 1 indexed
set x first loc
set y last loc
set heading 180 - atan (xcor - x) (ycor - y)
][
let prevnest prevfood * -1
set loc item (prevnest - 1) nest-locs ; minus 1 because prevnest is 1 indexed
set x first loc
set y last loc
set heading 180 - atan (xcor - x) (ycor - y)
])
]
set status 0
][
(ifelse
prevfood = 1 [set chemical1 (chemical1 + base-pheromone * pheromone-1)]
prevfood = 2 [set chemical2 (chemical2 + base-pheromone * pheromone-2)]
prevfood = 3 [set chemical3 (chemical3 + base-pheromone * pheromone-3)]
prevfood = 4 [set chemical4 (chemical4 + base-pheromone * pheromone-4)]
prevfood = 5 [set chemical5 (chemical5 + base-pheromone * pheromone-5)]
prevfood < 0 [set chemicalnest (chemicalnest + base-pheromone * pheromone-nest)]
)
uphill-nest-scent
]
end
to return-to-nest-no-food ;; turtle procedure
ifelse nest = nest-number [
; reset location to center of nest
let loc item nest nest-locs
let x first loc
let y last loc
setxy x y
; spin around
right random 360
; head out again
set color red
set status 0
][
; go home
uphill-nest-scent
]
end
to look-for-food ;; turtle procedure
; if we find food
(ifelse
source-number >= 0 [
; turn around
rt 180
set prevfood source-number + 1 ; plus 1 because 1-indexed
set status 10 * prevfood
ifelse (item source-number source-food) > carrying-capacity [
set color blue
set source-food (replace-item source-number source-food (item source-number source-food - carrying-capacity))
][
set color yellow
]
stop
]
; if we find another nest
(nest-number >= 0) and (nest-number != nest) [
; return home, taking food if we can
rt 180
set prevfood -1 * (nest-number + 1) ; plus 1 because 1-indexed
set status -10 * (nest-number + 1)
ifelse (item nest nest-food) > carrying-capacity [
set nest-food (replace-item nest nest-food (item nest nest-food - carrying-capacity))
set color blue
][
set color yellow
]
stop
]
; if we are following a trail, update our status
chemical >= 0.05 [
let chemicals (list chemical1 chemical2 chemical3 chemical4 chemical5 chemicalnest)
let max-chemical position (max chemicals) chemicals
set status max-chemical + 1 ; plus 1 because 1-indexed
if status = 6 [
set status -1
]
move-around-rank-edge
]
; if we aren't following a trail, turn around and return home with a certain probability
[
if (random-float 1 > prob) [
set color yellow
set status 99
]
])
; otherwise, do nothing :)
end
;; sniff left and right, and go where the strongest smell is
to uphill-nest-scent ;; turtle procedure
let loc (item nest nest-locs)
let x (first loc)
let y (last loc)
set heading 180 + atan (xcor - x) (ycor - y)
end
to wiggle ;; turtle procedure
rt random 40
lt random 40
if not can-move? 1 [ rt 180 ]
end
to move-around-rank-edge
let patch_set (patch-set patch-right-and-ahead 45 1 patch-right-and-ahead 0 1 patch-right-and-ahead -45 1) ; makes a patch-set of the three patches directly in front of the ant
let patch_list sort-on [chemical] patch_set ;turns the patch-set into a list (currently only way I can find to do this is by sorting it)
if length patch_list = 0 [rt 180
stop] ;if there are no patches in the list, turn around and face the other direction
if length patch_list = 1 ;if there is one patch in the list, choose it
[let patch_i item 0 patch_list
let ci ([chemical] of patch_i)
if patch-right-and-ahead 45 1 = patch_i [rt 45]
if patch-right-and-ahead -45 1 = patch_i [lt 45]]
if length patch_list = 2 ;if there are two items in the patch list, run the probability test on one, then the other
[let patch_i item 1 patch_list
let patch_j item 0 patch_list
let ci ([chemical] of patch_i)
let cj ([chemical] of patch_j)
let rand2 (random 100) / 100
ifelse rand2 < (1 - qprob)
[if patch-right-and-ahead 45 1 = patch_i [rt 45]
if patch-right-and-ahead -45 1 = patch_i [lt 45]]
[if patch-right-and-ahead 45 1 = patch_j [rt 45]
if patch-right-and-ahead -45 1 = patch_j [lt 45]]]
if length patch_list = 3 ;if there are three items in the patch list:
[let patch_i item 2 patch_list
let patch_j item 1 patch_list
let patch_k item 0 patch_list
let ci [chemical] of patch_i
let cj [chemical] of patch_j
let ck [chemical] of patch_k
let rand1 (random 100) / 100
ifelse rand1 < (1 - qprob)
[if patch-right-and-ahead 45 1 = patch_i [rt 45 ]
if patch-right-and-ahead -45 1 = patch_i [lt 45 ]] ;the ant chooses to go towards this patch
[let rand2 (random 100) / 100
ifelse rand2 < (1 - qprob)
[if patch-right-and-ahead 45 1 = patch_j [rt 45]
if patch-right-and-ahead -45 1 = patch_j [lt 45]] ;the ant chooses to go towards this patch
[if patch-right-and-ahead 45 1 = patch_k [rt 45]
if patch-right-and-ahead -45 1 = patch_k [lt 45]]]]
end
;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Reporter procedures ;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; calculates euclidean distance between two points, couldn't find a built-in for this...
to-report dist [x1 y1 x2 y2]
report sqrt ((x1 - x2) ^ 2 + (y1 - y2) ^ 2)
end
;; calculates the distance from a source to the closest nest
to-report dist-source-nest [source]
let distances (list )
(foreach nest-locs
[[nloc] ->
let nx first nloc
let ny last nloc
let sloc (item source source-locs)
let sx first sloc
let sy last sloc
set distances fput (dist nx ny sx sy) distances
])
report min distances
end
to-report dist-nest-nest [n1 n2]
let loc1 (item n1 nest-locs)
let x1 first loc1
let y1 last loc1
let loc2 (item n2 nest-locs)
let x2 first loc2
let y2 last loc2
report dist x1 y1 x2 y2
end
to-report strength [s]
; (ifelse
; s = 1 [report (count turtles with [(status = "return-from-1" or status = "foraging-for-1")]) / (dist food-1-x food-1-y nest-1-x nest-1-y)]
; s = 2 [report (count turtles with [(status = "return-from-2" or status = "foraging-for-2")]) / (dist food-2-x food-1-y nest-1-x nest-1-y)]
; s = 3 [report (count turtles with [(status = "return-from-3" or status = "foraging-for-3")]) / (dist food-3-x food-3-y nest-1-x nest-1-y)]
; s = 4 [report (count turtles with [(status = "return-from-4" or status = "foraging-for-4")]) / (dist food-4-x food-4-y nest-1-x nest-1-y)]
; s = 5 [report (count turtles with [(status = "return-from-5" or status = "foraging-for-5")]) / (dist food-5-x food-5-y nest-1-x nest-1-y)]
; )
end
to-report strength-list
; report (list (strength 1) (strength 2) (strength 3) (strength 4) (strength 5))
end
;; returns the number of the food source with the strongest trial
to-report strongest-source
let strengths strength-list
let strongest (max strengths)
report (((position strongest strengths) mod 5) + 1)
end
;; returns the number of the weakest food source that is above a threshold
to-report weakest-source
let strengths strength-list
let strongest (max strengths)
let weakest (min strengths)
while [weakest != strongest][
let weak-index (position weakest strengths)
ifelse weakest >= 2.5 [
; if the weakest is above the threshold, report its strength
report weak-index + 1
] [
; if the weakest is not above the threshold, replace its value with that of the strongest and try again.
; This allows us to find the second weakest, third weakest, ...
; If none of the strengths are above the threshold, then we report 0
set strengths replace-item weak-index strengths strongest
set weakest (min strengths)
]
]
report 0
end
;; returns the number of a random food source that is above a threshold
to-report random-source
if max strength-list < 0.25 [report 0] ; no trail has a measurable amount of ants on it
let rand-source ((random 5) + 1)
; keep choosing random sources until we choose one that has a measurable amount of ants on it
while [strength rand-source < 0.25] [
set rand-source ((random 5) + 1)
]
report rand-source
end
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Experiment procedures ;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; set the production rate of food source s
to exclude
set excluded-source-production (item excluded-source food-productions)
set food-productions (replace-item excluded-source food-productions 0)
set source-food (replace-item excluded-source source-food 0)
end
to include
set food-productions (replace-item excluded-source food-productions excluded-source-production)
end
@#$#@#$#@
GRAPHICS-WINDOW
931
503
1214
787
-1
-1
4.51
1
30
1
1
1
0
0
0
1
-30
30
-30
30
1
1
1
hs
100.0
BUTTON
155
337
275
389
NIL
setup
NIL
1
T
OBSERVER
NIL
N
NIL
NIL
1
SLIDER
20
244
279
277
diffusion-rate
diffusion-rate
0
50
36.2
.2
1
NIL
HORIZONTAL
SLIDER
21
165
275
198
evaporation-rate
evaporation-rate
0
50
7.8
.05
1
NIL
HORIZONTAL
SLIDER
19
205
275
238
base-pheromone
base-pheromone
0
50
25.311
0.001
1
NIL
HORIZONTAL
SLIDER
303
67
475
100
pheromone-1
pheromone-1
0
5
1.0
.01
1
NIL
HORIZONTAL
BUTTON
284
337
407
389
NIL
go
T
1
T
OBSERVER
NIL
M
NIL
NIL
1
PLOT
915
799
1271
968
Ants on Trails
time
number of ants
0.0
100.0
0.0
20.0
true
true
"" ""
PENS
"Trail 1" 1.0 0 -10022847 true "" "plot count turtles with [status = 1 or status = 10]"
"pen-1" 1.0 0 -7500403 true "" "plot count turtles with [status = 2 or status = 20]"
SLIDER
515
146
687
179
qprob
qprob
0
1
0.05
0.01
1
NIL
HORIZONTAL
TEXTBOX
517
183
690
212
probability of an ant choosing a cell other than the highest chemical cell
11
0.0
1
SLIDER
515
68
687
101
prob
prob
0
1
0.98
0.01
1
NIL
HORIZONTAL
TEXTBOX
522
105
691
147
probability that an unloaded ant does not return to nest (yellow)
11
0.0
1
SLIDER
302
104
474
137
pheromone-2
pheromone-2
0
5
1.0
0.01
1
NIL
HORIZONTAL
SLIDER
302
144
474
177
pheromone-3
pheromone-3
0
5
1.0
0.01
1
NIL
HORIZONTAL
SLIDER
302
183
474
216
pheromone-4
pheromone-4
0
5
1.0
0.01
1
NIL
HORIZONTAL
SLIDER
303
222
475
255
pheromone-5
pheromone-5
0
5
1.0
0.01
1
NIL
HORIZONTAL
SLIDER
513
223
685
256
fprob
fprob
0
1
0.95
0.01
1
NIL
HORIZONTAL
TEXTBOX
513
268
706
324
probability of ant being oriented towards the food source it came from upon returning to the nest\n
11
0.0
1
TEXTBOX
355
35
408
53
Qualities
14
0.0
1
TEXTBOX
567
37
717
55
Probabilities
14
0.0
1
SLIDER
303
262
477
295
pheromone-nest
pheromone-nest
0
5
1.0
0.01
1
NIL
HORIZONTAL
PLOT
675
638
900
797
food in nests
time
food
0.0
10.0
0.0
10.0
true
true
"" ""
PENS
"Nest 1" 1.0 0 -2674135 true "" "plot (item 0 nest-food)"
"Nest 2" 1.0 0 -8990512 true "" "plot (item 1 nest-food)"
TEXTBOX
875
41
1025
61
Positions
14
0.0
1
TEXTBOX
1127
39
1277
57
Production Rate
14
0.0
1
SLIDER
1325
150
1497
183
food-consumption
food-consumption
0
1
0.22
0.01
1
NIL
HORIZONTAL
TEXTBOX
1365
41
1515
59
Initial Food Stores
14
0.0
1
SLIDER
1324
235
1496
268
carrying-capacity
carrying-capacity
0
1000
30.0
1
1
NIL
HORIZONTAL
TEXTBOX
1290
278
1529
306
How much food each ant takes with it per trip.
11
0.0
1
TEXTBOX
1625
42
1775
60
Max Food Stores
14
0.0
1
PLOT
672
800
900
974
food in sources
time
food
0.0
10.0
0.0
10.0
true
true
"" ""
PENS
"food-1" 1.0 0 -16777216 true "" "plot (item 0 source-food)"
"food-2" 1.0 0 -7500403 true "" "plot (item 1 source-food)"
"food-3" 1.0 0 -2674135 true "" "plot (item 2 source-food)"
"food-4" 1.0 0 -955883 true "" "plot (item 3 source-food)"
"food-5" 1.0 0 -6459832 true "" "plot (item 4 source-food)"
SLIDER
1327
302
1499
335
storage-factor
storage-factor
0
5
1.0
0.1
1
NIL
HORIZONTAL
TEXTBOX
1332
195
1482
223
food consumption per ant per hs
11
0.0
1