我有两个品种,比方说sellersA
和sellersB
,以及一个从sellersA
或sellersB
中选择的卖家。所以,现在,我
globals[
chosen?
]
breed [sellersA sellerA]
breed [sellersB sellerB]
sellersA[
catalogue
]
sellersB[
catalogue
]
以及具有两个属性的项,attr1
和attr2
。我在设置中初始化了目录:set catalogue []
。
下面的代码部分应检查目录是否为空:如果目录为空,选定的卖家将创建一个具有某些特定属性的新项目(1和2):
let selected_one nobody
let customers nobody
set selected_one one-of turtles with [breed = sellersA or breed = sellersB]
ifelse empty? [catalogue] of selected_one [
create-items 1[ hide-turtle set new_item self set chosen? false]
ifelse [breed = sellersA] of selected_one
[ ask selected_one [
set attr1 random-float 1
set attr2 random-float
set function1 (1 + attr2)
]
]
[ ask selected_one [
set attr1 random-float 1
set attr2 random-float
set function2 (1 - attr2)
]
]
然后卖方将商品添加到其目录和与其有关联的客户的目录中。
ask selected_one [
set customers (turtle-set self in-link-neighbors with [breed = sellersA])
ask customers [set catalogue fput new_item catalogue]
]
]
]
如果选定的卖方的目录不是空的(即卖方有要出售的商品),我想选择以前创建的项目之一并跟踪它(例如,如果一个卖家A创建了这个新项目,并且该项目被添加到它的列表和它的客户列表(neighbours
)中,我想知道它的邻居有多少客户选择了它的项目)。
对于前面对我的问题的回答,我知道我应该使用扩展rnd:weighted-one-of
,为了选择两个属性中的一个值最高的项,我应该创建一个新的列表,其中的索引指向创建的对象的属性。这需要使用who
。然而,结果是,当我在观察者中运行show catalogue
时,我只得到空的列表。我认为问题可能在于项目及其属性的定义。我试着把它定义为attr1
和attr2
的一个品种,但是当我把这个函数作为sellersA拥有时,它没有工作。
我想保持代码简单,但我不知道如何。
我希望你能帮助我。
发布于 2019-11-10 05:34:05
您没有显示它,所以我假设您有一种具有属性的项:
breed [ items item]
items-own [
attr1
attr2
]
因此,卖家有目录,目录列表项目,和项目有属性。
我不清楚谁是“客户”,也不清楚他们有什么特点。他们似乎只是其他的卖家,他们有联系,一个给定的卖家。是那么回事吗?
不管怎样,你问
我想知道附近有多少顾客选择了它的商品)。
短语“它的项目”对我来说意味着,项目必须有一些额外的属性,如“创建者”。在任何情况下,你都不会描述客户“选择”了一件商品意味着什么,也没有描述你把这些信息存储在哪里,或者你在哪里存储了谁在过去选择过某一商品的历史--所以不可能就这个问题提供建议。
你还会问为什么会发生这样的事情:
当我在观察者中运行显示目录时,我只得到空的列表。
嗯,“目录”不是一个全局变量,它是卖家的一个属性。你需要检查卖家的目录是否有正确的商品目录,或者问类似的问题。
ask sellersA [ show catalog ]
但更有可能的是,你想打开一个检查窗口,让它打开,这样你就可以看到发生了什么。
inspect one-of sellersA
但是,不管你怎么做,你可能仍然会发现,没有任何卖家的目录中有任何项目。您应该查看是否已经创建了任何项,因为它们是全局的,并且您应该能够在观察者中看到它们,或者检查它们,或者简单地计数它们。
实际上,我不明白您上面列出的代码是如何工作的。你的代码
[ ask selected_one [
set attr1 random-float 1
set attr2 random-float
set function1 (1 + attr2)
]
其中selected_one是卖方,不拥有属性或函数。您不在项的上下文中,所以我希望命令"set attr“失败。也许这段代码正在悄悄的失败,这就是为什么您没有项目。
运行代码后,是否有已创建的项?
https://stackoverflow.com/questions/58782611
复制相似问题