跳转到内容

使用 AnyLogic 进行仿真/离散事件仿真/银行模型/步骤 6. 添加出纳员

来自维基教科书,开放书籍,开放世界

步骤 6. 添加出纳员

现在,我们将通过添加在银行工作的出纳员来创建系统的另一个部分。现在,一些客户会来找出纳员,一些客户会使用 ATM。我们可以使用延迟来建模出纳员,就像我们对 ATM 的建模一样。然而,使用资源建模出纳员要方便得多。资源是可以被实体拥有的特殊单元。一次只有一个实体可以拥有一个资源;因此实体会争夺资源。

修改流程图

  1. 添加 服务 对象。

    服务 为实体获取资源单位,延迟实体,并释放获取的单位。

    修改对象属性
    • 所有出纳员都只有一个队列。设置队列容量为 20 个位置。
    • 我们假设服务时间呈三角形分布,最小值为 2.5 分钟,平均值为 6 分钟,最大值为 11 分钟。设置延迟时间triangular( 2.5, 6, 11 )
  2. 添加 资源池 对象。资源池 对象是资源单元的存储。它应该连接到资源获取和释放对象(在本例中为服务)。因此,将其连接到服务对象的下方端口。

    将对象命名为tellers。指定此资源对象只有四个资源单位:定义其容量:4
  3. 放置 选择输出 对象。选择输出 对象是一个决策块。到达该对象的实体将沿着两个输出端口之一转发,具体取决于用户定义的条件。
    保留默认对象属性。实体路由条件randomTrue(0.5)定义争夺 ATM 和出纳员服务的客户数量将大致相等。
    按图示连接selectOutputservice到其他对象

由于模型发生了改变,我们也需要修改模型动画。

修改动画

  1. 绘制一条多边形线来为等待客户的队列制作动画。从左到右绘制。将多边形线命名为queueBeforeTellers
  2. queueBeforeTellers的右侧绘制一个由四个点组成的多边形线。该多边形线将指示出纳员动画的位置。将其命名为tellerPlaces

现在,我们将通过定义两个图像来为出纳员制作动画,这两个图像分别表示出纳员处于空闲状态和忙碌状态。当资源单元被获取和释放时,AnyLogic 将自动在这些图像之间切换。

为出纳员制作动画

  1. 图像演示模板拖动到图中蓝色交叉矩形所示的位置。
  2. 转到图像形状的属性。将图像命名为busyTeller
  3. 定义该形状将显示的图像。使用添加图像按钮添加Teller Busy.png。您可以在计费部门示例模型所在的文件夹中找到此文件(类似于<AnyLogic 文件夹>\plugins\com.xj.anylogic.examples.<构建号>\models\Billing Department).
    您将在预览区域看到添加的图像。
  4. 选中原始大小复选框。如果未选中原始大小选项,则图片会显示为适合图像形状的矩形,否则图片会显示为没有任何失真。
  5. 创建另一个图像来显示放松的出纳员。将其命名为idleTeller,并选择Teller Idle.png作为该形状显示的图像。

现在,我们将通过设置流程图对象的动画属性来为流程图制作动画。

为模型逻辑制作动画

  1. 现在,我们需要为客户队列制作动画。因此,修改service属性
    • queueBeforeTellers设置为动画引导形状(队列)
  2. 要为出纳员制作动画,请修改tellers属性
    • 指定tellerPlaces作为动画引导形状
    • 选择设置作为动画类型
    • idleTeller设置为空闲单元动画形状
    • busyTeller设置为忙碌单元动画形状

在当前模型中,出纳员的数量是固定的。但是,我们可能需要在模型运行时动态地改变它。AnyLogic 提供了一组控件,可以更改模型参数。现在,我们将添加一个滑块,以便在运行时更改出纳员的数量。

添加一个滑块来更改出纳员的数量

  1. 添加一个滑块。打开调色板控件模板,并将滑块元素从那里拖到图形编辑器中。将其放置在我们的资源池对象的下方,让用户知道此滑块将改变此特定对象的容量。
  2. 我们希望将系统中的出纳员数量从 0 更改为 4。因此,将 4 设置为滑块的最大值
  3. 键入tellers.capacity作为滑块的默认值
  4. 指定tellers.set_capacity((int)value);作为滑块的动作

运行模型。您可以看到出纳员正在使用我们的图像制作动画。现在,您可以使用滑块更改出纳员的数量。因此,您可以看到特定客户到达率需要多少出纳员。

华夏公益教科书