Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Программа модели. Программа модели согласно декомпозиции ВККС (рис
Программа модели согласно декомпозиции ВККС (рис. 6.6) должна иметь:
Программа модели функционирования ВККС приведена ниже. ; Модель функционирования ВККС ; Задание исходных данных VrMod EQU 7200; Время моделирования, 1 ед. мод. вр. = 1с NCan EQU 3; Число каналов n1_ EQU 6; Количество источников сообщений MaxKat EQU 3; Максимальное число категорий сообщений T_ EQU 118.4; Средний интервал времени поступления сообщений от источника Q EQU 3600; Производительность ВККС, оп/c V_ EQU 5000; Скорость передачи, бит/с Pc_ EQU 0.7; Вероятность потери сообщений при отказе ВККС L1_ EQU 2500000; Емкость накопителя ВККС, байт L2_ EQU 5; Емкость накопителя каналов связи, сообщений TOtk1 EQU 3600; Среднее время между отказами ВККС TOtk2 EQU 1800; Среднее время между отказами каналов TVost1 EQU 3.7; Среднее время восстановления ВККС TVost2 EQU 4.2; Среднее время восстановления каналов ; Описание функций, задающих исходные данные Kat FUNCTION RN34,D3; Вероятности видов категорий .3,1/.5,2/1,3 S_ FUNCTION P1,D3; Средние вычислительные сложности сообщений (длины), оп (байт) по категориям 1,53000/2,86000/3,66000 So_ FUNCTION P1,D3; Среднеквадратические отклонения вычис- лительных сложностей (длин) сообщений, оп (байт) по категориям 1,6100/2,5000/3,7000 ; Арифметические выражения вычисления DL VARIABLE INT(NORMAL(114,FN$S_,FN$So_)); Длин (вычислительных сложностей) сообщений VrPer VARIABLE (P2/V_)#8; Времени передачи сообщения VrObr VARIABLE P2/Q_; Времени обработки сообщения ; Сегмент имитации поступления сообщений от источников GENERATE (Exponential(11,0,(T_/n1_))); Источники сообщений ; Розыгрыш категории сообщения и счета сообщений Met4 ASSIGN 1,FN$Kat; Запись в Р1 кода категории и счет сообщений всех категорий ASSIGN 10,(P1+MaxKat); Запись в Р10 номера Х для счета поступающих сообщений по категориям ASSIGN 11,(P10+MaxKat); Запись в Р11 номера Х для счета переданных сообщений по категориям ASSIGN 12,(P11+MaxKat); Запись в Р12 номера Х для счета потерянных сообщений по категориям ASSIGN 13,(P12+MaxKat); Запись в Р13 номера Х для записи вероятности переданных сообщений по категориям ASSIGN 14,(P13+MaxKat); Запись в Р14 номера Х для записи вероятности потерянных сообщений по категориям SAVEVALUE P10+,1; Cчет поступающих сообщений по категориям ; Розыгрыш характеристик сообщений Met02 ASSIGN 2,V$DL; Занесение в Р2 длины (вычислительной сложности) сообщения ASSIGN 3,V$VrPer; Занесение в Р3 времени передачи сообщения ASSIGN 8,V$VrObr; Занесение в Р8 времени обработки сообщения ASSIGN 7,0; Код 0 в Р7 - признак попадания сообщения в накопитель TEST E P1,1,Met111; Если сообщение 1 категории, то PRIORITY 1; сообщению 1 категории - высокий приоритет ;Сегмент имитации работы накопителя 1 и ВККС Met111 GATE FV Vkks,Met5; Проверка ВККС на исправность GATE U Vkks,Met17; Проверка ВККС на занятость TEST LE P2,(L1_-X$TEmk),Met5; Есть ли место в накопителе ВККС? SAVEVALUE TEmk+,P2; Увеличение текущей емкости накопителя на длину сообщения LINK SVkks,PR; Поместить сообщение в накопитель ВККС Met17 ASSIGN 7,1; Признак: сообщение поступило на ВККС, минуя накопитель Met14 SEIZE Vkks; Занять ВККС ADVANCE P8; Имитация обработки RELEASE Vkks; Освобождение ВККС TEST E P7,0,Met18; Если Р7 =0, то SAVEVALUE TEmk-,P2; уменьшить текущую емкость накопителя ВККС на длину обработанного сообщения Met18 UNLINK SVkks,Met111,1; Очередное сообщение из накопителя ВККС послать на обработку ; Сегмент имитации работы накопителя 2 и каналов связи Met15 ASSIGN 4,NCan; Подготовка к циклу Met16 GATE FV P4,Met23; Начало цикла поиска исправного и свободного канала. ;Исправен ли канал? Если да, то GATE U P4,Met21; занят ли канал? Если нет, на Met21-занять канал TEST E X*4,1,Met61; Если канал занят сообщением низкого приоритета, то прервать Met23 LOOP 4,Met16; Все ли каналы просмотрены? Если нет, продолжить поиск TEST L CH$SCan_,L2_,Met5; Есть ли место в накопителе каналов? LINK SCan_,PR; Сообщение в накопитель каналов Met21 SEIZE P4; Занять канал с номером в Р4 SAVEVALUE P4,P1; Занести код категории в ячейку с номером в Р4 ADVANCE P3; Имитация передачи сообщения RELEASE P4; Освобождение канала с номером в Р4 UNLINK SCan_,Met15,1; Очередное сообщение из накопителя каналов на передачу TRANSFER,Met10; Счет переданных сообщений ; Имитация передачи по каналам с прерыванием Met61 SAVEVALUE P4,P1; Занести PR в ячейку с номером в Р4 PREEMPT P4,PR,Met62; Занять канал с номером в Р4 ADVANCE P3; Имитация передачи сообщения RETURN P4; Освобождение канала с номером в Р4 UNLINK SCan_,Met15,1; Очередное сообщение из накопителя каналов на передачу TRANSFER,Met10; Счет переданных сообщений Met62 RELEASE P4; Освободить канал с номером в Р4 TRANSFER,Met15; Отправить в накопитель каналов ;Сегмент имитации отказов ВККС GENERATE,,,1 Met49 ADVANCE (Exponential(237,0,TOtk1)); Розыгрыш времени до очередного отказа ASSIGN 1,(RN35/1000); Обращение к датчику RN TEST LE P1,Pc_,Met50; Все ли сообщения в накопителях теряются? Met51 FUNAVAIL Vkks,RE,Met115; Перевод ВККС в неисправное состояние ADVANCE (Exponential(237,0,TVost1)); Имитация восстановления FAVAIL Vkks; Перевод ВККС в исправное состояние TRANSFER,Met49; Отправить для розыгрыша очередного отказа Met115 RELEASE Vkks; Освобождение ВККС прерванным сообщением TEST E P7,0,Met5; Если Р7=0, то SAVEVALUE TEmk-,P2; уменьшить текущую емкость накопителя ВККС на длину потерянного сообщения TRANSFER,Met5; Отправить для счета потерь Met50 UNLINK SVkks,Met5,ALL; Потеря всех сообщений из накопителя ВККС UNLINK SCan_,Met5,ALL; Потеря всех сообщений из накопителя каналов SAVEVALUE TEmk,0; Значение текущей емкости =0 TRANSFER,Met51; Отправить для перевода ВККС в неисправное состояние ;Сегмент имитации отказов каналов связи GENERATE,,,NCan; Число транзактов - по числу каналов связи SAVEVALUE NumCan+,1; Записать в X$NumCan последовательно 1, 2,..., NCan ASSIGN 4,X$NumCan; Записать в Р4 последовательно 1, 2,..., NCan Met19 ADVANCE (Exponential(237,0,TOtk2)); Розыгрыш времени до очередного отказа GATE FV P4,Met19 FUNAVAIL P4,RE,Met112; Перевод канала в неисправное состояние ADVANCE (Exponential(237,0,TVost2)); Имитация восстановления канала FAVAIL P4; Перевод в исправное состояние TRANSFER,Met19; Отправить для розыгрыша очередного отказа Met112 RELEASE P4; Освобождение канала с номером 1 TEST E P1,1,Met5; Если сообщение 1 категории, то TRANSFER,Met15; отправить на повторную передачу ; Сегмент счета переданных и потерянных сообщений и расчет вероятностей передачи сообщений Met10 SAVEVALUE P11+,1; Cчет и сохранение в ячейке с номером в Р11 переданных сообщений всего и по категориям SAVEVALUE P13,(X*11/X*10); Расчет и сохранение в ячейке с номером в Р13 вероятностей передачи по категориям ; SAVEVALUE VPerS,(N$Met10/N$Met4) ; Расчет и сохранение в ячейке VPerS вероятностей передачи сообщений всех категорий TERMINATE Met5 SAVEVALUE P12+,1; Cчет и сохранение в ячейке с номером в Р12 потерянных сообщений всего и по категориям SAVEVALUE P14,(X*12/X*10); Расчет и сохранение в ячейке с номером в Р14 вероятностей потери сообщений по категориям; SAVEVALUE VPotS,(N$Met5/N$Met4); Расчет и сохранение в ячейке VPotS вероятностей потерь сообщений всех категорий TERMINATE ;Задание времени моделирования GENERATE VrMod; Задание времени моделирования TERMINATE 1 Для задания исходных данных использованы команда EQU и функции. Арифметические выражения введены для расчета вычислительных сложностей сообщений, времени их обработки и передачи. Поскольку вычислительная сложность определяется количеством операций, которое не может быть дробным, то для перевода в целое используется встроенная функция INT. Рассмотрим работу блоковой части модели. Так как интервалы времени поступления сообщений от источников одинаковы, то блок GENERATE вводит транзакты - сообщения в модель со средним значением интервала (T_/n1_). Предполагается, что число категорий сообщений может изменяться от единицы до определенного максимального значения, поэтому программа модели построена так, чтобы не подвергаться коррекции в таком случае. Для этого в сегмент имитации поступления сообщений от источников включена последовательность блоков, разыгрывающих категории сообщений. Категория сообщения записывается в параметр Р1 транзакта. Для счета всех поступивших сообщений и в последующем переданных и потерянных сообщений по категориям в параметры Р10…Р14 транзакта записываются номера сохраняемых ячеек. В параметр Р10 записывается номер (Р1+MaxKat), в параметры Р11…Р14 записываются те, которые отличаются в указанной последовательности на максимальное число категорий MaxKat, задаваемое в исходных данных. Пусть MaxKat = 5. Тогда в зависимости от того, что в Р1:
Таким образом, распределение номеров сохраняемых ячеек не зависит от количества категорий сообщений. После счета поступающих сообщений по категориям в сохраняемых ячейках с номерами в параметре Р10 производится розыгрыш и запись характеристик сообщений: вычислительной сложности, времени обработки и времени передачи по описанным ранее арифметическим выражениям. Характеристики записываются в параметры Р2, Р8 и Р3 соответственно. Если сообщение первой категории, ему присваивается приоритет 1. Все сообщения отправляются на сегмент имитации работы накопителя 1 и ВККС. Здесь вначале ВККС проверяется на исправность и занятость. Если ВККС неисправен, сообщение теряется. Транзакт направляется на метку Мет5. Здесь учитывается потерянное сообщение, и рассчитываются вероятности потерь по категориям и в целом по всем категориям. После этого транзакт выводится из модели. Если ВККС исправен, но занят, проверяется возможность сохранения сообщения в накопителе 1 SVkks. Если достаточно свободной емкости, сообщение помещается в накопитель 1. Его текущая занятая емкость TEmk увеличивается на длину сообщения. Если свободной емкости недостаточно, сообщение теряется. Транзакт направляется на метку Мет5. Здесь выполняются те же действия, что и при возникновении неисправности ВККС. Если ВККС исправен и свободен, т. е. накопитель 1 пуст, тран-закт направляется на метку Мет17. В параметр Р7 заносится 1 - признак поступления сообщения на обработку, минуя накопитель 1. Транзакт занимает ВККС. После обработки при Р7 = 1 транзакт направляется на Мет18 для вывода очередного сообщения из накопителя 1 (если оно есть) для обработки на ВККС. Выводящий же транзакт - обработанное сообщение направляется в сегмент имитации работы накопителя 2 и каналов связи. Поиск канала для передачи сообщения организован в цикле Максимально возможное повторение в цикле равно числу каналов связи. Для организации в модели циклов предназначен блок LOOP. Он имеет следующий формат: LOOP A,B Операнд А - параметр транзакта или параметр цикла, в котором содержится число повторений какого-либо участка модели. Операнд B - метка блока, с которого начинается цикл. Операнды А и B могут быть именем, положительным целым числом, выражением в скобках, СЧА или СЧА*параметр. Например, в данной модели блок LOOP используется так: Met15 ASSIGN 4,NCan; Подготовка к циклу Met16 GATE FV P4,Met23; Начало цикла поиска исправного и свободного канала ; Исправен ли канал? Если да, то GATE U P4,Met21; занят ли канал? Если нет, на Met21-занять канал TEST E X*4,1,Met61; Если канал занят сообщением низкого приоритета, то прервать Met23 LOOP 4,Met16; Все ли каналы просмотрены? Если нет, продолжить поиск Блок с меткой Мет16 является началом цикла, т. е. расположен раньше блока LOOP. Когда транзакт, пройдя участок модели, начинающийся блоком с меткой Мет16, войдет в блок LOOP, значение его параметра - параметра номер четыре транзакта уменьшается на 1. Если это значение не равно нулю, транзакт переходит к блоку с меткой Мет16, т. е. цикл повторяется. Если же после вычитания 1 значение параметра цикла равно нулю, следовательно, выполнено заданное число повторений, транзакт переходит к следующему блоку. Замечание. При каждом входе в блок LOOP значение параметра цикла уменьшается на 1. Значит, значение параметра цикла можно использовать для выбора новых значений каких-либо факторов при очередном повторении. Однако это не всегда удобно, так как величина параметра цикла изменяется от большего к меньшему значению, а не наоборот. В рассматриваемой модели это не имеет принципиального значения. Если в результате поиска находится исправный и свободный канал, транзакт направляется на Мет21 и занимает канал, номер которого содержится в его параметре Р4 (ссылка *4). После имитации передачи транзакт входит в блок UNLINK для вывода очередного сообщения из накопителя 2 на передачу. Выводящий же транзакт - переданное сообщение направляется на метку Мет10. Здесь учитывается переданное сообщение, рассчитываются вероятности передачи сообщений отдельно по категориям и в целом по всем категориям. Если просмотрены все каналы связи и не найдено свободного канала для передачи сообщения не первой категории, проверяется возможность помещения этого сообщения в накопитель Scan_. При отсутствии свободного места в накопителе Scan_ сообщение теряется, и транзакт направляется на метку Мет5 для учета и вывода из модели. Если при передаче сообщения первой категории, обладающего абсолютным приоритетом по отношению к сообщениям других категорий, в результате поиска не найдено свободного канала или занятого передачей сообщений более низких приоритетов, сообщение также теряется, как и в предыдущем случае. Если же обнаружен канал, занятый передачей сообщения более низкого приоритета, транзакт направляется на метку Мет61. Происходит прерывание сообщения низкого приоритета. Прерванное сообщение направляется на метку Мет15 для проверки возможности размещения его в накопителе каналов связи Scan_. Переданное сообщение выводит из накопителя каналов связи на передачу очередное сообщение и направляется на метку Мет10 для счета. Теперь рассмотрим сегменты имитации отказов. Начнем с сегмента имитации отказов ВККС. ВККС в модели представлен ОКУ с именем Vkks. Блок GENERATE вырабатывает один транзакт и становится неактивным. Далее имитация отказов организуется в цикле. Такой метод позволяет уменьшить количество транзактов в модели, сократить машинное время. Ведь можно было бы сделать так, чтобы GENERATE вводил в модель транзакт для имитации каждого отказа ВККС, а блок TERMINATE выводил его после имитации восстановления. Блоком ADVANCE с меткой Мет49 разыгрывается время до очередного отказа. Затем: все ли сообщения в накопителе теряются? Если да, транзакт направляется на Мет50. Из накопителей SVkks и Scan_ выводятся и теряются все имевшиеся там сообщения. Обнуляется текущая емкость TEmk накопителя SVkks и транзакт направляется к метке Мет51 для перевода ВККС в неисправное (недоступное) состояние. После восстановления транзакт направляется на метку Мет49 для розыгрыша очередного отказа. Если же не все сообщения теряются, а только те, которые обрабатываются ВККС, он переводится в неисправное состояние. Обрабатываемое сообщение удаляется, и транзакт направляется на метку Мет115. Если сообщение перед обработкой помещалось в накопитель SVkks, его емкость уменьшается на длину потерянного сообщения. Транзакт направляется на метку Мет5 для счета и уничтожения. Каналы связи в модели представлены несколькими ОКУ, работающими параллельно. Следовательно, они будут независимо друг от друга выходить из строя. Поэтому блок GENERATE вырабатывает сразу количество транзактов, равное количеству каналов связи NCan_. Далее эти транзакты в соответствии с номером канала, записанным в параметр Р1 каждого из NCan_ транзактов, имитируют выход каналов связи из строя. Предполагается, что время восстановления канала связи значительно меньше времени между его предыдущим и последующим отказами. После 1000 прогонов получим следующие результаты моделирования:
Date: 2015-07-17; view: 489; Нарушение авторских прав |