-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgis-cc13.nlogo
1860 lines (1725 loc) · 48.3 KB
/
gis-cc13.nlogo
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
;; nosi-val lo fijo para que solo un % de la prob de wlakers pueda generar POIs
;; cuando llegan a su 'poi-mark' se detienen y si t-slow N(115,10) > POI-DI (poi-di-max)
;; generan un POI nuevo
;; -> Simulaciones 1: "we-first-t" recoge 'tiempos' de encontrar EVENTOS (no POIs)
;; es una lista con listas de 5 números (tiempos o we-ticks), uno por evento encontrado.
;; -> Simulaciones 2: "poi-detection-ratio" recoge los POIs detectados por POI born;
;; es una lista de números. El cálculo se hace 'poi-visited-count' / 'we-poi-born'.
extensions [ gis table rnd ]
globals [ edges-dataset nodes-dataset e-ids we-first-t sol-length poi-born poi-die poi-detection-ratio ]
breed [ events event]
breed [ nodes node ] ;; agent set of nodes
breed [ walkers walker ] ;; agent set of tourists
links-own [ popularity efitness-now ] ; popularity el num of TABLE (popularity of each Event in th
walkers-own [ speed t-slow to-node cur-link fw-path we-tfound we-interest we-num seguir we-ticks
poi-mark poi-di-count posible-poi nosy-val poi-visited-count we-poi-decl ] ; eve-int is a LIST
;; fw-path: son los links almacenados mientras probabilisticamente busco eventos
;; eve-ids pasa a we-tfound: es un turtle-set con los eventos que voy pasando, debe ser un TABLE que guarde los ticks
;; we-interest: tb es un TABLE con el nivel de interes de cada evento
;; phero-max: maxima pheromona que puedo usar o poner 1/L|k
patches-own [ on-road? ]
events-own [ is-poi? check-cero-t ]
to setup
clear-all-but-globals ;; don't loose datasets
reset-ticks
setup-map ;; to load custom SHP GIS map
setup-paths-graph
setup-walkers ;; create n tourists and locate them at random node positions
setup-events
setup-tables
set we-first-t (list)
set poi-detection-ratio ( list )
set sol-length 0
set poi-born 0
set poi-die 0
set-current-plot "Link Size"
let h link-of-nodes
set-plot-x-range 0 round (max h + 2.5)
histogram h
end
to setup-map
ask patches [ set pcolor white ]
; load data set
set edges-dataset gis:load-dataset "mi_Gent_walk3/edges/edges.shp"
;set edges-dataset gis:load-dataset "gante_b2_bldgs/gante_b2_bldgs.shp"
gis:set-world-envelope (gis:envelope-of edges-dataset)
; know what patches are road/edge or not edge
ask patches [ set on-road? false ]
ask patches gis:intersecting edges-dataset
[ set on-road? true ]
;show gis:feature-list-of edges-dataset
; draw data set
gis:set-drawing-color gray gis:draw edges-dataset 4
set nodes-dataset gis:load-dataset "mi_Gent_walk3/nodes/nodes.shp"
;let street-nodes gis:feature-list-of nodes-dataset
;file-open "NODES.txt"
;file-write street-nodes
;let street-edges gis:feature-list-of edges-dataset
;file-open "EDGES.txt"
;file-write street-edges
end
to-report long-streets [ dataset ]
let dim-street []
foreach gis:feature-list-of edges-dataset [ [?1] ->
set dim-street lput ( read-from-string gis:property-value ?1 "LENGTH" ) dim-street
]
report dim-street
end
to-report meters-per-patch ;; maybe should be in gis: extension?
let world gis:world-envelope ; [ minimum-x maximum-x minimum-y maximum-y ]
let x-meters-per-patch (item 1 world - item 0 world) / (max-pxcor - min-pxcor)
let y-meters-per-patch (item 3 world - item 2 world) / (max-pycor - min-pycor)
report mean list x-meters-per-patch y-meters-per-patch
end
to-report link-of-nodes
report map [ [i] -> i * ( meters-per-patch ) ] [ link-length ] of links
end
to-report va-geometric [ p ]
report floor ((log random-float 1 2) / log ( 1 - p ) 2)
end
; --- Hasta Aqui el SETUP. Desde AQUI ----[1]
to setup-walkers
set-default-shape walkers "dot"
let max-speed 1 ; --> 0.2 * m/patch es lo que recorre cada tick
; creo que es una distancia por 'tick' del sim. si tourist-speed 'on'
if tourist-speed? [ set max-speed (max-speed-km/h / 36) / meters-per-patch ]
; show max-speed ; suele ser 0.013109990863317584 Km--13 m por tick
; a mayor velocidad mayor distancia.
let min-speed max-speed * (1 - speed-variation) ;; max-speed - (max-speed * speed-variation)
create-walkers num-walkers [
set color red
set size 4
set we-num 0
set seguir true
set we-ticks ticks
set posible-poi false
set poi-mark va-geometric (1 / 2500)
set poi-di-count 0
set nosy-val random 5
set poi-visited-count 0
set we-poi-decl (count events with [ is-poi? = 1 ])
set speed min-speed + random-float (max-speed - min-speed)
let l one-of links ;; AQUI ES DONDE COGE UN LINK AL AZAR.
set fw-path ( list )
set-next-walker-link l [end1] of l
]
end
to set-next-walker-link [l n] ;; boat proc
set cur-link l
set fw-path lput cur-link fw-path ; adding new link in the list
move-to n
ifelse n = [end1] of l [set to-node [end2] of l] [set to-node [end1] of l]
face to-node
end
to manage-events-here
ask walkers [
if any? events-here and seguir [
let events-x ([who] of events-here)
foreach events-x [ [?] ->
if (table:get we-tfound ?) = 0 [
table:put we-tfound ? we-ticks
ifelse ([ is-poi? ] of event ?) = 0 [
set we-num (we-num + 1) ] [
set poi-visited-count (poi-visited-count + 1) ]
set t-slow random-normal 120 10
;slowdown
set seguir false ; only new events
if popularity-per-step > 0 [
set fw-path no-cycles fw-path
add-pher fw-path ? ]
set fw-path (list ) ]
]
if (we-num = num-events) [
set color black
clean-vars-walker ; <--Save solution of 5 events
set sol-length ( sol-length + 1 ) ]
]
if not seguir and not posible-poi [ slowdown ]
]
end
to slowdown
if seguir [ set seguir false ]
ifelse t-slow > 1 [set t-slow (t-slow * (100 - t-wait-decrease-ratio) / 100) ]
[ set seguir true set t-slow 0 ]
end
to clean-vars-walker
set we-ticks 0
set we-num 0
;set poi-mark va-geometric (1 / 3000)
; en we-first-t voy almacenando los valores de tiempos [ 100 50 75 ...]
let v ( list ) ; solo pongo eventos is-poi? false
let l [who] of events with [ is-poi? = 0 ]
foreach l [ [?] -> set v lput (table:get we-tfound ?) v ]
set we-first-t lput v we-first-t
if we-poi-decl > 0 [
set poi-detection-ratio lput (poi-visited-count / we-poi-decl) poi-detection-ratio ]
set poi-visited-count 0
set we-poi-decl (count events with [ is-poi? = 1 ])
foreach e-ids [ [?] -> table:put we-tfound ? 0
table:put we-interest ? 1 ]
end
to setup-events
set-default-shape events "flag"
create-events num-events [
set color black
set size 5
set check-cero-t 0
let m one-of links
move-to [end1] of m
]
set e-ids [who] of events
end
to setup-tables
ask walkers [
set we-tfound table:make
set we-interest table:make
foreach e-ids [ [?] -> table:put we-tfound ? 0
table:put we-interest ? 1 ] ]
ask links [
set popularity table:make
foreach e-ids [ [?] -> table:put popularity ? 0 ] ]
end
to manage-pois-here
ask walkers with [ posible-poi = true ] [
set poi-di-count (poi-di-count + 1)
if (poi-di-count = poi-di-max) and (not any? events-here) [
let child-who -1
set poi-born poi-born + 1
hatch-events 1 [
set is-poi? 1
set color green
set size 5
set check-cero-t 0
let m [[ end2 ] of cur-link] of myself
move-to m
set child-who who
]
; actualize tables, add pheromones of actual walker
ask walkers [
table:put we-tfound child-who 0
table:put we-interest child-who 1
set we-poi-decl (we-poi-decl + 1) ]
ask links [ table:put popularity child-who 0 ]
set e-ids lput child-who e-ids
if popularity-per-step > 0 [
set fw-path no-cycles fw-path
add-pher fw-path child-who ]
set fw-path (list )
]
ifelse t-slow > 1 [ set t-slow (t-slow - 1) ] [
set seguir true
set poi-di-count 0
set posible-poi false
set t-slow 0 ]
]
end
;----------- Boton GO---------------------------------;
to go
ask walkers with [ seguir ] [ move-walker speed ]
ask walkers with [ not seguir ] [ move-walker speed / 10 ]
decay-popularity ; func de paths
recolor-patches
ask walkers [
set we-ticks ( we-ticks + 1 )
foreach e-ids [ [?] -> if (table:get we-tfound ?) > 0 [ decay-interest ? ] ]
if ( poi-mark = we-ticks) and (nosy-val = 2) [
;set posible-poi true ; to select walkers slowdown without event
set t-slow random-normal 123 15
set poi-mark poi-mark + va-geometric (1 / 3000)
set posible-poi true
set seguir false ] ; to slow
]
manage-events-here
manage-pois-here
birth-die-pois
ifelse sol-length < sol-length-max
[ tick ] [ stop ]
end
to birth-die-pois
let ret 90
ifelse popularity-per-step = 0 [ set ret 250 ] [ set ret 90 ]
let p 1
foreach [who] of events with [ is-poi? = 1 ] [
[?] -> set p sum [ table:get popularity ? ] of links
ifelse p <= 3 [
ask event ? [ ; cero time mark
ifelse (check-cero-t = 0) [ set check-cero-t ticks ] [
if (ticks - check-cero-t) > ret and not any? walkers-here with [ seguir = false ] [
set poi-die poi-die + 1
die
update-variables ? ] ]
] ]
[ ask event ? [ set check-cero-t 0 ] ]
]
end
to update-variables [ id-num ]
ask walkers [
table:remove we-interest id-num
table:remove we-tfound id-num ]
ask links [ table:remove popularity id-num ]
set e-ids remove id-num e-ids
end
to decay-popularity
ask links ;with [ not any? both-ends with [ breed = walkers ]]
[ foreach e-ids [ [?] ->
let v table:get popularity ?
ifelse v > 0.001 [set v (v * (100 - popularity-decay-rate) / 100) ]
[ if v <= 0.001 [set v 0] ]
table:put popularity ? v
if v < 1 [ set color gray ]
]
]
end
to become-more-popular [ lon id ]
let v table:get popularity id
set v (v + popularity-per-step * lon)
table:put popularity id v
set color red
end
to decay-interest [ evs-found ]
let evs (list evs-found)
foreach evs [ [?] ->
let v table:get we-interest ?
ifelse v < 0.0001 [ set v 0] [
set v (v * (100 - slow-dec-factor) / 100) ]
table:put we-interest ? v
]
end
to add-pher [ input_list_of_links id ]
;let lon length input_list_of_links
let lon 1
;; input must be a list of links, not an agentset
foreach input_list_of_links [ [x] -> ask x [ become-more-popular lon id ] ]
end
to-report prod-val-tables [ popular inter ]
let ans 0 ;let i 0
foreach e-ids [ [?1] ->
set ans (ans + (table:get inter ?1) * (table:get popular ?1)) ]
report ans
end
;efitness-now
to put-scale [ nl inter ]
let l count nl
let c 0
foreach sort-by [ [?1 ?2] -> (prod-val-tables [popularity] of ?1 inter) > (prod-val-tables [popularity] of ?2 inter) ] nl
[ [?] ->
if c < l [ set c (c + 1)
ask ? [ if c = 1 [set efitness-now 2 ]
if c = 2 [set efitness-now 0.35 ]
if c = 3 [set efitness-now 0.1 ]
if c > 3 [set efitness-now 0.0 ]
]
]
]
end
;---------------------------3. USING SPEED_CONT
to move-walker [dist] ; with method
let dxnode distance to-node
ifelse (dxnode > dist) [ forward dist ] [
let nextlinks [my-links] of to-node
ifelse (count nextlinks = 1) or seguir = false ; para se quede = link
; si slowdown speed to 0 no haría falta
[ set-next-walker-link cur-link to-node ]
[
set nextlinks nextlinks with [self != [cur-link] of myself]
ifelse popularity-per-step > 0 [
let inter [we-interest] of self ; esto antes no estaba bien. Cambia tb pro-val-tables
if ( method = "ranking" )
[ put-scale nextlinks inter
set-next-walker-link rnd:weighted-one-of nextlinks [ efitness-now ] to-node
]
if ( method = "f-p-s" )
[ set-next-walker-link rnd:weighted-one-of nextlinks [ (prod-val-tables popularity inter) ] to-node ]
if ( method = "gradient" )
[ set-next-walker-link max-one-of nextlinks [ (prod-val-tables popularity inter) ] to-node ]
] [ set-next-walker-link one-of nextlinks to-node ]
]
move-walker dist - dxnode ; this moves from he next node ahead
]
end
to clear-all-but-globals reset-ticks ct cp cd clear-links clear-all-plots clear-output end
to-report mid-nodes report nodes with [count link-neighbors = 2] end
to-report end-nodes report nodes with [count link-neighbors = 1] end
to-report hub-nodes report nodes with [count link-neighbors > 2] end
; Create links for THIRD METHOD : speed_cont
;-----------------------------------------
to setup-paths-graph
set-default-shape nodes "dot"
foreach polylines-of edges-dataset node-precision [ [?1] ->
(foreach butlast ?1 butfirst ?1 [ [??1 ??2] -> if ??1 != ??2 [ ;; skip nodes on top of each other due to rounding
let n1 new-node-at first ??1 last ??1
let n2 new-node-at first ??2 last ??2
ask n1 [create-link-with n2]
;ask link ([who] of n1) ([who] of n2) [ set popularity table:make ]
] ])
]
ask nodes [ hide-turtle
set color black ]
end
to-report polylines-of [dataset decimalplaces]
let polylines gis:feature-list-of dataset ;; start with a features list
set polylines map [ [?1] -> first ?1 ] map [ [?1] -> gis:vertex-lists-of ?1 ] polylines ;; convert to virtex lists
set polylines map [ [?1] -> map [ [??1] -> gis:location-of ??1 ] ?1 ] polylines ;; convert to netlogo float coords.
set polylines remove [] map [ [?1] -> remove [] ?1 ] polylines ;; remove empty poly-sets .. not visible
set polylines map [ [?1] -> map [ [??1] -> map [ [???1] -> precision ???1 decimalplaces ] ??1 ] ?1 ] polylines ;; round to decimalplaces
;; note: probably should break polylines with empty coord pairs in the middle of the polyline
report polylines ;; Note: polylines with a few off-world points simply skip them.
end
to-report new-node-at [x y] ; returns a node at x,y creating one if there isn't one there.
let n nodes with [xcor = x and ycor = y]
;if x <= max-pxcor and x >= min-pxcor [ if y <= max-pycor and y >= min-pycor [
ifelse any? n [set n one-of n] [create-nodes 1 [
setxy x y set size 2 set n self]]
;]]
report n
end
;-----------------------------------------
;to recolor-patches
; ifelse show-popularity? [
; let mi-range (minimum-route-popularity * 30)
; ask links with [ color != red ] [
; set color scale-color gray popularity (- mi-range) mi-range
; set thickness 0.25
; ]
; ] [
; ask links with [ color != red ] [
; set color gray
; ]
;]
; end
to recolor-patches
ifelse show-popularity? [
let mi-range (minimum-route-popularity * 30)
ask links with [ color != red ] [
let popularity-value popularity ;; Replace with appropriate numeric extraction
ifelse is-number? popularity-value [
set color scale-color gray popularity-value (- mi-range) mi-range
] [
set color black ;; Default color for invalid values
]
set thickness 0.25
]
] [
ask links with [ color != red ] [
set color gray
]
]
end
to-report no-cycles [ input_list ]
ifelse empty? input_list [
report input_list
]
[
let final_list []
let temp_list reverse input_list
let n 0
while [ n < length temp_list] [
let x n
let cur item n temp_list
while [ x < length temp_list ] [
if (item x temp_list) = cur [
set n x
]
set x x + 1
]
set final_list fput (item n temp_list) final_list
set n n + 1
]
report final_list
]
end
;----------------SOURCES----------------------------;
; http://stackoverflow.com/questions/26929504/how-to-create-moving-turtles-out-of-a-shapefile-in-netlogo
; http://netlogo-users.18673.x6.nabble.com/gis-extension-raster-vs-vector-data-td4865284.html
; The cars randomly choose side streets as they see them, choosing to turn roughly 1/3 of the
; time in the move-forward procedure.
; It chooses its next location by seeing if it should turn
; as just described, or by choosing a forward direction in a set of increasing angles of
; forward cones. NOTE: See mail lists for newer way to do this via a reporter returning
; agent-sets within a cone of given degree. It will have considerably better performance.
@#$#@#$#@
GRAPHICS-WINDOW
210
10
622
423
-1
-1
4.0
1
10
1
1
1
0
1
1
1
-50
50
-50
50
1
1
1
ticks
30.0
BUTTON
13
10
98
43
setup
setup setup
NIL
1
T
OBSERVER
NIL
NIL
NIL
NIL
1
BUTTON
101
10
164
43
NIL
go
T
1
T
OBSERVER
NIL
NIL
NIL
NIL
1
SLIDER
12
56
184
89
num-walkers
num-walkers
0
300
100.0
1
1
NIL
HORIZONTAL
MONITOR
625
222
719
267
meters/patch
precision meters-per-patch 3
17
1
11
SLIDER
625
378
739
411
node-precision
node-precision
0
8
4.0
1
1
NIL
HORIZONTAL
MONITOR
653
267
719
312
nodes
count nodes
17
1
11
MONITOR
653
312
720
357
links
count links
17
1
11
MONITOR
744
371
801
416
ends
count end-nodes
17
1
11
MONITOR
801
371
858
416
med
count mid-nodes
17
1
11
MONITOR
859
371
916
416
hub
count hub-nodes
17
1
11
PLOT
720
222
918
372
Link Size
Link Length (m)
Link Count
0.0
10.0
0.0
10.0
true
false
";histogram hh" ""
PENS
"default" 5.0 1 -16777216 true "" ""
SLIDER
13
160
185
193
speed-variation
speed-variation
0
1
0.3
0.1
1
NIL
HORIZONTAL
SLIDER
12
91
184
124
max-speed-km/h
max-speed-km/h
0
10
5.0
0.5
1
NIL
HORIZONTAL
PLOT
721
13
921
163
Streets Length Distribution
Street Length (m)
Street Count
0.0
10.0
0.0
10.0
true
false
" let dim long-streets nodes-dataset\n set-plot-x-range 0 round (max dim + 2.5)\n histogram dim" ""
PENS
"default" 5.0 1 -16777216 true "" ""
MONITOR
627
59
715
104
Num-Streets
length long-streets nodes-dataset
17
1
11
MONITOR
626
14
716
59
Total metres
precision sum long-streets nodes-dataset 2
17
1
11
MONITOR
626
106
719
151
Average lenght
precision mean long-streets nodes-dataset 2
17
1
11
SLIDER
5
241
189
274
popularity-decay-rate
popularity-decay-rate
0
25
1.0
0.5
1
%
HORIZONTAL
SLIDER
3
277
192
310
popularity-per-step
popularity-per-step
0
10
1.0
0.25
1
NIL
HORIZONTAL
SLIDER
5
318
186
351
minimum-route-popularity
minimum-route-popularity
0
100
1.0
1
1
NIL
HORIZONTAL
SWITCH
5
357
170
390
show-popularity?
show-popularity?
0
1
-1000
SWITCH
11
125
159
158
tourist-speed?
tourist-speed?
1
1
-1000
SLIDER
12
203
184
236
num-events
num-events
0
30
5.0
1
1
NIL
HORIZONTAL
SLIDER
9
395
181
428
slow-dec-factor
slow-dec-factor
0.5
30
10.0
0.5
1
NIL
HORIZONTAL
CHOOSER
638
167
840
212
method
method
"f-p-s" "gradient" "ranking"
2
SLIDER
8
432
205
465
sol-length-max
sol-length-max
50
1000
150.0
50
1
NIL
HORIZONTAL
SLIDER
212
426
422
459
t-wait-decrease-ratio
t-wait-decrease-ratio
0
20
7.0
0.25
1
%
HORIZONTAL
SLIDER
212
459
384
492
poi-di-max
poi-di-max
1
250
120.0
1
1
s
HORIZONTAL
MONITOR
483
425
580
470
Number of solutions
sol-length
17
1
11
MONITOR
582
425
655
470
POIs borned
poi-born
17
1
11
MONITOR
581
468
655
513
POIs-dead
poi-die
17
1
11
MONITOR
493
469
579
514
Actual events
count events
17
1
11
MONITOR
665
436
766
481
POI det ratio %
(mean poi-detection-ratio) * 100
2
1
11
@#$#@#$#@
## WHAT IS IT?
(a general understanding of what the model is trying to show or explain)
## HOW IT WORKS
(what rules the agents use to create the overall behavior of the model)
## HOW TO USE IT
(how to use the model, including a description of each of the items in the Interface tab)
## THINGS TO NOTICE
(suggested things for the user to notice while running the model)
## THINGS TO TRY
(suggested things for the user to try to do (move sliders, switches, etc.) with the model)
## EXTENDING THE MODEL
(suggested things to add or change in the Code tab to make the model more complicated, detailed, accurate, etc.)
## NETLOGO FEATURES
(interesting or unusual features of NetLogo that the model uses, particularly in the Code tab; or where workarounds were needed for missing features)
## RELATED MODELS
(models in the NetLogo Models Library and elsewhere which are of related interest)
## CREDITS AND REFERENCES
(a reference to the model's URL on the web if it has one, as well as any other necessary credits, citations, and links)
@#$#@#$#@
default
true
0
Polygon -7500403 true true 150 5 40 250 150 205 260 250
airplane
true
0
Polygon -7500403 true true 150 0 135 15 120 60 120 105 15 165 15 195 120 180 135 240 105 270 120 285 150 270 180 285 210 270 165 240 180 180 285 195 285 165 180 105 180 60 165 15
arrow
true
0