Давайте представим модель, в которой в систему поступают два типа агентов: собаки и кошки. Этот агент имеет параметр age типа double. Агенты go попадают в уникальную очередь, которая должна быть упорядочена по возрасту, а затем обслуживаться одним сервером и выходить из системы, как показано в следующем примере Предлагаемая модель .
Мой первый вопрос: как упорядочить очередь по сравнению с оператором, используя атрибут age?
Основная проблема, с которой я сталкиваюсь, заключается в том, что блок очереди (как почти все блоки) требует определения одного типа агента в расширенном свойства. Сначала я попытался сделать это непосредственно в очереди, используя тип агента «Агент», так как имя атрибута одинаково для обоих типов объектов ( очередь пример1 ), но затем я получаю ошибку «возраст не может быть разрешен или не является полем ", так как общий тип агента" Агент "не имеет такого атрибута. Затем я попытался привести agent1 и agent2 к собаке и кошке, как показано в ( queue example2 ), но, конечно, во время выполнения я получаю сообщение об ошибке, которое не может быть приведено к коту или наоборот, как мы можем не знаю, будет ли агент1 иметь тип cat или dog в данный момент времени.
Думая о версии, в которой я маршрутизирую агентов через блоки выхода / ввода, я сталкиваюсь с той же проблемой, только Тип агента, который я мог бы использовать в блоке ввода для слияния разных типов операторов, - «Агент», но тогда возраст сортировки очереди для разных типов агентов нельзя использовать.
Мой второй вопрос : как направить n типов агентов в x разных местах, чтобы впоследствии можно было использовать отдельные параметры или переменные без приведения типа агента (поскольку мы не знаем, какой объект попадет в блок)?