#simulation #netlogo
#Симуляция #netlogo
Вопрос:
Я пытаюсь имитировать распространение дыма внутри области в NetLogo, но у меня возникают некоторые трудности. Изначально я создал черепашек в форме «облака», чтобы имитировать дым. Я хочу, чтобы через каждые случайные интервалы «выводилась» черепаха в форме «облака». Черепашки должны вылупиться рядом с другой черепашкой «облака», чтобы имитировать распространение дыма. Кроме того, я должен сделать «облака» немного прозрачными, чтобы иметь возможность видеть, входит ли агент в дым. Большое вам спасибо!
to create-danger
;; based on a slider, create the number of cloud turtles
create-smoke number-of-dangers
[
;;create smoke only inside a specific area
while[ [pcolor] of patch-here != FLOOR-COLOUR]
[
;;creates random coordinates
rand-xy-co
]
]
end
Ответ №1:
Существует несколько различных способов расширения дыма, в зависимости от того, сколько места подразумевается под «рядом с». Допустим, вы хотите, чтобы это было на расстоянии 0,2 пространственных единиц, тогда вы можете просто попросить родительскую cloud turtle сделать что-то вроде hatch 1 [set heading random 360 forward 0.2]
. [] Сразу после hatch
приведены инструкции, которые дочерняя программа turtle запускает, как только она создается. Он будет выведен с тем же заголовком, что и его родительский элемент, поэтому вам нужно рандомизировать его, а затем переместить на соответствующее расстояние.
Комментарии:
1. Большое вам спасибо. Это работает! Единственная проблема, с которой я сталкиваюсь, заключается в том, что через некоторое время симуляция замедляется. Должен ли я сделать что-то еще с расширением?
2. Сколько у вас облаков? Очевидно, что NetLogo не должен замедляться, если у вас их не тысячи. Вы можете получить тысячи, если они будут умножаться очень быстро, но вам может потребоваться подумать о том, что вы пытаетесь представить. Реальный дым расширяется, но «старые» облака исчезают, потому что весь их дым находится в новых облаках.
3. Проблема заключалась в том, что я очень быстро расширял облако, и в результате вся симуляция замедлилась. Я не хочу «убивать» старый дым, потому что я предполагаю, что у меня есть постоянная область, которая производит дым. Благодаря вам я смог решить свою проблему!!! Большое вам спасибо за вашу помощь!!!