Как ускорить моделирование в netlogo вместо использования ползунка рядом с просмотром обновления

Есть ли какой-нибудь код, чтобы ускорить симуляцию в netlogo, вместо использования ползунка рядом с настройкой? Мой код должен имитировать поведение толпы, он отлично работает, если количество черепах около 100, однако, когда я увеличиваю количество до 300-800 черепах, симуляция занимает очень много времени. Каждый тик также занимает очень много времени, чтобы отсчитать от 0 до 1 и затем, пока все черепахи не умрут. одна вещь, которая, как я подозреваю, вызывает медленную симуляцию, - это когда черепах просят эвакуироваться. без правила эвакуации все прошло гладко, даже установлено максимальное количество черепах. есть ли другой способ написать правило эвакуации, чтобы оно работало быстрее? благодаря.

to go
  ask turtles [wander fd 0.01]

  if emergency? = true [move]
  if all? turtles [ pcolor = red ]   ;stops simuation
  [stop]
  tick
end

to wander
  [ do..something]
end

to move
  set time-to-evacuate time-to-evacuate + 1
  ask turtles [avoid-obstacles fd 0.1]
  ask turtles [follow-leader fd 0.1]
  ask turtles [flock fd 0.1]
  ask turtles with [pcolor != red] [evacuate fd 0.1]
  ask turtles with [pcolor = red][die]
end

to evacuate
  ask turtles with [color = black ]
  [let beings-seen patches in-cone 10 135 with [pcolor = red] 
    if any? beings-seen 
    [ let target one-of beings-seen
      face target]]

  ask turtles with [color = white ]
  [let beings-seen patches in-cone 5 135 with [pcolor = red] 
    if any? beings-seen 
    [ let target one-of beings-seen
      face target]]
end

to avoid-obstacles
  [do something]
end

to follow-leader
  [do something]
end

to flock
  [do something]
end

person juliana    schedule 14.10.2014    source источник
comment
in-cone в вычислительном отношении очень дорого.   -  person Seth Tisue    schedule 18.10.2014


Ответы (1)


В вашей move процедуре у вас есть:

ask turtles with [pcolor != red] [ evacuate ... ]

А затем в evacuate у вас есть:

ask turtles with [color = black] [ ... ]

evacuate уже управляется всеми не красными черепахами, так что у вас есть каждая не красная черепаха, которая просит каждую черную черепаху делать что-то в каждый момент времени.

Я не думаю, что вы этого хотели.

Я должен немного догадаться о ваших намерениях, но я думаю, что если в evacuate вы замените ask на if:

if color = black [ ... ]

это, вероятно, ближе к тому, что вы имели в виду.

person Seth Tisue    schedule 19.10.2014