如何在同一补丁上对卖家和买家之间的交易进行编码



我必须在Netlogo中编写一个SELLERS-BUYER模型。其中的某些部分我已经完成了。但是在计算"交易价格"和其他一些过程方面存在一些麻烦。问题是我对Netlogo的编程语言不太了解,以至于无法编写所有模型的代码。

我必须在卖方和买方之间解决deal_Price,他们必须在一个补丁中。每个卖家都有自己的成本,每个买家都有自己的效用。当seller_Price = buyer_Price时,它们deal_Price。并且此deal_Price必须低于买方的 ownUtility 和高于卖方的 ownCost(它们在同一补丁中(。 而这一切都发生在"互动"过程中。

我这样编码:

    to interaction
      ask sellers [
       set seller_Price 0]
      ask buyers [
      set buyer_Price 0]
      ask buyers [ 
         if buyer_Price > ownUtility [
         set buyer_Price buyer_Price < ownUtility ]]
      ask sellers [
         if seller_Price < ownCosts [
         set seller_Price seller_Price > ownCosts ]]
end

对于结果,买方和卖方(在同一补丁中(必须处理。我试图编写"交易"过程,以便:

to deal 
  if thera buyer and seller in one patch (its probably false)
  ask buyers [
     set ownUtility ownUtility + (buyer_Price - deal_Price)]
  ask sellers [
     set ownCosts ownCosts + (seller_Price - deal_Price) ]
end 

这里有我的问题,因为使用此代码,我的模型没有结果并且无法运行。谁能帮我?

这不是一个真正的问题,而是一堆问题合二为一。我会试着说一些有用的事情,至少解决你面临的一些问题,但在未来,如果你提出具体问题并单独问它们,那真的更好。如果你能用一句话来概括它,你就会知道这是一个好问题。如果你的总结最终是"帮我编码",这可能不是一个真正的问题。

set buyer_Price buyer_Price < ownUtility 会将buyer_price设置为 truefalse ,具体取决于比较结果。我不认为这是你的意图;您可能打算将其设置为一个数字。不过,我无法从你的问题中看出你想要什么号码。你写道,"这个deal_Price必须低于买方的自己的效用,高于卖方的自己的成本"。你想要一个该范围内的随机数,还是什么?

至于你的deal程序,dr_stein他或她的评论中涵盖了这一点,但是,也许你想要这样的东西:

to deal
  ask patches with [any? buyers-here and any? sellers-here] [
    ask buyers-here [
     set ownUtility ownUtility + (buyer_Price - deal_Price)
    ]
    ask sellers-here [
      set ownCosts ownCosts + (seller_Price - deal_Price)
    ]
  ]
end

这是不完整的,因为它不包含任何计算deal_Price的代码,但希望您可以自己提供该部分。

最后,一些更一般的建议。您可能试图通过一次编写一个大程序来一次学习太多东西。编写一个非常小的程序;让它工作;尝试对其进行非常小的改进,并使其正常工作;等等。如果你在任何时候遇到困难,请来这里,展示你的代码,并提出一个关于它的具体问题。

最新更新