Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

мод сис / V.Boev-GPSSvsAnyLogic

.pdf
Скачиваний:
88
Добавлен:
11.04.2015
Размер:
9.01 Mб
Скачать

4.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