Как выбрать выход в Anylogic по параметру агента?

Итак, я довольно новичок в Anylogic, но я сделал много уроков и у меня есть опыт программирования на Java. Для моей диссертации я моделирую поток транспортных средств как процесс. В исходном блоке я создаю собственные агенты (транспортные средства) с некоторыми параметрами из базы данных. Это отлично работает. Затем я хочу назначить электрический параметр с помощью randomTrue(0.5). Для этого я вызываю функцию setupTaxi, в которой устанавливается электрический ток. Параметр для функции randomTrue должен быть изменяемым, поэтому я установил его как дополнительный параметр anteilEtaxis (0.5).

После этого я хочу, чтобы автомобили делали разные вещи, в зависимости от значения электричества, используя SelectOutput. Я выбрал Условие и проверил на agent.electric.

Я сделал то же самое, что описано в справке Anylogic. И все же платформа всегда выбирает истинный порт вывода, независимо от того, установлен ли параметр в значение true или false.

Смотрите изображение для настройки и параметров. Я протестировал это через консоль (первая строка - это вызов println в источнике, вторая - вызов println в selectOutput.). Кроме того, вы можете видеть, что для параметра заданы разные значения, потому что от этого зависит модель трехмерной визуализации:

введите описание изображения здесь

Кроме того, я попробовал несколько различных комбинаций установки параметров, чтения их и т. Д. Единственное, что сработает, это поместит randomTrue(0.5) непосредственно в поле Condition. Это не то, что я хочу, хотя. Так что если у вас есть идея, что не так, пожалуйста, скажите мне.

1 ответ

Решение

Это типичная проблема для начинающих.

Я предполагаю, что вы вызываете функцию setupTaxi в вашем источнике в действии "при выходе"... Если вы делаете это, то уже слишком поздно, и агент уже принял решение о том, куда он пойдет после блока выбора выхода,

Вы должны вызвать вашу функцию setupTaxi в 2 возможных местах:

1) В вашем источнике на действие "на выходе"

2) У вашего агента на авто по акции "при запуске"

Или даже... просто сделайте, чтобы электрическая переменная имела значение по умолчанию randomTrue(main.anteilEtaxis)..., которое также будет работать.

Другие вопросы по тегам