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

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

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

2.В открывшемся окне Размерность в поле Имя введите

КолВарЗаг.

3.Установите Тип размерности: Диапазон.

4.В открывшееся поле Диапазон: введите 1-10.

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

Теперь создайте непосредственно массивы. Начните с массива верВарЗаг для вероятностей появления видов заготовок.

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

2.На странице Основные панели Свойства в поле Имя:

введите верВарЗаг.

3.Установите флажок Массив. Рядом появится значок {…}. Щѐлкните по нему.

4.Откроется страница свойств Массив. В окошке Возмож-

ные размерности: выделите КолВарЗаг.

5.Щелкните по кнопке . Размерность КолВарЗаг поя-

вится в окошке Выбранные размерности.

6.Вернитесь на страницу Основные панели Свойства.

7.В поле Значение по умолчанию: введите:

{0.05,0.18,0.34,0.56,0.85,1.0,0,0,0,0}

Обратите внимание, что данные из первой строки табл. 2.1 введены в порядке возрастания, причѐм, второй элемент = первый элемент табл. 2.1 + второй табл. 2.1, третий = второй + третий табл. 2.1 и т.д. Эта особенность будет учтена в последующем программном коде. Хотя можно было бы ввести и так, как в табл. 2.1.

8.Аналогичным образом создайте второй массив с именем срВрПодгЗаг для среднего времени подготовки заготовки.

9.В поле Значение по умолчанию: введите:

{10,14,21,22,28,25,0,0,0,0}

2.2.2.Построение событийной части модели

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

Начнѐм с сегмента имитации процесса подготовки заготовки.

91

2.2.2.1. Подготовка заготовки

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

1. В Палитре выделите Презентация. Перетащите элемент Прямоугольник и разместите, где считаете нужным. На странице

Дополнительные панели Свойства введите в поле Ширина:

240, в поле Высота: 150.

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

Свойства в поле Текст: введите Подготовка заготовки

(рис. 2.5).

3.В Палитре выделите Enterprise Library. Перетащите объект source на диаграмму класса Main и разместите в прямоугольнике с

именем Подготовка заготовки.

4. Для записи и хранения параметров детали в дополнительные поля заявок нужно создать нестандартный класс заявки. Создайте класс заявки Detail.

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

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

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

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

Рис. 2.5. Сегмент Подготовка заготовки

92

8. Появится вторая страница Мастера создания Java класса. Добавьте следующие поля Java класса, которые потребуются в дальнейшем при разработке модели:

double n; double a; double Tn1;

Поле n будет использоваться для занесения номера выполняемой с деталью операции. Эти номера необходимы для определения операций, на которые нужно повторно отправить детали с пункта окончательного контроля. Поле a предназначено для занесения кода первого или повторного выполнения операций.

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

10.Щелкните кнопку Готово. Появится редактор кода и автоматически созданный код вашего Java класса. Закройте код.

11.Из Палитры Основная перетащите на сегмент Исходные данные элемент Простая переменная. На странице Основные

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

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

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

entity.n=uniform_pos();

if (entity.n <= верВарЗаг.get(1)) entity.Tn1=срВрПодгЗаг.get(1);

else if (entity.n > верВарЗаг.get(1) && entity.n

<= верВарЗаг.get(2)) entity.Tn1=срВрПодгЗаг.get(2); else if (entity.n > верВарЗаг.get(2) && entity.n

<= верВарЗаг.get(3)) entity.Tn1=срВрПодгЗаг.get(3); else if (entity.n > верВарЗаг.get(3) && entity.n

<= верВарЗаг.get(4)) entity.Tn1=срВрПодгЗаг.get(4); else if (entity.n > верВарЗаг.get(4) && entity.n

<= верВарЗаг.get(5)) entity.Tn1=срВрПодгЗаг.get(5); else if (entity.n > верВарЗаг.get(5) && entity.n <=верВарЗаг.get(6)) entity.Tn1=срВрПодгЗаг.get(6);

13. Из библиотеки Enterprise Library перетащите объекты queue и delay на диаграмму класса Main, разместите в прямоугольнике с именем Подготовка заготовки и соедините как на рис. 2.5.

93

14. Выделите объект queue и на странице Основные панели Свойства установите свойства:

Имя: очЗаг

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

15.Максимальная вместимость установить флажок.

16.Выделите объект delay и на странице Основные панели Свойства установите свойства:

Имя: подЗаг

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

Задержка задаѐтся Явно

Время задержки exponential (1/entity.Tn1)

Вместимость 1

Действие при выходе entity.a = 1;

2.2.2.2. Сегменты Операция 1, Операция 2, Операция 3

Каждый из сегментов операций 1, 2 и 3 предназначен для имитации выполнения соответствующей операции, включающей ожидание в очереди, непосредственно выполнение операции, контроль еѐ качества, отправку на пункт окончательного контроля в случае брака, приѐм на повторное выполнение операции и контроль.

1. В Палитре выделите Презентация. Перетащите три элемента Прямоугольник и разместите так, как на рис. 2.7. На странице Дополнительные панели Свойства для каждого прямоугольника введите в поле Ширина: 240, в поле Высота: 180.

2. Перетащите три элемента text и на странице Основные панели Свойства в поле Текст: каждого из них введите Опера-

ция 1, Операция 2, Операция 3 соответственно (рис. 2.7).

3.В Палитре выделите Enterprise Library. Перетащите для каждого сегмента два объекта queue, два объекта delay и один объект selectOutput на диаграмму класса Main, разместите в прямоугольниках и соедините так, как показано на рис. 2.7.

4.Выделите поочередно объекты, начиная с объекта queue сегмента 1, и на странице Основные панели Свойства установите свойства согласно рис. 2.7 и табл. 2.4.

На сегменте Операция 1 поясним принятые имена объектов:

очОп1 — очередь на операцию 1; выпОп1 — имитация выполнения операции 1; очКонОп1 — очередь на контроль после операции 1; конОп11 — имитация контроля после операции 1; конОп12 — розыгрыш результата контроля.

95

96

 

 

Таблица 2.4

 

 

 

 

Объект

Свойства

Значения

 

 

 

 

 

Сегмент Операция 1

 

 

 

 

queue

имя

очОп1

 

Класс заявки

Detail

 

Максимальная вмести-

Установите флажок

 

мость

 

 

delay

имя

выпОп1

 

Класс заявки

Detail

 

Задержка задаѐтся

Явно

 

Время задержки

exponential (1/T1)

 

Вместимость

1

 

queue1

имя

очКонОп1

 

Класс заявки

Detail

 

Максимальная вмести-

Установите флажок

 

мость

 

 

delay1

имя

конОп11

 

Класс заявки

Detail

 

Задержка задаѐтся

Явно

 

Время задержки

exponential (1/Tk1)

 

Вместимость

1

 

 

Действие при выходе

entity.n = 1;

selectOutput

имя

конОп12

 

Класс заявки

Detail

 

Выход true выбирается

С заданной вероятностью

 

Вероятность [0..1]

1-q1

 

Сегмент Операция 2

 

queue

имя

очОп2

 

Класс заявки

Detail

 

Максимальная вмести-

Установите флажок

 

мость

 

 

delay

имя

выпОп2

 

Класс заявки

Detail

 

Задержка задаѐтся

Явно

 

Время задержки

exponential (1/T2)

 

Вместимость

1

 

queue1

имя

очКонОп2

 

Класс заявки

Detail

 

Максимальная вмести-

Установите флажок

 

мость

 

 

97

 

 

Окончание табл. 2.4

 

 

 

 

Объект

Свойства

Значения

 

 

 

 

delay1

имя

конОп21

 

Класс заявки

Detail

 

Задержка задаѐтся

Явно

 

Время задержки

exponential (1/Tk2)

 

Вместимость

1

 

 

Действие при выходе

entity.n = 2

selectOutput

имя

конОп22

 

Класс заявки

Detail

 

Выход true выбирается

С заданной вероятностью

 

Вероятность [0..1]

1-q2

 

Сегмент Операция 3

 

 

 

 

queue

имя

очОп3

 

Класс заявки

Detail

 

Максимальная вмести-

Установите флажок

 

мость

 

 

delay

имя

выпОп3

 

Класс заявки

Detail

 

Задержка задаѐтся

Явно

 

Время задержки

exponential (1/T3)

 

Вместимость

1

 

queue1

имя

очКонОп3

 

Класс заявки

Detail

 

Максимальная вмести-

Установите флажок

 

мость

 

 

delay1

имя

конОп31

 

Класс заявки

Detail

 

Задержка задаѐтся

Явно

 

Время задержки

exponential (1/Tk3)

 

Вместимость

1

 

 

Действие при выходе

entity.n = 3

selectOutput

имя

конОп32

 

Класс заявки

Detail

 

Выход true выбирается

С заданной вероятностью

 

Вероятность [0..1]

1-q3

 

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

На рис. 2.7 показаны четыре функциональных сегмента модели, которые построены с использованием 18 объектов AnyLogic. Если вы начнѐте создавать очередной сегмент, то после перетаскивания

98

второго объекта появится сообщение: Ограничение ознакомитель-

ной версии: нельзя создавать более 20 вложенных объектов. По-

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

1.На панели Проект щелкните Main правой кнопкой мыши и выберите из контекстного меню Создать/Класс активного объ-

екта.

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

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

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

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

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

Согласно логике процесса изготовления деталей надо после выполнения каждой из трѐх операций в случае брака отправить забракованные детали на пункт окончательного контроля. С последнего получить и отправить детали на повторное выполнение тех операций, после которых они были забракованы. Кроме того, готовые детали необходимо передать на склад готовых деталей. Таким образом, для связи с активным объектом Main потребуются семь портов (3+3+1).

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

1.Из Палитры Основная перетащите элемент Порт и разместите сверху в левом ряду (рис. 2.8).

2.На странице Основные панели Свойства имя port замените именем

наОп1.

3.

Скопируйте элемент Порт

с

именем наОп1.

 

4.

Вставьте два элемента Порт

(см. рис. 2.8). При вставке последова-

тельно будут изменяться их имена:

наОп2, наОп3.

 

5.

Из Палитры Основная пере-

тащите элемент Порт и разместите

сверху в правом ряду (см. рис. 2.8).

Рис. 2.8. Порты

99

6.На странице Основные панели Свойства имя port замените именем брОп1 (идентификатор означает, что через этот порт отправляются бракованные детали после операции 1 на пункт окончательного контроля).

7.Скопируйте элемент Порт с именем брОп1.

8.Вставьте два элемента Порт (см. рис. 2.8). При вставке по-

следовательно будут изменяться их имена: брОп2, брОп3.

9.Из Палитры Основная перетащите элемент Порт и разместите внизу в правом ряду (см. рис. 2.8).

10.На странице Основные панели Свойства имя port замени-

те именем готДет.

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

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

13.На панели Проект выделите Kontrol, перетащите на диаграмму класса Main объект класса Kontrol, разместите как на рис. 2.9.

14.Объект активного класса Kontrol создан. На странице Ос-

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

поле Имя: введите на_контроль.

15. В Палитре выделите Презентация. Перетащите элемент Прямоугольник и разместите так, как на рис. 2.9. На странице

Дополнительные панели Свойства введите в поле Ширина:

140, в поле Высота: 220.

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

Свойства в поле Текст введите На окончательный контроль.

Теперь для движения заявок-деталей в модели необходимо надлежащим образом соединить входы и выходы объектов сегментов

Операция 1, Операция 2 и Операция 3 с портами.

1. Соедините выходы F (false) объектов конОп12, конОп22, конОп32 с портами брОп1, брОп2, брОп3 соответственно.

2.Соедините порты наОп1, наОп2, наОп3 с входами объектов очОп1, очОп2, очОп3 соответственно.

3.Соедините выход Т (true) объекта конОп32 сегмента Операция 3 с портом готДет.

На рис. 2.9 вы видите ещѐ объекты. Перейдѐм к размещению их на диаграмме класса Main.

100