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

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

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

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

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

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

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

2.Перетащите на него элемент text и на странице Основные

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

мента Скругленный прямоугольник.

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

смотра. Перейдите на страницу Дополнительные панели Свой-

ства. Введите в поля X: 50, Y: 100, Ширина: 160, Высота: 140. 4. Перетащите элемент text на Прямоугольник и на страни-

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

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

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

ComFacility.

211

 

 

 

Таблица 5.1

Свойства элементов на Initial_data_PD

 

 

 

 

Имя

Тип

Значение по

Отображать

умолчанию

имя

 

 

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

 

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

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

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

8.В поле Базовый класс: выберите из выпадающего списка

.anylogic.libraries.enterprise.Entity в качестве ба-

зового класса. Щелкните кнопку Далее.

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

int tipCC;

double timeMeanRem; double nach; double nach1;

double timeMeanOtkaz;

212

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

11.Щелкните кнопку Готово. Вы увидите редактор кода и

вавтоматически созданный код вашего Java класса. Закройте код.

12.Выделите объект source. На странице Основные панели

Свойства уберите флажок Отображать имя. В полях Класс за-

явки: и Новая заявка Entity замените ComFacility.

Установите:

Заявки прибывают согласно Интенсивности. Интенсивность прибытия 1 Количество заявок, прибывающих за один раз 1

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

В поле Действие при выходе введите Java код:

KolCC1=degyrstvo.KCC1+degyrstvo.KCCP1;

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

213

KolCC5=degyrstvo.KCC5+degyrstvo.KCCP5;

degyrstvo.DoxMaxCC5= round((degyrstvo.KCC5*doxDegCC5)*ВремяРабСист*100); degyrstvo.DoxMaxCC5=degyrstvo.DoxMaxCC5/100; KolCC=KolCC1+KolCC2+KolCC3+KolCC4+KolCC5; degyrstvo.ZatrResCC5= round((degyrstvo.KCCP5*zatrResCC5)*ВремяРабСист*100); degyrstvo.ZatrResCC5=degyrstvo.ZatrResCC5/100; degyrstvo.SumDoxMax=degyrstvo.DoxMaxCC1+ degyrstvo.DoxMaxCC2+degyrstvo.DoxMaxCC3+ degyrstvo.DoxMaxCC4+degyrstvo.DoxMaxCC5; degyrstvo.SumZatrRes=degyrstvo.ZatrResCC1+ degyrstvo.ZatrResCC2+degyrstvo.ZatrResCC3+ degyrstvo.ZatrResCC4+degyrstvo.ZatrResCC5;

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

например, degyrstvo.KCC1.

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

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

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

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

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

214

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

14. Выделите объект split. Установите свойства как на рис. 5.5. Так как копии не унаследуют свойств от оригинала, поэтому в по-

ле Действие при выходе копии введите Java код:

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;

В поле entity.tipCC запоминается соответствующий код типа СС, например, entity.tipCC = 5, который необходим для нормального функционирования модели, то есть отличия СС по типам.

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

215

216

5.1.4.3. Распределитель средств связи

Блок Распределитель средств связи предназначен для распре-

деления СС согласно их типам, т. е. общее количество поступивших СС он должен разделить по типам.

Данный блок реализуется четырьмя объектами selectOutput и одним объектом queue (рис. 5.6). Возможна реализация этого блока и одним объектом selectOutput5 совместно также с объектом queue.

Объект queue предназначен для приема, хранения и отправки на дежурство исправных СС, поступающих из ремонта.

1.Перетащите четыре объекта selectOutput и один объект queue из библиотеки Enterprise Library на диаграмму класса Main. Соедините их так, как показано на рис. 5.6.

2.Установите на странице Основные панели Свойства свойства объектов selectOutput согласно табл. 5.2 (при использовании объекта selectOutput5 условия разделения СС по типам останутся такими же).

Рис. 5.6. Добавлены объекты SelectOutput и queue

217

 

 

 

 

Таблица 5.2

 

 

 

 

 

Имя

Отобра-

Класс заявки:

Выход true

Условие

жать имя

выбирается

 

 

 

СС1

Установите

ComFacility

При выпол-

entity.tipCC==1

СС2

флажки

ComFacility

нении

entity.tipCC==2

СС3

 

ComFacility

условия

entity.tipCC==3

СС4

 

ComFacility

 

entity.tipCC==4

 

 

 

 

 

3.СС пятого типа будут направлены на выход false элемента СС4, поэтому пятый объект selectOutput не нужен.

4.Оставьте имя объекта queue и не устанавливайте флажок

Отображать имя.

5.Установите Вместимость 100 и флажок Включить сбор статистики.

6.Перетащите из палитры Презентация три элемента text и

всоответствующих полях Текст: введите текст, как на рис. 5.6.

5.1.4.4. Создание нового класса активного объекта

На рис. 5.7 показан в окончательном виде сегмент Постановка на дежурство после добавления блока На дежурство. Для добавления этого блока, который должен выполнить «связь» между сег-

ментом Постановка на дежурство и сегментом Имитация де-

журства, создадим новый класс активного объекта.

1.На панели Проект щелкните правой кнопкой мыши Main,

скоторым вы работаете в данный момент, и выберите Соз-

дать/Класс активного объекта из контекстного меню.

2.Откроется окно Новый класс активного объекта.

3.Задайте в поле Имя: имя нового класса Degurstvo.

4.Если нужно, в поле Описание: введите описание сущности, моделируемой этим классом.

5.Щелкните кнопку Готово.

Создайте область просмотра на диаграмме класса Degurstvo для размещения элементов сегмента Имитация дежурства и текущих результатов моделирования.

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

Область просмотра.

7.Перейдите на страницу Основные панели Свойства.

8.В поле Имя: введите Degyr.

9.Перейдите на страницу Дополнительные панели Свойст-

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

218

219

10. Задайте, как будет располагаться область просмотра относительно ее якоря, с помощью элемента управления Выравнивать по: Верхн. левому углу.

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

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

5.1.4.5. Создание элемента нового класса активного объекта

Созданный новый класс активного объекта Degyrstvo является вложенным объектом. Как вы помните, нам нужно сделать так, чтобы СС передавались на дежурство в сегмент Имитация де-

журства из сегмента Постановка на дежурство, а отремонтиро-

ванные СС после ремонта из сегмента Имитация дежурства воз-

вращались в сегмент Постановка на дежурство.

1.Перетащите элемент Прямоугольник. Установите только флажки На верхнем уровне и На презентации.

2.Перейдите на страницу Дополнительные панели Свойст-

ва. Введите в поля X: 110, Y: 150, Ширина: 100, Высота: 140.

3.Перетащите шесть элементов Порт из палитры Основная и разместите так, как показано на рис. 5.8. Автоматически они будут объединены прямоугольником (с пунктирными линиями) и появится надпись Значок.

4.Возвратитесь на диаграмму класса Main.

Рис. 5.8. Добавлены на Degyrstvo шесть портов

220