Как отсортировать очередь по агентам разных типов при сравнении операторов в Anylogi c? - PullRequest
0 голосов
/ 22 апреля 2020

Давайте представим модель, в которой в систему поступают два типа агентов: собаки и кошки. Этот агент имеет параметр age типа double. Агенты go попадают в уникальную очередь, которая должна быть упорядочена по возрасту, а затем обслуживаться одним сервером и выходить из системы, как показано в следующем примере Предлагаемая модель .

Мой первый вопрос: как упорядочить очередь по сравнению с оператором, используя атрибут age?

Основная проблема, с которой я сталкиваюсь, заключается в том, что блок очереди (как почти все блоки) требует определения одного типа агента в расширенном свойства. Сначала я попытался сделать это непосредственно в очереди, используя тип агента «Агент», так как имя атрибута одинаково для обоих типов объектов ( очередь пример1 ), но затем я получаю ошибку «возраст не может быть разрешен или не является полем ", так как общий тип агента" Агент "не имеет такого атрибута. Затем я попытался привести agent1 и agent2 к собаке и кошке, как показано в ( queue example2 ), но, конечно, во время выполнения я получаю сообщение об ошибке, которое не может быть приведено к коту или наоборот, как мы можем не знаю, будет ли агент1 иметь тип cat или dog в данный момент времени.

Думая о версии, в которой я маршрутизирую агентов через блоки выхода / ввода, я сталкиваюсь с той же проблемой, только Тип агента, который я мог бы использовать в блоке ввода для слияния разных типов операторов, - «Агент», но тогда возраст сортировки очереди для разных типов агентов нельзя использовать.

Мой второй вопрос : как направить n типов агентов в x разных местах, чтобы впоследствии можно было использовать отдельные параметры или переменные без приведения типа агента (поскольку мы не знаем, какой объект попадет в блок)?

1 Ответ

0 голосов
/ 22 апреля 2020

вам нужно создать другой тип агента с именем, например, Animal, где вы будете хранить переменную age ... тогда кошка и собака будут расширяться от этого агента ... вы можете сделать это в дополнительных свойствах агента: extends.

При этом агент, который будет использоваться в вашем процессе, будет иметь тип животного ... поэтому ваш второй вопрос больше не нужен.

...