#simulation #anylogic #agent-based-modeling
Вопрос:
Я хочу назначить приоритет своим агентам, а затем поставить их в очередь на основе этого. У меня есть контейнер агента, который имеет два параметра перевозчик (который может быть как грузовиком, так и поездом) и приоритет (которому должно быть присвоено некоторое значение). 50% агентов, где перевозчик=Грузовик, и 50% агентов, где перевозчик=Поезд, должны иметь приоритет 1, а остальные должны быть равны нулю. Как я могу это сделать?
Это моя модель. []. Я хочу переместить вышеупомянутые агенты из хранилища 1 в блок rackPick по приоритету.
Заранее спасибо.
Ответ №1:
Этого можно достичь, создав целое поле «приоритет» в агенте, а затем установив его равным 0 или 1 на основе случайного(0,5) значения в on at exit
действии исходного источника, а затем проверив это поле в очереди для получения приоритета. Это будет не совсем 50%, но довольно близко для достаточно большого числа агентов.
Комментарии:
1. Я тебя не понял. Я хочу выбрать 50% агентов, где агент.перевозчик=грузовик, и 50% агентов, где агент.перевозчик=поезд, а затем назначить агенту.приоритет=1 для этих выбранных агентов. Не могли бы вы подробнее рассказать о том, как использовать random(0.5) здесь?
2. Не могли бы вы уточнить, хотите ли вы сделать это при создании агентов (т. Е. в исходном компоненте) или все агенты создаются одновременно, возможно, в начале моделирования, и вы хотели бы выбрать 50% из 2 разных групп населения?
3. Итак, у меня есть популяция агентов, называемая контейнером, в которой одновременно генерируется 10 агентов. У этого агента контейнера есть перевозчик параметров (значения: грузовик, поезд). Я хочу выбрать 50% агентов, где агент.перевозчик=Грузовик и агент.перевозчик=Поезд, и назначить им приоритет 1. В идеале я хотел бы сделать это перед выходом из блока storage1.
4. В этом случае проще всего использовать тернарный оператор в
on Enter
действии объекта RackStore ‘storage1’ следующим образом:agent.priority = randomTrue(0.5) ? 1 : 0;
для каждого типа (грузовик или поезд).