DYNAMO基础
Chapter 1 Players in the Systems Game 系 统 动 力 学(System Dynamics) 主讲: 张学民 系统动力学建模语言DYNAMO基础 DYNAMO来源 DYNAMO,取名来自 Dynamic Models(动态模型)的混合缩写。顾名思义,DYNAMO命名的涵意在于建立真实系统的模型,藉助计算机进行系统结构、功能与动态行为的模拟。 DYNAMO和系统动力学的关系,可追溯到50年代系统动力学发展的初期。DYNAMO的前身称SIMPLE (Simulation of Industrial Management Problems with Lots of Equation) DYNAMO描述动力学系统的基本原理 以库存系统为例,为简单起见,考虑输入、输出速率为常数的情况。 假定每月发货与入库各为100与80件,则库存INV每月减少20件,其动态行为是线性的,以图形表示就是随时间变化的直线。 可用数学式表达: INV现在=INV过去十(时间间隔)x(纯速率) 若库存量在5个月前为l200件,则: INV现在=1200件+(5月)*(80件/月-100件/月) =1200+5*(-20) =1200-100 =1100(件) 当速率随时间变化时,可以把连续的时间分割成小的时间间隔,并假定在各小间隔内速率是固定的,然后,藉助计算机逐段地一一加以计算。若计算的时间间隔足够小,速率变动不大,则此结果将与从微分方程获得的精确解(如果可能求得的话)十分接近。 DYNAMO描述动力学系统的基本原理(续) 在DYNAMO中,给变量带上时间下标以区别在时间上的先后。 英文字母K(Current)表示现在,J(Just,刚刚)表示刚刚过去的那一时刻,L(Last,持续)表示紧随当前的未来的那一时刻。DT表示J与K或K与L之间的时间长度。 DYNAMO描述动力学系统的基本原理(续) 库存方程可用DYNAMO表示如下: INV.K = INV.J + DT*(ORRE.JK - SH.JK) 式中: INV.K –––– 库存现有量; INV.J –––– DT前的库存量; DT –––– 计算的时间间隔; ORRE –––– 在JK间隔内收到的订货量 SH –––– 在JK间隔内的发货量。 水平(状态)变量与方程 水平(状态)变量:对输入和输出变量(或其中之一)进行积累的变量。 在DYNAMO中计算水平(状态)变量的方程称为水平(状态)变量方程。 在DYNAMO模型中,以L为标志写在第一列。 例如: L LEVEL.K=LEVEL.J+DT*(INFLOW.JK-OUTFLOW.JK) 式中: LEVEL –––– 水平(状态)变量; INFLOW –––– 输入速率(变化率); OUTFLOW –––– 输出速率(变化率); DT –––– 计算间隔(从J时刻到K时刻)。 速率变量与方程 在水平变量方程中代表输入与输出的变量称为速率,它由速率方程求出。 DYNAMO中,速率方程以R为标志。 例如: R BIRTHS.KL = BRF*POP.K 式中: BIRTHS —— 出生率(人/年); BRF —— 出生率系数(人/年); POP —— 人口(人)。 速率的值在DT时间内是不变的。进一步说,速率方程是在K时刻进行计算,而在自K至L的时间间隔(DT)中保持不变。速率的时间下标为KL。 辅助变量与方程 水平方程有着比较固定的格式,而速率方程无一定格式。因此建立速率方程式颇费功夫。可以说,构思与书写模型的工作中,考虑与建立速率方程的份量占了很大的比例。 在建立速率方程之前,若末先做好某些代数计算,把速率方程中必需的信息仔细加以考虑,那么将遇到很大的困难。 这些附加的代数运算,在DYNAMO中称为辅助方程,方程中的变量则称为辅助变量。 辅助方程以字母A为标志,例如: A DISC.K = R00M – TEA.K R CHNG.K = CONST*DISC.K 式中: DISC —— 茶水与室温度差(℃); ROOM —— 室温度(℃); TEA —— 茶水温度(℃); CHNG —— 茶水的温度变化率(℃/分)“ CONST —— 介质传热系数(1/分)。 表函数 模型中往往需要用辅助变量描述某些变量间的非线性关系,显然简单地由其它变量进行代数组合的辅助变量已不能胜任。 若所需非线性函数能以图形给出,那么就能十分简单地以DYNAMO的表函数表示。