首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >创建一个品种的属性和管理

创建一个品种的属性和管理
EN

Stack Overflow用户
提问于 2019-11-09 19:05:04
回答 1查看 26关注 0票数 0

我有两个品种,比方说sellersAsellersB,以及一个从sellersAsellersB中选择的卖家。所以,现在,我

代码语言:javascript
运行
复制
globals[
chosen?
]

breed [sellersA sellerA]
breed [sellersB sellerB]

sellersA[
catalogue
]

sellersB[
catalogue
]

以及具有两个属性的项,attr1attr2。我在设置中初始化了目录:set catalogue []

下面的代码部分应检查目录是否为空:如果目录为空,选定的卖家将创建一个具有某些特定属性的新项目(1和2):

代码语言:javascript
运行
复制
 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)
      ]
    ]

然后卖方将商品添加到其目录和与其有关联的客户的目录中。

代码语言:javascript
运行
复制
    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时,我只得到空的列表。我认为问题可能在于项目及其属性的定义。我试着把它定义为attr1attr2的一个品种,但是当我把这个函数作为sellersA拥有时,它没有工作。

我想保持代码简单,但我不知道如何。

我希望你能帮助我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-10 05:34:05

您没有显示它,所以我假设您有一种具有属性的项:

代码语言:javascript
运行
复制
breed [ items item]
items-own [
attr1 
attr2
]

因此,卖家有目录,目录列表项目,和项目有属性。

我不清楚谁是“客户”,也不清楚他们有什么特点。他们似乎只是其他的卖家,他们有联系,一个给定的卖家。是那么回事吗?

不管怎样,你问

我想知道附近有多少顾客选择了它的商品)。

短语“它的项目”对我来说意味着,项目必须有一些额外的属性,如“创建者”。在任何情况下,你都不会描述客户“选择”了一件商品意味着什么,也没有描述你把这些信息存储在哪里,或者你在哪里存储了谁在过去选择过某一商品的历史--所以不可能就这个问题提供建议。

你还会问为什么会发生这样的事情:

当我在观察者中运行显示目录时,我只得到空的列表。

嗯,“目录”不是一个全局变量,它是卖家的一个属性。你需要检查卖家的目录是否有正确的商品目录,或者问类似的问题。

代码语言:javascript
运行
复制
ask sellersA [ show catalog ]

但更有可能的是,你想打开一个检查窗口,让它打开,这样你就可以看到发生了什么。

代码语言:javascript
运行
复制
inspect one-of sellersA

但是,不管你怎么做,你可能仍然会发现,没有任何卖家的目录中有任何项目。您应该查看是否已经创建了任何项,因为它们是全局的,并且您应该能够在观察者中看到它们,或者检查它们,或者简单地计数它们。

实际上,我不明白您上面列出的代码是如何工作的。你的代码

代码语言:javascript
运行
复制
[ ask selected_one [
        set attr1 random-float 1
        set attr2 random-float
        set function1 (1 + attr2)
      ]

其中selected_one是卖方,不拥有属性或函数。您不在项的上下文中,所以我希望命令"set attr“失败。也许这段代码正在悄悄的失败,这就是为什么您没有项目。

运行代码后,是否有已创建的项?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58782611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档