Построение моделирующей программы.

Пусть N – число пришедших заявок, No – число обслуженных, а Np – число потерянных заявок. (В случае неограниченной очереди Np = 0),

Tob – суммарное время затраченное на обслуживание и Toch – суммарное время пребывания заявок в очереди. Для сокращения записи при работе программы и выводе результатов введем матрицу-столбец rem, тогда Построение моделирующей программы. - student2.ru

В программе и подпрограммах для этой матрицы в качестве формальных параметров используются обозначения re, re1, re2 и т.д. Зададим матрицу для времен постановки заявки в очередь Och (формальный параметр O, O1 …).

Основным алгоритмом моделирования выберем, так называемый, «просмотр активностей». Этот алгоритм заключается в том, что на каждом шаге моделирования просматриваются времена «механизмов» составляющих систему, и выбирается тот, время которого на текущий момент модельного времени наименьшее и который должен произвести действие. В нашем примере моделирования СМО, такими «механизмами» являются: 1) входной поток, 2) каналы обслуживания (по их числу) и 3) очередь. Действиями являются: для входного потока – приход заявки, для канала – начало обслуживания и окончание обслуживания, для очереди – постановка в очередь и уход из очереди в канал. Например, пусть следующая заявка должна поступить в систему в Построение моделирующей программы. - student2.ru = 12.42, первый канал освободится в 12.56, второй канал свободен, (тогда его время Построение моделирующей программы. - student2.ru ), третий обслужит заявку в 12.39, а четвертый в 13.05. Минимальное из этих времен 12.39. Следовательно, будет выполнено действие - третий канал освободится, к числу обслуженных заявок прибавится единица, суммарное время обслуживания Tob увеличится на интервал времени, в течение которого заявка была в канале.

(Более подробное описание пошагового моделирования приведено в начале данной главы).

Времена срабатывания «механизмов» записываются в матрицу so (в качестве формальных параметров подпрограмм s, s1 ит.д.).

Для просмотра активностей используется функция,

Построение моделирующей программы. - student2.ru

которая определяет номер элемента массива x при выполнении условия Построение моделирующей программы. - student2.ru , где ”=” логическое равенство. Например, операция

Построение моделирующей программы. - student2.ru

определит минимальный элемент массива s , выделит этот элемент и присвоит переменной ind номер этого элемента. Ниже приведена программа моделирования и ее описание. Заметим, что иногда для большей наглядности и удобства работы с программой ее можно разделить на ряд подпрограмм. Например, выбор канала, в который попадет следующая пришедшая заявка можно осуществить в виде подпрограммы vk

Построение моделирующей программы. - student2.ru

Тогда, при обращении из основной программы к vk(kz,B), эта подпрограмма определит наличие свободных каналов и укажет его номер kz. Здесь В индикатор занятости канала Bk = 0, если k-ый канал свободен Bk = 1 – занят.

Зададим модельное время t = 0 и число занятых мест в очереди m = 0 – очереди нет. Построим цикл while , который будет выполняться пока модельное время, не превысит времени моделирования tm. Обсуждение выбора tm приведено в разделе анализа результатов.

Цикл

Построение моделирующей программы. - student2.ru

предназначен для исключения возможного зацикливания программы при простое СМО. В этом фрагменте времена срабатывания каналов приводятся к времени прихода следующей заявки Построение моделирующей программы. - student2.ru плюс некоторая малая положительная величине eps, которая должна быть на 3-4 порядка меньше промежутка между поступающими заявками и не оказывать влияния на процесс моделирования. Этой же цели служит строка

Построение моделирующей программы. - student2.ru

в завершающей части программы.

Наши рекомендации