Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Программа модели. В программе модели для задания исходных данных используются переменные пользователя
В программе модели для задания исходных данных используются переменные пользователя. Значения им присваиваются командой EQU. Это позволяет проводить эксперименты с использованием встроенных генераторов, так как факторы в них должны быть только переменными пользователя. Рассмотрим работу сегмента имитации телефонных разговоров с ТА1. Генератор этого сегмента вводит в модель транзакты со средним интервалом времени (T1_/ N1_). Поскольку звонки с ТА1 имеют абсолютный приоритет, то блоком GENERATE транзактам присваивается приоритет 1. Генератор сегмента имитации телефонных разговоров с ТА2 вводит в модель транзакты с нулевым приоритетом. После ввода транзакта в модель, имитирующего заявку на звонок, производится определение номера звонящего ТА1. Группа событий - звонки с ТА1 - рассматривается как полная группа несовместных событий. Три варианта алгоритмов розыгрыша таких событий рассматривались ранее (п. 3.7). В модели реализован алгоритм розыгрыша в цикле, что делает его независимым при изменении количества телефонных аппаратов. Определенный в результате розыгрыша номер ТА1 заносится в параметр Р3 транзакта. Однако возможно, что с этого телефона уже звонят. Поэтому блоком GATE производится проверка: свободен ли ТА1 с данным номером? Если нет, заявка теряется. Если телефон свободен, то далее определяется: куда звонок? На ТА2 или требуется внешний выход? Ответ на этот вопрос находится розыгрышем единичного события (см. п. 3.6). Пусть требуется внешний выход. Поиск свободного внешнего выхода производится в цикле от номера (N1_+ N2_)+1) до номера (N1_+ N2_+ N3_). Предположим, что найден свободный внешний выход, номер которого занесен в параметр Р4. Тогда последовательностью блоков, начиная с метки Мет4, имитируется ведение разговора с ТА1 без прерывания разговора по внешнему выходу с ТА2. После занятия свободного выхода в сохраняемую ячейку с тем же номером, что и номер занятого внешнего выхода, заносится уровень приоритета, в данном случае это 1. Разговор с ТА1 по внешнему выходу состоялся. Транзакт выводится из модели блоком TERMINATE с меткой Ter2. Вернемся к поиску свободного внешнего выхода. Пусть все внешние выходы заняты. Далее отыскивается внешний выход, занятый разговором с ТА2. Поиск производится также в цикле от номера (N1_+ N2_) +1 до номера (N1_+ N2_+ N3_). Однако при этом проверяется содержимое сохраняемых ячеек с такими же номерами, как и номера внешних выходов. Если содержимое проверяемой ячейки равно 1, то внешний выход занят ТА1. Если все внешние выходы заняты ТА1, т. е. во всех проверяемых сохраняемых ячейках 1, заявка на звонок теряется - транзакт отправляется на метку Мет23. Пусть найден внешний выход, занятый ТА2, т. е. в соответствующей сохраняемой ячейке 0. Транзакт переходит к последовательности блоков, начинающихся с метки Мет22. Эта последовательность имитирует прерывание разговора с ТА2 и ведение разговора с ТА1 по внешнему выходу. По окончании разговора тран-закт выводится из модели блоком TERMINATE с меткой Ter1. Возвратимся к последовательности блоков, разыгрывающей номер ТА1, с которого поступает заявка на звонок. Пусть теперь требуется не внешний выход, а нужно позвонить одному из абонентов ТА2. В этом случае транзакт направляется к последовательности блоков, начинающейся с метки Мет2. Эта последовательность имитирует определение номера ТА2, на который звонят с ТА1. Номер ТА2 разыгрывается также, как и ранее рассмотренный розыгрыш номера ТА1. После определения номера ТА2 проверяется: свободен ли ТА2 с данным номером? Если не свободен, фиксируется несостоявшийся разговор выводом транзакта из модели блоком TERMINATE с меткой Ter3. Если же ТА2 свободен, транзакт направляется к последовательности блоков, начинающейся с метки Мет6. Эти блоки имитируют ведение разговора абонентами ТА1 и ТА2. По окончании разговора транзакт выводится из модели блоком TERMINATE с меткой Ter4. Сегмент имитации телефонных разговоров с ТА2 отличается от только что рассмотренного тем, что в нем отсутствует последовательность блоков, имитирующей прерывание разговоров с ТА2 заявками на разговор с ТА1 при отсутствии свободных внешних выходов. ; Модель функционирования автоматической телефонной станции ; Задание исходных данных VrMod EQU 3600; Время моделирования, 1 ед. мод. вр. = 1 с N1_ EQU 10; Количество ТА1 N2_ EQU 20; Количество ТА2 N3_ EQU 3; Количество внешних выходов T1_ EQU 40; Время для расчета интервалов между звонками с ТА1 T2_ EQU 50; Время для расчета интервалов между звонками с ТА2 Tog1 EQU 3.5; Среднее время ожидания при занятости внешних линий Tog01 EQU 0.5; Среднеквадратическое отклонение времени ожидания Tog2 EQU 3; Среднее время ожидания при звонке с ТА1 на ТА2 Tog02 EQU 0.5; Среднеквадратическое отклонение времени ожидания Tog3 EQU 2.5; Среднее время ожидания при занятости внешних линий Tog03 EQU 0.4; Среднеквадратическое отклонение времени ожидания Tog4 EQU 2; Среднее время ожидания при звонке с ТА2 на ТА1 Tog04 EQU 0.3; Среднеквадратическое отклонение времени ожидания Trazg1 EQU 3; Среднее время разговора с ТА1 Trazg2 EQU 5; Среднее время разговора с ТА2 P5_ EQU 0.7; Вероятность того, что ТА2 не ответит P10_ EQU 0.3; Вероятность того, что ТА1 не ответит ; Сегмент имитации телефонных разговоров с ТА1 GENERATE (Exponential(333,0,(T1_/N1_))),,,,1 ; Определение номера звонящего ТА1 Met0 ASSIGN 7,(RN43/1000); Обращение к генератору RN Met1 ASSIGN 3+,1; Начало цикла определения номера звонящего ТА1 TEST LE P7,(P3#(1/N1_)),Met1; Если условие выполнено, то номер ТА1 запомнить в Р3 GATE NU P3,Met9; Свободен ли телефон с данным номером? Если да, SEIZE P3; то звонят с него ASSIGN 7,(RN343/1000); Обращение к генератору RN TEST LE P7,(N3_/(N2_+N3_)),Met2; Если условие выполнено, то нужен внешний выход ; Поиск свободного внешнего выхода ASSIGN 4,(N1_+N2_); Подготовка к циклу Met3 ASSIGN 4+,1; Начало цикла определения номера свободного внешнего выхода GATE U P4,Met4; Свободен ли внешний выход? TEST GE P4,(N1_+N2_+N3_),Met3; Все ли внешние выходы проверены и не найдено свободного? ADVANCE Tog1,Tog01; Если да, то задержаться и ; Поиск внешнего выхода, занятого ТА2 ASSIGN 4,(N1_+N2_); подготовка к циклу Met21 ASSIGN 4+,1; Начало цикла определения номера внешнего выхода, занятого ТА2 TEST E X*4,1,Met22; Равно ли значение сохраняемой ячейки 1? Если нет, то перейти к прерыванию разговора TEST GE P4,(N1_+N2_+N3_),Met21; Все ли сохраняемые ячейки проверены? Не найдено ни одной, значение которой равно 0? Если да, то TRANSFER,Met23; все внешние выходы заняты звонками с ТА1 ; Прерывание разговора с ТА2 Met22 PREEMPT P4,PR,Met24,,RE; Прервать разговор с ТА2 по внешнему выходу без права продолжения SAVEVALUE *4,PR; Сохранить PR в ячейке с номером в Р4 ADVANCE (Exponential(222,0,Trazg1)); Имитация разговора с ТА1 по внешнему выходу RETURN P4; Освободить внешний выход с номером в Р4 RELEASE P3; Освободить ТА1 с номером в Р3 Ter1 TERMINATE; Состоявшиеся разговоры с ТА1 по внешним выходам с прерыванием разговоров с ТА2 Met23 RELEASE P3; Освободить ТА1, разговор с которого по внешнему выходу не состоялся TERMINATE; Несостоявшиеся разговоры с ТА1 по внешним выходам из-за занятости их ТА1 ; Имитация ведения разговоров с ТА1 без прерывания Met4 SEIZE P4; Занять свободный внешний выход с номером в Р4 SAVEVALUE P4,PR; Занести в ячейку с номером в Р4 уровень приоритета ADVANCE (Exponential(222,0,Trazg1)); Имитация разговора с ТА1 RELEASE P4; Освободить внешний выход с номером в Р4 RELEASE P3; освободить ТА1 с номером в Р3 Ter2 TERMINATE; Состоявшиеся разговоры с ТА1 по внешним выходам ; Определение номера ТА2, на который звонят с ТА1 Met2 ASSIGN 7,(RN343/1000); Обращение к генератору RN ASSIGN 6,0; Подготовка к циклу Met5 ASSIGN 6+,1; Начало цикла определения номера ТА2, на который звонят с ТА1 TEST LE P7,(P6#(1/N2_)),Met5; Если условие выполнено, то номер ТА2 запомнить в Р6 GATE NU (N1_+P6),Met7; Свободен ли телефон с данным номером? Если да, ASSIGN 7,(RN343/1000); то ответит ли он? TEST LE P7,P5_,Met6; Если условие выполнено, то не ответит. Тогда Met7 ADVANCE Tog2,Tog02; задержаться и RELEASE P3; освободить ТА1 с номером в Р3 Ter3 TERMINATE; Несостоявшиеся разговоры между абонентами ТА1 и ТА2 ; Имитация разговоров абонентов ТА1 и ТА2 Met6 SEIZE (N1_+P6); Занять ТА2 с номером в (N1_+Р6) ADVANCE (Exponential(222,0,Trazg1)); Имитация разговора между абонентами ТА1 и ТА2 RELEASE (N1_+P6); Освободить ТА2 с номером в (N1_+Р6) RELEASE P3; Освободить ТА1 с номером в Р3 Ter4 TERMINATE; Состоявшиеся разговоры между абонентами ТА1 и ТА2 Met9 TERMINATE; ТА1 уже был занят, поэтому разговор не состоялся Met24 RELEASE (N1_+P3); Прерванные разговоры с ТА2 TERMINATE ; Сегмент имитации телефонных разговоров с ТА2 GENERATE (Exponential(493,0,(T2_/N2_))) ; Определение номера звонящего ТА1 Met10 ASSIGN 7,(RN413/1000); Обращение к генератору RN ASSIGN 3,0; Подготовка к циклу Met11 ASSIGN 3+,1; Начало цикла определения номера звонящего ТА2 TEST LE P7,(P3#(1/N2_)),Met11; Если условие выполнено, то номер ТА2 запомнить в Р3 GATE NU (N1_+P3),Met19; Свободен ли телефон с данным номером? Если да, SEIZE (N1_+P3); то звонят с него ; Поиск свободного внешнего выхода ASSIGN 7,(RN343/1000); Обращение к генератору RN TEST LE P7,(N3_/(N1_+N3_)),Met12; Если условие выполнено, то нужен внешний выход ASSIGN 4,(N1_+N2_); Подготовка к циклу Met13 ASSIGN 4+,1; Начало цикла определения номера свободного внешнего выхода GATE U P4,Met14; Свободен ли внешний выход? TEST GE P4,(N1_+N2_+N3_),Met13; Все ли внешние выходы проверены и не найдено свободного выхода? ADVANCE Tog3,Tog03; Если да, то задержаться и RELEASE (N1_+P3); Освободить телефон с номером (N1_+P3) Ter5 TERMINATE; Несостоявшиеся разговоры с ТА2 из-за занятости внешних выходов Met14 SEIZE P4; Занять свободный внешний выход SAVEVALUE P4,PR; Запомнить приоритет абонента, ведущего разговор ADVANCE (Exponential(222,0,Trazg2)); Имитация разговора между абонентами ТА2 по внешним выходам RELEASE P4; Освободить внешний выход RELEASE (N1_+P3); Освободить ТА2 Ter6 TERMINATE; Состоявшиеся разговоры с ТА2 по внешним выходам ; Определение номера ТА1, на который звонят с ТА2 Met12 ASSIGN 7,(RN343/1000); Обращение к генератору RN ASSIGN 6,0; Подготовка к циклу Met15 ASSIGN 6+,1; Начало цикла определения номера ТА1, на который звонят с ТА2 TEST LE P7,(P6#(1/N1_)),Met15; Если условие выполнено, то номер ТА1 запомнить в Р6 GATE NU P6,Met17; Свободен ли телефон с данным номером? Если да, ASSIGN 7,(RN343/1000); то ответит ли он? TEST LE P7,P10_,Met16; Если условие выполнено, то не ответит. Тогда Met17 ADVANCE (Normal(211,Tog2,Tog02)); задержаться и RELEASE (N1_+P3); освободить телефон с номером N1_+P3 Ter7 TERMINATE; Несостоявшиеся разговоры с ТА2 из-за занятости ТА1 ; Имитация разговоров абонентов ТА2 и ТА1 Met16 SEIZE P6; Занять ТА1 с номером в Р6 ADVANCE (Exponential(222,0,Trazg2)); Имитация разговора между абонентами ТА2 и ТА1 RELEASE P6; Освободить ТА1 с номером в Р6 RELEASE (N1_+P3); Освободить ТА2 с номером N1_+P3 Ter8 TERMINATE; Состоявшиеся разговоры между абонентами ТА2 и ТА1 Met19 TERMINATE ; Сегмент задания времени моделирования и расчета результатов моделирования GENERATE VrMod; Задание времени моделирования TEST E TG1,1,Met20; Если содержимое счетчика завершений равно 1, то рассчитать SAVEVALUE Ver1,((N$Ter2+N$Ter4)/N$Met0); Вероятность ведения разговоров с ТА1 SAVEVALUE Ver2,((N$Ter6+N$Ter8)/N$Met10); Вероятность ведения разговоров с ТА2 Met20 TERMINATE 1; Фиксация очередного прогона Приведем результаты моделирования, полученные после 1000 прогонов. SAVEVALUE RETRY VALUE VER1 0 0.614 VER2 0 0.396 Вероятность ведения разговоров с ТА2 Ver2 = 0,396 меньше, чем Ver1 = 0,614. Одним из факторов, влияющим на это, является вероятность P10_ = 0,7 того, что абонент ТА1 на звонок абонента ТА2 не ответит. Оставим без изменений все исходные данные, установим лишь равную вероятность не ответа на звонки абонентами обеих категорий P10_ = P5_ = 0,3. По окончании моделирования получим: SAVEVALUE RETRY VALUE VER1 0 0.584 VER2 0 0.625 Date: 2015-07-17; view: 431; Нарушение авторских прав |