当前位置: 首页 > 知识库问答 >
问题:

要求期望的输入成为一个代理或代理集,但没有得到任何人

云鸿达
2023-03-14

在我的研究中,我试图构建一个代表真实工作环境的模拟,目的是创造关于如何让人们在工作中感觉更好的知识。特别是,我正在模拟一个人们为多个团队工作的场景(你一次只从事一个项目吗?许多人不...)。为此,我正在使用NetLogo。

我在向定制链接乌龟集的特定代理询问时遇到问题。关键是,有时它会报告一个错误,说“请求期望的输入成为一个代理或代理集,但却没有得到任何人”,但如果代理不存在,它就不应该到达“请求”状态!我做错了什么?

功能如下:

to TeamRecruiting
  ;; I ask non-complete teams to...
  ask teams with [ teamsize != (count membership-neighbors) ]
  [
    ;; ... count how many individuals they have...
    let actualteammembers count membership-neighbors
    ;; ... to save locally how many individuals they can share...
    let teamoverlap overlap
    ;; ... their target size...
    let neededsize teamsize
    ;; ... and their identity.
    let teamwho who
    ;; then I ask those individuals that have not yet more things than they can handle...
    ask individuals with [ indMTM != (count membership-neighbors) ]
      [
      ;; ... to save locally who they are...
      let indwho who
      let createdalink 0
      ;; ... then if some conditions have been met ...
      if(some conditions)
        [
        ;; I create a link (of my specific type) with the team...
        create-membership-with team teamwho
        ;; I do the following because more than one individual could join the team teamwho in the same run of the function
        ask team teamwho [ set actualteammembers (actualteammembers + 1) ]
        set createdalink 1
        ]
      ;; if the association occurred, ...
      if(createdalink = 1)
        [
        ;; we ask all other teams to evaluate if the new connection violates their maximum overlap constraint between the team I am considering from the beginning of the function, and all other teams, in other words...
        ask teams with [ who != teamwho ]
        [
        let numpaths 0
        let team2who who
        ;; I count how many individuals say that they are shared by the two teams
        ask individuals
          [
          if((membership-neighbor? team teamwho) and (membership-neighbor? team team2who)) [ set numpaths (numpaths + 1) ]
          ]
        ;; ... and if the number of paths is more than the maximum allowed overlap...
        if(numpaths > teamoverlap)
          [
          ;; I take the connection away...
          ask membership teamwho indwho [ die ]
          ;; and I reduce the actual number of team members
          set actualteammembers (actualteammembers - 1)
          ]
        ]
      ]
    ]
  ]
end

谢谢你宝贵的帮助!

共有1个答案

陆安国
2023-03-14

我认为问题很可能在于你引用你请求的链接的方式membership是一个无向链接,因此哪个代理是end1,哪个是end2取决于代理的创建顺序。who编号较低的一个是end1,另一个是end2。因此,如果团队代理是在个人代理之后创建的,那么特定的链接将是membership indwho teamwho。总的来说,使用世卫组织的数字是不好的做法,但如果你使用团队和个人代理人本身,而不是他们的世卫组织数字,同样的问题也会出现。

在使用无向链接方面比我更有经验的人可能会有更好的建议,当你不知道哪个代理更老时,如何轻松地引用无向链接,但类似于

ifelse (indwho < teamwho) [
ask membership indwho teamwho [ die ]
]
[
ask membership teamwho indwho [ die ]
]

应该有用。使用定向链接可以避免此问题,因为创建者代理始终是end1,而目标代理始终是end2。因此,如果会员链接总是由个人创建的,那么您将始终知道个人位于end1。

希望这有帮助。查尔斯

 类似资料:
  • 谁能帮助我如何创建一个新的代理人,并将其链接到旧的,以治愈人民? 多谢!

  • 具有依赖项的Maven/Java项目: 代码: 公共类bmp_Selenium{ } 控制台输出: BrowserMob代理运行在端口:57547上启动chrome driver 2 . 33 . 506106(8 a 06 c 39 c 4582 fbfbfbab 6966 db B1 c 38 a 9173 BF B1 a 2)在端口47157上只允许本地连接。2017年11月30日下午4:4

  • 我有一个问题在这里我不知道如何解决这个问题,本尝试任何我知道解决这个仍然没有解决方案,请帮助 我有2个模块 主要的卢阿: 外部模块dog.lua: 堆栈回溯: 现在还在想在这里做什么。这是唯一阻碍我项目的事情。请帮忙,谢谢:)

  • 问题内容: 我想从个人资料字典中获取地址,但出现错误“输入任何类型?没有下标成员” 我该如何解决并获取地址?非常感谢。 问题答案: 当您使用下标配置文件时,您将获得一个实例。您选择使用适合同一数组中的各种类型已导致发生类型擦除。您需要将结果转换回其实型,以便它知道实例代表。然后,您可以对其进行下标: 但是,这非常笨拙,并且一开始就使用Dictionary并不是一个非常合适的情况。 在这种情况下,如

  • 问题内容: 得到反馈后,我运行该程序,但在控制台中没有任何输出 程序运行,但不输出。 问题答案: 是一种阻止方法。它会等到进程退出后再返回。这样做的问题是,许多程序只有在读取/清除标准输出缓冲区后才会退出,这意味着,就您而言,它可能永远不会退出。 尝试这样的事情…

  • 几乎所有 HTTP 客户端都支持通过中间代理进行调用。传统上,这被用于在与外部世界的连接受到限制的防火墙环境中运行。然而,由于 linkerdd 可以作为 HTTP 代理,并且由于使用代理通常可以在没有代码更改的情况下实现,所以这种方法为使用 HTTP 的应用程序提供了一个简单的集成路径。 用linkerd作HTTP代理 linkerd 可以作为 HTTP 代理工作,无需任何额外的配置,提供关键功