мод сис / V.Boev-GPSSvsAnyLogic
.pdf4.4. Размещение элементов для вывода результатов моделирования
4.Перетащите элемент text. В поле Текст: введите Ре-
зультаты моделирования.
5.В Палитре выделите Элементы управления. Перетащите элементы Текстовое поле на элемент Результаты моделиро-
вания. Разместите их так, как показано на рис. 4.4. Значения свойств установите согласно табл. 4.3. У элементов editbox и editbox5 Ширина: 100, Высота: 31. У остальных — Ширина: 50.
Осталось поместить элемент для обработки и вывода статистической информации о времени передачи одного сообщения.
1.В Палитре выделите Статистика.
2.Перетащите элемент Гистограмма. Характеристики его размещения даны в табл. 4.3.
141
|
|
|
|
Таблица 4.3 |
|
|
|
|
|
|
|
Всего сообщений |
Получено сообщений по категориям |
||||
получено |
|||||
|
|
|
|
||
editbox |
editbox1 |
editbox2 |
editbox3 |
editbox4 |
|
X: 21 |
X: 177 |
X: 247 |
X: 317 |
X: 389 |
|
Y: 1310 |
Y: 1310 |
Y: 1310 |
Y: 1310 |
Y: 1310 |
|
Всего сообщений |
Отправлено сообщений по категориям |
||||
отправлено |
|||||
|
|
|
|
||
editbox5 |
editbox6 |
editbox7 |
editbox8 |
editbox9 |
|
X: 19 |
X: 179 |
X: 249 |
X: 319 |
X: 389 |
|
Y: 1390 |
Y: 1390 |
Y: 1390 |
Y: 1390 |
Y: 1390 |
|
Время передачи сообщения |
|
|
|||
Минимальное |
Максимальное |
Среднее |
|
|
|
editbox13 |
editbox12 |
editbox15 |
|
|
|
X: 319 |
X: 319 |
X: 319 |
|
|
|
Y: 1470 |
Y: 1520 |
Y: 1570 |
|
|
|
|
сhart-Гистограмма |
|
|
||
X: 19 |
Y: 1450 |
Ширина: 240 |
Высота: 160 |
3.На странице Основные панели Свойства в поле Имя: оставьте имя, предложенное системой. Сбросьте флажок Отобра-
жать имя.
4.Щѐлкните кнопку Добавить данные и введите в поле
Данные: имя врПередачи.
5.В поле Заголовок: введите Время передачи.
6.Значения остальных свойств (цвет и др.) установите по собственному усмотрению.
7.Добавьте остальные элементы презентации (номера категорий сообщений, другую текстовую информацию) согласно рис. 4.4.
Иснова, прежде чем перейти к построению событийной части сегмента Абонент, разместим на корневом объекте Main необходимые элементы для сбора статистических данных, обработки, расчѐта показателей качества обслуживания сети и их вывода. Это необходимо сделать по той причине, что также имена этих элементов нужны будут при написании кода в сегменте Абонент.
4.1.7.3.Показатели качества обслуживания сети связи
1.Откройте корневой объект Main.
2.Перейдите на область просмотра ViewData.
3.Перетащите или скопируйте элементы Простая переменная, разместите и дайте имена согласно рис. 4.5.
142
Рис. 4.5. Элементы для сбора и обработки данных за сеть в целом
4. Тип всех переменных double. Переменные отпр11…отпр66 предназначены для накопления статистических данных о количестве отправленных сообщений абонент — абонент. Например, отпр23 — количество сообщений, отправленных абонентом 2 або-
143
ненту 3, а отпр32 — количество сообщений, отправленных абонентом 3 абоненту 2. По этим данным рассчитываются коэффициенты пропускной способности кПрСп12…кПрСп66 абонент — абонент.
5.Выровняйте элементы. Выделите нужные элементы, щелкните правой кнопкой мышки, выберите Выравнивание.
6.Перетащите элемент Данные гистограммы с палитры
Статистика.
7.Задайте свойства элемента:
измените Имя: на врПередСооб;
сделайте Количество интервалов: равным 10; задайте Нач. размер интервалов: 0.01.
Теперь организуем вывод в более презентабельном виде. На рис. 4.6 показаны элементы для вывода показателей качества обслуживания сети связи. Часть результатов моделирования будем выводить в таком же виде и такие же, как и для каждого абонента.
1.Перейдите на область просмотра ViewResult.
2.Откройте объект Абонент.
3.Скопируйте элементы в скруглѐнном прямоугольнике с именем Результаты моделирования.
4.Перейдите на корневой объект Main и вставьте скопированные элементы в верхнюю часть области просмотра ViewResult
(см. рис. 4.6).
5.Добавьте элемент Текстовое поле (editbox10) для вывода коэффициента пропускной способности сети.
6.Внесите правки в текстовые сообщения согласно рис. 4.6.
7.В Палитре выделите Статистика. Перетащите элемент
Гистограмма.
8.На странице Основные панели Свойства в поле Имя: оставьте имя, предложенное системой. Сбросьте флажок Отобра-
жать имя.
9.Щѐлкните кнопку Добавить данные и введите в поле
Данные: имя врПередачи.
10.В поле Заголовок: введите Время передачи.
11.Значения остальных свойств (цвет и др.) установите по собственному усмотрению.
12.В Палитре выделите Презентация. Перетащите элемент Скругленный прямоугольник в область просмотра результатов
ViewResult.
144
Рис. 4.6. Вывод показателей качества обслуживания сети
145
13.На странице Основные в поле Имя: оставьте имя, предложенное системой. Сбросьте флажок Отображать имя.
14.Перейдите на страницу Дополнительные панели Свойст-
ва. Введите в поля X: 10, Y: 1000, Ширина: 420, Высота: 410. 15. Перетащите элемент text. В поле Текст: введите Коэф-
фициенты пропускной способности абонент-абонент.
8.В Палитре выделите Элементы управления. Перетащите элемент Текстовое поле. Разместите X: 20, Y: 1078, Ширина:
48, Высота: 25. В поле Имя: введите КПрСп11. Сбросьте флажок
Отображать имя.
9.Перетащите элемент text. В поле Текст: введите КПрСп11.
10.Скопируйте элементы text и Текстовое поле. Вставьте их пять раз согласно рис. 4.6. При этом в полях Имя: последователь-
но меняются имена КПрСп12… КПрСп16. Но поле Текст: останется неизменным, т.е. КПрСп11. Внесите правки в соответствии с рис. 4.6. Элемент text добавлен потому, что в ходе моделирования имя элемента Текстовое поле не отображается.
11. Аналогичным образом добавьте остальные элементы text и
Текстовое поле согласно рис. 4.6.
Теперь можно перейти к построению событийной части сегмента.
4.1.7.4. Построение событийной части сегмента
Событийная часть сегмента, назовѐм еѐ блок Абонент1, предназначена для имитации отправителя-получателя сообщений, поступления сообщений через случайные интервалы времени, розыгрыша параметров сообщений и счѐта количества всего отправ- ленных-полученных сообщений по категориям и абонентам, запоминания времени поступления каждого сообщения, используемого в последующем для расчѐта минимального, максимального и среднего времени передачи одного сообщения.
Алгоритм блока Абонент1 приведен на рис. 4.7, а его реализация средствами AnyLogic — на рис. 4.8.
1.Из палитры Презентация перетащите элемент Прямо-
угольник.
2.Перейдите на страницу Дополнительные панели Свойст-
ва. Введите в поля X: 10, Y: 50, Ширина: 450, Высота: 380.
3. Перетащите элемент text и в поле Текст: введите Або-
нент1.
146
Рис. 4.7. Алгоритм блока Абонент1
4. Перетащите из Основной библиотеки (Enterprise Library)
объект source. Поместите его так же, как на рис. 4.8. Остальные объекты блока Абонент1 вы будете размещать по мере необходимости.
При построении модели нам придѐтся воспользоваться Javaкодом, в котором потребуются дополнительные поля сообщений. Для этого мы должны создать нестандартный класс заявки с дополнительными полями для записи и хранения параметров, о которых мы упоминали ранее (см. п. 4.1.4).
147
Рис. 4.8. Реализация блока Абонент1 средствами AnyLogic
Создайте класс заявки Message.
1.Выделите объект source.
2.В панели Проект щелкните правой кнопкой мыши элемент модели верхнего уровня дерева и выберите Создать/Java класс.
3.Появится диалоговое окно Новый Java класс. В поле
Имя: введите имя нового класса: Message.
4. В поле Базовый класс: выберите из выпадающего списка Entity в качестве базового класса (в ранних версиях . anylogic.libraries.enterprise.Entity). Щелкните кнопку
Далее.
5. Появится вторая страница Мастера создания Java класса. Добавьте поля Java класса, показанные на рис. 4.9.
148
Рис. 4.9. Дополнительные поля класса заявок Message
6.Оставьте выбранными флажки Создать конструктор и Создать метод toString ().
7.Щелкните Готово. Закройте редактор кода.
Продолжим построение блока Абонент1.
1. Выделите объект source. На странице Основные панели Свойства установите следующие свойства:
Класс заявки: Message
Заявки прибывают согласно Времени между прибытиями
Время между прибытиями exponential(1/timeAbonent)
Количество заявок, прибывающих за один раз 1 Новая заявка new Message()
Действие при выходе
double a=0;
double b=kolAbonent;
// Розыгрыш номера получателя сообщения a=uniform();
for (int i=1; i<(kolAbonent+1); i++) {if (a<=((1/kolAbonent)*b))
149
entity.numAbPol=i; b=b-1;}
entity.timeOtpr=time();
entity.numAbOtpr=numAbonent;
Объект source будет генерировать сообщения с интервалами времени, распределѐнными по экспоненциальному закону. Принято, что сообщения от данного абонента-отправителя с равной вероятностью могут быть отправлены любому абоненту сети. Поэтому разыгрывается номер абонента-получателя сообщения, и заносится в numAbPol. В поле timeOtpr заносится время отправления сообщения.
Замечание. Основная библиотека (Enterprise Library) содержит объекты TimeMeasureStart и TimeMeasureEnd, позволяющие измерять время прохождения заявки между двумя заданными точками диаграммы процесса. TimeMeasureStart запоминает момент времени, в который заявка проходит через этот объект. TimeMeasureEnd вычисляет для поступившей в него заявки разность между текущим временем и запомненным объектом TimeMeasureStart, на который ссылается этот объект. Эта разность добавляется в элементы сбора статистики, встроенные в объект TimeMeasureEnd.
2. Перетащите объект selectOutput5 (имя selectOutput). Со-
едините его вход с выходом объекта source. Данный объект предназначен для розыгрыша категорий отправляемых сообщений. На странице Основные панели Свойства установите свойства согласно табл. 4.4. Эти свойства являются кодом. Код предназначен для счѐта отправленных сообщений за сеть связи в целом и по категориям сообщений, определения количества отправленных сообщений за один прогон, розыгрыша длин сообщений по категориям, вывода расчѐтов по каждому абоненту, а также за сеть связи
вцелом.
3.Перетащите два объекта selectOutput5 (имена selectOutput1 и selectOutput2). Объекты предназначены для разделения и счѐта отправляемых сообщений по абонентам. Кроме того, объект selectOutput1 выделяет и направляет объекту sink на уничтожение сообщения, адресованные абоненту-отправителю, то есть самому себе.
4.Перетащите объект sink. Его вход соедините с выходом 3
объекта selectOutput1.
150