您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 第三章DYNAMOL模拟语言.
第三章DYNAMO模拟语言•DYNAMO,取名来自DynamicModels的缩写,是一种计算机模拟语言系统。•用DYNAMO写成的反馈系统模型经计算机进行模拟,可得到随时间连续变化的系统图像。建模者可据此分析系统的结构、功能及行为。在此基础上,进行政策分析与决策,实现预测和择优的目的。1DYNAMO中的时间下标DTDTJKKLKJL现在时刻前一时刻下一时刻图2.1DYNAMO中的时间下标例如:库存系统的方程可用DYNAMO表示为:INV.K=INV.J+DT*(ORRE.JK-SH.JK)式中:INV.K——库存现有量;INV.J——DT前的库存量(J时刻的库存量);ORRE——JK间隔内的入库量;SH——KL间隔内的发货量。假如某仓库每月入库量为80件,发货量为100件,5个月前的库存量为1200件,求现在的库存量?INV(现在)=INV(过去)+(时间间隔)×(纯速率)=1200+5×(80-100)=1200+5×(-20)=1200-100=1100件2DYNAMO的有关规定与规则2.1变量名字符的规定变量名字符不超过6个。变量名的第一字符必须是字母,其后则可为字母或数字。如:LEV、LEV1、LEV2、X1、X2等2.2代数运算符的表示SD通用的代数运算符:加法:=减法:-乘法:*除法:/代数运算的顺序是:先乘方、开方,再乘、除,最后加、减。括号内的加、减优于括号外的运算。同一层次的运算符,按先左后右的原则进行运算。2.3方程的列数一个方程中不能有空格,每行不能超过72列。一行不够可另起一行,但第一列必须以字符“X”作为标记。(P66)2.4变量与常量DYNAMO中的所以数量可分为大两类:(1)变量:其值是可变的,有时间下标。(2)常量:其值在一次模拟过程中不变,没有时间下标。例如:SALE.K——变化的销售量SALE——固定的销售量3DYNAMO的方程式3.1状态(State,Level)变量方程•在SD中,凡是能对输入和输出变量进行积累的变量称为状态变量,计算状态变量的方程称为状态变量方程。•状态变量方程在DYNAMO模型中,以字母L为标志写在第一列。例如1:LLEVEL.K=LEVEL.J+DT*(INFLOW.JK-OUTFLOW.JK)式中:LEVEL——状态变量;INFLOW——输入速率(变化率);OUTFLOW——输出速率(变化率);DT——计算间隔(从J时刻到K时刻)。例如2:LPOP.K=POP.J+DT*(BIRHS.JK-DEATHS.JK)式中:POP——人口(人);BIRTHS——出生率(人/年);DEATHS——死亡率(人/年)。3.2速率(Rate)方程•在状态变量方程中代表输入与输出的变量称为速率,它由速率方程求出。在DYNAMO中,速率方程以字母R为标志。与状态变量方程不同的是,速率方程没有标准格式,只能根据系统的具体情况书写。例如1:RBIRTHS.KL=BRF*POP.K式中:BIRTHS——出生率(人/年);BRF——出生率系数(1/年);POP——人口(人)。例如:RDEATHS.KL=POP.K/AVLIFE式中:DEATHS——死亡率(人/年);POP——人口(人);AVLIFE——平均寿命(年)。速率方程的特性:(1)速率方程无一定的格式;(2)速率的值在DT时间内式不变的。速率方程式在K时刻进行计算,而在自K至L的时间间隔(DT)中保持不变;(3)速率的时间下标为KL。3.3辅助(Auxiliary)方程•在建立速率方程之前,若未先做好某些代数计算,把速率方程中必需的信息仔细加以考虑,那么将遇到很大的困难。这些附加的代数计算,在DYNAMO中称为辅助方程,方程中的变量则称为辅助变量。•在DYNAMO语言中,辅助方程要以字母A为标志写在方程的前面。•辅助方程的特性:(1)辅助方程没有统一的标准格式;(2)辅助变量的时间下标为K;(3)辅助变量可由现在时刻的其他变量:状态变量、速率变量或其他辅助变量求出。3.4表函数(TableFunction)表函数也是一种辅助方程,其标准格式为:AVAR.K=TABLE(表名,输入变量,最小X值Xm,最大的X值XM,X的增量△X)T表名=Y0/Y1/Y2/……YnY0/Y1/Y2/……Yn为特定点n的Y坐标值。例如:P533.5N方程N方程的主要用途是为状态变量方程赋予初始值。在模型程序中,N方程通常紧跟着状态方程。例如:LINV.K=INV.J+DT*(ORRE,JK-SH,JK)NINV=10003.6C方程C方程式用于给常数赋值。例如:NBRF=LPFY*OPL*FS*FFCLPFY=3COPL=3CFS=0.6CFF=0.53.7变量与方程图形表示的通用符号•P564DYNAMO的函数•DYNAMO拥有的主要函数有:延迟(Delay)函数、平滑(Smooth)函数、数学函数、逻辑函数以及测试函数等。这些函数对于建模都是十分重要的。4.1延迟函数(Delay)4.1.1物质延迟•例如:疾病蔓延模型SUSC未病者SICK病患者RECOV康复着INF传染率CURE治愈率图2.2疾病模型的基本结构SUSC未病者SICK病患者RECOV康复着CURE治愈率图2.3四状态变量疾病模型结构INC处潜伏期者SYMP发病率INF传染率其状态方程:LINC.K=INC.J+DT*(INF.JK-SYMP.JK)NINC=TSS*INFRSYMP.KL=INC.K/TSS式中:TSS为潜伏期,比如流感的潜伏期为3天。上述方程式可用DYNAMO中的DELAY1方程代替,功能相同,简明方便。RSYMP.KL=DELAY1(INF.JK,TSS)(1)DELAY1——一阶延迟环节DELAY1系指一阶指数物质延迟。它隐含了一个状态变量(INC)。以DELAY1代替一组方程,适应方便,但缺点是该状态变量被隐含了,不能绘图和打印出来。如图4。6疾病模型中的DELAY1环节(P58)一阶物质延迟环节的输出变化率取同一类型表达式——LEV.K/DEL,LEV为内部隐含的状态变量,DEL为延迟时间。隐含于DELAY1内的状态变量的初始值,DYNAMO能自动处理。(2)DELAY3——三阶延迟环节P58图4。7三阶延迟结构的流图(3)DELAYPDELAYR函数的功能是能把DELAYP3隐含的状态变量显现出来。RSYMP.KL=DELAYP(INF,JK,TSS,INC,K)式中INC(处潜伏期人口)为三阶延迟环节中的三个内部状态变量总和。一个DELAYP方程代表了10个方程:三个状态变量、三个状态初值、三个变化率和一个状态变量总和的辅助方程。(4)物质延迟的阶数阶数指的是延迟环节内部包含的状态变量数。一阶延迟表现出简单的指数形增长的特性。二阶以上延迟则表现出S形增长的特性。所以,可以用三阶延迟代表其他延迟环节。究竟采用哪一阶数的延迟,应根据实际系统如何响应输入的突然变化来定。4.2平滑函数•平滑(平均)的概念:信息在一段时间内的平均值。•信息的平滑和平均实职上是一种积累过程。它可以包含一个或多个状态变量。SVAR平滑变量SRATE平滑速率VAR待平滑变量STIME平滑时间图2.4一阶平滑结构流图平滑(平均)函数的方程式:LSVER.K=SVAR.J+DT*SRARE.JKNSVAR=VARRSRARE.KL=(VAR.K-SVAR.K)/STIME式中:SVAR——已平滑的变量;VAR——待平滑的变量;SRATE——平滑速率;STIME——平滑时间。上述方程式可用DYNAMO中的辅助方程SMOOTH函数代替:ASVAR.K=SMOOTH(VAR,K,ATIME)式中:SMOOTH——平滑函数DYNAMO能自动处理方程的初始值问题。设置:t=0时,SVAR=VAR.被平滑的变量可以是状态、速率、辅助变量。平滑时间STIME通常为常数,但也可以是变化的。4.3信息延迟与物质在系统中流动存在延迟类似,信息在系统中传递也存在延迟。例如:国内生产总值(GNP)社会总产值(TotalProductionofSociety)公司当日的销售率(1)一阶信息延迟函数——SMOOTH平滑函数经常用来描述信息的延迟。(2)三阶信息延迟函数——DLINF3如图4.12(P62)ASV3.K=DLINF3(VAR.K,STIME)式中:SV3——三阶信息延迟输出;DLINF3——三阶信息延迟;VAR——输入变量;STIME——平滑或延迟时间。DELAY3和DLINF3的区别:物质流变化率可输入物质延迟环节;任何信息——速率、状态、辅助变量均可被加以平滑,实现信息延迟。物质延迟与信息平滑和延迟函数的流图符号如图4.13(P62)4.4数学函数DYNAMO备有五种数学函数,采用标准数学符号:(1)SQRT(X)=,非负值变量X的开方;(2)SIN(X)=sinX,变量X的正弦;(3)COS(X)=cos(X),变量X的余弦;(4),指数函数,e=2.718;(5),以e为底的自然对数。XelogLOGN(X)XeXEXP)(4.5逻辑函数DYNAMO的逻辑函数有MAX,MIN,CLIP,SWITCH等。(1)MAX(A,B)取A,B中较大者,即:MAX(A,B)=A,若A≥BB,若A∠B(2)MIN(A,B)取A,B中较小者,即:MIN(A,B)=B,若A≥BA,若A∠BMAX函数可用来产生数的绝对值,表达式为:MAN(A,—A)MAX函数也可用于防止出现除式分母为0和负值的情况,表达式为:A/[MAX(B,0.01](3)CLIP函数CLIP(A,B,X,Y)=A,若X≥YB,若X∠Y此函数在模型模拟过程中,用于更换或改变原来的函数和常数值。(4)SWITCH函数SWITCH(A,B,X)=A,若X=0B,若X≠04.6测试函数(TEST)•通过不同类型的摄动试验可以从模型及其代表的反馈系统获取大量的信息。这些摄动试验式借助各类测试函数进行的。在模型测试中,可采用变量的突增、斜坡函数、振荡、随机干扰等。这些试验均有助于揭示模型内部结构与其动态行为的关系。这类测试的目的在于深入地研究模型和它所代表的信息反馈系统。DYNAMO的外生摄动的测试函数包括:阶跃STEP、斜坡RAMP、脉冲PULSE、正弦SIN和噪声NOISE函数。例如:图4.14简单库存控制系统模型流图(P65)(1)阶跃函数(TheSTEPFunction)阶跃函数:幅值在给定时刻发生突变的函数。STEP(A,B)A——阶跃的幅度;B——阶跃发生的时刻。该函数表示:在时刻B前STEP函数的值为0,当时间等于或大于B时,STEP函数等于A的值。阶跃幅值A的值可正可负。例如:(见书P67,图4。15)ATEST.K=STEP(HGHT,STRT)CHGHT=10CSTRT=2(2)斜坡函数(TheRAMPFunction)斜坡函数是一种连续增长或下降的时间的线性函数。RAMP(A,B)式中:A——线性函数的斜率;B——斜坡函数的起始时刻。在时间B时刻前,RAMP取0值,在B或B时刻之后其值由线性函数决定:A*(TIME.K-B)例如:(见书P68,图4。16)ATEST.K=RAMP(SLP,STRT)CSLP=20CSTRT=2(3)脉冲函数(ThePULSEFunction)脉冲函数为DYNAMO提供瞬时冲击的方法。变量在每一次短促的变动后立即回至原值。PULSE(A,B,C)式中:A——脉冲的幅度;B——第一个脉冲出现的时刻;C——相邻两个脉冲之间的间隔。脉冲函数是一个周期性函数,分为单脉冲和周期性脉冲。•例如:•P69图4.17(4)正弦函数(TheSINFunction)正弦函数,用于测试模型对于正弦振荡输入变量的响应。A*SIN(6.283*TIME.K/B)式中:A——振荡幅度;B——振荡周期;6.283——2π(π为圆周率)。•例如:•P71图4.19和图4.20(5)噪声函数(TheNOISEFunction)DYNAMO备有随机数发生函数,称为噪声函数。表达式为:NOISE[]5DYNAMO的
本文标题:第三章DYNAMOL模拟语言.
链接地址:https://www.777doc.com/doc-2120102 .html