《《DYNAMOL模拟语言》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《DYNAMOL模拟语言》PPT课件.ppt(51页珍藏版)》请在金锄头文库上搜索。
1、第三章第三章 DYNAMO模拟语言模拟语言DYNAMO,取名来自,取名来自Dynamic Models的的缩写,是一种计算机模拟语言系统。缩写,是一种计算机模拟语言系统。 用用DYNAMO写成的反馈系统模型经计写成的反馈系统模型经计算机进行模拟,可得到随时间连续变化的算机进行模拟,可得到随时间连续变化的系统图像。建模者可据此分析系统的结构、系统图像。建模者可据此分析系统的结构、功能及行为。在此基础上,进行政策分析功能及行为。在此基础上,进行政策分析与决策,实现预测和择优的目的。与决策,实现预测和择优的目的。 1 DYNAMO中的时间下标中的时间下标DTDTJKKLKJL现在时刻现在时刻前一时刻
2、前一时刻下一时刻下一时刻图图2.1 DYNAMO中的时间下标中的时间下标例如:例如:库存系统的方程可用库存系统的方程可用DYNAMO表示为:表示为:INV.K=INV.J+DT*(ORRE.JKSH.JK)式中:式中: INV.K库存现有量;库存现有量; INV.JDT前的库存量(前的库存量(J时刻的库时刻的库存量);存量); ORREJK间隔内的入库量;间隔内的入库量; SHJK间隔内的发货量。间隔内的发货量。假如某仓库每月入库量为假如某仓库每月入库量为80件,发货量为件,发货量为100件,件, 5个月前的库存量为个月前的库存量为1200件,求现件,求现在的库存量?在的库存量?INV(现在)
3、(现在)INV(过去)(时间间隔)(过去)(时间间隔)(纯速率)(纯速率) 12005(80100) 12005(20) 1200100 1100件件2 DYNAMO的有关规定与规则的有关规定与规则21 变量名字符的规定变量名字符的规定 变量名字符不超过变量名字符不超过6个。变量名的第一字个。变量名的第一字符必须是字母,其后则可为字母或数字。符必须是字母,其后则可为字母或数字。 如:如:LEV、LEV1、LEV2、X1、X2等等2. 2 代数运算符的表示代数运算符的表示 SD通用的代数运算符:通用的代数运算符: 加法:加法:= 减法:减法: 乘法:乘法:* 除法:除法:/ 代数运算的顺序是:先
4、乘方、开方,代数运算的顺序是:先乘方、开方,再乘、除,最后加、减。再乘、除,最后加、减。 括号内的加、减优于括号外的运算。括号内的加、减优于括号外的运算。 同一层次的运算符,按先左后右的原同一层次的运算符,按先左后右的原则进行运算。则进行运算。23 方程的列数方程的列数一个方程中不能有空格,每行不能超过一个方程中不能有空格,每行不能超过72列。一行不够可另起一行,但第一列必须列。一行不够可另起一行,但第一列必须以字符以字符“X”作为标记。(作为标记。(P66)2 4 变量与常量变量与常量DYNAMO中的所有数量可分为大两类:中的所有数量可分为大两类:(1)变量:其值是可变的,有时间下标。)变量
5、:其值是可变的,有时间下标。(2)常量:其值在一次模拟过程中不变,)常量:其值在一次模拟过程中不变,没有时间下标。没有时间下标。例如:例如:SALE.K 变化的销售量变化的销售量 SALE固定的销售量固定的销售量3 DYNAMO的方程式的方程式3.1 状态(状态(State,Level)变量方程)变量方程 在在SD中,凡是能对输入和输出变量进中,凡是能对输入和输出变量进行积累的变量称为状态变量,计算状态变行积累的变量称为状态变量,计算状态变量的方程称为状态变量方程。量的方程称为状态变量方程。 状态变量方程在状态变量方程在 DYNAMO模型中,以模型中,以字母字母L为标志写在第一列。为标志写在第
6、一列。例如例如1:L LEVEL.K=LEVEL.J+DT*(INFLOW.JK OUTFLOW.JK)式中:式中:LEVEL状态变量;状态变量;INFLOW输入速率(变化率);输入速率(变化率);OUTFLOW输出速率(变化率);输出速率(变化率);DT计算间隔(从计算间隔(从J时刻到时刻到K时刻)。时刻)。例如例如2:L POP.K=POP.J+DT*(BIRHS.JKDEATHS.JK)式中:式中:POP人口(人);人口(人);BIRTHS出生率(人出生率(人/年);年);DEATHS死亡率(人死亡率(人/年)。年)。32 速率(速率(Rate)方程)方程在状态变量方程中代表输入与输出的
7、变量在状态变量方程中代表输入与输出的变量称为速率,它由速率方程求出。在称为速率,它由速率方程求出。在DYNAMO中,速率方程以字母中,速率方程以字母R为标志。为标志。与状态变量方程不同的是,速率方程没有与状态变量方程不同的是,速率方程没有标准格式,只能根据系统的具体情况书写。标准格式,只能根据系统的具体情况书写。例如例如1:R BIRTHS.KL=BRF*POP.K式中:式中:BIRTHS出生率(人出生率(人/年);年);BRF出生率系数(出生率系数(1/年);年);POP人口(人)。人口(人)。例如:例如:R DEATHS.KL=POP.K/AVLIFE式中:式中:DEATHS死亡率(人死亡
8、率(人/年);年);POP人口(人);人口(人);AVLIFE平均寿命(年)。平均寿命(年)。速率方程的特性:速率方程的特性:(1)速率方程无一定的格式;)速率方程无一定的格式;(2)速率的值在)速率的值在DT时间内式不变的。速时间内式不变的。速率方程式在率方程式在K时刻进行计算,而在自时刻进行计算,而在自K至至L的时间间隔(的时间间隔(DT)中保持不变;)中保持不变;(3)速率的时间下标为)速率的时间下标为KL。33 辅助(辅助(Auxiliary)方程)方程在建立速率方程之前,若未先做好某些代在建立速率方程之前,若未先做好某些代数计算,把速率方程中必需的信息仔细加数计算,把速率方程中必需的
9、信息仔细加以考虑,那么将遇到很大的困难。这些附以考虑,那么将遇到很大的困难。这些附加的代数计算,在加的代数计算,在DYNAMO中称为辅助方中称为辅助方程,方程中的变量则称为辅助变量。程,方程中的变量则称为辅助变量。在在DYNAMO语言中,辅助方程要以字母语言中,辅助方程要以字母A为标志写在方程的前面。为标志写在方程的前面。辅助方程的特性:辅助方程的特性:(1)辅助方程没有统一的标准格式;)辅助方程没有统一的标准格式;(2)辅助变量的时间下标为)辅助变量的时间下标为K;(3)辅助变量可由现在时刻的其他变量:)辅助变量可由现在时刻的其他变量:状态变量、速率变量或其他辅助变量求出。状态变量、速率变量
10、或其他辅助变量求出。34 表函数(表函数(Table Function) 表函数表函数也是一种辅助方程,其标准格式为:也是一种辅助方程,其标准格式为: A VAR.K=TABLE(表名,输入变量,最表名,输入变量,最 小小X值值Xm,最大的,最大的X值值XM,X的增量的增量X)T 表名表名Y0/Y1/Y2/Yn Y0/Y1/Y2/Yn为特定点为特定点n的的Y坐标坐标 值。值。例如:例如:P5335 N方程方程N方程的主要用途是为状态变量方程赋予初方程的主要用途是为状态变量方程赋予初始值。始值。在模型程序中,在模型程序中,N方程通常紧跟着状态方程。方程通常紧跟着状态方程。例如:例如: L INV
11、.K=INV.J+DT*(ORRE,JKSH,JK) N INV=10003.6 C方程方程C方程式用于给常数赋值。方程式用于给常数赋值。例如:例如:N BRF=LPFY*OPL*FS*FFC LPFY=3C OPL=3C FS=0.6C FF=0.53.7 变量与方程图形表示的通用符号变量与方程图形表示的通用符号 P 564 DYNAMO的函数的函数 DYNAMO拥有的主要函数有:延迟拥有的主要函数有:延迟(Delay)函数、平滑()函数、平滑(Smooth)函数、)函数、数学函数、逻辑函数以及测试函数等。这数学函数、逻辑函数以及测试函数等。这些函数对于建模都是十分重要的。些函数对于建模都是
12、十分重要的。41 延迟函数(延迟函数(Delay)4.1.1 物质延迟物质延迟 例如:疾病蔓延模型其状态方程:其状态方程:L INC.K=INC.J+DT*(INF.JKSYMP.JK)N INC=TSS*INFR SYMP.KL=INC.K/TSS式中:式中: TSS为潜伏期,比如流感的潜伏期为为潜伏期,比如流感的潜伏期为3天。天。上述方程式可用上述方程式可用DYNAMO中的中的DELAY1方方程代替,功能相同,简明方便。程代替,功能相同,简明方便。R SYMP.KL=DELAY1(INF.JK,TSS)(1)DELAY1 一阶延迟环节一阶延迟环节 DELAY1系指一阶指数物质延迟。它隐系指
13、一阶指数物质延迟。它隐含了一个状态变量(含了一个状态变量(INC)。以)。以DELAY1代代替一组方程,适应方便,但缺点是该状态替一组方程,适应方便,但缺点是该状态变量被隐含了,不能绘图和打印出来。变量被隐含了,不能绘图和打印出来。如图如图4。6 疾病模型中的疾病模型中的DELAY1环节环节(P58)一阶物质延迟环节的输出变化率取同一类一阶物质延迟环节的输出变化率取同一类型表达式型表达式LEV.K/DEL,LEV为内部隐为内部隐含的状态变量,含的状态变量,DEL为延迟时间。为延迟时间。隐含于隐含于DELAY1内的状态变量的初始值,内的状态变量的初始值,DYNAMO能自动处理。能自动处理。 (2
14、)DELAY3三阶延迟环节三阶延迟环节P58 图图4。7 三阶延迟结构的流图三阶延迟结构的流图(3)DELAYP DELAYR函数的功能是能把函数的功能是能把DELAYP3隐含隐含的状态变量显现出来。的状态变量显现出来。 R SYMP.KL=DELAYP(INF,JK,TSS,INC,K)式中式中INC(处潜伏期人口)为三阶延迟环节(处潜伏期人口)为三阶延迟环节中的三个内部状态变量总和。中的三个内部状态变量总和。 一个一个DELAYP方程代表了方程代表了10个方程:三个个方程:三个状态变量、三个状态初值、三个变化率和一状态变量、三个状态初值、三个变化率和一个状态变量总和的辅助方程。个状态变量总
15、和的辅助方程。(4)物质延迟的阶数)物质延迟的阶数阶数指的是延迟环节内部包含的状态变量阶数指的是延迟环节内部包含的状态变量数。数。一阶延迟表现出简单的指数形增长的特性。一阶延迟表现出简单的指数形增长的特性。二阶以上延迟则表现出二阶以上延迟则表现出S形增长的特性。形增长的特性。所以,可以用三阶延迟代表其他延迟环节。所以,可以用三阶延迟代表其他延迟环节。究竟采用哪一阶数的延迟,应根据实际系究竟采用哪一阶数的延迟,应根据实际系统如何响应输入的突然变化来定。统如何响应输入的突然变化来定。4. 2 平滑函数平滑函数 平滑(平均)的概念:信息在一段时间平滑(平均)的概念:信息在一段时间内的平均值。内的平均
16、值。 信息的平滑和平均实职上是一种积累过信息的平滑和平均实职上是一种积累过程。它可以包含一个或多个状态变量。程。它可以包含一个或多个状态变量。 图2. 4 一阶平滑结构流图 平滑(平均)函数的方程式:平滑(平均)函数的方程式:L SVER.K=SVAR.J+DT*SRARE.JKN SVAR=VARR SRARE.KL=(VAR.KSVAR.K)/STIME式中:式中:SVAR已平滑的变量;已平滑的变量;VAR待平滑的变量;待平滑的变量;SRATE平滑速率;平滑速率;STIME平滑时间。平滑时间。上述方程式可用上述方程式可用DYNAMO中的辅助方程中的辅助方程SMOOTH函数代替:函数代替:A
17、 SVAR.K=SMOOTH(VAR,K, ATIME)式中:式中:SMOOTH平滑函数平滑函数DYNAMO能自动处理方程的初始值问题。能自动处理方程的初始值问题。设置:设置:t0时,时,SVAR=VAR.被平滑的变量可以是状态、速率、辅助变被平滑的变量可以是状态、速率、辅助变量。平滑时间量。平滑时间STIME 通常为常数,但也可通常为常数,但也可以是变化的。以是变化的。43 信息延迟信息延迟与物质在系统中流动存在延迟类似,信息与物质在系统中流动存在延迟类似,信息在系统中传递也存在延迟。在系统中传递也存在延迟。例如:国内生产总值(例如:国内生产总值(GNP) 社会总产值(社会总产值(Total
18、 Production of Society) 公司当日的销售率公司当日的销售率(1)一阶信息延迟函数)一阶信息延迟函数SMOOTH平滑函数经常用来描述信息的延迟。平滑函数经常用来描述信息的延迟。(2)三阶信息延迟函数)三阶信息延迟函数DLINF3如图如图4.12(P62)A SV3.K=DLINF3(VAR.K, STIME)式中:式中: SV3三阶信息延迟输出;三阶信息延迟输出; DLINF3三阶信息延迟;三阶信息延迟; VAR输入变量;输入变量; STIME平滑或延迟时间。平滑或延迟时间。DELAY3和和DLINF3的区别:的区别: 物质流变化率可输入物质延迟环节;物质流变化率可输入物质
19、延迟环节; 任何信息任何信息速率、状态、辅助变量均速率、状态、辅助变量均可被加以平滑,实现信息延迟。可被加以平滑,实现信息延迟。 物质延迟与信息平滑和延迟函数的流物质延迟与信息平滑和延迟函数的流图符号如图图符号如图4.13(P62)44 数学函数数学函数DYNAMO备有五种数学函数,采用标准数备有五种数学函数,采用标准数学符号:学符号:(1)SQRT(X)= ,非负值变量,非负值变量X的开方;的开方;(2)SIN(X)=sinX,变量,变量X的正弦;的正弦;(3)COS(X)=cos(X),变量,变量X的余弦;的余弦;(4) ,指数函数,指数函数,e2.718;(5) ,以,以e为底的自然对数
20、。为底的自然对数。45 逻辑函数逻辑函数DYNAMO的逻辑函数有的逻辑函数有MAX, MIN, CLIP, SWITCH等。等。(1)MAX(A,B)取取A,B中较大者,即:中较大者,即: MAX(A,B)A,若,若AB B,若,若AB(2)MIN(A,B)取)取A,B中较小者,即:中较小者,即: MIN(A,B)B,若,若AB A,若,若ABMAX函数可用来产生数的绝对值,表达式函数可用来产生数的绝对值,表达式为:为: MAN(A,A)MAX函数也可用于防止出现除式分母为函数也可用于防止出现除式分母为0和和负值的情况,表达式为:负值的情况,表达式为: A/MAX(B,0.01(3) CLIP
21、函数函数CLIP(A,B,X,Y)A,若,若XY B,若,若XY 此函数在模型模拟过程中,用于更换此函数在模型模拟过程中,用于更换或改变原来的函数和常数值。或改变原来的函数和常数值。(4)SWITCH函数函数 SWITCH(A,B,X)A,若,若X0 B,若,若X046 测试函数(测试函数(TEST) 通过不同类型的摄动试验可以从模型及其通过不同类型的摄动试验可以从模型及其代表的反馈系统获取大量的信息。这些摄代表的反馈系统获取大量的信息。这些摄动试验式借助各类测试函数进行的。在模动试验式借助各类测试函数进行的。在模型测试中,可采用变量的突增、斜坡函数、型测试中,可采用变量的突增、斜坡函数、振荡
22、、随机干扰等。这些试验均有助于揭振荡、随机干扰等。这些试验均有助于揭示模型内部结构与其动态行为的关系。这示模型内部结构与其动态行为的关系。这类测试的目的在于深入地研究模型和它所类测试的目的在于深入地研究模型和它所代表的信息反馈系统。代表的信息反馈系统。DYNAMO的外生摄动的测试函数包括:阶的外生摄动的测试函数包括:阶跃跃STEP、斜坡、斜坡RAMP、脉冲、脉冲PULSE、正、正弦弦SIN和噪声和噪声NOISE函数。函数。例如:图例如:图4.14 简单库存控制系统模型流图简单库存控制系统模型流图(P65)(1 1)阶跃函数)阶跃函数(The STEP Function)阶跃函数:幅值在给定时刻
23、发生突变的函阶跃函数:幅值在给定时刻发生突变的函数。数。STEP(A,B)A阶跃的幅度;阶跃的幅度;B阶跃发生的时刻。阶跃发生的时刻。该函数表示:在时刻该函数表示:在时刻B前前STEP函数的值为函数的值为0,当时间等于或大于,当时间等于或大于B时,时,STEP函数等函数等于于A的值。的值。阶跃幅值阶跃幅值A的值可正可负。的值可正可负。例如:例如:(见书(见书P67,图,图4。15) A TEST.K=STEP(HGHT,STRT) C HGHT=10 C STRT=2(2 2)斜坡函数)斜坡函数(The RAMP Function)斜坡函数是一种连续增长或下降的时间的斜坡函数是一种连续增长或下
24、降的时间的线性函数。线性函数。 RAMP(A,B)式中:式中:A线性函数的斜率;线性函数的斜率;B斜坡函数的起始时刻。斜坡函数的起始时刻。在时间在时间B时刻前,时刻前,RAMP取取0值,在值,在B或或B时时刻之后其值由线性函数决定:刻之后其值由线性函数决定: A*(TIME.KB)例如:例如: (见书(见书P68,图,图4。16) A TEST.K=RAMP(SLP,STRT) C SLP=20 C STRT=2(3 3)脉冲函数)脉冲函数(The PULSE Function) 脉冲函数为脉冲函数为DYNAMO提供瞬时冲击的方提供瞬时冲击的方法。变量在每一次短促的变动后立即回至法。变量在每一
25、次短促的变动后立即回至原值。原值。 PULSE(A,B,C)式中:式中: A脉冲的幅度;脉冲的幅度;B第一个脉冲出现的时刻;第一个脉冲出现的时刻;C相邻两个脉冲之间的间隔。相邻两个脉冲之间的间隔。脉冲函数是一个周期性函数,分为单脉冲脉冲函数是一个周期性函数,分为单脉冲和周期性脉冲。和周期性脉冲。例如:例如:P69 图图4.17(4)正弦函数()正弦函数(The SIN Function)正弦函数,用于测试模型对于正弦振荡输正弦函数,用于测试模型对于正弦振荡输入变量的响应。入变量的响应。A*SIN(6.283*TIME.K/B)式中:式中: A振荡幅度;振荡幅度;B振荡周期;振荡周期;6.283
26、2(为圆周率)。为圆周率)。例如:例如: P71 图图4.19和图和图4.20(5)噪声函数()噪声函数(The NOISE Function)DYNAMO备有随机数发生函数,称为噪声备有随机数发生函数,称为噪声函数。表达式为:函数。表达式为: NOISE 5 DYNAMO的输出问题的输出问题5.1 输出语句输出语句在建立状态、速率与辅助变量方程之后,在建立状态、速率与辅助变量方程之后,再加上一些输出语句,就能使计算机执行再加上一些输出语句,就能使计算机执行模拟、打印结果和绘制曲线。模拟、打印结果和绘制曲线。另外,在各种方程编制完毕后,建模者即另外,在各种方程编制完毕后,建模者即可用可用SD的
27、专用模拟软件进行模拟,并可根的专用模拟软件进行模拟,并可根据模拟结果,进行政策分析与决策。据模拟结果,进行政策分析与决策。(1)SPEC语句语句 在在SD中,中,SPEC语句规定模型模拟需要语句规定模型模拟需要的参数。的参数。此语句包括此语句包括4种参数与常数:种参数与常数:DT、 LENGTH、 PRTPER和和PLTPER。 DT计算间隔,即两次模拟计算之计算间隔,即两次模拟计算之间隔;间隔; LENGTH这是一个时间常数,规定这是一个时间常数,规定模拟停止的时刻。当模拟停止的时刻。当TIME.K等于或大于等于或大于LENGTH的值时,即令模拟停止;的值时,即令模拟停止;PRTPER给定绘
28、制图形相邻两点的时给定绘制图形相邻两点的时间间隔。不加特别说明时,间间隔。不加特别说明时,DYNAMO假定假定PRTPER值为值为0;PLTPER给定打印结果相邻两数据间给定打印结果相邻两数据间的时间间隔。不加特别说明时,的时间间隔。不加特别说明时,DYNAMO假定假定PLTPER值为值为0。例如:例如:SPEC DT=1/LENGTH=100/PRTPER=5/PLTPER=2 如果起始时间为如果起始时间为0,则该语句的结果是:,则该语句的结果是:51行绘图输出(第一行对于时间为行绘图输出(第一行对于时间为0,另加,另加LENGTH/PLTPER=100/2=50行),并以行),并以表格形式打印出数据表格形式打印出数据21行。行。(2 2)PRINTPRINT与与PLOTPLOT语句语句PRINT与与PLOT语句分别说明需要打印与绘语句分别说明需要打印与绘图的变量。图的变量。