相同代理类型(AnyLogic)的不同延迟时间



希望你们都是安全的

假设我有以下过程:2个不同的源、队列、延迟和接收。我有一个叫"病人"的代理人。

我的目标:为来自第一个来源的患者提供不同的服务费率(延迟时间((使用百分比(。换句话说,例如,我希望有;10%的患者(来自来源1(延迟时间等于5分钟,90%的患者延迟时间等于10分钟。

我所做的是:我为代理人(患者(分配了一个名为"百分比"的参数。并使用我键入的的第一个来源的"退出时">

agent.percentage = 1;

然后在延迟时间上我写道:

agent.percentage = 1 ? uniform(0.1);

但是它不起作用,我怎么能那样做呢?

您需要两个

  • 存储代理的来源
  • 如果它们来自特定的来源,随机确定您需要的延迟时间

因此,您的代理参数应该被称为sourceNumber或类似的(而不是percentage(,您在创建它时会相应地设置它(就像您所做的那样(。

那么您的延迟时间如下所示(假设90%/10%的分割仅适用于来源1的代理,其他来源的延迟时间为50(:

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

如果你需要它更复杂(例如,两个以上的源代码替代方案(,或者希望它在Java If语句和类似语句中更"易读",你可以编写一个名为getDelayTime的函数,它返回一个double,并在延迟时间表达式中包含对该函数的调用。

NB:如果您需要单独的源1代理始终具有延迟时间5或10(如果它们多次经历该延迟(,则您需要在创建它们时进行采样(并将它们将进入的延迟时间或它们将获得的延迟时间的指标存储在代理中(。

最新更新