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。