Anylogic - 具有汇总值的自定义分布?
Posted
技术标签:
【中文标题】Anylogic - 具有汇总值的自定义分布?【英文标题】:Anylogic - Custom distribution with summed up values? 【发布时间】:2018-12-11 21:32:35 【问题描述】:我需要有关使用 Anylogic 定义自定义分发的帮助。我有一个包含 400 个字段的网格,每个字段代表一个地理区域。我根据经验测量了每个领域每天的客户数量(所以我对每个领域都有一个 sum)。
现在我想做一个随机模拟。生成的代理(客户端)的数量以每天的速率生成(根据经验测量为所有字段的总数)。字段的数量应随机分配,其中“在字段x中生成客户端的概率”等于“测量字段x中的客户端数量除以总数”。我将这些数字作为表格(数据库)。问题是自定义分配块想要读取包含所有值的表(因此如果字段 x 每天有 5 个客户,我需要输入数字 x 的 5 倍)。
有没有人知道如何解决这个问题?谢谢!
或者您知道如何通过数据库生成代理,并通过某种概率生成属性?
PS:我想生成字段ID,因为每个字段都附加了更多信息。
编辑:如果我用 x 次列出的所有值制作一个表格,我不能选择一个值列: CustomDistribution for Start Fields
【问题讨论】:
你能澄清一下吗?您似乎描述了以下内容: 一个源块创建所有客户端(所有字段的总数),然后使用相对值进行自定义分布,为您提供概率。 是的,这正是我想要做的。对不起,如果我的文字令人困惑。我也尝试了这种方法:创建一个表,其中的值没有汇总(如教程视频中所示)。这里我有一个问题,我可以选择我的表,但是没有可供选择的值列。 【参考方案1】:好的,我找到了解决这两个问题的方法:
1) 似乎 Anylogic 无法从汇总值构建自定义分布,因为它在内部自行进行总和。
2) 在创建包含超过 20.000 个值而不是 400 个总和的大表后,我无法选择值列(见图)。我重新创建了大表并将值从“f1”更改为“1”(String 为 int)。现在它可以工作了。所以貌似Anylogic在其自定义分布数据库功能中只能处理整数,而不能处理字符串。
如有错误,欢迎指正。
【讨论】:
我认为这个问题和答案的数据库组件具有误导性。 AnyLogic 帮助菜单指出自定义分布可用于连续值、离散值或选项列表。自定义分布不能使用字符串。它与将自定义分发链接到数据库的数据库方面没有任何关系。 虽然我理解您的论点,但我不认为它具有误导性。作为一个从未使用过这个功能的人,你无法知道问题出在哪里。当我正在阅读表格(数据库)时,这是一个可以或不可以在表格中写入哪些内容以使其工作的问题。我的问题的重点是如何使用自定义分发,而不是如何使用数据库。问题是自定义分布是否可以读取预先计算的总和。答案是不。此外,我没有标记它,也没有在标题中,那么您对更好的问题的建议是什么? 自定义分布可以使用预先计算的总和来确定返回的概率/重量。该问题与预先计算的金额无关。问题是您正在为自定义分布的返回值传递字符串值。我建议您更改答案,因为#1 不正确。正确答案将是 #2 的一部分:“自定义分发不接受应返回的字符串。我将值从“f1”更改为“1”,现在它可以工作了。” 关于您的评论,您的问题/答案没有因为数据库链接而产生误导。当我发表评论时,您最初发布的答案将数据库作为问题。我认为你的答案现在更好了,而不是将数据库作为根本问题的红鲱鱼。 我应该澄清一下。在我的第一个测试中,我已经将总和预先计算为整数,比如第一列是字段的 id,第二列是总和。我没有找到阅读这些内容的解决方案。您说:“自定义分布可以使用预先计算的总和来确定返回某物的概率/权重。”如果您知道它是如何工作的,请告诉我,因为我仍然不知道该怎么做,而且您还没有提供原始问题的答案。【参考方案2】:将您的自定义分布设置为“连续”,插值“无”。对于每个值,您可以在权重列中包含您想要的任何值 - 这可以是预先计算的总和。无插值将为您提供输入值之一,可能是一个实数,但在此示例中只是离散的 (1,2,3)。
【讨论】:
好的,谢谢。它现在适用于总和。虽然我在哪里调用分布,但我必须手动从 double 转换为 int ,否则它会给我一个错误。不幸的是,它本身不会这样做。以上是关于Anylogic - 具有汇总值的自定义分布?的主要内容,如果未能解决你的问题,请参考以下文章