0
我有一個模型,其中烏龜(名字:werknemers)應該在早上上班,晚上回家。開始工作(對heenreis),但回家後(對terugreis)似乎並不奏效。它將海龜直接傳送到他們的家中(這是一種海龜自己的變量,稱爲thuis),而不是每次只有一個補丁。這是我的代碼:Netlogo:海龜直接前進到「家」前進1
globals [
werkplaatsen
huis
tankstations
laadpalen
tijd-minuten
tijd-uren
tijd-dagen
]
breed [ werknemers werknemer ]
werknemers-own [
thuis
werk
budget
verspilde-tijd
tevredenheid
elektrisch?
tank-status
reistijd
]
patches-own [
laadpaal?
]
to setup
clear-all
reset-ticks
set tijd-minuten 0
set tijd-uren 0
set tijd-dagen 0
;; Huizen/werk maken en werknemers in de huizen stoppen.
ask n-of 75 patches [ set pcolor grey ]
set huis patch-set patches with [ pcolor = grey ]
ask huis [ sprout-werknemers 2 ]
let mogelijkwerk patch-set patches with [ pcolor != grey ]
ask n-of 22 mogelijkwerk [ set pcolor grey + 1 ]
set werkplaatsen patch-set patches with [ pcolor = grey + 1 ]
ask werknemers [
set thuis patch-here
set werk one-of werkplaatsen
set shape "person"
set elektrisch? false
set reistijd distance werk
]
;; tankstation en laadpalen maken
let mogelijkstation patch-set patches with [ pcolor != grey and pcolor != grey + 2 ]
ask n-of initial-aantal-tankstations mogelijkstation [ set pcolor blue ]
set tankstations patch-set patches with [ pcolor = blue ]
ask n-of initial-aantal-laadpalen mogelijkstation [ set pcolor green]
set laadpalen patch-set patches with [ pcolor = green]
ask laadpalen [ set laadpaal? true ]
;; Elektrisch of benzine
;; WAAROM ALTIJD 3 OOK BIJ 0 % ???
ask n-of (count werknemers/100 * initial-percentage-elektrisch) werknemers [
set elektrisch? true
set color green
]
ask werknemers [
if elektrisch? = false[
set color blue ]
set budget 0
set tank-status 0
ifelse elektrisch? [
set tank-status 100
][ set tank-status 300
]
]
end
to go
bereken-tijd
ask turtles [
ifelse tank-status > distance werk [ heenreis ] [ tanken ]
ifelse tank-status > distance thuis [ terugreis ] [ tanken ] ]
tick
end
to bereken-tijd
set tijd-minuten tijd-minuten + 5
if tijd-minuten = 60 [
set tijd-minuten 0
set tijd-uren tijd-uren + 1 ]
if tijd-uren = 24 [
set tijd-uren 0
set tijd-dagen tijd-dagen + 1 ]
end
to heenreis
ask werknemers [
if patch-here != werk [
ifelse reistijd <= 12 [
if tijd-uren = 8 and tijd-minuten >= 60 - reistijd * 5 [
face werk
forward 1
set tank-status tank-status - 1
] ][ if tijd-uren = 7 and tijd-minuten >= 60 - (reistijd - 12) * 5 [ face werk forward 1 ]
if tijd-uren = 8 [
face werk
forward 1
set tank-status tank-status - 1 ] ]]
]
end
to terugreis
ask werknemers [
if patch-here != thuis [
if tijd-uren >= 17 [
face thuis
forward 1 ]]
]
end
最重要的部分是這樣的:
to heenreis
ask werknemers [
if patch-here != werk [
ifelse reistijd <= 12 [
if tijd-uren = 8 and tijd-minuten >= 60 - reistijd * 5 [
face werk
forward 1
set tank-status tank-status - 1
] ][ if tijd-uren = 7 and tijd-minuten >= 60 - (reistijd - 12) * 5 [ face werk forward 1 ]
if tijd-uren = 8 [
face werk
forward 1
set tank-status tank-status - 1 ] ]]
]
end
to terugreis
ask werknemers [
if patch-here != thuis [
if tijd-uren >= 17 [
face thuis
forward 1 ]]
]
end
也正是相同的代碼,臉上的Thuis/WERK前進1,而是移動有1 * 1它立即傳送到thuis。