【问题标题】:Netlogo - Turtles on more than one Patch - Item vs WhoNetlogo - 不止一个补丁上的海龟 - 物品 vs 谁
【发布时间】:2021-11-25 18:29:52
【问题描述】:

你好吗?我想没有办法在 Netlogo 界面中直观地表示一个具有“多对多”关系的系统,其中海龟属于多个补丁,当然补丁托管多个海龟。正确的? 我有一个模型,其中银行(我的海龟)在多个国家(我的补丁)上运作。所以我认为我唯一的选择是拥有两种海龟,即银行和国家,并通过链接代理将银行连接到国家。正确的? (我还需要银行间链接,所以我需要设置不同种类的链接。对吗?) 现在:我需要通过 name 识别国家(即意大利、法国、西班牙等)。我正在读取一个带有国家名称的 CSV 文件并将其输入到 Netlogo 列表中,但我不确定如何让国家代理“成为”一个名称。我创建了一个名为“country-name”的特定于国家品种的变量,我试图使用“item”顺序访问国家名称列表中的每个 next 名称并将其分配给国家 -国家品种中下一个国家代理的名称变量。但是,我不能在这里将“项目”与“谁”联系起来,因为“谁”不是特定于品种的。所以我正在考虑建立一个单独的特定品种编号索引,但是在之前的问题 (trying to create a sequential ID variable for breeds in netlogo) 中已经提出了类似的问题,强烈建议不要这样做。有关如何进行的任何建议?

【问题讨论】:

  • 我认为将问题保留在一个单一的(如果可能的话,可以重现)编程问题的 SO 指南与这种情况非常相关。这个问题涉及许多主题,包含许多开放式子问题,而且我们不知道您的模型是如何设置的以及您打算如何使用您的代理。缩小你的问题范围并说明你所拥有的和你想要实现的目标将解决上述大多数问题,并有助于能够详细说明一个精确的答案。您可以考虑编辑此帖子或将其删除并从头开始创建一个新帖子

标签: indexing netlogo


【解决方案1】:

我同意 Matteo 的评论。也就是说,

您永远不需要使用“谁”。使用该品种拥有的“名称”字段识别您的银行和您的国家/地区。例如

banks-own [ name ]
counties-own [ name ]
;; then somewhere in your loop as you read them in...
create-banks 1 [ set name "Chase" ... ]
create-countries 1 [ set name "England" ...]

下面我使用“one-of”,但只有一次命中。 这使得语法可以将列表项转换为特定的海龟。 您永远不需要知道或关心银行的“谁”价值 或国家。

to make-branches
    ;;  read this list in from a csv file, etc. or hard code it
    set branchlist [[ "Lloyds" "England"] ["Lloyds" "France"] [ "Chase" "USA"]["Chase" "France" ]]   
       ;; then work the list. Again, you never need "who".
   foreach branchlist [ 
            z ->  ask one-of banks with [name = item 0 z ] 
            [ create-link-with one-of countries with [ name = item 1 z ]]
        ]
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-29
    相关资源
    最近更新 更多