Этап 7. Моделирование поиска свободного грузовика в цехе
Нам нужно найти в цехе свободный грузовик. Для этого перейди-
те в агент Plant.
Грузовик является свободным, если находится в цехе. В модели это
состояние грузовика обозначено как atPlant. Для того чтобы найти сво-
бодный грузовик, нужно перебрать все грузовики коллекции trucks
агента Main и найти такие, которые находятся в состоянии atPlant. Пер-
вый найденный и будет нужным нам грузовиком.
Ради разнообразия для написания функции поиска свободного гру-
зовика воспользуемся инструментом Диаграмма действий. Такой ин-
струмент находится в библиотеке Диаграмма действий панели Пали-
тра
(рис. 2.37).
47
Разработка модели внутризаводской логистики
Рис. 2.37. Библиотека Диаграмма действий
Перетащите элемент Диаграмма действий на рабочее поле агента
Plant
(рис. 2.38).
Рис. 2.38. Начало диаграммы действий
Перейдите в свойства диаграммы действий и задайте их, как пока-
зано на рис. 2.39. В свойствах задается имя функции Find_truck и тип
возвращаемого значения — Truck. Это значит, что функция должна
найти свободный грузовик, который в модели представлен агентом
Truck
, т. е. типом данных Truck. Если функция не найдет грузовик,
то она вернет Null.
48
Лабораторная работа № 2
Рис. 2.39. Свойства функции Find_truck
Теперь перетащите элемент Локальная переменная так, чтобы поя-
вилась зеленая точка между началом и концом диаграммы (рис. 2.40).
Должно получиться так, как показано на рис. 2.41.
Рис. 2.40. Вставка элемента Локальная
переменная
Рис. 2.41. Результат вставки элемента
Локальная переменная
в диаграмму
действий
Задайте свойства элемента Локальная переменная так, как показа-
но на рис. 2.42.
49
Разработка модели внутризаводской логистики
Рис. 2.42. Свойства элемента Локальная переменная
Таким образом была создана локальная переменная для сохране-
ния найденного грузовика.
Поскольку надо организовать поиск по всей популяции грузовиков,
то нужен цикл, проверяющий каждый грузовик. Перетащите элемент
Цикл
For и вставьте его между локальной переменной и концом диа-
граммы (рис. 2.43).
Рис. 2.43. Вставка цикла по коллекции
Задайте свойства цикла так, как показано на рис. 2.44.
Здесь задается начало и конец цикла. Цикл начинается с первого
элемента коллекции и идет до последнего элемента.
Перетащите элемент Код и вставьте его между циклом и концом ди-
аграммы так, как показано на рис. 2.45.
50
Лабораторная работа № 2
Рис. 2.44. Свойства цикла
Рис. 2.45. Результат вставки элемента Код
Задайте свойства элемента Код так, как показано на рис. 2.46.
В свойствах в переменную t записывается очередной грузовик
из коллекции.
Перетащите элемент Решение и вставьте его между элементами Код
и концом диаграммы (рис. 2.47).
Задайте свойства элемента Решение так, как показано на рис. 2.48.
51
Разработка модели внутризаводской логистики
Рис. 2.46. Свойства элемента Код
Рис. 2.47. Вставка элемента Решение
52
Лабораторная работа № 2
Рис. 2.48. Свойства элемента Решение
В свойствах задано условие проверки, а именно состояние элемен-
та t (т. е. грузовика). Для красоты вводится метка, на которой написа-
но само условие atPlant.
Рис. 2.49. Окончательный вид функции Find_truck
53
Разработка модели внутризаводской логистики
Перетащите элемент Вернуть значение в ветку false и введите в его
свойствах null. В элемент Вернуть значение по ветке true введите t
(рис. 2.49). Это означает, что если грузовик находится в состоянии
atPlant
, то функция вернет его значение; а если грузовик находится
в любом другом состоянии, то функция вернет значение null.
Достарыңызбен бөлісу: |