使用 3 个值中确定的参数值创建特定数量的代理

Posted

技术标签:

【中文标题】使用 3 个值中确定的参数值创建特定数量的代理【英文标题】:Creating a specific Number of agents with a determined parameter value out of 3 values 【发布时间】:2021-07-24 00:34:37 【问题描述】:

我需要创建一个具有 3 个可能值的参数 "Class" 的代理。在模拟开始之前,我需要能够通过使用确定 Agents.Class=="A", Agents.Class=="B" 数量的滑块来确定模拟屏幕上每个类值的代理数量等等。

我尝试创建一个使用 RandomTrue 来分配类的操作图表。

此行动图的输入是:

    一个参数对 3 个滑块的输出求和,以确定代理的总 n 个 另一个参数计算代理的百分比。class=="A" 占代理总数的 n 个 第三个参数计算从剩余 n 个代理 (n-agents.class=="A") 中代理的百分比。class="B"

我还不能发图片,但请看行动图Here。

这样做的问题是,当使用百分比时,它会在这里或那里四舍五入,并且具有所需类别的代理的实际数量可能多一个或少一个。

如何使用每个类创建的确切数量的代理来做到这一点?

【问题讨论】:

【参考方案1】:

这在数学上没有意义。如果您创建 10 个代理,并且随机数使用 0.66 和 0.33 对其进行拆分,则您无法创建 6.66 个代理。

因此必须进行一些舍入,除非您创建无限代理。

但是,您可以决定对随机数进行四舍五入。如果您知道您将创建 100 个代理,则可以使用 Math.ceil(uniform(0, randomA)*100.) 或类似名称。如果randomA 为 0.66666,则结果为 67。

Math.floor 会给你 66)

【讨论】:

【参考方案2】:

我不清楚您为什么要将数字转换为 %-ages?你一共要创建 N 个代理吗?如果是这样,您可以在两个单独的 Source 对象(每个类一个)中使用“A”类和“B”类代理的数量来在开始时创建代理。

【讨论】:

以上是关于使用 3 个值中确定的参数值创建特定数量的代理的主要内容,如果未能解决你的问题,请参考以下文章

AnyLogic 在一个过程中更改参数值

如何在Django中查询具有特定数量的外键关系并且在这些外键值中具有特定值的对象?

如何使用选择查询为每个唯一的第二个值获取一个值中的最小值?

检查多个列在表值参数中具有多个值中的任何一个

Symfony 3.4 / routing:参数值中的Urlencoded“/”导致与路由不匹配

将地图的第一个和第二个值上传到向量对的第一个和第二个值中