Добавьте глобальное значение к предыдущему тику, к каждому тику - PullRequest
0 голосов
/ 07 января 2019

Я работаю над проектом, который требует от меня разделения субсидий. Я получил две породы, отрасли и порт. Теперь я хотел бы, чтобы каждый тик добавлял субсидию к предыдущей сумме, а не просто выбирал значение этого конкретного тика. Я получил это:

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

Любая помощь приветствуется! Заранее спасибо:)

Макс

1 Ответ

0 голосов
/ 07 января 2019

Вам нужна переменная для хранения субсидии. Я думаю, что вы даете субсидию каждой отрасли и порту. Таким образом, вам нужно industries-own и ports-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
...