Дискретно-событийное моделирование — это вид имитационного моделирования. В дискретно-событийном моделировании функционирование системы представляется как хронологическая последовательность событий. Событие происходит в определенный момент времени и знаменует собой изменение состояния системы. (Имитационное моделирование — метод, позволяющий строить модели, описывающие процессы так, как они проходили бы в действительности. Такую модель можно «проиграть» во времени как для одного испытания, так и заданного их множества. При этом результаты будут определяться случайным характером процессов. По этим данным можно получить достаточно устойчивую статистику.)
Дискретно-событийное моделирование используется для построения модели, отражающей развитие системы во времени, когда состояния переменных меняются мгновенно в конкретные моменты времени. (Говоря математическим языком, система может меняться только в исчислимое количество моментов времени.) В такие моменты времени происходят события, при этом событие определяется как мгновенное возникновение, которое может изменить состояние системы. Хотя теоретически дискретно-событийное моделирование можно осуществлять с помощью вычислений вручную, количество данных, которые должны сохраняться и обрабатываться при моделировании большинства реальных систем, диктует необходимость применения вычислительных машин.
Пример 1. Рассмотрим систему с одним устройством обслуживания, например парикмахерскую или справочное бюро в аэропорту с одним оператором. Нам необходимо приблизительно подсчитать ожидаемую среднюю задержку требований в очереди. При этом задержка требования в очереди равна времени, прошедшему с момента его появления в системе до начала его обслуживания.
Для того чтобы рассчитать среднюю задержку в дискретно-событийной имитационной модели, определяются такие переменные состояния, как состояние устройства обслуживания (занято или свободно), число требований в очереди (если таковые имеются) и время поступления каждого требования, ожидающего своей очереди. При поступлении требования должно быть определено состояние устройства обслуживания: может ли требование быть обслужено немедленно или его необходимо поместить в конец очереди.
После завершения обслуживания требования, исходя из числа требований в очереди, определяется, будет устройство обслуживания свободно или же начнет обслуживание первого требования в очереди. Чтобы вычислить задержку требования в очереди, необходимо установить время его поступления, так как задержка равна времени начала обслуживания требования (которое будет известно) минус время его поступления. В этой системе есть два типа событий: поступление требования и завершение обслуживания требования, приводящее к его уходу. Поступление требования является событием, поскольку оно вызывает изменение состояния устройства обслуживания (переменной состояния) со свободного на занятое или увеличение числа требований в очереди (переменной состояния) на единицу. Соответственно уход требования также является событием, так как вызывает изменение состояния устройства обслуживания с занятого на свободное или уменьшение числа требований в очереди на единицу.
В приведенном выше примере оба типа событий действительно меняют состояние системы, тогда как в некоторых дискретно-событийных моделях события применяются для задач, не вызывающих таких изменений. Так, событие может использоваться, чтобы задать окончание имитационного прогона на определенное время или вычислить результаты работы системы в определенный момент времени, при этом оно не будет вызывать действительного изменения состояния системы. Именно потому в начале раздела сказано, что событие может изменить состояние системы.