Netlogo 链接品种

Netlogo Linking Breeds

我仍在努力适应 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

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

感谢

或许您可以使用 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

希望对您有所帮助。