8.2第八章 win dynamo
TRANSCRIPT
系统动力学 及 DYNAMO 语
言
系统动力学概述 系统动力学一种以反馈控制理论为基础,以计算机仿真技术为手段,通常用以研究复杂的社会经济系统的定量方法。
适用于处理长期性和周期性的问题。如自然界的生态平衡、社会问题中的经济危机等都呈现周期性规律并需通过较长的历史
阶段来观察。 DYNAMO语言的名字是由 dynamic(动态)和model两词的词头合并而成,表明了其预期的用途:模拟真实世界系统,使得它们随时间变化的动态行为能用计算机来跟踪、模拟。
系统动力学把现实生活中的复杂系统映射成系统动力学流图,DYNAMO语言则把系统流图模型送入计算机并计算出数字结果。
基本思想
系统动力学的基本思想是充分认识系统中的反馈和延迟,并按一定的规则从因果关系图逐步的建立系统动力学流式图的结构模式。
反馈
“ ” “ ” “反馈 是指信息的传送和返回。 反馈 一词的重点是在”返回 上。
反馈的概念是普遍存在的。以取暖系统产生热量温暖房间为例,屋内一个和它相连的探测器将室温的信息返回给取暖系统,以此来控制系统的开关,因此也控制了屋内的温度。室温探测器是反馈装置,它和炉子、管道、抽风机一起组成了一个反馈系统。
负反馈 室温高,则热风量应减小,可在室温对热风调节影响的箭头上加一个负号。反之,热风量大,则室温增加,可在热风调节对室温影响的箭头上加一个正号。从整体上看,室温影响热风量,热风量又影响了室温。从室温回到了室温,这就是一个反馈关系。另一方面,这些互相影响是相互制约的。因为温度高,则热风量减小,使室温降低。反之,室温低,则增大热风量,使室温升高。这种关系称为负反馈。图中用一个带负号的环来表示,这个环称为负反馈环,此处,负反馈环的目的是使室温接近恒定的温度。
热风调节 室 温 _
正反馈
相反,正反馈环总是加大环内的偏差或扰动,它具有不平衡、不断增长的特性。例如在人口系统中,人口数增加了,每年所出生的人就增
“ ”加,这就使人口数按指数规律很快的增长下去。这样,从 人口数 到“ ” “ ”每年出生的人 又返回到 人口数 之间就存在一个正反馈。增强而不是抵消环中某个元素的变化是所有正反馈环的共同特征。
人 口每年出生人口
++
延迟 系统动力学的另一个基本点是延迟。延迟也是普遍存在的,物理学认
“ ”为 在宏观的自然界中不存在突变 。一般来说,原因并非立即就能产生结果,往往某个原因经过了一段时间才能作用产生了效果。比如在调节室温的过程中,空调机马力加大以后,室温不会马上就上升。要经过一定的热传导的过程,热量不断积累,才会使室温上升。
热风调节
热量积累
室温
室温增加
延迟 + 反馈 把这个因果关系图转换成流图。室温是一个存量,室温增加是对应的速率,它们用实物流相连。热风调节使热量积累,所以热量积累是一个存量,热风调节是使其增加的对应速率,它们也用实物流相连。热量积累使室温增加,这是存量对速率的影响,它是一个信息链,用温升时间常
数辅助表示这个关系。
热量积累
系统动力学流图
系统动力学流图
控制作用
从系统
获取信息
由信息
确定如
何控制
基本概念
( 1 ) 存量( LEVEL),图中的长方形,象一个水池,可称为水平、存量、积累量、流位,它是系统的状态,也就是系统的某个指标值。流图中用水池的水位高低来模仿系统状态值的大小。
( 2 ) 速率( RATE),图中的阀门形,可称为决策函数、速度、速率、流率等。它控制着存量的变化。流图用阀门模拟控制水位的高低的机制。
( 3 “ ” “ ”) 实线称为实物流。实线连接 阀门 和 水池 ,模仿控制的通路。它贯穿存量和速率。
( 4 ) 虚线称为信息链,模仿信息传递的过程。它指向速率,表示根据什么信息控制速率。但不能从这条曲线看出具体控制方式的细节;
基本概念
( 5 ) 圆称为辅助变量,辅助表示流速变动的规律。
( 6 ) 小圆加斜线称为常数,是系统中重要的参数。
( 7 ) 不规则的闭曲线称为源或汇。源指实物的来源,汇指实物的去向,好比水的源泉和去向。它是系统之外的元素。
( 8 ) 函数变量、表变量。
( 9 ) 延迟。
系统动力学基本概念
流图中区分实物和信息。存量是实物的积累;速率是实物随时间变化的规律;实物流是实物集散的路径;源和汇是实物的来源或去向。用信息来控制速率变动的规律,信息来自系统外部变量或内部存量;信息流是从信息源到速率的路径。
Part2. Dynamo 语言介绍
语法
时间下标
综述
热风调节模型 L 热量积累 .K= 热量积累 .J+DT*( 热风调节 .JK- 室温增加 .JK) R 热风调节 .KL= 温差 .K* 调节系数 A 温差 .K= 给定温度 - 室温 .K C 调节系数 =0.1 C 给定温度 =100 L 室温 .K= 室温 .J+DT* 室温增加 .JK R 室温增加 .KL= 热量积累 .K/ 温升时间 C 温升时间 =15 N 室温 =80 N 热量积累 =0 SPEC DT=1,LENGTH=80,PRTPER=5,PLTPER=1 PRINT 热风调节 , 热量积累 , 室温增加 , 室温 PLOT 热风调节 =1, 热量积累 =2, 室温增加 =3, 室温 =4, 温差 =5
语法元素
语句类别标识:L 、 R 、 A 、 T 、 N 、 C 、 SPEC 、 PRINT 、PLOT
变量名
时间下标: J 、 K 、 L 、 JK 、 KL 等号( = )
圆点 (.) 函数 SIN 、 COS 、 NOISE 、 TABLE 等。
运算符: + 、 - 、 * 、 /
控制语句
说明语句 SPEC DT=0.5 , LENGTH=50 , PRTPER=2 , PLTPER=3
制表语句 PRINT
制图语句 PLOT
函数——延迟宏函数
一阶物流延迟 DELAY1 ( IN , DEL)
一阶信息延迟 SMOOTH ( IN , DEL )
三阶物流延迟 DELAY3 ( IN , DEL)
三阶信息延迟 DLNF3 ( IN , DEL )
物流延迟
假设某工厂每周向河里倒一次农药残渣,两天农药就自然的被吸收净化了。
在河水
中农药
的存量
—农药吸
收速度
+
农药流
入河水
的速度
+
由于对农药的吸收是花时间的,所以它在水中的
含量不是立即减少,而是逐渐减少,因此吸收速
度是农药倒入速度的延迟。
一阶物流延迟
L SLV.K=SLV.J+DT*(IN.JK-OUT.JK)R OUT.KL=SLV.K/DELN SLV=IN*DEL
一阶物流延迟
如果无需了解其中动态变化的细节,前面的模型可简化为:
R OUT.KL=DELAY1(IN.JK, DEL)
SLV
DELAY1
一阶信息延迟
用过去一段时间内的销售情况作出订货的决策数,便用到
了信息延迟,它所对应的数学方法是指数平均。
A(N)=(4/5)*A(N-1)+(1/5)*S(N-1) 前一天的销量所占的比重是 4/5 ,前两天的销量占的比重
是 1/5*4/5, 前三天的销量占的比重是 1/5*4/5*4/5 ,……
。
A(N)=A(N-1)+(1/5)*[S(N-1)-A(N-1)] 如果以天为单位,令 DT = 1 ,得到:
A(N)=A(N-1)+DT*[S(N-1)-A(N-1)]/5
一阶信息延迟
L A.K=A.J+DT*ADT.JK R ADT.KL=GAP.K/AT C AT=5 A GAP.K=S.K-A.K N A=S
( S)
送入的信息 S 经过了四个元素的相互作用变成了输出信息A , A 在时间上比 S 落后。因为 S 增大以后,它与原来 A 的差变大,因此控制 ADT 增大,使实物流加速向存量积累,存量就逐渐等于 S
GAP
S
A
一阶信息延迟
A.K=SMOOTH(S.K, AT) SMOOTH 的宏 L SMOOTH.K = SMOOTH.J+DT*(S.K-SMOOTH.J)/AT N SMOOTH = S
( S )
AT
A
SMOOTH
三阶物流延迟
三阶信息延迟
( IN )
三阶延迟的响应曲线
三阶物流延迟及信息延迟的响应曲线都是一样的,呈 S 型,如图:
标准函数
EXP(P)
LOGN (P)
SQRT(P)
SIN(P)
COS(Y)
表函数
自变量等间距变化;
如果自变量没有取道表格上的数值,采用线性插值的方法去函数值。
A Y.K=TABLE(TY, X.K, 0, 8, 2) T TY=7, 4, 3, 9, 4
49347Y
86420X
逻辑函数
1 、跳跃函数 CLIP(P, Q, R, S)
2 、开关函数 SWITCH(P, Q, R)
3 、最大值函数 MAX(A, B)
4 、最小值函数 MIN(A, B)
时间控制函数
1 、阶跃函数 STEP(P, Q)
2 、脉冲函数 PULSE(P, Q, R)Q P
P
Q R
时间控制函数
3 、斜坡函数 RAMP(P, Q)
4 、取样函数 SAMPLE(P, Q, R)
斜率为 p
Q
Rp p
p
随机变量
均匀分布随机变量 NOISE () 表示产生一个从 -0.5 到 0.5之间均匀分布的随机变量。
正态分布随机变量 NORMRN ( MEAN , STDV )
生态系统的例子——简化版
在一个封闭的海岛上,有植物、食草动物和食肉动物构成一个简单的生态系统。粗略的分析三者之间的关系,得到右面的因果关系图。
存量速率方程
L 植物 .K =植物 .J+ DT* (植物出生率 .JK-植物死亡率 .JK )
R 植物出生率 .KL=植物 .K*K1R 植物死亡率 .KL=植物 .K*M1L 食草动物 .K =食草动物 .J+ DT* (食草动物出生率 .JK-食草
动物死亡率 .JK )
R 食草动物出生率 .KL=食草动物 .K*K2R 食草动物死亡率 .KL=食草动物 .K*M2L 食肉动物 .K =食肉动物 .J+ DT* (食肉动物出生率 .JK-食肉
动物死亡率 .JK )
R 食肉动物出生率 .KL=食肉动物 .K*K3R 食肉动物死亡率 .KL=食肉动物 .K*M3
常数和初始值方程
N 植物= 10,000N 食草动物= 1,000N 食肉动物= 100C K1 = 3C K2 = 2C K3 = 1C M1=15C M2=20C M3=0.5
生态系统的例子——复杂版
植物出生率受到气候影响和其他不可预知的因素的影响,因此,植物出生率不是一个常数。在此我们引入辅助变量。
植物出生率的方程:
A 植物出生率 .K= 平均出生率常数 +气候影响 .K+ 随机噪音 .K
C 平均出生率常数= 3
A 气候影响 .K=SIN ( 6.28*TIME.K/10 )
A 随机噪音 .K=0.1*NOISE ()
对食肉动物:
A 食肉动物寿命 .K= 平均寿命+瘟疫影响 .KA 瘟疫影响 .K=0.5*COS(6.28*TIME.K/20)C 平均寿命= 2
植物和食草动物的关系 植物作为食草动物的食物,影响食草动物的出生率。
434Y
15105X
食草动物占有的植物数
食草动物出生率
5 10 15
1
3
4
食草动物和食肉动物的关系
食肉动物出生率
5 10 15
0.5
2
2.5
食肉动物占有的食草动物数
食草动物出生率的方程:
A 食草动物出生率 .K=Y.KA Y.K=TABLE ( TY,食草动物所占的植物数 .K , 0 , 15 , 5 )
T TY = 0 , 1 , 3 , 4A 食草动物所占有的植物数 .K=植物 .K/食草动物 .K
食肉动物出生率的方程:
A 食肉动物出生率 .K=Z.KA Y.K=TABLE ( TZ,食肉动物所占的食草动物数 .K , 0 , 15 ,
5 )
T TZ = 0 , 0.5 , 2 , 2.5A 食肉动物所占有的植物数 .K=食草动物 .K/食肉动物 .K
L 植物 .K=植物 .J+DT*(植物出生 .JK-植物死亡 .JK) R 植物出生 .KL=植物 .K*植物出生率 .K A 植物出生率 .K= 平均植物出生率 +气候影响 .K+噪音 .K A 气候影响 .K=SIN(6.28*TIME.K/10) A 噪音 .K=0.1*NOISE() R 植物死亡 .KL=食草动物 .K*植物死亡率 L 食草动物 .K=食草动物 .J+DT*(食草动物出生 .JK-食草动物死亡 .JK) R 食草动物出生 .KL=食草动物 .K*食草动物出生率 .K A 食草动物出生率 .K=TABLE(TY,食草动物占有植物数 .K,0,15,5) T TY=0,1,3,4 A 食草动物占有植物数 .K=植物 .K/食草动物 .K R 食草动物死亡 .KL=食肉动物 .K*食草动物死亡率 L 食肉动物 .K=食肉动物 .J+DT*(食肉动物出生 .JK-食肉动物死亡 .JK) R 食肉动物出生 .KL=食肉动物 .K*食肉动物出生率 .K A 食肉动物出生率 .K=TABLE(TZ,食肉动物占有食草动物 .K,0,15,5) T TZ=0,0.5,2,2.5 A 食肉动物占有食草动物 .K=食草动物 .K/食肉动物 .K R 食肉动物死亡 .KL=食肉动物 .K*食肉动物死亡率 .K A 食肉动物死亡率 .K=1/寿命 .K A 寿命 .K= 平均寿命 +瘟疫影响 .K A 瘟疫影响 .K=0.5*COS(6.28*TIME.K/20) C 平均植物出生率 =3 C 植物死亡率 =0.5 C 食草动物死亡率 =1.2 C 平均寿命 =2 N 植物 =10000 N 食草动物 =1000 N 食肉动物 =100
定货购物商店模拟
商店经理希望了解商店中定货单、库存变化的动态,例如,当外界对商店货物需求发生了一个突然增加后,定货单如何变化,库存如何变化。
定货商店业务处理流程:顾客定货后,由店员处理这些定单。按照定货单到商店的仓库取货,并将货发送给顾客。发货结束后,这笔业务就算完成了。
为了保持商店的仓库总有货物,商店就必需去定货,有着些定货来补充仓库中的库存。
第一步:确定基本框架
存量:积存定单、库存
速率:顾客定单到达速度、发货速度、商店定货速度
+
-
+
-
+
-
++
-
两条实物流:顾客定单流及商店货物流
定货延迟
第二步:确定速率、补充细节
顾客定货速率是一个外部不可控因素,模型将其假设为一个阶跃变化是所引起的系统状态的动态变化。
R 顾客定货 .KL= 正常值+ STEP(100,5) C 正常值= 1000
发货速度与积存定单成正比,与满足顾客定货时间成反比。而满足顾客定货时间与实际库存成反比,与平均的顾客定货成正比。平均的顾客定货是顾客定货的一阶信息延迟。
A 平均的顾客定货 .K=SMOOTH(顾客定货 .JK, 平均时间) C 平均时间= 8 满足顾客定货时间= a/( 实际库存 / 平均的顾客定货 ), 比例
系数 a 可用表函数来确定:
R 发货 .KL= 积存定单 .K/满足顾客定货时间 .K
A 满足顾客定货时间 .K = TABLE(TY, 实际库存 .K/ 平均的
顾客定货 .K,4,12,4)
T TY=1.5,1,0.75
1.5
1
0.75
满足顾客定货时间
4 8 12
商店定货速率是商店的定货策略,此商店经理的策略是将定货速率分成两部分。一部分是与前 8周内的平均顾客定货一致,另一部分是调节实际库存到一个期望库存。调节时间是 4 周。期望库存是希望维持 8 周的平均顾客定货量。
R 商店定货 .KL= 平均顾客定货 .K+(期望库存 .K-实 际库存 .K)/ 调节时间
A 期望库存 .K= 平均顾客定货 .K*期望库存周数
C 期望库存周数= 8 C 调节时间= 4
L 积存定单 .K= 积存定单 .J+DT*(顾客定货 .JK-发货 .JK) N 积存定单 =满足顾客定货时间 *顾客定货 R 发货 .KL= 积存定单 .K/满足顾客定货时间 .K A 满足顾客定货时间 .K=TABLE(TDFR,X.K,4,12,4) A X.K= 实际库存 .K/ 平均顾客定货 .K T TDFR=1.5,1,0.75 A 平均顾客定货 .K=SMOOTH(顾客定货 .JK, 平均时间 ) C 平均时间 =8 A 期望库存 .K=库存周数 * 平均顾客定货 .K C 库存周数 =8 R 定货延迟 .KL=DELAY3(商店定货 .JK, 定货延迟时间 ) R 商店定货 .KL= 平均顾客定货 .K+(期望库存 .K- 实际库存 .K)/ 调节时间 C 调节时间 =4 C 定货延迟时间 =6 L 实际库存 .K= 实际库存 .J+DT*( 定货延迟 .JK-发货 .JK) N 实际库存 =期望库存 R 顾客定货 .KL= 正常值 +STEP(修正值 ,5) C 正常值 =1000 C 修正值 =100
Part3. 建模过程
思路步骤动态性问题流图概念化
系统动力学建模研究步骤
策略的执行 对一个系统的认识
问题的定义策略分析
计算机模拟 系统的概念化
模型的建立
流图与系统概念化
无论是对于初学者还是经验丰富的建模者,系统概念化阶段都
是系统动力学中最困难的阶段之一。概念化阶段的两大准则是
:( 1)明确建模目的;( 2)研究问题,而不是研究整个系
统。这两点是建模取得成功的先决条件。明确了研究的问题和
建模目的,就好像佩带了一副滤色镜,可以滤去不必要的细节
,集中精力研究反馈系统中的主要方面。它们使系统动力学的
应用者和 DYNAMO的建模者,不必为了研究某个事物而去考虑所
有的事物。
-
结果分析
系统动力学研究所得出的策略建议,不仅来自模型的最终计算
结果,而且还来自模拟过程中通过各阶段迭代所得到的认识。
系统动力学研究最终应该能够提出切实可行的策略建议。因为
模型只是达到目的的工具,最终的目的是提高对现实世界的认
识,增加对客观规律的理解。
Part6. 建模软件
功能介绍
使用说明
图形DYNAMO
图形 DYNAMO 建模软件是由中国人民大学信息学院经济科学实验
室研发制作的利用 DYNAMO语言建模的工具。它在传统 DYNAMO
语言的基础上,充分运用图形技术,为连续模拟语言的实际应
用提供了全新的更为良好的环境和人机界面。对于各类模拟项
目具有特别的意义。
图形 DYNAMO 软件有系统动力学流图和 DYNAMO语言的传统方程
两种输入方式,可以根据用户的各种需要对模型进行处理,将
模型、模型的编译结果、计算结果存储于数据库中,并可以按
照用户的要求显示输出。
传统方程输入方式
在传统方程模式下文本输入所要运行的传统方程
软件根据 DYNAMO语言的规则进行编译,形成动方程和静方程
编译成功后由用户进行变量的挑选
若挑选完毕则可进行计算
最后根据用户的要求显示计算结果,可以图形显示,也可以文本显示
系统动力学流图输入方式
在流图模式下在画布上画出流图
检查流图并形成动方程和静方程
由用户进行对动方程和静方程的补充
由用户进行变量挑选
补充成功且已挑选变量,则可以进行计算
最后根据用户的要求显示计算结果,可以图形显示,也可以文本显示
创建模型
编辑方程
模型编译
结果计算
绘制流图
补充方程
变量选择
Dynamo软件使用综述
传统方程、流图两种输入方式;
模型建立模方程编辑 / 流图绘制流模型编译模静
方程补充 / 动方程补充动变量选择 /结果显示。
VENSIM
VENSIM 是一个建模工具 , 可以建立动态系统的概念化的 ,文档化的 ,仿真 , 分析和优化模型 .PLE( 个人学习版 ) 和 PLE plus 是 VENSIM的缩减版 ,主要用来简单化学习动态系统 .提供了一种简单富有弹性的方法从常规的循环或储存过程和流程图建立模型 .
http://www.vensim.com/
VENSIM 应用实例——牛鞭效应 宝洁公司( P&G )在研究“尿不湿”的市场需求时发现,该产品的零售数量
相当稳定,波动性不大,但在考察分销中心的订货情况时却吃惊地发现其订
单的变动程度比零售数量的波动大得多,而分销中心是将批发商的订货需求
量汇总后进行订货的。通过进一步研究后发现,零售商往往根据对历史和现
实销售情况的预测,确定一个较客观的订货量,但为了能应付客户需求增加
的变化,他们通常会将预测订货量进行一定的放大后向批发商订货,而批发
商也出于同样的考虑,会在其订货量的基础上再进行一定的放大后向分销中
心订货——就这样,虽然顾客需求量并没有大的波动,但经过零售商、批发
商和分销中心的订货放大后,订货量便一级一级地被放大了。
供应链的信息流从末端(最终客户)向源端(原始生产商)传递时,需求信
息的波动会越来越大,这种信息扭曲的放大作用在图形上很像一条甩起来的
牛鞭,因此被形象地称为牛鞭效应( Bullwhip Effect )。
流图的说明:
三个存量: Distributor Inventory (分销商库存)
Wholesaler Inventory (批发商库存)
Retail Inventory (零售商库存)
四个速率: Factory Shipments (工厂发货速度)
Distributor Shipments (分销商发货速度)
Wholesaler Shipments (批发商发货速度)
Retail Sales (零售速度)
四个常量: Inventory Coverage Time :各个企业应该持有多少周的库存
Shipping Delay :表示下游企业从发出订单到接收上游企业的订货需要多长时间
Sale Average Time :给出了各个企业在进行订单预测时从多少周以前的销售情况考察起
Inventory Adjust Time :表示企业调整库存所需要的时间
两个开关变量: VMI Switch :是否使用 VMI 策略 Random Orders :零售情况是否随机变化
三个三阶物流延迟: Factory Shipments = DELAY3(Distributor Orders, Shipping
Delay) Distributor Shipments = DELAY3( Wholesaler Orders, Shipping
Delay ) Wholesaler Shipments = DELAY3( Retail Orders, Shipping
Delay)
三个一阶信息延迟:
Distributor Sales Forecast = SMOOTH (Distributor Shipments, Sale Average Time)
Wholesaler Sales Forecast = SMOOTH (Wholesaler Shipments, Sale Average Time )
Retail Sales Forecast = SMOOTH (Retail Sales , Sale Average Time )
Retail Sales Forecast
VMI 策略
VMI 即供货商管理库存( Vendor Management Inventory )
VMI 是由供应商来为客户管理库存,为他们制定库存策略和补货计划,根据客户的销售信息和库存水平为客户进行补货的一种库存管理策略和管理模式,它是供应链上成员间达成紧密义务伙伴关系后的一种结果,既是一种有效的供应链管理优化方法,也是供应链上企业联盟的一种库存
管理策略。
VMI 策略与传统模式的比较
传统模式:当一个分销商的库存水平低于安全库存量时,他需要向生产商发出采购定单,分销商自己控制了库存策
略、计划、补货时间和数量等业务,由生产商为其供货。
生产商 分销商
基于预测的定单
货物送达
VMI 策略与传统模式的比较 VMI 模式:生产商从分销商处接收电子数据,这些数据代
表了分销商销售和库存的真实信息(如 POS 和库存水平的信息等),然后生产商通过处理和分析这些信息得知分销商仓库里每一种货物的库存情况和市场需求,就可以根据它们为分销商制定和维护库存计划,在这种模式下,定
单是由生产商生成的,而不是由分销商完成。
生产商 分销商
实时的客户需求信息
按实际需求发货
图 7 VMI 模式
两种订单策略 Distributor Orders
IF THEN ELSE(VMI Switch=0, (Distributor Sales Forecast+(Desired Distributor Inventory-Distributor Inventory)/Inventory Adjust Time), (Retail Sales+(Desired Retail Inventory*3-Retail Inventory-Wholesaler Inventory-Distributor Inventory)/Inventory Adjust Time))
Wholesaler Orders IF THEN ELSE(VMI Switch=0, (Wholesaler Sales
Forecast+(Desired Wholesaler Inventory-Wholesaler Inventory)/Inventory Adjust Time) , (Retail Sales+(Desired Retail Inventory*2-Retail Inventory-Wholesaler Inventory)/Inventory Adjust Time))
Retail Orders
模拟结果(一) 顾客的需求发生一次变化,传统模式订货
模拟结果(二)
顾客的需求随机变化,传统模式订货
模拟结果(三) 顾客的需求发生一次变化, VMI 模式订货
模拟结果(二) 顾客的需求随机变化,传统模式订货