当前位置: 首页 > 知识库问答 >
问题:

AnyLogic:计算集合中所有值的总和

濮阳原
2023-03-14

我有一个基于代理的模拟,其中有一个名为collection_dailyinfection的集合,它包含每天出现的新感染的数量。收藏看起来有点像这样:

  • 第1天:0
  • 第2天:3
  • 第4天:3
  • 第5天:6
  • 第6天:1
  • 。..

计算和的语法是:double sum(collection,value)-返回给定集合中值的和。

对于我的特定示例,这将是double sum(collection_dailyinfination,*value*),但我不确定应该在'value'参数中放入什么。有人能帮我一下吗?

共有1个答案

马德宇
2023-03-14

AnyLogic提供的用于计算集合统计信息的这些函数(方法)使用了Java的一个相当高级的特性:在Java8中添加的函数编程材料。所以所需的语法一点也不明显。主帮助页(AnyLogic help-->Parameters,Variables,Collections-->Collections-->Functions to collection on a collection统计信息)有一个指向定义这些方法的UtilitiesCollection类的链接。

您有一个包含每日感染计数的集合collection_dailyinfection;让我们假设您在AnyLogic中将其指定为集合类arraylist,elements类为int,并且您使用循环事件在模拟的每一天添加计数。

因此,您的和表达式应该是

SUM(collection_dailyInfection,C->c.doublevalue())

c只是sum所在的当前元素的任意标识符(实际上,这个sum方法在您的集合中循环),->是一个特殊的Java8函数式编程运算符。当您在AnyLogic中为集合内容指定类型int时,它们实际上存储为integer对象,这些对象是int基元的对象版本。(请参阅任何Java教科书来了解这一点。)

(Anupam691997的答案是一个忽略AnyLogic上下文的“纯Java”解决方案。)

 类似资料:
  • 我想知道如何计算的累计总和在AnyLogic中。具体地说,我有一个循环事件,每周改变一个参数的值。从这个参数我想计算它收到的值的累计总和,我怎么做呢? 该事件是循环模式的超时。操作是: "name_parameter"=圆形(max(正常(10,200),0));

  • 我有这张桌子, 我想要表中的uid计数和订单价格中的uid计数 我这样做: 但我得到的结果是: 有什么问题?

  • 我想有效地计算一个n位数字(在我的例子中,n=36)的所有组合,并且设置了精确的k位。

  • 我一直在努力如何从雄辩的收藏中获得不同价值的数量。 我一直在尝试几种方法,如独特(),值()等。,在文档上找到的。即使确实有一个count()方法,也没有方法来获取不同值的计数。 例如,通过应用以下查询 我得到这个收藏: 因为我只想得到最高的度数(一个用户Id可能有几个历史度数),所以我应用unique()方法,根据文档,它只留下第一个原始值,在我的例子中,我已经按层次结构desc对它们进行了排序

  • 我在与以下问题作斗争: 我要做的是创建一个新的集合,列出一天售出的零件总数,如下所示: 监视器3 CPU 12 我怎么能这么做?

  • 我需要帮助定义与AnyLogic自定义分发。我有一个有400个字段的网格,每个字段代表一个地理区域。我根据经验测量了每个领域每天的客户数量(因此我对每个领域都有一个总和)。 现在我要做一个随机模拟。生成的代理(客户)的数量是以每天的速度生成的(根据经验测量所有领域的总数)。字段的个数应随机分配为分布,其中“客户端在字段x中生成的概率”等于“被测字段x中的客户端个数除以总数”。我有这些数字作为一个表