Симуляция, управляемая событиями: при добавлении новых событий в очередь с приоритетами старые события становятся избыточными? - PullRequest
0 голосов
/ 06 января 2019

Я создал очередь приоритетов на основе двоичной кучи в C. Я пытаюсь создать дискретное моделирование событий.

Вот что я понимаю об симуляции событий:

Предположим, у меня в очереди приоритетов 10 значений, каждое из которых представляет событие. Для каждого значения в PQ программа снимет значение и вставит еще 10 значений. Другими словами, программа производит новые вычисления для этих 10 событий.

Но что происходит со старыми значениями в PQ? Поскольку новые значения ставятся в очередь для каждого события, не должны ли предыдущие значения стать избыточными? Разве они не должны быть удалены из PQ, чтобы PQ не становился слишком большим?

1 Ответ

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

Ожидающие события в списке событий очереди с приоритетами остаются там до тех пор, пока 1) они не будут опрошены и станут активными, или 2) они будут отменены (явно удалены из очереди с приоритетами) из-за логики другого активного события.

Например, рассмотрим упрощенное моделирование воздушного движения. Событие взлета запланирует событие прибытия в целевой пункт назначения в определенное время. Однако погодное событие или экстренное событие могут отменить запланированное прибытие и либо перенести его с дополнительной задержкой, либо перенаправить самолет для прибытия в другой пункт назначения с другим временем. Однако, если вы явно не отменили первоначально запланированное прибытие, это событие будет ожидаться в списке событий до тех пор, пока не наступит его запланированное время.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...