在AnyLogic 中如何设置随机性?

我们周围的随机性

在现实世界中,不确定性现象是普遍存在的。举一个简单的例子:假设您拥有一家咖啡店,每天为大约 100 名顾客提供热饮和美味糕点。

咖啡店的营业时间为9:00 ~19:00。 但是,第一批客人在第一天可能是10点到,在第二天可能是9点50分到达,可能只有两个客人也可能是十几个客人同时进入。

当我们构建仿真模型时,我们希望它们尽可能地反映现实世界。为此,您需要在仿真中包含随机性。

如何在 AnyLogic 模型中设置随机性?

我们再举一个例子。您正在为一家银行建模,您想知道经理为客户开设一个新的银行账户需要多长时间。

根据您的经验,这至少需要10分钟,多数情况下可能需要20分钟,至多需要40分钟。如何对这种延迟进行建模?在AnyLogic中,这类情况都可以通过设置 概率分布 进行建模。

概率分布和自定义分布

AnyLogic 提供一组概率分布函数来模拟非确定性过程,如天气变化、产品需求变化或任何其他随机性。软件支持不同的分布类型:均匀分布、三角形分布、指数分布等。

但是,如果这些预设功能全都不适合您的项目怎么办?无需担心,AnyLogic还支持您创建 自定义(经验)分布 并在模型中使用它。

AnyLogic内部随机性来源

模型可以分为两种类型:随机性模型和确定性模型。

确定性 模型没有内部随机性。它使用相同的输入参数集运行会给出相同的输出结果。例如,如果10,000 个人每人有 95% 的机会存活一年,我们可以合理地确定其中 9,500 人会存活。

另一方面, 随机性 模型具有内在的随机性来源。因此,每次运行(即使参数相同)可能会产生不同的输出。

模型内外的随机性来源。蒙特卡罗仿真(点击放大)

在随机性模型中,如果您只运行一次,是无法获得具有代表性的仿真结果的。因此,即使输入参数相同,您也需要多次运行它。一系列具有随机性(内部,输入参数级别或两者)的仿真运行称为 蒙特卡罗仿真

蒙特卡罗仿真结果经过统计处理,通常表示为概率、直方图、散点图、包络图等。

阅读更多: 不同类型AnyLogic模型中随机性的内部来源 【PDF】

随机数生成器

计算机是一种确定性设备。那么,仿真模型中的随机性从何而来?

除非访问外部物理 随机数生成器 (RNG),否则应用程序没有真正的随机性。然而,我们可以使用由计算的随机数生成器(RNG)创建的伪随机性。

随机数生成器(RNG) 基于确定性算法,该算法产生明显随机的长序列,实际上完全由较短的初始值(称为种子)确定,并且是周期性的,是通过一系列种子值计算出来的伪随机数。因此它们被称为伪随机数发生器。
——The Big Book of Simulation Modeling–第15章– AnyLogic 模型中的随机性

可重复和唯一的实验

虽然伪随机数生成器不能提供“真正随机”的数字流,但它们有一个重要的特性。根据选择的种子,每次运行模型时,它们都会生成唯一或相同的数字序列。

由于此功能,您可以使用AnyLogic中的随机模型创建唯一(随机)或重复性的实验。

当您想处理一个场景或调试模型时,可重复的实验运行非常方便。在开发仿真时,最好保持模型运行的可重复性,因为随机因素使得跟踪错误和了解导致错误的原因变得困难。
——AnyLogic支持团队

遵循此操作视频,使您的模型提供或随机或可复用的仿真结果:

AnyLogic的随机性设置 https://www.zhihu.com/video/1525470644254334976

发布于 2022-06-29 13:30