繁体   English   中英

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

[英]differen delay times for the same agent type (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 getDelayTime值并包含一个调用到延迟时间表达式中的那个函数。

注意:如果您需要单个源 1 代理始终具有延迟时间 5 或 10(如果它们经过多次延迟),那么您需要在创建它们时进行采样(并存储它们将进入的延迟时间,或他们将在代理中获得的延迟时间的指示器)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM