различное время задержки для одного и того же типа агента (AnyLogi c) - PullRequest
0 голосов
/ 02 апреля 2020

Надеюсь, вы все в безопасности

Предположим, у меня есть следующий процесс: 2 разных источника, очередь, задержка и приемник. У меня есть агент под названием «пациенты».

Моя цель: иметь разные тарифы обслуживания (время задержки) для пациентов, которые приходят из первого источника (с использованием процентов). другими словами, я хочу иметь например; 10% пациентов (которые поступают из источника 1) имеют время задержки, равное 5 мин, а 90% имеют время задержки, равное 10 мин.

Что я сделал: это то, что я назначил параметр, называемый «процент» для агента (пациентов). и используя «При выходе» из первого источника, я набрал

agent.percentage = 1;

, а затем по времени задержки я написал:

agent.percentage = 1 ? uniform(0.1);

Но это не сработало, как я могу сделать что?

1 Ответ

1 голос
/ 02 апреля 2020

Вам необходимо оба

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

Таким образом, ваш параметр агента должен называться sourceNumber или аналогичным (не percentage), который вы устанавливаете соответствующим образом при его создании (как вы сделали).

Тогда ваше время задержки примерно такое, как показано ниже (при условии, что разделение 90% / 10% относится только к агентам из источника 1, а другие источники имеют время задержки 50 для иллюстрации):

agent.sourceNumber == 1 ? (randomTrue(0.1) ? 5 : 10) : 50

Если вам нужно более сложное (например, более двух исходных альтернатив) или вы хотите, чтобы оно было более «разборчивым» с Java, если операторы и тому подобное, вы бы написали функцию, скажем, скажем, getDelayTime, которая возвращает double и включите вызов этой функции в выражение времени задержки.

NB : если вам нужны отдельные агенты источника 1, чтобы всегда имели время задержки 5 или 10 (если они go через эту задержку несколько раз), то йо вам нужно выполнить выборку при их создании (и сохранить время задержки, в которое они попадут, или показатель времени задержки, которое они получат, в агенте).

...