Параллельные действия для одного агента - PullRequest
0 голосов
/ 02 марта 2020

Есть ли способ иметь параллельные сервисы и / или задержки для каждого агента и продолжать работу, которая занимает больше всего времени. Например, если у меня есть агент, который можно рисовать и обслуживать одновременно, для каждого из них требуется свой пул ресурсов с разным временем обработки, но агент будет двигаться вперед, когда процесс, который занял больше всего времени, закончится.

Ответы [ 2 ]

2 голосов
/ 03 марта 2020

Используйте блок Split, чтобы разделить вашего агента на две для двух параллельных задач (служебные блоки), а затем используйте Combine, чтобы потом объединить их снова (с блоком Combine, выводящим исходный агент 1).

Вы также можете использовать блоки RestrictedAreaStart и RestrictedAreaEnd (емкость 1) вокруг области разделения / объединения, чтобы другие агенты не могли «включиться», пока самый длинный параллельный процесс все еще выполняется (но более короткий уже завершен).

Нечто подобное ниже (с пулами ресурсов).

Sample process flow

1 голос
/ 03 марта 2020

Вероятно, проще всего динамически настроить продолжительность задержки и ресурсы, необходимые в пределах 1 элемента службы:

рассчитать продолжительность, которую ваш агент будет использовать в каждом случае (рисование = 5 минут, обслуживание = 10 минут) -> использовать чем больше значение задержки обслуживания

Кроме того, агенту потребуется 1 маляр и 1 сервисный инженер в качестве ресурсов.

Единственный недостаток: ваш художник также останется на 10 минут.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...