将全局添加到前一个报价单的值,每个报价单

Add a global to the value of the previous tick, every tick

我在做一个项目,需要我分补贴。我有两个品种,工业和港口。现在,我希望每个滴答声都将补贴添加到之前的金额中,而不是仅仅选择那个特定滴答声的值。我得到这个:

to go
    if file-at-end? [ stop ]
  file-open "oil price.csv"
  set oil-price csv:from-row file-read-line
  file-open "co2 price.csv"
  set co2-price csv:from-row file-read-line
  file-open "electricity price.csv"
  set electricity-price csv:from-row file-read-line
  ;; model update goes here
  distribute-subsidies
  ask industries [update-profit]
if ticks >= 32 [stop]
  tick
end

to distribute-subsidies
 ask industries [set subsidy-industry (15000000 - 150000 * subsidy-to-port) / 25]
 ask ports [set subsidy-port 150000 * subsidy-to-port]
end

欢迎大家的帮助!提前致谢:)

最大

您需要一个变量来存储补贴。我认为您正在为每个行业和港口提供补贴。所以你需要 industries-ownports-own 来为每只海龟定义一个变量。然后你可以简单地把新的补贴加到之前的补贴上。

从你的代码来看,我相信你已经有了这些变量。您还没有向我们展示 own 语句。将您的分发程序替换为:

to distribute-subsidies
 ask industries
 [ set subsidy-industry subsidy-industry + (15000000 - 150000 * subsidy-to-port) / 25
 ]
 ask ports
 [ set subsidy-port subsidy-port + 150000 * subsidy-to-port
 ]
end

或者,如果担心效率,就计算一次,然后全部相加。

to distribute-subsidies
 let new-subsidy-industry (15000000 - 150000 * subsidy-to-port) / 25
 let new-port-subsidy 150000 * subsidy-to-port
 ask industries
 [ set subsidy-industry subsidy-industry + new-subsidy-industry
 ]
 ask ports
 [ set subsidy-port subsidy-port + new-port-subsidy
 ]
end