gpt4 book ai didi

netlogo - NetLogo 中的子品种

转载 作者:行者123 更新时间:2023-12-04 13:49:22 28 4
gpt4 key购买 nike

我是 NetLogo 的新手,我对以下代码有一些疑问:

people-own [
walker-type ;; can be "cautious", "adaptive" or "reckless"
walked-through-red?
own-profit
adaptive-threshold-time-gained
adaptive-threshold-time-gained-people-crossing
adaptive-gone-reckless
cooldown
]

在 OO 背景下,我将其视为对象( 品种)属性的某种枚举。你可以清楚地看到,有三种类型的人:谨慎的步行者、适应性的步行者和鲁莽的步行者。此外,以 adaptive 开头的属性(adaptive-threshold-time-gained 等)仅在当前人adaptive 时才有意义。

我希望有某种方式可以更优雅地表达这一点。在 OO 编程语言中,您将使用继承来创建三个子类(每个 walker-type 一个),但到目前为止,我知道 NetLogo 中不存在这种情况。

推荐的表达方式是什么?

最佳答案

缺乏继承(可能作为子品种)是 NetLogo 的一个严重限制,尽管最终它只是偶尔对我有影响。有几种可能的解决方法,具体取决于应用程序。

  1. 如果你只是想要一些不同的数据属性,并且相关的类型是模拟中唯一的turtles,你可以拥有turtles-own的共同特征并且仅具有breeds-own特定类型的特征。

  2. 如果数据属性全部共享但行为不同,您可以创建自己的代理集(在您的情况下, 的子集)并在每个代理集上调用不同的过程(或编写在 member? 测试上分支的过程)。不幸的是,如果创建任何新成员,这些代理集将必须显式扩充,因此您将失去品种的良好“特殊代理集”功能。

嗯。

关于netlogo - NetLogo 中的子品种,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25889949/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com