[英]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.