Модель дискретной системы в Netlogo

Я хочу смоделировать n транспортных средств. Каждое транспортное средство представлено первой дискретной моделью:

P_i[k+1] = P_i[k] + T*v_i[k]

В то время как P_i[k+1], P_i[k] соответственно положение транспортного средства i в момент выборки (k+1)T и kT

T - время выборки

v_i[k] — скорость транспортного средства i в момент выборки kT

Связь между транспортными средствами определяется уравнением:

P_i[k+1] = T*(P_(i+1)[k+1] + P_(i-1)[k] - 2* P_i[k])

Я не знаю, как представить время выборки T здесь


person realgalois    schedule 23.02.2018    source источник


Ответы (1)


Немного неясно, что вы подразумеваете под «временем выборки». Однако, учитывая ваши обозначения, я думаю, вы имеете в виду, что T - это текущее время, и вы вычисляете позицию в следующий момент времени на основе текущей позиции и скорости. В этом случае вам не нужно явно представлять время, вам нужно только пройти через него. В NetLogo tick — это команда для перемещения вперед на один временной шаг (а ticks — это отчет о количестве временных шагов, которые были сделаны до сих пор, но я не думаю, что вам это нужно).

ОБНОВЛЕНО из комментариев:

Я думаю, мы говорим о противоположных целях. Точка выборки состоит в том, чтобы найти дискретное приближение к непрерывной функции или набору функций. Когда вы находитесь в дискретном времени, вы можете использовать тик в качестве временного маркера. Каждый тик, вы можете рассчитать состояние. Вам просто нужно помнить, что вам нужно сделать (например) 20 тиков, чтобы найти состояние в 10 секунд, если у вас есть время выборки 0,5 секунды.

Вот пример:

globals [ticks-per-sec]
turtles-own [velocity]

to setup
  clear-all
  set ticks-per-sec 2
  create-turtles 10
  [ setxy random-xcor random-ycor
    set velocity (1 + random 4) / ticks-per-sec
    set heading 90
  ]
  reset-ticks
end

to go
  ask turtles
  [ forward velocity
    set velocity 0.9 * velocity + 0.1 * mean [velocity] of other turtles
  ]
  tick
end

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

person JenB    schedule 23.02.2018
comment
Спасибо за ваш ответ, время выборки можно понять по этому [определению](en.wikipedia. org/wiki/Sampling_(signal_processing) Время тика, я думаю, не имеет того же значения, что и время выборки.Для фиксированного времени выборки (T), например, T = 0,5 с (через каждые 0,5 секунды мы вычисляем все штат). - person realgalois; 23.02.2018
comment
Как вы думаете, почему эта галочка не имеет того же значения? Тик может представлять любое произвольное дискретное продвижение во времени. Если вы используете 1 тик = 0,5 секунды, то вам, очевидно, потребуется преобразовать любой отчет, который включает время (например, секунды в разрешение = тики разрешения моделирования / 2). - person JenB; 23.02.2018
comment
вы можете взглянуть на этот ссылка Кстати, вы знаете, как конвертировать один тик = 0,5 секунды, я не нахожу прямой конвертации - person realgalois; 26.02.2018
comment
Для меня: я использую каждую команду: идти каждые 0,5 ;; второй [ делать дела тик ] конец - person realgalois; 26.02.2018
comment
Я думаю, что в системе с дискретным временем состояние системы обновляется каждые T (время выборки). Так что в вашем примере это не показывает значение выборки. Поскольку xcor, ycor обновляется после каждого тика, не связанного с тиком в секунду (переменная). В самое короткое время (период дискретизации) скорость постоянна. - person realgalois; 28.02.2018
comment
В моем примере T — это тик. Система обновляется каждый тик (то же самое, что и каждый T). Мне не нужен тик, связанный с переменной тика в секунду, тик представляет полсекунды. Неважно, составляет ли реальное время компьютера 1 миллисекунду или 1 час, уравнения опережают время на полсекунды. - person JenB; 01.03.2018