第二章 系统动力学及dynamo语言_第1页
第二章 系统动力学及dynamo语言_第2页
第二章 系统动力学及dynamo语言_第3页
第二章 系统动力学及dynamo语言_第4页
第二章 系统动力学及dynamo语言_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二章第二章 系统动力学及系统动力学及 DYNAMO 语言语言 本章将着重讲述系统动力学的建模思想与建模过程。 20 世纪 40 年代,费雷斯特(Forrester)创立系统动力学时,称之为“工业动力学”,当 时它主要是用于解决企业中出现的一些和经营管理有关的问题。例如,产量和雇用的不稳定性, 一国经济发展中的波动与萧条,以及股票市场上的涨落等现象。费雷斯特在系统原理中讲到, 经济学已经确立了在工业系统内的许多基本关系,但这些关系多数是用文字的和定性的方式描 述的。“工业动力学”正是将经济学所观察到的复杂法则条理化的一种工具。20 世纪 70 年代, 费雷斯特的系统原理和“工业动力学”的研究方法得到了普遍的应用:解决经营管理中的规划 问题;解决城市的萧条和衰退问题;认识有限的正在减少的自然资源中出现的指数增长的含义; 甚至包括对糖尿病理论的检验(医学)和人与人之间相互作用的关系(心理学)。因此,“工 业动力学”很快就改用了“系统动力学”这一个更广义的名称。 “系统”一词,在本章的含义是代表适用范围的广泛性、问题的复杂性以及观点的概括性 即一种用于解决某一特定类型问题的系统的研究方法。应该强调的是,系统动力学着重研 究的是某一类问题。 系统动力学是研究某一类复杂系统问题的一种方法学,它以 DYNAMO 语言作为建模语言, 这使得系统动力学的建模方法具有更为深刻的实际意义。DYNAMO 语言的名字是由 dynamic(动态)和 model 两词的词头合并而成,表明了其预期的用途:模拟真实世界系统, 使得它们随时间变化的动态行为能用计算机来跟踪、模拟。系统动力学把现实生活中的复杂系 统映射成系统动力学流图,DYNAMO 语言则把系统流图模型送入计算机并计算出数字结果。 21系统动力学概述系统动力学概述 系统动力学的基本思想是充分认识系统中的反馈和动态性,并按一定的规则逐步的建立系 统动力学的结构模式。动态性,是指系统所包含的量具有随时间而变化的特征。比如,企业雇 用员工的变动、股票市场上股票价格和交易额的波动、城市中税收和生活标准的变化、甚至糖 尿病的血糖指标的变化,这些都是动态问题。它们可以用变量随时间变化的图形来表示。系统 动力学中的动态性,不是随机的不稳定的动态性,而是可以预期的,有一定规律的动态性。同 时,某个变动经常在时间上表现出一定的延迟。从这个意义上,也可以说系统动力学的两个基 本观点是:反馈和延迟。21.1 节中讨论有关反馈的问题。222 中讨论关于延迟的问题。 211反馈系统反馈系统 【 反馈系统的概念反馈系统的概念 】 简而言之,“反馈”是指信息的传送和返回 1。“反馈”一词的重点是在“返回”上。 反馈的概念是普遍存在的。以取暖系统产生热量温暖房间为例,屋内一个和它相连的探测 器将室温的信息返回给取暖系统,以此来控制系统的开关,因此也控制了屋内的温度。室温探 测器是反馈装置,它和炉子、管道、抽风机一起组成了一个反馈系统。 当将上述反馈系统用图来表示时(如图 2.1),就成了因果关系图。其中室温、热风调节 可称为“元素”或“节点”,从室温到热风调节以及从热风调节到室温的带箭头的弧,可以称 为“影响关系”或“有向线段”。 1 Wiener(1961),P96。 热风调节 室 温 每年出生的 人口 人 口 图 2.1 室温控制的因果关系图 室温高,则热风量应减小,可在室温对热风调节影响的箭头上加一个负号。反之,热风量 大,则室温增加,可在热风调节对室温影响的箭头上加一个正号。从整体上看,室温影响热风 量,热风量又影响了室温。从室温回到了室温,这就是一个反馈关系。另一方面,这些互相影 响是相互制约的。因为温度高,则热风量减小,使室温降低。反之,室温低,则增大热风量, 使室温升高。这种关系称为负反馈。图 2.2 中用一个带负号的环来表示,这个环称为负反馈环, 此处,负反馈环的目的是使室温接近恒定的温度。 (-) + 图 2.2 室温控制的负反馈环 相反,正反馈环总是加大环内的偏差或扰动,它具有不平衡、不断增长的特性。例如在人 口系统中,人口数增加了,每年所出生的人就增加,这就使人口数按指数规律很快的增长下去。 这样,从“人口数”到“每年出生的人”又返回到“人口数”之间就存在一个正反馈(如图 2.3)。增强而不是抵消环中某个元素的变化是所有正反馈环的共同特征。 + (+) + 图 2.3 人口增长的正反馈环 负反馈环的稳定性与正反馈环的不稳定性的这两个特征的区别,可以通过一个正确和错误 地安装电热毯控制的故事来加以说明。一对夫妇有两条电热毯,两条毯子分别装有两个独立的 温度调节装置:一个是丈夫的,一个是妻子的。正确连接时,应该构成两个独立的负反馈系统, 各自控制着自己那一块毯子的温度,使每个人都得到满足,如图 2.4A。但是这对夫妇却把两 块毯子的温度调节装置装错了。丈夫的温度调节装置接到了妻子的一端,妻子的却接到了丈夫 的一端。结果就出现了如图 2.4B 所示的令人讨厌的正反馈。妻子觉得冷,就将她的控制器温 度调高,致使丈夫一边的温度过高。丈夫却觉得热,于是将他的控制器温度调低,从而使的妻 子一端的温度变低。因此,妻子再次把装置温度调高,如此下去,形成一种戏剧性的局面。 妻子的温度丈夫的期 望温度 丈夫的温度 丈夫的调 节装置 热风调节室 温 (-) (-) 图 2.4A 正确的连接两个负反馈环 (+) 图 2.4 错误的连接一个正反馈环 【 开环思维开环思维 】 不用反馈的概念来研究问题,往往称为开环思维。例如,我们发现一个问题后,通常要先 思考一番,确定一个处理问题的方案,然后按此方案行动,并认为解决问题的过程到此为止。 这一模式,可以用图 2.5 中实线箭头表示的问题方案行动的序列来表示,这是一个开环思 维。然而,这一模式忽略了一点:我们的行动会改变系统的状态(图 2.5 中用虚线箭头表示)。 同时,在实施行动方案的过程中,我们可能对问题也会有新的理解,做出新的定义或发现一些 必须解决的新问题。这样,问题方案行动又返回问题的序列,是一个反馈观点解决问题的 模式。在系统动力学中的应该用反馈的观点,即闭环地考虑问题,而非开环地考虑问题。这一 点希望读者能在具体建模过程中着重注意并细心体会。 图 2.5 开环思维与反馈观点作解决问题的比较 系统动力学的反馈观点有一个潜在的假设:系统都是反馈系统,要解决这些系统中的复杂 问题,就得逐个找出反馈结构与观察到的疑难问题之间的关系。但人们面临复杂问题时,却总 是希望能将其归于过于简化了的负反馈系统中,利用单一的针锋相对的行动对系统加以有效控 制。事实上,现实中的系统通常情况下并不是依照直接的因果关系连接而成的,而是非线性的、 动态的和层次的。与大多数人所期望的恰恰相反,只在很少的情况下,我们对于复杂系统中的 问题才可能只采取相应的单一行动就可以解决。例如,多建公路与立交桥并不一定就能够缓解 交通拥挤,反而有可能刺激消费者购车的需求,进一步加重交通拥挤的情况。由此可见,反馈 观点经常夸大反馈行为的某一影响,而忽略了其他影响,因而,完全依照反馈观点建立的模型 很容易陷入简单片面的因果决定陷阱。也正是由此,建立在反馈观点之上的系统动力学与 丈夫的调 节装置 丈夫的温度 妻子的温度 妻子的调 节装置 妻子的期 望温度 妻子的调 节装置 妻子的期 望温度 丈夫的期 望温度 问题 方案 行动 DYNAMO 建模方法,不能不分场合地滥用,只有在诸多变量之间的关系可以比较确凿的认识 时,系统动力学的建模方法才可能发挥较大的作用。 表表 2.1 日常生活中常见的日常生活中常见的“反馈问题反馈问题”与其与其“对策对策” 问 题对 策 交通拥挤多建公路和立交桥 犯罪率升高专项严打和多雇用警察 城市贫民增加多建经济实用房 汽车尾气污染安装尾气过滤器 农作物病虫害多用杀虫剂 体温升高吃退烧药 本书的最后一章中还将进一步讨论与此相关的问题。 212系统动力学概述系统动力学概述 系统动力学主要研究复杂问题的反馈过程。系统动力学认为,动态行为是系统结构的一个 结果,反馈结构是导致事物随时间变化的根源。 系统动力学认为,系统外的作用力并非是导致问题的根源。库存不会因为消费者周期性的 改变订单而波动;生产厂家的生产情况也不会因为消费者的偏好改变而改变。从系统动力学的 观点来看,这些系统行动的根源在系统内部。实际上,内部观点就是把外部的作用力包括在系 统内部的反馈系统模型里。因此消费者的订单和偏好,就成了生产系统的内生变量,成了系统 反馈结构的一部分。 用系统动力学的观点来研究一个问题,大致可以分为以下几个阶段: 1.问题的识别和定义 2.系统的概念化 3.模型格式化(模型的建立) 4.模型行为的分析(计算机模拟) 5.策略分析 6.模型的使用或执行 每个阶段的起点和终点和整个过程的起点和终点都是对这一系统及其问题的不断深入的理 解。因此,它是一个环,或者网,而不是线性的序列。一个循环之后又可以开始新的一个循环。 可以不断反复迭代。图 2.6 给出了这些阶段的一个可能的执行进程。 图 2.6 系统动力学建模研究步骤 策略的执行 对一个系统 的认识 问题的定义 策略分析 计算机模拟系统的概念化 模型的建立 系统动力学研究所得出的策略建议,不仅来自模型的最终计算结果,而且还来自模拟过程 中通过各阶段迭代所得到的认识。系统动力学研究最终应该能够提出切实可行的策略建议。因 为模型只是达到目的的工具,最终的目的是提高对现实世界的认识,增加对客观规律的理解。 本章各节将大致按照 DYNAMO 系统动力学建模的各个阶段来组织,需要提醒读者注意的 是,不要因为本章各节的线性排列顺序而忽略了系统动力学模拟研究所具有的迭代和循环的特 征。 22流图与系统概念化流图与系统概念化 无论是对于初学者还是经验丰富的建模者,系统概念化阶段都是系统动力学中最困难的阶 段之一。概念化阶段的两大准则是:(1)明确建模目的;(2)研究问题,而不是研究整个系 统。这两点是建模取得成功的先决条件。明确了研究的问题和建模目的,就好像佩带了一副滤 色镜,可以滤去不必要的细节,集中精力研究反馈系统中的主要方面。它们使系统动力学的应 用者和 DYNAMO 的建模者,不必为了研究某个事物而去考虑所有的事物。 在系统动力学模型的概念化时,还须记住:要用动态的观点和极力寻找因果关系的反馈环 的方法来研究复杂的系统。与“滤色镜”相似,这两个特征就好比是建模者的透镜,它们使得 人们清晰的看到应当留在模型中的事物。而使另外一些不应该留在模型中的另一些事物变得模 糊不清。 221动态问题的定义动态问题的定义 一般总要先用一个或多个随时间变化的变量来表示系统动力学所研究的问题中的系统状态, 这些变量又往往用图形来表示。这些图形的建立过程,称为动态思维的过程,它是模式化的前 提和基础。此时并不需要具体的数据或意义明确的函数,只需反映出变量变化的大体趋势和状 态即可。因为研究者所关心的,是变量随时间变化的趋势,而非具体的变化数值。这些随时间 变化的图形,即参考行为方式,是建模的参考和依据,也是检验一个系统动力学模型有效性的 标准之一。建立参考方式是系统动力学研究取得成功的一个必要条件。 要作出变量随时间变化的图形,首先要识别系统中那些与待研究问题紧密相关的变量;随 后要确定研究的时间范围。绘出随时间变化的变量图形后,即使正规模型尚未建立,我们也可 以由此来获得一些关于系统的认识。 图 2.7 列举了一个在还没有正规模型的情况下进行动态思维,既建立参考方式的例子,其 图形代表广告所产生的影响。该图表现的是一产品典型的生命周期,反映了盈利、销售量与广 告费用之间的联系。 时间 产品引进市场增长 市场成熟销售下降 销售量曲线 作为销售百分比的广告曲线 盈利曲线 图 2.7 产品广告及其生命周期 有时也会出现这样的情况,问题提出来了,但是却没有一个明确的参考方式。这是因为用 户在还没有理解变量随时间变化的大趋势之前,就提出了有关策略变化可能导致的结果之类的 问题。富有经验的建模者常常列出一些可能的策略及其可能产生的影响。这样的一组策略列表 有时能代替一个清晰的动态观点。 需要指出一点,在没有参考方式的情况下,要建立一个正规的系统动力学模型是困难的。 因此,建模者至少应该在初学建模时尽量避免这样做。 222反馈结构的表示反馈结构的表示 一旦识别了问题,确定了主要变量并定义了参考方式,建模者的任务便是要找出主要变量 与其它变量之间的联系,既相互影响或称因果关系。接着,要顺着因果链寻找反馈结构,一旦 因果链自行相连成环,就找到了反馈。在系统动力学建模或称 DYNAMO 建模中,反馈结构的 表达方式主要是图解的形式。常见的图有两类,因果环图和 DYNAMO 流图。因果环图主要用 于模型概念化的前期阶段以及后来为非技术性文献所准备的关于模型结构的直观描述;而所谓 DYNAMO 流图,或称速率/存量图,则是对模型更详细的描述。模型模式化的第一步通常是绘 制因果环图,其次是速率/存量的流图,最后是建立起明确的反映图示结构的方程(即模型的 格式化,见 23、24 节)。 本小节将主要介绍有关流图的内容。在此之前,首先对因果环图进行一些必要的介绍。 因果环图中的每一个影响关系都有正负之分,根据影响关系的积累效果就可以知道该环的 特性。如图 28,将酒倒入酒杯的决定会增加倒酒的速率,从而增加酒杯的存量,于是就减 少了杯中酒的存量与期望存量的差距,从而削弱向酒杯中倒酒的决定倾向。很明显,这一反馈 环是自行削弱的,因而是个负反馈环,这保证了倒酒的动作最终将停止。 + - + (-) + + 图 28 反馈环的极性 由这个例子可以归纳出下列两条定理: 反馈环为正,如果它有偶数个负因果链; 反馈环为负,如果它有奇数个负因果链。 因此,反馈环的极性实际上是组成环的所有影响关系符号的代数和。 最后需要提醒读者的是,不要将开环误认为是反馈环。如图 29 就不是一个反馈环。 期望的存量杯中酒 的存量 倒酒的 决定 倒酒的 速率 差距 + + + - - 图 29 海洛因价格与犯罪之间的关系:伪环 现在我们开始关于系统动力学流图的介绍。首先将本章开头给出的室温控制的例子,用流 图的形式表现出来,如图 210。 图 210 室温控制的流图 从图中可见,因果关系的元素分别用流图的元素来表示。“室温”用矩形的“存量”表示, 热风调节用阀门型的“速率”来表示,表示影响关系的弧线用实线或虚线来表示。 明确的讲,这个系统的目标是把室温调节到某一个给定的温度(附近),热风的大小与给 定温度和室温的温差成正比,这样,可以用更详细的流图 211 表示 温 差 调节系数 给定温度 图 211 室温控制的更详细的流图 海洛因价格 上瘾者 与海洛因相关的犯罪 维持习惯所需的钱每个上瘾者的犯罪频率 热风 调节 室 温 热风 调节 室 温 为了清楚的表示室温是如何影响热风调节的,图 211 把从室温到热风调节的虚线变成了 3 个元素,4 条虚线。图形排列的形式暗示影响关系的细节。温差是一个新元素,它等于给定 温度减去室温,用圆圈表示,称为辅助变量。给定温度也是一个新元素,用小圆圈加一斜线表 示,称为常量。调节系数是另一个新的常量元素。从调节系数到热风调节的虚线及从温差到热 风调节的虚线暗示热风调节量与温差成正比,其比例系数为调节系数。一般性的过程可以用图 212 来概括。 图 212 流图的一般过程 图 210 和图 211 称为系统动力学流图,简称为流图。下面简述流图中的几个基本概念 (其符号见图例),它们也是系统动力学中的基本概念。 图图 例例存 量 速 率 辅助变量 函 数 常 量 信息链 物 流 源 或 汇 (1)存量(LEVEL),图中的长方形,象一个水池,可称为水平、存量、积累量、流位, 它是系统的状态,也就是系统的某个指标值。流图中用水池的水位高低来模仿系统状态值的大 小。 控制 指标 从系统获 取信息 由信息确定 如何控制 信息 控制作用 (2)速率(RATE),图中的阀门形,可称为决策函数、速度、速率、流率等。它控制着 存量的变化。流图用阀门模拟控制水位的高低的机制。 (3)实线称为实物流。实线连接“阀门”和“水池”,模仿控制的通路。它要贯穿存量 和速率,像是水流在其中穿行。 (4)不规则的闭曲线称为源或汇。源指实物的来源,汇指实物的去向,好比水的源泉和 去向。它是系统之外的元素。 (5)虚线称为信息链,模仿信息传递的过程。它指向速率,表示根据什么信息控制速率。 但不能从这条曲线看出具体控制方式的细节;比如,我们希望采用温差比例方式进行调节,但 图 211 的信息链并不能说明这个问题。在本章 23 小节中,将具体讲解如何用 DYNAMO 语言中的速率方程来进一步刻画控制的细节。所以,图 211 既可以表示温差等比例调节,也 可以表示温差微分调节或混合调节等等。 (6)圆称为辅助变量,辅助表示流速变动的规律。 (7)小圆加斜线称为常数,是系统中重要的参数。 此外,还有几个问题需要明确: 第一,系统的动态变化是指系统状态随时间的变化,即自变量是时间。 第二,系统的状态可用系统的一组指标表示,一个指标是一个量,只有确定了单位才可用 一个数值来表示一个量。例如,室温是一个表示室内状态的量,用作为单位,那么数值 10 表示室温 10的量。 第三,控制指标的速率也具有相应的单位。它的单位应是每单位时间的单位系统状态量。 此例中时间单位如果是小时,那么调节室温的风量单位应该是使室温每小时升高 1的风量。 第四,图形的结构要反映这些概念,用实线连接的速率和存量是相互依存和相互对应的。 速率是指单位时间存量的变化,存量指速率的积累。因此设时间为 t,存量为 L,速率为 R, 那么 dL/dt=R 或 L=Rdt。 为了计算出状态值随时间的变化,在从因果关系图转换成流图时,必须用实物流把速率与 其相对应的存量(状态值)相连。实物流只能用在连接存量与速率,不能连接两个存量或两个 速率。当然,速率与相应的存量相连不仅有上述一种形式。一个存量还可以对应多个与之有关 的速率。 第五,流图中区分了实物和信息。存量是实物的积累;速率是事物随时间变化的规律;实 物流是实物积散的途径;源和汇是实物的来源和去向。用信息控制速率变动的规律,信息来自 系统外部变量或系统内部存量;信息流是从信息源到速率的路径。 【 反馈的形式反馈的形式 】 上述简单的系统内只有一个存量,称为一阶系统。一阶系统有多种多样的变化模式。如图 213 所示。 2 1 3 图 213 一阶系统的反馈形式 如果一阶系统中有负反馈,称为一阶负反馈系统。前述的调温系统是典型的一阶负反馈系 统。它的 反馈形式如图 213 中曲线 1 所示。设初始室温和与其温度有一个差别,例如室温 低于期望值,由阀门控制热风吹入,由于温差大,命令多进热风,结果室温上升,温差变小, 细菌出生细 菌 进入的热风渐渐减小,所以室温上升就越来越慢。室温缓慢接近期望温度,但始终不可以到达 期望温度,只是差别越来越小。 如果一阶系统中有正反馈,此系统就称为一阶正反馈系统。细菌生长是一种典型的一阶正 反馈系统。假设细菌每小时繁殖一个,开始时有 1 个细菌,1 小时候就有 2 个,2 小时后有 4 个,3 小时后有 8 个,4 小时后有 16 个,5 小时后有 32 个其因果关系图如图 214。 + (+) + 图 214 细菌生长的因果关系图 其流图见图 215。 细菌出生率 图 215 细菌生长的流图 如果仔细考虑,细菌数量的动态描述还应作些补充。细菌除了通过繁殖增加外,还会死亡。 因此细菌数量与细菌出生和细菌死亡之间呈现如图 216 所示的因果关系。 + + (+) () + 图 216 考虑死亡的细菌生长因果关系图 转换为系统流图如图 217。 细菌 出生 细 菌 细菌出生细菌死亡细菌 细菌出生率细菌寿命 图 217 考虑死亡的细菌生长流图 本例中一个存量与两个速率相对应,向内的箭头表示细菌出生使细菌数量增加,向外的箭 头表示细菌死亡使细菌减少。这张流图中所有的量取值都是正的。显然细菌的寿命的倒数是死 亡率。当出生率大于死亡率时,细菌数量呈指数上升的趋势,此系统是一阶正反馈系统(变化 形式如图 213 中的曲线 2);当出生率小于死亡率时,细菌数量呈指数下降的趋势,此系统 是一阶负反馈系统。 如果限定细菌生活在一个有限的空间里,当细菌生长到一定数量后就不能在无限增长下去, 那么就会呈现一个先是指数上升然后又缓慢接近极值的趋势。类似的情况很多,比如增加推销 员,产品销售数量会增加,产品出售增多了,则有更多的钱雇用推销员。开始推销员数量增长 很快,但人们购买这种商品的潜在需求逐渐降低,则这种正反馈就不能持续下去,推销员或产 品出售的数量就开始缓慢回落。它们的动态如图 213 中的曲线 3。 【 延迟延迟 】 系统动力学的另一个基本点是延迟。延迟也是普遍存在的,物理学认为“在宏观的自然界 中不存在突变”。一般来说,原因并非立即就能产生结果,往往某个原因经过了一段时间才能 作用产生了效果。比如在调节室温的过程中,空调机马力加大以后,室温不会马上就上升。要 经过一定的热传导的过程,热量不断积累,才会使室温上升。其因果关系如图 218。 + + () + 图 218 考虑延迟的室温调节因果关系图 把这个因果关系图转换成流图。室温是一个存量,室温增加是对应的速率,它们用实物流 相连。热风调节是热量积累,所以热量积累是一个存量,热风调节是使其增加的对应速率,它 热风调节 细菌 出生 细 菌 细菌 死亡 热量积累 室温 室温增加 们也用实物流相连。热量积累使室温增加,这是存量对速率的影响,它是一个信息链,用温升 时间常数辅助表示这个关系。最终的系统动力学流图如图 219。 调节系数 温升时间 温 差 给定温度 图 219 考虑延迟的室温调节流图 图 219 所示的系统中有两个存量,可以称为二阶系统。整个主环呈负反馈,称为二阶负 反馈系统。其系统行为是很典型的,在这个系统中出现了延迟,热风调节后并没有立即引起室 温的增加,因而室温发生了振荡。 类似地,订货以后,货物需要在途中滞留,经过一段时间才会进入仓库,变成库存。所以 增加订货速度后,库存不是立即增加而是延迟一段时间才增加。这个延迟引起库存值在期望库 存值附近振荡。如图 220。 订货时间 时间延迟 差 值 期望库存 图 220 订货库存流图 在图 219 中,使室温变化变化的原因可以追溯出一条链。按照常识,室温控制是由热风 调节引起的,但仔细研究,发现热风调节引起了热量积累,才使室温增加,引起室温变化。室 订货 速度 积存订单 进货 速度 库存 热风 调节 热量积累 室温 增加 室温 温慢慢地积累,所以调节热风后,经过一段延迟才会有室温变化。这种延迟引起了在某个时候, 关小了热风反而使室温增加,或者开大热风但室温减小的违背常理的情况出现。在时间上,刚 才的阀门打开引起现在的温度升高;在空间上,空调机的热风量加大引起了不是同一处的室内 温度上升。 在现实社会中,我们经常可以发现有一些系统比上述的例子更复杂,组成元素更多,反馈 环相互地交织在一起,因而它们的动态规律就更不容易认识。当我们研究某个数量指标变化时, 追源溯本,总可以找出一大串因果关系链。这样初始原因和最终结果之间相隔大量元素,因而 在时间上、空间上,因果之间可能相隔很远,以至于仅靠经验和细心观察绝无发现的可能,原 因与结果之间还会有违背常理的情况出现。系统动力学的建模思想给出了构筑系统动力学模型 的概念模式,因而搭建起了用计算机模拟复杂系统的桥梁,它为发现和处理现实中这些复杂的 具有延迟的因果关系提供了可能。 223系统概念化小结系统概念化小结 得到系统流图是认识系统动态的关键一步。根据系统的原理,采用分析与综合的办法来认 识系统,首先要根据系统的目标找出我们关心的对象,即确定系统的边界;然后把系统分解成 其组成要素,在按照以上介绍的几个原则找反馈环,认识延迟的存在,鉴别出存量和速率,找 出实物流和信息流,并将他们正确的组合成一个有机的整体,形成具有系统动力学特定结构的 流图。流图中相邻的元素之间常常有典型的连接关系,例如,一阶正反馈、一阶负反馈、二阶 负反馈。这些反馈环进一步交织在一起形成一个网。在分析时常采用自顶向下的方法,抓实质、 忽略次要成分,得到一个很粗的模式。这种粗糙的模式若不能满足需求,则一步步地细化下去。 例如,考虑室温调节时,开始认为系统是个简单的一阶负反馈系统,它粗糙的反映了系统趋向 期望温度的模式;细化后看到了延迟,如果需要的话还可以进一步研究,比如可以对复杂的热 量积累进行更细致的描述,表现出热风先经过管道再加热室内空气,甚至室内不同地方的空气 温度也不相同。那样的话,系统结构就更加复杂,且能更细致地反映客观实际。因而,系统流 图具有一个层次结构,可以通过逐步细化逐步的获得越来越符合实际的系统流图。 23从流图到从流图到 DYNAMO 方程方程 所谓模型格式化,是一个将上述流图的模型结构编写成 DYNAMO 方程的过程,也是一个 由非正式的概念认识向正式的定量表达式转换的过程。通过在计算机上运行 DYNAMO 方程确 切地描述的模型可以模拟系统的动态行为。 格式化不仅仅是概念化和结果分析之间的一个技术变换阶段。并能提高对系统结构的认识。 一个非正式的因果关系模型一旦编写成方程,便显得清晰明了,一目了然。当然,这样所得到 的正规模型也并不能完全代表真实世界,从这一点上说,它是不精确的。但是,正规模型却更 为明确,因为它必须要为计算机所识别,并能突出地反映出所针对的问题的内在结构。所以, 借助于模型格式化阶段,建模者可以提高对系统结构的认识,建立起对实际情况符合得更好的 DYNAMO 模型,从而在发现和解决实际问题方面发挥更为现实的作用。 在 DYNAMO 语言中,存量是一种变量,速率也是一种变量,要为每个变量制定一个变量 名,这个变量名可以是汉语的(在汉化的 DYNAMO 中),也可以是英语的。再用圆点及其后 的下标来表示修饰词现在、过去、时点、时段。假设初始时刻系统状态是已知的(这包括全部 状态值和流率值),就可以把第一个时点的系统状态求出来。因为第一个时点上的指标值=初 始时刻指标值+DT*初始时刻该指标的总流速。同样的,如果过去的指标值及速率值是已知的, 那么有实物流所反映的关系就可以求出现在的指标值。现在的指标值=过去的指标值+DT*过去 该指标值的总流速。一个计算复利的存钱系统如图 221 所示。 CRATE 0.01 图 221 复利存钱系统流图 钱数的变化要用下边的存量方程表示: 钱.K=钱.J+DT*钱的增加速率.JK 或 MONEY.K=MONEY.J+DT*RAM.JK 其中钱或 MONEY 为钱数的变量名,变量名由建模者任意规定,但它们应该有比较清晰 明确的含义。钱的增加率或 RAM 是钱数变化的速率的变量名。 钱数等于过去的钱数加上流逝的时间乘以这段时间内的钱数增加的速率。对这个记复利的 存钱系统,钱的增加速率是很明显的。在 DYNAMO 中用一个速率方程表示: 钱的增加速率.KL=钱.K*利率 或 RAM.KL=MONEY.K*CRATE 除上述两方程,还有表示钱的初值大小的方程及利率大小的方程。这样,一个存钱系统的 DYNAMO 模型就构成了。它主要包括四个方程,每个方程钱都用一个字母标识方程的类别, 即LMONEY.K=MONEY.J+DT*RAM.JK RRAM.KL=MONEY.K*CRATE CCRATE=0.01 NMONEY=100 虽然方程中没有明显的指出一个量的单位,但是量的单位是事先约定的。方程中的数值与 约定好的单位结合,才能正确地反映量的大小。在这个存钱的系统中,我们约定钱用“元”作 单位,时间用“月”作单位,利率是指每元钱存一个月会增加 0.01 元。 从流图转化到 DYNAMO 方程并不困难。存量方程反映了存量总是总流速的积分的过程。 存量方程很容易从流图中得到,因为在流图中已明显地标出流入及流出的速率。速率方程反映 了每个速率变动的规律,指向速率的信息链暗示了速率是由哪几个变量决定的。但这些变量如 何具体的构成流率方程,从流图中上不可得出。例如钱数及利率决定了钱的增加,但钱数乘以 利率是钱数的增加,并没有明显地表现在流图里。相乘的关系是从对存钱系统的研究得到的, 并由 DYNAMO 方程表示。因此,流图只能反映出速率与什么量有关系,只有速率方程才能完 全地把速率与变量的具体关系描述出来。 对于这个简单的例子,DYNAMO 方程没有什么优越性,但对于越复杂的系统,其优越性 就越显著。 24 DYNAMO 语言语言 RAM MONEY DYNAMO 是一种计算机模拟建模语言,其特点是语法简单,容易掌握。一个用 DYNAMO 语言编写的程序,也就是一个针对某一问题的系统动力学模型,它反映了由于系统 状态变量之间的反馈作用,使系统的状态连续地变化。 上一节介绍了系统动力学的基本思想,从因果关系图出发,建立了系统动力学的流图,这 是一种反映系统结构的模型。流图模型很形象地用水流来模仿复杂系统。DYNAMO 系统的状 态是用一组存量来表示系统的一组指标值。描述“流”像水流似的从源通过“水管”流动着, 经过阀门,阀门的开闭控制它的流速,使在贮槽中存储的水位高低变化,以此模仿指标值大小 的变化。在某些系统中,有几条水管与一个贮槽相连,而这些水管中的水有的流入贮槽,还有 的水管中的水是从贮槽中流出的。流入水管的流速的总和称为流入速率,流出的流速的总和称 为流出速率。常常,一条水管模仿一种因素对指标所产生的影响。与一个指标对应的流速有一 个以上表明多种因素都对这个指标产生影响。与同一个指标对应的这些流速的代数和称为该指 标的总流速。如前所述,指标是其总流速的积分(或称累积),总流速是其指标的微分。在不 会引起误会的情况下,总流速可以简称为流速。 若要表示系统动态变化,就要确定一个时间轴,从初始时刻开始,均匀地划分这个时间轴, 每一个时间步长记为一个 DT。如图 2.22 所示。 DT t 图 2.22 时间步长 如果把某个时点称为 K 时刻或现在时刻,它的前一时点就称为 J 时刻或过去时刻,它的后 一时点就称为 L 时刻或未来时刻,如图 2.23。 DT J K L t 过去 现在 未来 图 2.23 时刻与时段 相应地,JK 时段称为过去时段,KL 时段称为未来时段。 DYNAMO 就是利用各个时点上的指标值(LEVEL 值)和各个时段上的速率值(RATE 值) ,来计算和表现系统的动态变化。 看一个具体的例子,其中流入和流出率都是常量。假定我们每个月从一个仓库中运走 100 单位的货物,而从供应厂商处每月只能得到 80 单位的货物,那么,总流率就是-20 单位,即仓 库的货物以每月 20 单位的流速减少,它的动态行为是线性的,其随时间变化的图形将是一条 递减的直线。任何一个学过高中代数的同学都可以通过比算得出仓库的变化,即经过的时间乘 以库存的恒定变化率: 库存量(现在)=库存量(过去)+经过时间*恒定变化率 但是,当影响仓库的流入和流出量不再是常量而是在不断变化时,情况就变得有趣了。只 学过高中代数的同学只能在绝望中放弃,或等到他学习了微积分的知识后再来解答。但是即使 在那个时候,他也可能无法获得存量随时间变化的精确方程,或者尴尬地发现这个函数是不可 积的。在 DYNAMO 中,当订单率和货运率随时间的变化而变化时,DYNAMO 通过将连续的 时间分割为许多离散的时段,并假设在每个小的时段上,流率为常量,这样就可以像只学过代 数的同学那样进行计算,其公式如下: 库存(现在)=库存(上一时刻)+(经过的时段)*(假设的恒定总流率) 或,用 DYNAMO 中的记号: INV.K=INV.J+DT*(SHPMTS.JK- ORDRCV.JK) INV.K=当前的库存值; INV.J=一个时段前的库存值; SHPMTS.JK =在过去时段上新进货物数量的流率; ORDRCV.JK =在过去时段上接到的订单数量的流率; 当然,这样得到的是近似值,但是,当计算的时段足够小,并且流率的变化率不大时,计 算出的结果将非常接近精确值。 因此,DYNAMO 是通过对系统模型进行分段(每次一个 DT)计算来模拟一个动态反馈 系统的。对于简单的系统,我们可以进行笔算,但是,如果系统略微复杂,而且计算间距 DT 相当小的话,我们对于这样的计算就无能为力了,而这时使用计算机最为理想。事实上,能够 进行这类计算(用不同的表示方法)的计算机程序语言很多,比如 FORTRAN、C+、DELPHI、JAVA 等等。但是 DYNAMO 正是为了模拟动态反馈系统而设计 的,它会是一个很好的工具。 DYNAMO 语言可以满足那些不熟悉计算机的建模者和经验丰富的程序员的不同需求。 DYNAMO 的所有语句可以归为两大类:一是变量描述语句,二是控制语句。组成语句的元素 共有 9 种:(1)语句类型标识(2)变量名(3)时间下标(4)等号(5)圆点(6)分隔符 (7)函数(8)数值(9)运算符。本节将详细介绍 DYNAMO 语言的基本内容。 241 语法元素语法元素 (1)语句类型标识。DYNAMO 模型的每一条语句最前边都有一个语句类型标识。以此 标识语句的类型。描述语句的类型标识为一个大写字母。控制语句的类型标识是几个大写字母。 例如,L、R、A、T、N、C 是描述语句的类型标识。SPEC、PRINT、PLOT 是控制语句的类 型标识。 (2)变量名。DYNAMO 模型中有多种变量,我们已经熟悉的有存量、速率、辅助变量、 常量。建模者编程时要为每一个变量起一个名字,这个名字应该易于记忆和理解。变量名的格 式在不同的机器上有不同的规定。 (3)时间下标。有 5 种时间下标。J、K、L 分别表示过去、现在、未来时点,JK、KL 分别表示过去及未来时段。都用大写字母。 (4)等号(=)。用等号把变量及其定义联系起来。 (5)圆点()。用变量名加圆点加时间下标标识出变量在不同时期的值。 (6)分隔符。不同机器分隔符不同,常用的分割符有两种:逗号(,)及斜线(/)。 (7)函数。DYNAMO 中的函数多种多样,前边我们已经接触到的有 SIN、COS、NOISE、TABLE。其他的各函数及细节以后介绍。 (8)数值。DYNAMO 所允许使用的数值因机器而异。常用的有整数、浮点数及小数。 整数一般限定在 6 位左右。DYNAMO 的浮点数使用科学计数法,如 23E3 代表 23000,12E-2 代表 0.12,2.176E4 代表 21760 等等。E 前只允许包含 6 个以下的印刷符号,E 后是整数,绝 对值小于 32,小数是一般意义下的小数。小数点前的 0 可要可不要。 (9)运算符。有加(+)、减(-)、乘(*)、除(/)4 种。其含义如同常规的运算符, 用于进行算术运算。 242变量描述语句变量描述语句 DYNAMO 中的变量描述语句一共有 8 种。第一列是由一个字母组成的语句标识;空一格 后是被描述的变量,然后是等号,等号的右边是一个表达式。表达式详细描述了变量如何变动 的计算方式,作为变量的定义。变量和等号及表达式三者是紧紧相接的,称为变量方程。空格 是变量方程结束的标志,空格后的内容将作为注释,不能进行计算。所以如果不小心在键入变 量方程时多键入空格,将会导致模型的错误。 各种变量的意义和流图图例同时罗列如下: 1)存量方程,标识为 L。存量方程把系统中存量的动态用积分的形式描绘出来。例如: L PLANT.K=PLANT.J+DT*(PIN.JK-POU.JK) 就是一个存量方程的例子。一个存量方程要与把与一个存量有关的所有的速率都考虑到。 与一个存量相连的实物流必然是一个或一个以上,其中有的进入该存量,有的离开该存量。 在存量的括号里面应包括所有这些进入及出去的速率的代数和,否则就会有错。对于存量 方程,乘号(*)前的部分在格式上是固定的,因为一个存量的现在是要由同样一个存量 的过去值来求得。如果没有遵守这个格式,DYNAMO 会认为出了语法错误。括号内的部 分的格式是自由的,但一般都是所有与存量对应速率的代数和。 2)速率方程,标识为 R。一个速率方程描述一个速率具体如何变动,用信息链指向速率的变 量都会影响速率。速率方程应该包括所有这些变量,否则在语义上就会出错。 3)辅助变量(AUXILIARY)方程,标识为 A。一个辅助变量方程描述一个辅助变量具体如 何变动。辅助变量辅助表达系统中复杂的因果关系。在前面某些简单的模型中,根本没有 出现 A 方程。反之,在实用的复杂系统中辅助变量的数量要比其他变量大得多(见 25 小节的实例)。辅助变量的作用是辅助表达系统中的因果关系。一方面它可以把复杂的因 果关系环中各个重要的概念分离出来,另一方面还可以描述重要的外部变量。 4)初值方程,标识用 N,它表示各种变量的初始值,所以在流图中不会出现。只有存量必须 给定初始值,其他变量的初值可以给定也可以不给定,因为其他变量在初始时刻的值可由 该变量方程通过 LEVEL 变量的初始值计算出来。用 N 方程给定初值有两种方式,一种是 把数值直接赋给变量,作为初值,例如 N植物=10000 另一种是间接地为变量赋值,例如 N植物=10000 N食肉动物=0.1*植物 这就意味着: N植物=10000 N食肉动物=1000 如果建模者不为 R、A、S 变量置初值,则编译就把这些变量方程中的下标去掉,做为初 值方程。函数的初值也同样处理,把函数中自变量的下标去掉,再通过函数计算就得到了函数 的初值。 如果建模者用 N 方程给 R、A、S 变量设了初值,那么机器应该比较上一句得到的初值与 建模者用 N 方程设定的初值之间的差。如果不为 0,机器应自动取舍,不同的编译有不同的考 虑。 5)常量(CONSTENT),标识为 C,在流图上用小圆上画一斜线表示。有的数值在系统中 起着比较重要的作用。这些数值标识系统特征,是重要的参数,反映了某个概念,有必要 将它们特别明确起来,所以不是把这些数值直接写在速率方程、辅助方程或初值方程中, 而是为它们命名。再用常量方程去表示其具体数值的大小。例如在植物出生率的辅助方程 A植物出生率.K=3+气候影响.K+随机噪音.K 中,数值 3 是植物出生率的平均数,用一个常量方程表示,概念上更清楚。如此,一个辅 助方程可以由两个方程来表示: A植物出生率.K=植物平均出生率+气候影响.K+随机噪音.K C植物平均出生率=3 在前边的章节中曾提到系统模型中有变量及参数之分。变量是随某些量变化的函数,参数 在同一次模拟运算中保持不变,在不同的模拟运算中才变化,DYNAMO 中的 C 变量实质 上就是系统模型的参数。 6)表变量方程,以 T 为标识,它没有标准的流图图例。表变量方程是为了给出一个给定表函 数的函数值。它的格式很固定: T某个表名=数,数,数 有的机器上可以用“/”代替“,”作为两个数的分隔符。有关表函数的内容将在 244 节中介绍。 7)补充变量,用 S 为标识。它不是独立的变量,它的目的是为了保留、计算某些量的函数值, 以便统计、制表、制图。例如,如果在一个模型中男人数、女人数分别是两个存量,那么 为了计算并显示人口总数,可以引入补充变量。人口总数用 S 变量方程定义: S人口总量.K=男人数.K+女人数.K 8)列车变量,标识是 B。列车变量用一变量名标记一组存贮单元,每个存贮单元称为一个车 厢,整个一组存贮单元组成为一个列车。车厢用于存贮数据,车厢中的初值用 N 或 C 语 句赋予。车厢中所存贮的数据可以移动。有两种移动方式:一种方式称为直线列车,车厢 直线串联形成一个直线列车,数据从前一节车厢定时向后一节车厢传送,最后一节车厢的 值移动后就消失了;第二种方式称为环形列车,车厢环形串联首尾相接,形成环形列车, 数据从前一个车厢定时向后一个车厢传送,最后一节车厢的值又返送回第一个车厢。 BBB=BOXLIN(10,2) 定义了一个名为 BB 的 10 节的直线列车,车厢的内容每 2 个时间步长(DT)移动一次。 BAA=BOXCYC(6,4) 定义了一个名为 AA 的 6 节的环形列车,车厢的内容每 4 个步长移动一次。 车厢值可以用下标取出,所以 BB(5)表示 BB 的第五节车厢的值。上边所定义的列 车变量 BB、AA 初值可以用两种方式赋予。 第一种方式用 N 方程赋予: NBB=BOXLOAD(10,4) 表示所有的 BB 的 10 车厢的值都为 10*4 即 40。 BAA=BOXLOAD(4,3) 表示所有的 AA 的 6 个车厢的值都为 4*3 即 12。 第二种方式用 C 方程定义: CBB*=4,7,6,5,3,4,1,9,8,1 分别表示 B(1)的初值为 4,BB(2)的初值为(7), 车厢(如 BB(3)出现在方程的左边表示右边的表达式向它赋值,车厢出现在方程 的右边表示从车厢中取值。列车变量类似于一般程序语言的数组,用于存储以前的数据。 最后,L 方程的括号内、R 方程、A 方程、N 方程、S 方程的等号右边,只能是表达式。 表达式是关于上述 L、R、A、S、C、B 变量及函数和数的代数运算。运算顺序是从左到右, 先乘除后加减,但可以用小括号改变其运算顺序,从内层括号逐步向外计算。 243 DYNAMO 方程的顺序及时间下标方程的顺序及时间下标 从流图到 DYNAMO 模型,要把流图中的各个元素用相应的变量方程描述,变量方程的顺 序并不重要,只是各个变量都必须写一次且只写一次。每人可以按照自己的习惯安排顺序,个 人的方法各有优缺点。有一种方法是以一个存量为核心,先写这个存量方程,然后逐个写有关 的速率方程。写出一个速率方程之后,就将指向它的每一条信息链逐条地逆着信息链的箭头方 向,将所涉及的辅助变量、命名常数的方程一个一个地写下去,直到碰到一个存量或外部变量。 最后写这个存量的初值方程。在写的过程中,凡是已写的变量不能重写。用这种方法,方程很 容易读,很容易查处遗漏的方程。每写一个方程时,应考虑这个方程的含义,也很容易把语义 上的问题弄清楚。 还有一种写法是把含义相关的方程放在一起,成为一个子模块。有些很大的模型可以用这 种方法分成许多子模块,甚至子子模块,这样不断地划分下去。建摸着根据自己的情况安排模 型中变量出现的顺序。DYNAMO 编译系统会合理安排变量计算顺序。 编写 DYNAMO 模型中各个变量的方程时,必须遵守下标表(表 22)中的规定。 表表 22 方程左边 变量类型 左边变量的 时间下标 方程的右边所能包含的变量及时间下标 LARSCTN LKJJJK不准包含无下标无下标无下标 AKKKJK“ RKLKKJK“ SKKKJKK“ C无下

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论