Пусть в моделируемой системе время обслуживания некоторым устройством распределено равномерно на интервале A ± 2, где среднее время обслуживания A c вероятностью 0,4 принимает значение 5, a c вероятностью 0,6 – значение 7. Эту ситуацию можно смоделировать следующим образом.
Определим функцию AVERAGET:
Используемее в блоке ADVANCE:
ADVANCE FN$AVERAGE_T,2
Выполнение подпрограммы блока ADVANCE включает расчет функции AVERAGE_T. Это, в свою очередь, требует обращения к генератору случайных чисел RN1. Пусть генератор выдал значение меньшее, чем 0,4. Тогда соответствующее значение функции AVERAGE_T равно 5. Таким образом, время задержки текущего транзакта в устройстве будет равномерно распределено на интервале 5±2.
Непрерывные случайные переменные, рассматриваемые как дискретные. Как известно, дискретные случайные переменные могут принимать только фиксированное число значений. В противоположность этому, непрерывные (в классическом смысле этого термина) случайные переменные могут иметь неограниченное число различных значений.
На практике обычно достаточно, чтобы все случайные переменные имели конечное число конкретных значений. Нет необходимости в тщательном определении значений этих случайных переменных, за исключением случаев, когда необходимо делать расчеты c высокой степенью точности. Таким образом, вполне возможна дискретизация непрерывных распределений. После этого они могут быть определены в GPSS c помощью дискретных и непрерывных GPSS-функций (непрерывные GPSS-функции по сути также являются дискретными, поскольку множество их значений дискретно и конечно).
Функции распределения случайных величин. В языке GPSS возможность задания функций распределения случайных величин ограничена заданием их в табличном виде путем аппроксимации непрерывными функциями. Поэтому можно задать только те функции, которые легко преобразовать для новых значений параметров. К таким функциям, например, относится функция экспоненциального распределения c параметром λ = 1, А также функция стандартного нормального распределения c математическим ожиданием т = 0 и стандартным отклонением σ = 1.
Эти ограничения не касаются языка GPSS World, в котором для задания различных вероятностных функций распределения можно использовать библиотечные процедуры, написанные на языке PLUS. Однако использование вероятностных распределений в табличном виде значительно ускоряет процесс моделирования.
Моделирование пуассоновского потока. Рассмотрим табличный способ задания пуассоновского потока заявок. Пуассоновский входящий поток описывается таким образом: вероятность поступления k заявок пуассоновского потока в течение интервала t составляет
где λ – интенсивность потока.
Интервалы времени между соседними заявками пуассоновского потока распределены по экспоненциальному закону. Согласно методу обратной функции, можно получить ряд чисел, которые имеют экспоненциальное распределение, если ряд случайных чисел R, равномерно распределенных на интервале [0,1], преобразовать в соответствии c функцией, обратной к экспоненциальной функции распределения:
где tj – j -й разыгранный интервал времени поступления; – средний интервал времени поступления; rj – j-e число в последовательности случайных чисел R c равномерным распределением на интервале [0, 1].
Разработчиками GPSS была осуществлена аппроксимация функции F-1 (x), обратной к экспоненциальной функции распределения c параметром λ = 1. Таким образом, функция F-1 (x) была заменена 23 отрезками, которые использовались для преобразования значений RNj в значение – ln(RNj).
Функция XPDIS определяет экспоненциальное распределение c интенсивностью λ = 1:
Пуассоновский входящий поток c интенсивностью λ, отличной от единицы, моделируется c помощью блока GENERATE таким образом:
1) в качестве операнда А используют среднее значение интервалов времени T= 1/ λ, где λ – интенсивность пуассоновского потока;
2) в качестве операнда В используют СЧА – значение функции XPDIS, операторы определения и описания которой приведены выше.