Моделирование производственных процессов в AnyLogic 1 : лабораторный практикум


Этап 4. Организация связи агентов Storage и Truck



Pdf көрінісі
бет31/41
Дата23.03.2022
өлшемі11,14 Mb.
#28581
түріПрактикум
1   ...   27   28   29   30   31   32   33   34   ...   41
Этап 4. Организация связи агентов Storage и Truck
Для того чтобы детали, производимые в агенте Storage, попали в гру-
зовик, нужно связать агента Storage с агентом Truck. Для этого в аген-
те Truck нужно поместить элемент enter и связать его с элементом exit 
агента Storage.
Перейдите в агент Truck, перетащите элемент enter на рабочее поле 
агента и задайте ему имя enter_detal1. В свойствах элемента enter_detal1 
в разделе Специфические задайте тип агента Detal.


108
Лабораторная работа № 6
Повторите операцию и создайте вход enter_detal2 с типом агента 
Detal2
.
Перетащите значок Грузовик из библиотеки Картинки на рабочее 
поле агента Truck. Для связи с агентами нужен элемент Порт из агент-
ной библиотеки. Перетащите элемент Порт из агентной библиотеки 
и дайте ему имя port_Detal1_truck. Повторите операцию и создайте порт 
port_Detal2_truck
 (рис. 6.7).
Рис. 6.7. Добавление портов для деталей второго типа
Перейдите в агент Storage и поместите в нем значок Склад из би-
блиотеки Картинки, а также 2 элемента Порт из агентной библиотеки. 
Назовите их элементы — port_Detal1 и port_Detal2. Соедините их с эле-
ментами Detal1 и Detal2 (рис. 6.8).
Рис. 6.8. Соединение портов в агенте Storage


109
Создание смешанной агентно-дискретно-событийной модели 
Перейдите  в  агент  main.  Соедините  порты  так,  как  показано 
на рис. 6.9.
Рис. 6.9. Соединение портов в агенте main
Если мешают двойные надписи, то выделите порт и зайдите в свой-
ства. В них уберите галочку с пункта Отображать имя (рис. 6.10).
Рис. 6.10. Убрать двойные подписи
Далее, в выходных портах агента Storage нужно прописать, к како-
му входу должны уйти агенты.
Перейдите в агент Storage.
Агенты (детали) должны попасть в грузовик, который находится 
на складе, т. е. имеет состояние atStorage. Поэтому нужно сначала най-


110
Лабораторная работа № 6
ти грузовик в состоянии atStorage, а затем отправить агентов-детали 
в него. Для поиска грузовика, находящегося на складе, нужно напи-
сать функцию.
Перетащите элемент Функция из агентной библиотеки на рабочее 
поле агента Storage и задайте его свойства так, как показано на рис. 6.11.
Рис. 6.11. Функция Find_Truck_at_Storage
Функция имеет имя Find_Truck_at_Storage и возвращает грузовик. 
В теле функции в первой строке объявляется переменная типа грузо-
вик (Truck), в которую будет записан найденный грузовик. Пока гру-
зовик не найден, в эту переменную записано значение null. В следую-
щей строке начинается цикл, который проходит по всем грузовикам 
коллекции trucks, находящейся в главном агенте (агент main). Поэто-
му счетчик цикла меняется от 0 до размеров коллекции trucks. Размер 
коллекции дает функция size(), которая является стандартной (уже 
написана разработчиками AnyLogic) для коллекций. Поскольку кол-


111
Создание смешанной агентно-дискретно-событийной модели 
лекция trucks находится в главном агенте, то сначала идет обращение 
к агенту main, потом через точку обращаемся к коллекции, а потом че-
рез точку обращаемся к функции коллекции. В первой строке цикла 
в переменную t записываем очередной грузовик из коллекции. Грузо-
вик получаем с помощью стандартной функции get(), которая возвра-
щает элемент коллекции с указанным в скобках индексом. Далее про-
веряем, находится ли грузовик в состоянии atStorage: если да, то это 
нужный нам грузовик и мы его записываем в переменную t; если нет, 
то в переменную t записываем null. В конце функции возвращаем най-
денный грузовик.
Теперь, имея функцию, можно отправить детали в нужный грузовик.
Выделите выход exit_Detal1 и задайте в его свойствах действие, ко-
торое отправит детали первого типа во вход для них в агенте Truck, как 
это показано на рис. 6.12.
Рис. 6.12. Свойства выхода exit_Detal1
В действиях на выходе сначала проверяется, нашелся ли грузовик 
(если функция Find_Truck_at_Storage() что-то вернула), затем во вход 
найденного грузовика отправляется деталь с помощью стандартной 
функции take().
Теперь повторите операцию для выхода exit_Detal2 и добавьте в его 
свойства действие, показанное на рис. 6.13.


112
Лабораторная работа № 6
Рис. 6.13. Добавление действия к элементу exit2


Достарыңызбен бөлісу:
1   ...   27   28   29   30   31   32   33   34   ...   41




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет