【问题标题】:Netlogo Linking BreedsNetlogo 链接品种
【发布时间】:2015-06-02 10:15:37
【问题描述】:

我仍在努力适应 Netlogo。我有两个品种,买家和卖家。买家有自己的“dPrice”,卖家有自己的“dPrice”。所有的买家和卖家都是从没有交易开始的。我需要让每个买家以随机方式搜索尚未进行交易的卖家,如果买家的“dPrice”大于卖家的“dPrice”,则将自己和该卖家设置为已完成交易的卖家和不再可用。所以这是我的代码。

Buyers-own [dPrice MadeNewTrade?]

Sellers-own [dPrice MadeNewTrade?]

to Test

  ask Buyers [

    let dBuyPrice dPrice

    ask Sellers with [MadeNewTrade? = false] [

      let dSellPrice dPrice

      if dBuyPrice >= dSellPrice [

        set MadeNewTrade? true

        ask myself [

          set MadeNewTrade? true

          ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
          ; I want to break out. 
          ; So don't check the other sellers,
          ; move to the next buyer and
          ; check the remaining sellers.
          ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        ]
      ]

    ]
  ]
end

问题是我不知道如何打破卖家循环,这样我就可以防止买家在与一个卖家进行交易后检查其他卖家。非常感谢任何帮助。

谢谢

【问题讨论】:

    标签: netlogo


    【解决方案1】:

    也许您可以使用 one-of 和使用 with 的代理集上的一些过滤器。他们可能会促进您的工作并明确您的意图。

    Buyers-own [dPrice MadeNewTrade?]
    Sellers-own [dPrice MadeNewTrade?]
    to Test
      ask Buyers [
        let dBuyPrice dPrice
        let SellersTrade Sellers with [MadeNewTrade? = false and dBuyPrice >= dPrice]
        if any? SellersTrade [
          ask one-of SellersTrade [set MadeNewTrade? true]
          set MadeNewTrade? true
        ]
      ]
    end
    

    希望对你有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-28
      • 1970-01-01
      • 2019-06-20
      • 2016-09-23
      相关资源
      最近更新 更多