Симуляция, управляемая событиями: при добавлении новых событий в очередь с приоритетами старые события становятся избыточными?

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

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

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

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

1 ответ

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

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

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

Другие вопросы по тегам