我可以在 NetLogo 中使用海龟来模拟非智能体吗?

问题描述 投票:0回答:2

我想在 NetLogo 中使用具有多个属性的“复杂对象”。这些不是代理,所以他们不会从模型的角度“行动”。

一种可能的方法是只为这些对象使用一个列表,其中每个索引都是一个特定的属性——例如,如果对象具有 3 个属性“价格”、“重量”和“名称”,那么一个列表有 3 个元素将按此顺序存储它。

使用海龟——具体来说,一种海龟——可以让我命名这些属性。这在将来可能会有用,因为它使代码更具可读性——例如,不清楚列表的第二个元素是重量。然而,乌龟表明它是代理人/演员。

使用海龟为非代理人建模是否违反惯例,我应该使用列表?或者有没有我没有考虑的第三种可能性?

我尝试以上述方式创建列表,但不太清楚。它对我来说很难阅读和开发,所以我相信以前甚至没有研究过它的人会更加困惑。

编辑澄清:我想使用的对象是代理“拥有”的项目。它们将具有多个属性,并且可以在程序的某个步骤中更改所有权。它们的属性对于两个代理人是否想要交换这些对象的所有权以及他们为这些对象“支付”或“获得”多少等问题很重要。会有很多这样的项目,并且会在程序运行时的不同部分创建不同的实例。

netlogo agent-based-modeling
2个回答
2
投票

我一直使用不同品种的海龟作为非代理对象。例如,在我们的河鳟模型 (https://ecommodel.humboldt.edu/instream-7-and-insalmo-7) 中,鱼是一个品种,它们的巢是另一个品种(除了跟踪巢在哪里以及有多少卵存活),另一个品种只保存栖息地单元格的变量,这些变量是从 GIS 导入的多边形,另一个品种(隐藏所以你甚至看不到它们)保存河段的变量。

我看不出你的想法有什么不合常规或其他错误;对我来说,这是完全有道理的。我当然不会建议放弃 NetLogo 的所有优势,只是因为你需要一些看起来更像标准面向对象编程的东西。


-1
投票

原则上我不喜欢将代理用作非代理的想法,考虑到你这样说。因此,首先我会根据您在问题中提到的内容提出一个可能的解决方案,但稍后我也会进行额外的考虑。

解决您提到的列表问题的一种方法是使用列表列表,其中每个内部列表的第一个元素是属性的名称,每个内部列表的第二个元素是属性的值。如:

globals [
  object-a
  object-b
]

to setup
  clear-all

  set object-a (list (list "name" "a") (list "price" 3) (list "weight" 28))
  set object-b (list (list "name" "b") (list "price" 5) (list "weight" 41))
end

或其他此类方法。

无论如何,我的问题是:这些实体在您的模型中扮演什么角色,您打算如何使用它们?这个问题的答案将有助于给出更有针对性的答案,包括关于这些东西是否真的是乌龟的话题。您从假设这些实体不是代理开始,但就我们现在所知,它们是具有相同属性的不同值的实体,并且您肯定会想以某种方式使用这些值......听起来是一个很好的起点用于描述代理人,可能只是属于与其他人不同的

breed

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.