Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Netlogo 创建一个品种的属性并管理它_Netlogo - Fatal编程技术网

Netlogo 创建一个品种的属性并管理它

Netlogo 创建一个品种的属性并管理它,netlogo,Netlogo,我有两个品种,比如sellersA和sellersB,我想为一个卖家创建一个项目,从sellersA或sellersB中选择。 因此,现在我有 globals[ chosen? ] breed [sellersA sellerA] breed [sellersB sellerB] sellersA[ catalogue ] sellersB[ catalogue ] 以及具有两个属性的项,attr1和attr2。我在设置:设置目录[]中初始化了目录 代码的以下部分应检查目录是否为空:如果

我有两个品种,比如sellersA和sellersB,我想为一个卖家创建一个项目,从sellersA或sellersB中选择。 因此,现在我有

globals[
chosen?
]

breed [sellersA sellerA]
breed [sellersB sellerB]

sellersA[
catalogue
]

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

代码的以下部分应检查目录是否为空:如果目录为空,则选定的卖家将创建具有某些特定属性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]
      ]
    ]
  ]
如果所选卖家的目录不是空的,即卖家有商品要出售,我想选择之前创建的一个商品并跟踪它,例如,如果某个卖家创建了这个新商品,并且该商品被添加到其列表和客户列表中,我想知道附近有多少顾客选择了它的产品

对于您以前对我的问题的回答,我知道我应该使用扩展名rnd:加权其中一个,为了选择两个属性中具有最高值的项目,我应该创建一个新列表,其中只包含指向所创建对象属性的索引。这需要使用世卫组织。然而,结果是,当我在observer中运行ShowCatalog时,我只能得到空列表。 我认为问题可能在于项目及其属性的定义。我试图将其定义为带有attr1和attr2的品种,但当我将函数设置为sellersA own时,它没有起作用

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


我希望你能帮助我

您没有显示它,因此我假设您有一系列具有属性的项目:

breed [ items item]
items-own [
attr1 
attr2
]
所以卖家有目录,目录列出商品,商品有属性

我不清楚客户是谁,或者他们有什么特点。他们似乎只是与某个卖家有联系的其他卖家。是这样吗

不管怎样,你问

我想知道附近有多少顾客 选择了它的项目

短语its its item对我来说意味着项目必须具有一些附加属性,例如creator。在任何情况下,您都不会描述客户选择某个项目意味着什么,或者您将这些信息存储在何处,或者您将过去曾选择过某个项目的历史记录存储在何处,因此无法就这个问题提供建议

您还会问为什么会发生这种情况:

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

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

ask sellersA [ show catalog ]
但更可能的情况是,你想打开一个“检查器”窗口,让它保持打开状态,这样你就可以观察正在发生的事情

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

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

[ ask selected_one [
        set attr1 random-float 1
        set attr2 random-float
        set function1 (1 + attr2)
      ]
如果选择的是卖方,卖方不拥有属性或功能。您不在项的上下文中,因此我预计命令集attr将失败。可能代码正在悄无声息地失败,这就是您没有项目的原因


运行代码后,是否创建了任何项?

您好,韦德,谢谢您的回答。品种为[sellersA sellerA][sellersB sellerB]和[items]。客户是局部变量。我为sellersA、sellersB和items将属性定义为turtles自己的属性。我用[bride=sellersA或bride=sellersB]在set selected\u one中定义属性,否则为空?[目录]所选属性[询问所选属性[set attr1 random float 1 set attr2 random float 1]创建项目1[设置新项目自设置属性1[attr1]所选属性的属性2[attr2]所选属性的属性][…]我认为为项目设置的属性等于为所选属性定义的属性,以避免使用图案填充。我不知道它是否能工作。但是,我不确定是否将这些项目添加到客户的目录中。这是sellersB目录[[[0.066][[0.25][[0.103][[0.497][[0.408]][]的输出。我有7个卖家。如果我使用项目的show[attribute2],它将返回sellersA和sellersB的属性2。数字似乎还可以。但是,我不知道我是否正确地将这些项目添加到客户的目录中。因此,我的代码应该做的是:从sellersA或sellersB中选择一只海龟。然后为其设置attribute1和attribute2。完成后,创建一个新项目,并将其属性设置为与所选项目相同的属性。最后,将此项添加到
被选为自己的名单和邻居的客户名单-这部分我认为不起作用我提出了一个新问题,以便更具体地说明我的代码中发生了什么。谢谢