Anylogic系统动力学教程

Anylogic系统动力学教程
Anylogic系统动力学教程

系统动力学教程

? 1992-2005 XJ Technologies Company Ltd. .xjtek.

所有? 1992-2005 XJ Technologies。保留所有权利。XJ Technologies Company Ltd AnyLogicxjtek.

.xjtek./products/anylogicContents

目录

关于此教程 (1)

1. 产品生命周期模型 (2)

1.1 创建一个新工程 (2)

1.2 分析此模型 (3)

1.3 将客户和潜在客户建模为存储体(stock) (4)

1.4 将购买建模为一个流 (6)

1.5 定义购买流对人群的影响 (6)

1.6 加入常数 (8)

1.7 定义存储体(stock)的初始值 (10)

1.8 加入从属动作(auxiliary) (10)

1.9 定义购买率公式 (11)

1.10 查看因果依赖性 (12)

1.11 配置仿真 (13)

1.12 运行模型 (14)

1.13 查看变量的值 (15)

1.14 用图表显示变量的变化 (15)

1.14.1 查看客户和潜在客户数目动态信息 (15)

1.14.2 查看购买率 (17)

1.14.3 查看不同购买源的贡献 (17)

1.15 创建一个显示台(show-bench) (18)

1.15.1 创建动画图 (18)

1.15.2 创建动态的存储体(stock)和流图 (19)

1.15.3 加入控件 (23)

2. 扩展产品生命周期模型 (27)

2.1 加入替代性购买逻辑 (27)

2.1.1 建模产品丢弃率 (27)

2.1.2 修改动画 (29)

2.2 建模需求循环 (31)

2.2.1 向我们的模型中加入实验数据 (31)

2.2.2 用公式表示购买比例 (33)

2.3 建模一个推广战略 (35)

2.3.1 建模广告支出 (35)

2.3.2 建模一个推广计划 (37)

2.4 优化产品的市场进入战略 (39)

2.4.1 查看市场饱和度 (39)

2.4.2 配置优化 (41)

2.4.3 运行优化 (43)

3. 总结 (45)

关于此教程

AnyLogic TM支持多种不同的建模技术。本教程介绍了其中的系统动力学(System Dynamics,简称为SD)建模方法。系统动力学仿真技术可以成功应用于多种领域——其应用领域包括商业,城市,社会,生态学等系统。AnyLogic TM允许你使用标准的系统动力学图形符号创建复杂的动态模型。

这一教程将向你简要介绍使用AnyLogic TM创建一个仿真模型的过程。此教程的目的在于向你介绍AnyLogic TM的界面及其许多主要特性。我们将创建一个简单的演示例——产品生命周期模型,此模型用于预测新产品的销售情况。

在第一章中我们将创建经典的Bass扩散模型。然后我们将通过考虑一些细节信息和向你介绍一些AnyLogic TM的高级特性,来对我们的模型进行扩展。

请注意我们为这两个模型提供了一些参考文件,这些文件对应于编辑模型过程中的一些关键步骤的结果。如果你在创建模型时遇到任何问题,或你希望将你的模型与我们提供的模型对比,你可以使用这些参考文件。你可以使用Start Page(开始页)打开这些示例文件。在关闭你正在编辑的模型之后,Start Page(开始页)将自动出现。

1. 产品生命周期模型

我们将创建产品生命周期模型。这一模型描述了一个产品的扩散过程。产品的潜在客户会受到广告和现有客户(那些已经购买了这种新产品的人)的口碑影响而购买产品。通过口碑影响而购买新产品与疾病传染类似。潜在的客户通过社会关系与现有客户发生联系。这些联系中的一部分将引起购买新产品。广告在每个时期都会引起潜在客户中固定比例的一部分购买新产品。

1.1 创建一个新工程

首先,我们将为你的模型创建一个新工程。

?创建一个新工程

1.点击New Project(新建工程)工具条按钮。

此时即出现New Project(新建工程)对话框。

2.点击Choose Location…(选择存放位置)按钮,然后浏览找到你希望保存你的工程文

件的文件夹。

3.指定工程名称。在Project name(工程名称)编辑框中,输入Product Life Cycle(产品

生命周期)

4.点击OK。

此时即创建了一个新工程。你可以看到structure diagram(结构图)显示于工作区的中心,Project(工程)窗口显示于左侧面板,Properties(属性)窗口显示于右侧面板。

当在一个工程中进行工作之后,请不要忘记点击Save(保存)按钮以保存此工程。

1.2 分析此模型

现在我们需要分析此模型以决定如何使用系统动力学术语对其进行描述。我们应区分模型中的关键变量和他们的影响模式,然后再创建模型的存储体(stock)和流图。在创建存储体(stock)和流图时,我们应注意何种变量应使用存储体(stock),流,或从属动作(auxiliary)进行建模。

存储体(stock)(也称为水平(level),累积(accumulation),或状态变量)的值随时间连续改变。流,也称为率,可以改变存储体(stock)的值。反过来,系统中的存储体(stock)也决定流的值。它们之间的部分称之为从属动作(auxiliary),其值可以发生突变。

当创建一个存储体(stock)和流图时,首先考虑何种变量将在一个时间段累积其值。在我们的模型中,客户和潜在客户人数是存储体(stock),而对新产品的购买率是一个流。

模型的系统动力学表述显示于如下图中。存储体(stock)用方框表示,流用阀门表述,从属动作(auxiliary)用圆圈表示。箭头表示模型中的因果关系。

在AnyLogic TM中,你可以使用结构图定义存储体(stock)和流图。在结构图中你可以使用图形方法定义存储体(stock),流,和从属动作(auxiliary)。在Project(工程)窗口中,双击工作区输中的Main项目,即打开结构图。

1.3 将客户和潜在客户建模为存储体(stock)

首先,我们加入两个存储体(stock)以建模客户和潜在客户人群。在AnyLogic TM中,一个存储体(stock)用一个变量表示。

?加入一个存储体(stock)以建模潜在客户人群

1.点击V ariable(变量)工具条按钮。

2.在图中点击你希望放置此存储体(stock)的地方。此时图中即出现一个新变量,显示

为蓝色圆圈。

3.一旦你将一个元素放置到结构图中之后,此元素即显示为选定状态,且其属性同时显

示于Properties(属性)窗口中。你可以根据你的模型需求,调整元素属性。若需在稍

后某时刻再调整属性,首先在图中点击选取此元素,然后根据需要修改其属性。

4.更改此存储体(stock)的名称。在Properties(属性)窗口中,在Name(名称)编辑

框中输入Potential Customers。

5.在Equation段,从Form下拉选单中选择Integral or Stock。此时你可以看到图中的存

储体(stock)形状变为方形,以符合系统动力学符号标准。

?加入一个存储体(stock)以建模客户人群

1.按同样方法加入此存储体(stock)。将它命名为Customers。

到此为止,前面加入的两个存储体(stock)并没有适当地定义。稍后我们将为存储体(stock)定义积分函数(integral function),并指定其初始值。但我们首先需要创建购买流(adoption flow)。

1.4 将购买建模为一个流

现在我们将建模购买流(adoption flow),此流将增加客户数目,从而减少潜在客户数目。

在AnyLogic TM中,流用一个变量表示。流的值根据指定的公式计算得出。

?创建Adoption_Rate(购买率)流

1.点击V ariable(变量)工具条按钮。

2.在图中点击你希望放置流的地方。

3.更改此流的名称。在Properties(属性)窗口中,在Name(名称)编辑框中输入

Adoption_Rate。

4.将Equation Form(等式形式)改为Formula(公式)。

我们将稍后再定义流的公式。

1.5 定义购买流对人群的影响

现在我们将建模流对存储体(stock)值的影响。存储体(stock)的值根据你所指定的积分

函数计算得出。此函数应定义为如下形式:

+ … - -

向此存储体(stock)的当前值加入流入流(inflow,即增加存储体(stock)值的流)的值,并从此存储体(stock)的当前值中减去流出流(outflow,即减少存储体(stock)值的流)的值。

?定义由于购买而从潜在客户群中流出的流(outflow)

1.在结构图中点击Potential_Customers变量。

2.在Properties(属性)窗口中,定义此函数:-Adoption_Rate。使用函数向导(function

wizard)以省却输入等式表达式中的变量和函数的完整名称。为打开函数向导,在

d(Potential_Customers)/dt编辑框中点击所需的位置,然后点击按钮或按Ctrl+Space。

此向导中将列出所有的模型变量和预定义的函数。拖动滚动条找到你希望加入的名称,

或输入该名称的开头第一个或若干个字母直到此名称出现于列表中。双击此名称,以

将其插入到等式表达式中。

?定义由于购买而向客户群中流入的流

1.按与上述相同的方法操作。输入Adoption_Rate公式。

1.6 加入常数

现在我们将定义我们模型中的常数。在AnyLogic TM中,你可以通过创建一个参数(parameter)来定义一个常数。

?定义代表总人数的常数

1.在Project(工程)窗口中,双击Main 类项目。

2.在Properties(属性)窗口,点击New Parameter…(新建参数)按钮。在打开的Parameter

(参数)对话框中,设置参数属性。

3.更改此常数的名称。在Name(名称)编辑框中输入Total_Population。

4.在Default value(默认值)编辑框中,输入100000。这一值将作为我们模型中的总人

数。

5.你可以在Description(描述)编辑框中输入对此参数的简短描述。输入在向对此模型

不熟悉的人解释此常数时有帮助的文字。

你可以看到新参数即被加入到Parameters(参数)表格中。

在这一模型中,广告量以及潜在客户由于受到给定量广告的影响而可能购买的概率在每个时期中都被假定为常数。所以,我们需要加入一个常数以建模广告有效性——由于广告而引起的购买人群的比率。

?定义代表广告有效性的常数

1.以同样方法定义一个常数。将此常数命名为Advertising_Effectiveness。

2.设置其值为0.011。

潜在客户与已有客户之间进行联系的频率被假定为是常数。因此我们需要定义一个常数以代表联系频率。

?定义常数Contact_Rate

1.按同样方法定义此常数。输入其名称:Contact_Rate.。

2.假定联系频率为每年每人100次。在Default value(默认值)中,输入100。

再定义一个常数以指定购买比例——所发生的联系中其说服力强得足以使得潜在客户购买此产品的那部分的比例。

?定义常数Adoption_Fraction

1.将此常数命名为Adoption_Fraction。

2.设置其值为0.015。

1.7 定义存储体(stock)的初始值

现在我们准备好了指定存储体(stock)的初始值。

?定义客户的初始数目

1.在结构图中,点击Customers 存储体(stock)。

2.产品客户的初始数目为0。在Properties(属性)窗口中,在Initial value(初始值)编

辑框中输入0。

?定义潜在客户的初始数目

1.在结构图中,点击Potential_Customers 存储体(stock)。

2.在此存储体(stock)的Initial value(初始值)属性中输入Total_Population(你可以使

用函数向导)。

此时即完成了定义新的存储体(stock)。

1.8 加入从属动作(auxiliary)

我们需要加入两个从属动作(auxiliary)以代表由于口碑影响而引起的购买和由于广告影响而引起的购买。

?创建Adoption_From_Advertising 从属动作(auxiliary)

1.点击V ariable(变量)工具条按钮。

2.在图中点击你希望创建从属动作(auxiliary)变量的位置。

3.在Properties(属性)窗口中,将Name(名称)改为Adoption_From_Advertising。

4.将Equation type(等式类型)改为Formula(公式)。

5.定义此公式的表达式:Advertising_Effectiveness*Potential_Customers

?创建Adoption_From_Word_Of_Mouth 从属动作(auxiliary)

1.按照与上述相同的方法进行操作,但将名称改为Adoption_From_Word_Of_Mouth,然

后指定如下公式:

Contact_Rate*Adoption_Fraction*Potential_Customers*Customers/ Total_Population

1.9 定义购买率公式

现在我们需要用公式表示购买率。两种引起购买的原因被假定为是互相独立的。因此,总的购买率就是由于已有客户口碑影响引起的购买率和由于广告影响引起的购买率之和。

?定义购买率的公式

1.在结构图中点击Adoption_Rate变量。

2.在Properties(属性)窗口中,指定公式表达式:

Adoption_From_Advertising+Adoption_From_Word_Of_Mouth 现在我们就完成了定义我们的模型。

1.10 查看因果依赖性

你可以检验你的模型中的存储体(stock),流和从属动作(auxiliary)之间的因果依赖性。

与标准SD符号相同,这些依赖性用箭头表示。一个从流指向存储体(stock)的箭头表示这一流作为此存储体(stock)的入流。一个从存储体(stock)指向流的箭头表示这一流是一个出流。

一个从变量A指向变量B的细箭头表示A引起B的改变。

?查看模型中的因果关系

1.点击Show/Hide Variable Dependencies(显示/隐藏变量依赖关系)工具条按钮。你可以

看到表示因果依赖性的箭头即显示出来。

你可以看到我们的模型有一个平衡反馈环和一个增强反馈环。

平衡反馈环影响由于广告引起的购买率。此购买率减小潜在客户的数目,而潜在客户数目减少接着又会降低购买率。

增强反馈环影响由于口碑效应而引起的购买率。购买率增加客户人数,引起口碑上升,从而又增长了购买率。

你可以检查你所输入的整个等式系统。

?打开等式系统视图

1.在Project(工程)窗口,展开Main项目,然后双击Main子树中的Code项目。

2.你的模型的等式系统即显示于所出现窗口的Equation部分。在这里你可以编辑现有的

等式和加入新的等式。

1.11 配置仿真

模型仿真有一系列特定的设置。可以创建多个替代性的模型设置。一组模型设置称为一个实验(experiment),实验显示于模型树中Experiments项目之下。默认将创建一个实验,并将其命名为Simulation。这一实验是一个仿真实验(simulation experiment),它允许使用自定义的参数值进行模型仿真,并在仿真时显示动画。

实验也有其他类型(优化(optimization),风险评估(risk assessment),参数变化(parameter variation)实验),当模型参数起重要作用,并且你需要分析它们如何影响模型行为,或当你希望找到你的模型的最优参数时,你可以使用这些实验。

如果我们此时开始运行此模型,它将无限期地运行。由于我们只希望观察在购买过程发生时模型如何表现,因此我们需要在系统达到平衡状态时停止模型运行。这个模型中的购买过程持续了大约超过8年。

?将模型设置为在时间为8时停止

1.在Project(工程)窗口中,点击实验Simulation。

2.在Properties(属性)窗口的Additional(附加)选项卡中,选中Stop at time选框。在

右边的编辑框中,输入8。这一模型将在8个单位模型时间之后停止运行。

你可以设置求解微分方程系统的方法。如果你不指定一个特定的求解器,就会保留Automatic(自动),AnyLogic TM即根据系统行为,在运行时自动选择一个数值解法。

?设置数值积分RK4方法

1.在仿真实验的Additional(附加)属性页中,从Differential equations(微分方程)组合

框中选择RK4方法。

1.12 运行模型

点击Build(构建)工具条按钮以构建你的工程。如果你的工程中存在错误,则构建操作失败,同时出现Output(输出)窗口,在其中列出你的工程中找到的所有错误。双击列表中的一个错误,打开此错误的位置并将其改正。

在工程成功构建之后,你就可以开始运行模型。点击Run(运行)以开始运行模型。至此为止,你都是在使用AnyLogic TM的编辑器(editor)模式。模型开始运行之后,即切换到查看器(viewer)模式。在查看器模式中,你可以控制模型执行,检查模型变量,查看图表,动态

更改参数等等。

1.13 查看变量的值

有多种方法在AnyLogic TM中查看变量的值。首先,变量值显示在Model Viewer(模型查看器)中。

?查看模型中变量的值

1.点击Run(运行)以开始运行模型。

2.点击Model Root Object(模型根对象)工具条按钮。Model Viewer(模型查看器)窗口

即打开。你可以看到变量的真实值显示于模型树中。

你可以点击Pause(暂停)按钮以暂停模型,然后根据需要改变任意变量的值,具体操作为右键点击模型树中的变量项目,从弹出菜单中选择Modify(修改),然后在打开的对话框中指定新值。

这里对应的参考模型可以在如下位置找到:Examples\System Dynamics Tutorial Models\Product Life Cycle-1-Creating the model.alp。

1.14 用图表显示变量的变化

在仿真过程中,你也可以通过图表观察变量值如何变化。

1.14.1 查看客户和潜在客户数目动态信息

?创建客户和潜在客户图表

1.点击Step(单步运行)工具条按钮以准备运行模型。

2.点击New Chart(新建图表)工具条按钮。此时即出现一个图表窗口。

3.选择要在图表中显示的变量。点击图表窗口,然后从弹出菜单中选择Chart Setup…(图

表设置)此时即出现Chart Setup(图表设置)对话框。

4.在Variables, parameters, and datasets(变量,参数和数据集)列表中双击root.Custommers

变量以将其加入到图表中。

5.双击root.Potential_Customers变量以将其加入到同一个图表中。

6.点击OK。

?配置此图表

1.点击Step(单步运行)工具条按钮以准备运行模型。

2.右键点击图表窗口,然后从弹出菜单中选择Chart Setup…(图标设置)在打开的对话

框中设置此图表的数值围。

现在点击Restart Model(重新开始模型)按钮,然后点击Run(运行)按钮,以重新开始

相关主题
相关文档
最新文档