我可以在NetLogo的一个过程中使用多重重置计时器功能吗?
我正在尝试在Netlogo中建立4个教室,学生将根据随机进入时间逐个进入4个教室。因此,在我的go程序中,我必须使用多次(2次)重置计时器,让学生一个接一个地进入4个教室。但是一个教室的学生都在0分钟内进入。为什么会这样我可以在NetLogo的一个过程中使用多重重置计时器功能吗?,netlogo,Netlogo,我正在尝试在Netlogo中建立4个教室,学生将根据随机进入时间逐个进入4个教室。因此,在我的go程序中,我必须使用多次(2次)重置计时器,让学生一个接一个地进入4个教室。但是一个教室的学生都在0分钟内进入。为什么会这样 to go reset-timer tick create-students-classroom move-students reset-timer move-studentsB reset-timer move-studentsC
to go
reset-timer
tick
create-students-classroom
move-students
reset-timer
move-studentsB
reset-timer
move-studentsC
reset-timer
move-studentsD
wait 1
move-student-out
if ticks >= 1 [stop]
end
如果你看一眼,你会看到以下警告:
请注意,计时器与滴答计数器不同。计时器以秒为单位测量经过的实时时间;滴答声计数器以滴答声为单位测量经过的模型时间
我认为你目前尝试的方法混淆了“滴答声”和“实时”,这将导致今后出现各种各样的问题
在基于代理的模型中,您应该真正关注滴答声,而不是实时。实时性取决于计算机的速度,在模拟环境中几乎毫无意义。相比之下,“滴答声”实际上是概念上的“模型步骤”,在几乎所有情况下,它们都是相关的单元
按照惯例,在NetLogo中,我们每勾一次运行go
过程。这就是为什么NetLogo模型的骨架几乎总是这样:
to setup
clear-all
; some setup code goes here
reset-ticks
end
to go
; some code goes here
tick
end
我不太了解您试图实现的目标,以便为您提供完整的解决方案,但类似的内容可能是基于勾号的模型的起点:
breed [ classrooms classroom ]
breed [ students student ]
students-own [ entry-time ]
to setup
clear-all
set-default-shape classrooms "square"
set-default-shape students "person"
ask n-of 4 patches [ sprout-classrooms 1 ]
ask n-of 50 patches with [ not any? classrooms-here ] [ sprout-students 1 ]
reset-ticks
end
to go
if all? students [ any? classrooms-here ] [
ask students [ show entry-time ]
stop ; stop when all students are in class
]
ask one-of classrooms [
ask one-of students with [ not any? classrooms-here ] [
move-to myself
set entry-time ticks
]
]
tick
end
我不会详细解释所有的代码,但我建议通过一次勾选一次并在字典中查找您不知道的原语来理解它的功能。即使这不完全是你想要的,它也应该让你了解如何建立一个基于勾号的模型,并让你了解如何处理自己的问题。谢谢,这真的很有帮助。但我想做的是计算教室消耗的能量,单位为KWh。每个教室都有一套风扇、电灯和空调,根据学生坐的位置,特定的风扇和电灯将打开。从中可以计算出总功率。很高兴这是有帮助的。这听起来是一个非常酷的项目。但问题依然存在:你不应该使用计时器,即使你想表示“实时”。相反,你应该决定一个刻度等于一个特定的持续时间(例如,一秒钟),并以此为基础进行计算。