Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Литература / Compyuternoe_modelirovanie_v_AnyLogic_7_Boev_VD.pdf
Скачиваний:
230
Добавлен:
12.02.2018
Размер:
8.72 Mб
Скачать

Абсолютная величина ожидаемой прибыли составит:

PribCC1=DoxDegCC1-(ZatrRemCC1+ZatrRemCC1+UbitokCC1).

Относительный коэффициент прибыли равен:

KoefPribCC1=PribCC1/DoxMaxCC1.

Показатели в целом за систему связи:

SumPribil=SumDoxDeg- (SumZatrRes+SumZatrRem+SumUbitok), KoefPrib=SumPrib/SumDoxMax,

где SumDoxMax, SumDoxDeg, SumZatrRes, SumZatrRem, SumUbitok — соответствующие доходы и затраты за систему.

5.1.4. Сегмент Постановка на дежурство

Сегмент предназначен для имитации поступления основных и резервных СС всех типов и постановки их на дежурство.

1.Выполните команду Файл/Создать/Модель на панели инструментов. Появится диалоговое окно Новая модель.

2.Дайте имя новой модели. В поле Имя модели введите Си-

стема_связи. Выберите каталог для сохранения файлов модели. 3. Щёлкните кнопку Готово.

5.1.4.1. Ввод исходных данных

Исходные данные разделим и разместим там, где они, по нашему мнению, нужны и их удобно использовать.

Организуйте ввод исходных данных для сегмента Постановка на дежурство.

1.В Палитре выделите Презентация. Перетащите элемент

Область просмотра. Перейдите на панель Свойства.

2.В поле Имя: введите Исходные_данные_ПД.

3.Задайте расположение области просмотра относительно ее якоря Выравнивать по: Верхн. левому углу.

4.Выберите режим масштабирования из выпадающего спис-

ка Масштабирование: Подогнать под окно.

5.Перейдите на страницу Местоположение и размер. Вве-

дите в поля X: 0, Y: 500, Ширина: 450, Высота: 340.

6. Перейдите на страницу Местоположение и размер. Вве-

дите в поля X: 0, Y: 500, Ширина: 450, Высота: 340.

184

Рис. 5.3. Размещение элементов Параметр и Переменная

7.Перетащите элемент Прямоугольник на элемент Область просмотра.

8.Перейдите на страницу Местоположение и размер. Вве-

дите в поля X: 20, Y: 520, Ширина: 390, Высота: 300.

9.Перетащите элемент text и на странице Текст в поле text введите Исходные_данные_ПД (здесь ПД — постановка на дежурство).

10.В Палитре выделите Основная. Перетащите элементы

Параметр и Переменная на элемент с именем Исход-

ные_данные_ПД и разместите их так, как показано на рис. 5.3. 11. Значения свойств установите согласно табл. 5.1.

Простые переменные с именами KolCC1…KolCC5 — количество СС по типам, а KolCC — количество СС всех типов. Эти переменные мы будем вычислять по исходным значениям КСС1 … КСС5 и КССР1 … КССР5 и использовать при генерации равного значению КolСС заявок, имитирующих СС. Количество СС изменять можно только перед началом моделирования, так как заявки, имитирующие СС, генерируются только один раз.

185

 

 

 

Таблица 5.1

Свойства элементов на Исходные_данные_ПД

Имя

Тип

Значение по

Отображать

умолчанию

имя

 

 

KolCC1

int

0

Установить

KolCC2

int

0

флажок во всех

KolCC3

int

0

элементах

KolCC4

int

0

 

KolCC5

int

0

 

KolCC

int

0

 

NumCC

int

0

 

doxdegCC1

double

20

 

doxdegCC2

double

24.2

 

doxdegCC3

double

32.8

 

doxdegCC4

double

23

 

doxdegCC5

double

25.5

 

zatrResCC1

double

21

 

zatrResCC2

double

24.2

 

zatrResCC3

double

28

 

zatrResCC4

double

26

 

zatrResCC5

double

25.5

 

ubitokCC1

double

32

 

ubitokCC2

double

34.2

 

ubitokCC3

double

37

 

ubitokCC4

double

31

 

ubitokCC5

double

32.5

 

5.1.4.2. Имитация поступления средств связи

Создайте область просмотра на диаграмме класса Main для размещения объектов сегмента Постановка на дежурство.

1.Из палитры Презентация перетащите элемент Область просмотра.

2.На панели Свойства в поле Имя: введите постановка.

3.Задайте Выравнивать по: Верхн. левому углу.

4.Выберите режим масштабирования из выпадающего спис-

ка Масштабирование: Подогнать под окно.

5.Перейдите на страницу Местоположение и размер. Вве-

дите в поля X: 0, Y: 0, Ширина: 700, Высота: 350.

6.Перетащите элемент Скруглённый прямоугольник.

Оставьте имя, предложенное системой. В нём мы разместим объ-

екты сегмента Постановка на дежурство.

186

7.Перейдите на страницу Местоположение и размер. Вве-

дите в поля X: 38, Y: 62, Ширина: 642, Высота: 268.

8.На Область просмотра мы уже перетащили Скруглен-

ный прямоугольник. На нём мы будем размещать, как отмечалось ранее, объекты сегмента Постановка на дежурство.

9.Перетащите на него элемент text и на панели Свойства в

поле Текст: введите Постановка на дежурство. Поместите этот текст посредине в верхней части элемента Скругленный прямоугольник.

10.Перетащите элемент Прямоугольник на Область просмотра. На странице Местоположение и размер введите в поля

X:50, Y: 100, Ширина: 170, Высота: 140.

11.Перетащите элемент text на Прямоугольник и на панели

Свойства в поле Текст: введите Имитация поступления СС.

12.Перетащите объект source на Прямоугольник. Для записи

ихранения параметров СС в поля заявок необходимо создать не-

стандартный тип агента. Создайте тип агента ComFacility.

13.В панели Проекты Щёлкните правой кнопкой мыши элемент модели верхнего уровня дерева и выберите Создать/Java

класс.

14.Появится диалоговое окно Новый Java класс. В поле

Имя: введите имя нового класса ComFacility.

15.В поле Базовый класс: выберите из выпадающего списка Entity в качестве базового класса. Щёлкните Далее.

16.Появится вторая страница Мастера создания Java класса. Добавьте следующие поля Java класса:

tipCC

int;

timeMeanRem

double;

nach

double;

nach1

double;

timeOtkaz

double;

17.Оставьте выбранными флажки Создать конструктор и Создать метод toString ().

18.Щёлкните кнопку Готово. Закройте редактор кода.

19.Щёлкните правой кнопкой мыши в панели Проект только что созданный Java класс и в контекстном меню выберите Преоб-

разовать Java класс в тип агента.

20.Появится окно c автоматически созданными параметрами

нестандартного типа заявок ComFacility. Закройте его.

187

21.Выделите объект source.

22.На панели Свойства уберите флажок Отображать имя.

23.В полях Тип заявки: и Новая заявка: Agent замените

ComFacility. Установите:

Прибывают согласно Интенсивности. Интенсивность прибытия 1 Ограниченное количество прибытий установите флажок Максимальное количество прибытий 1

На странице Действия в поле При выходе: введите Java код:

KolCC1=degurstvo.KCC1+degurstvo.KCCP1;

degurstvo.DoxMaxCC1= round((degurstvo.KCC1*doxDegCC1)*ВремяРабСист*100); degurstvo.DoxMaxCC1=degurstvo.DoxMaxCC1/100; degurstvo.ZatrResCC1= round((degurstvo.KCCP1*zatrResCC1)*ВремяРабСист*100); degurstvo.ZatrResCC1=degurstvo.ZatrResCC1/100; KolCC2=degurstvo.KCC2+degurstvo.KCCP2; degurstvo.DoxMaxCC2= round((degurstvo.KCC2*doxDegCC2)*ВремяРабСист*100); degurstvo.DoxMaxCC2=degurstvo.DoxMaxCC2/100; degurstvo.ZatrResCC2= round((degurstvo.KCCP2*zatrResCC2)*ВремяРабСист*100); degurstvo.ZatrResCC2=degurstvo.ZatrResCC2/100; KolCC3=degurstvo.KCC3+degurstvo.KCCP3; degurstvo.DoxMaxCC3= round((degurstvo.KCC3*doxDegCC3)*ВремяРабСист*100); degurstvo.DoxMaxCC3=degurstvo.DoxMaxCC3/100; degurstvo.ZatrResCC3= round((degurstvo.KCCP3*zatrResCC3)*ВремяРабСист*100); degurstvo.ZatrResCC3=degurstvo.ZatrResCC3/100; KolCC4=degurstvo.KCC4+degurstvo.KCCP4; degurstvo.DoxMaxCC4= round((degurstvo.KCC4*doxDegCC4)*ВремяРабСист*100); degurstvo.DoxMaxCC4=degurstvo.DoxMaxCC4/100; degurstvo.ZatrResCC4= round((degurstvo.KCCP4*zatrResCC4)*ВремяРабСист*100); degurstvo.ZatrResCC4=degurstvo.ZatrResCC4/100; KolCC5=degurstvo.KCC5+degurstvo.KCCP5; degurstvo.DoxMaxCC5= round((degurstvo.KCC5*doxDegCC5)*ВремяРабСист*100); degurstvo.DoxMaxCC5=degurstvo.DoxMaxCC5/100; KolCC=KolCC1+KolCC2+KolCC3+KolCC4+KolCC5;

188

degurstvo.ZatrResCC5= round((degurstvo.KCCP5*zatrResCC5)*ВремяРабСист*100); degurstvo.ZatrResCC5=degurstvo.ZatrResCC5/100; degurstvo.SumDoxMax=degurstvo.DoxMaxCC1+ degurstvo.DoxMaxCC2+degurstvo.DoxMaxCC3+ degurstvo.DoxMaxCC4+degurstvo.DoxMaxCC5; degurstvo.SumZatrRes=degurstvo.ZatrResCC1+ degurstvo.ZatrResCC2+degurstvo.ZatrResCC3+ degurstvo.ZatrResCC4+degurstvo.ZatrResCC5;

Введённым кодом определяется количество СС всех типов, включая и резервные средства связи. Эти данные необходимы в последующем в объекте split. Количества СС как исходные данные будут размещены на агенте Degyrstvo, который мы создадим позже, поэтому в коде используется доступ к ним в виде, напри-

мер, degyrstvo.KCC1.

Кодом рассчитываются также максимальный доход от каждого типа СС и суммарный максимальный доход, а также затраты на содержание резервных СС по типам и суммарные затраты на содержание резервных СС всех типов.

Такой подход к расчётам максимального дохода и затрат на содержание резервных СС принят для экономии машинного времени, поскольку эти показатели зависят только от продолжительности времени моделирования (ВремяРабСист), дохода от дежурства одного СС и затрат на содержание одного резервного СС. То есть данные для их расчёта не носят стохастический характер. Поэтому указанные показатели целесообразно рассчитать здесь, а затем использовать в конце моделирования при обработке накопленных статистических данных.

Для вывода результатов моделирования с двумя знаками после запятой использовался метод round(). Предварительно результат умножался на 100, а потом делился на эту же величину. Например:

degyrstvo.DoxMaxCC1= round((degyrstvo.KCC1*doxDegCC1)*ВремяРабСист*100); degyrstvo.DoxMaxCC1=degyrstvo.DoxMaxCC1/100;

24.Добавьте объекты split и sink (рис. 5.4).

25.Выделите объект split. Установите свойства как на рис. 5.5.

Так как копии не унаследуют свойств от оригинала, поэтому на странице Действия в поле При выходе копии: введите Java код:

189

Рис. 5.4. Добавлены объекты split и sink

NumCC++;

if (NumCC <= KolCC) entity.tipCC = 5;

if (NumCC <= (KolCC1+KolCC2+KolCC3+KolCC4)) entity.tipCC = 4;

if (NumCC <= (KolCC1+KolCC2+KolCC3))

entity.tipCC = 3;

if (NumCC <= (KolCC1+KolCC2))

entity.tipCC = 2; if (NumCC <= KolCC1)

entity.tipCC = 1;

Переменная NumCC предназначена для последовательного счёта СС всех типов. Она используется для определения принадлежности СС к соответствующему типу и занесения кода этого типа СС в поле entity.tipCC, например, entity.tipCC = 5,

который необходим для нормального функционирования модели, то есть отличия СС по типам.

1. Объект sink уничтожает заявку-оригинал.

190