Странности разрешения NetLogo

У меня проблемы с программой netlogo. Код следует:

globals[
growth-param
money-size-ratio

]

turtles-own[
  location
  tsize
  bbalance
]

to setup
  ca
  reset-ticks
  ask patches[set pcolor blue]

  create-turtles initial-telemarketers [
    set size 1
    set bbalance 0.0
    setxy random-xcor random-ycor
    set shape "circle"
  ]
  set growth-param 1000
  set money-size-ratio 0.001
end

to go
  ask patches[set pcolor blue]
  sell
  accounting
  observer-updates
  tick
end

to sell

  let territory 10 * sqrt size
  let maxcalls 100 * size
  ask n-of maxcalls patches in-radius territory[
    if pcolor = blue [set pcolor black]
    set bbalance bbalance + 2
  ]

end

to accounting
  let cost size * 50
  ask turtles[
  set bbalance bbalance - cost

  ifelse bbalance < 1
  [die]
  [set size bbalance * growth-param]
  ]

end

to observer-updates

end

Предполагается, что это упрощенная модель того, как многие телемаркетинговые компании взаимодействуют друг с другом. Это из книги по моделированию Railsback & Grimm.

Каждый раз, когда он пытается запуститься, он создает две проблемы, которые я вижу: в процедуре sell он не хочет устанавливать новое значение bbalance, потому что он предназначен только для черепахи, а tick — только в контексте наблюдателя.

Спасибо за любую помощь!


person user2221135    schedule 28.03.2013    source источник


Ответы (1)


sell — это процедура черепахи (поскольку она использует примитивы черепахи, такие как size и in-radius). Но go — это процедура-наблюдатель. Вы не можете вызвать процедуру черепахи непосредственно из процедуры наблюдателя; вам нужно указать, какие черепахи вы хотите запустить. Внутри go, я думаю, вы могли написать ask turtles [ sell ] вместо просто sell.

person Seth Tisue    schedule 28.03.2013
comment
Хорошо, на случай, если кто-то попытается погуглить и ничего больше не найдет, вот мой полный (рабочий!) Код: - person user2221135; 04.04.2013