专业学习|系统动力学概观(方法特色、构成要素、建模步骤)

devtools/2024/9/20 1:27:38/ 标签: python, 系统动力学, vensim, 系统仿真

一、系统动力学概览

(一)系统动力学介绍

        系统动力学是一门综合交叉学科,其基础理论涵盖了控制论、信息论和决策论等多个领域。它利用计算机仿真技术对复杂系统进行定量研究,尤其是那些具有非线性、高阶次和多重反馈特征的系统。这一学科旨在深入理解系统的行为及其内在机制,从而有效解决系统问题。

(1)首先,根据分解原理把系统S划分为若干个相互关联的子系统Si。各子系统之间的相互关系可通过关系矩阵的非主导元反映出来。在实际问题中系统内的某子系统与其他子系统的直接联系是少量的、有限的,因此关系矩阵是分块对角优势的。

(2)其次,对子系统Si的描述。子系统由基本单元、一阶反馈回路组成,一阶反馈回路包含三种基本的变量:状态变量、速率变量和辅助变量。这三种变量可分别由状态方程、速率方程、辅助方程表示。

        SD被称为“战略与策略实验室”, SD在建模时借助于“流图”,它与其它模型方法相比具有的优越性体现在:①SD是一门可用于研究处理旅游社会学、旅游经济和旅游生态等一类长期性和周期性的问题。它可在宏观与微观的层次上对复杂多层次、多部门的大系统进行综合研究。②SD的研究对象是开放系统,认为系统的行为模式与特性主要根植于其内部的动态结构与反馈机制。③SD研究解决问题的方法是一种定性与定量相结合,分析、综合与推理的方法,适用于对数据不足的问题进行研究。④SD模型是旅游社会经济系统一类系统的实验室,适用于处理精度要求不高的复杂的旅游社会经济问题。一些高阶非线性动态的问题,应用一般数学方法很难求解。

1. 理论基础

- 控制论:研究系统的控制和调节,强调反馈环路的重要性。

- 信息论:关注信息的传递与处理,帮助理解系统中的信息流动。

- 决策论:分析不同决策路径可能导致的结果,促进更优决策的制定。

2. 方法论

从系统方法论的角度看,系统动力学结合了以下三种方法:

- 结构的方法:关注系统的组成部分及其相互关系。

- 历史的方法:考察系统随时间演变的过程,理解过去如何影响现在。

- 功能的方法:分析系统各部分的功能及其在整体中所起的作用。

3. 系统行为与机制

        系统动力学强调系统行为与其内在机制之间的紧密依赖关系。通过建立数学模型并进行操作,研究者能够逐步揭示出系统形态变化背后的因果关系。这一过程被称为“结构”,它使得研究者能够识别和理解系统内部的动态关系和反馈效应。

        总之,系统动力学作为一门重要的学科,为我们提供了一种强有力的工具,以探究和理解复杂系统的行为,进而能够为决策和管理提供科学依据。通过这一学科,我们能够更好地应对现实世界中的各种复杂挑战。

(二) 系统动力学的特点

        系统动力学凭借其多学科的广泛适用性、深入的因果分析、灵活的模型结构、强大的数字模拟能力、跨学科的协作特性,以及强调学习和适应能力,为复杂系统的研究和管理提供了有力的方法论支持。系统动力学作为一门研究复杂系统的学科,具有以下几个显著特点:

 1. 多学科问题研究能力

        系统动力学能够涵盖工业、农业、经济、社会、生态等多个领域的系统问题。它通过明确系统内部与外部因素之间的相互关系,使得在调整控制参数后,能够实时观测到变化趋势。具体来说,它采用以下方法:

- 子系统划分:将研究对象划分为若干子系统。

- 因果关系网络:建立各个子系统之间的因果关系网络。

- 整体协调机制:确保整体与各组成元素之间的有效协作。

- 宏观与微观结合:强调从多方面、多角度对系统问题进行综合性研究。

 2. 因果关系机理性模型

        系统动力学模型是一种强调因果关系的机理性模型,其行为模式和特性主要取决于系统内部的动态结构和反馈机制。这意味着:

- 内外部联系:系统与环境之间存在深刻的相互联系和作用。

- 动态变化:模型所包含的变量会随时间变化,从而适用于长期性和周期性系统问题的模拟。

 3. 结构模型与灵活性

        系统动力学模型重视系统的整体结构,而不要求特别精准的参数。这种方法论体现在:

- 定性与定量结合:采用定性分析为先导,通过“白化”技术简化模型,然后用定量分析支持,优化不良结构。

- 分析与推理:同时运用分析、综合与推理的方法,以实现更深层次的理解和解决方案。

 4. 数字模拟技术应用

        针对高阶次、非线性和时变性的系统问题系统动力学不依赖传统讲解方法,而是利用数字模拟技术进行研究:

- 宏观与微观层次:能够在两个层次上对复杂多层次和多部门的大系统进行综合研究,提升对系统行为的理解。

 5. 建模过程的协作性

        系统动力学的建模过程促进了建模人员、决策人员和专家群众之间的协作,表现为:

- 数据与经验整合:便于使用各种数据、资料以及人们的经验与知识。

- 跨学科融合:允许融汇其他系统学科和科学的精髓,增强模型的创新性与实用性。

 6. 强调学习与适应能力

        系统动力学模型不仅用于静态分析,更注重动态学习与适应性:

- 自我调整:系统能够根据反馈进行自我调整,优化运行效率。

- 应对不确定性:通过模拟不同情境下的反应,帮助决策者更好地应对未来的不确定性。

 7. 可视化与沟通工具

        系统动力学模型通常具备良好的可视化效果:

- 直观展示:通过图形和图表展示系统的动态变化,更易于理解和沟通。

- 提高参与度:让各利益相关者能够直观了解系统运行,促进对话与共识。

二、系统动力学能解决什么问题?

        系统动力学是一种用于理解和分析复杂系统行为的方法,尤其适用于处理具有时间延迟、反馈循环和非线性关系的动态问题。它通过建立模型来模拟系统的动态变化,从而帮助决策者更好地理解系统的运行机制,并进行有效的政策制定。

(一) 系统动力学能解决的问题

1. 政策分析:评估不同政策对系统行为的影响,如环境政策、经济政策等。

2. 资源管理:分析自然资源(如水资源、能源)管理中的可持续性问题。

3. 供应链管理:优化生产、库存和分配策略,以提高效率并减少成本。

4. 生态系统建模:研究物种互动、栖息地变化等生态问题。

5. 社会系统:分析人口增长、公共卫生、教育等社会问题。

6. 企业战略:制定商业战略,评估市场反应和竞争动态。

        当系统行为出现指数规律增长趋势时,是因为系统中有起主导作用的一阶正反馈回路。当系统受到干扰偏离原来状态又能自动返回并趋向起始状态时,则表明系统中至少存在一个很强的一阶负反馈回路。系统发生振荡行为则表明系统存在二阶以上的反馈回路或者一个一阶负反馈回路加上一个一阶以上的延时环节。S形增长特性则是一阶正反馈回路与一阶负反馈回路由非线性环节相联结而产生的。

(二) 解决问题的工具与步骤

 (1)主要工具

1. 因果环图(Causal Loop Diagrams, CLD):

   - 描述系统中变量之间的因果关系和反馈循环。

   - 帮助识别系统的结构和潜在的动态特征。

2. Stock and Flow Diagram:

   - 用于表示系统中“存量”(stock)和“流量”(flow)的关系。

   - 清晰描绘出系统的时变特性和积累过程。

3. 系统动力学模型软件:

   - 常用软件包括 Vensim、Stella、AnyLogic 等。

   - 提供可视化建模、仿真和结果分析功能。

4. 仿真:

   - 通过计算机模拟运行模型,以观察系统随时间演化的行为。

   - 可以通过改变参数和情境来评估不同策略的效果。

(2)主要步骤

1. 问题定义:

   - 明确要解决的具体问题,确定相关的目标和范围。

2. 构建因果环图:

   - 绘制因果关系图,识别重要变量及其相互作用,找出反馈环路。

3. 建立模型:

   - 根据因果环图,构建存量-流量图,定义变量及其数学关系。

   - 利用软件工具将模型实现。

4. 模型验证:

   - 确保模型能够准确反映现实情况,通过历史数据进行验证和校准。

5. 进行仿真:

   - 运行模型,观察系统在不同情境下的表现。

   - 进行敏感性分析,评估关键参数对结果的影响。

6. 政策分析与建议:

   - 基于仿真结果,提出可行的政策或干预措施。

   - 评估这些措施的长期影响,并进行必要的调整。

7. 结果呈现与沟通:

   - 将研究结果以可视化形式展示,以便于利益相关者理解和决策。

三、系统动力学流程介绍

(一)相关概念介绍

1.反馈系统与反馈回路

1)定义
反馈是指信息的传输与回授。

        反馈可以从单元或子块或系统的输出直接联至其相应的输入,也可以经由媒介——其他单元、子块,甚至其它系统实现。

2 )反馈系统与反馈回路          
        反馈系统是包含有反馈环节与其作用的系统。(闭环系统)

        反馈回路是由一系列因果与相互作用链组成的闭合回路(由信息与动作构成的闭合路径)。

3) 反馈的作用与反馈系统的分类
        没有反馈的系统(比如开环系统)不能检测到自身的行为,不能对其行为作出反应,也不能作自我调整。

        正反馈特点:能产生自身运动的加强过程,在此过程中运动或动作所引起的后果将回授,使原来的趋势得到增强。

        负反馈特点:能自动寻求给定的目标,未达到(或未趋近)目标时将不断作出回应。

        具有正反馈特性的回路称为正反馈回路,具有负反馈特性的回路称为负反馈回路。分别以两种回路起主导作用的系统则称之为正反馈系统与负反馈系统。

判断标准:负反馈为奇数则为负反馈回路,偶数则为正反馈回路。

2.系统结构介绍

        结构包含两层意思,首先指组成系统的各单元,其次指各单元间的作用和关系。

        系统动力学认为一阶反馈回路是构成系统的基本结构。

        系统结构一般存在以下体系与层次:

(1)确定系统S范围的界限

(2)子系统或子结构Si(i=1,2,...,p)

(3)系统的基本单元,反馈回路结构Ej(j=1,2,...,m)

(4)反馈回路的组成与从属成分:

         反馈回路的主要变量——状态变量和变化率(速率)。

        系统界限是指系统范围,规定了形成某特定动态行为所应包含的最小数量的单元。界限内为系统本身,界限外则为环境。

        系统的基本结构是一阶反馈回路。对应于系统的三个组成部分是单元、运动和信息。状态变量的变化取决于决策或行动的结果。

        决策的产生分为两种:一种是依靠信息反馈的自我调节(生物界、社会经济系统、机器系统),另一种是在一定条件下不依靠信息的反馈,而按照系统本身的某种特殊规律(非生物界)。

        一个反馈回路就是由状态、速率、信息三个基本部分组成的基本结构。一个复杂系统则按一定的系统结构由若干个相互作用的反馈回路所组成。

(二) 结构模式

   1、因果关系图

1)定义

        图中的个别因果链可标明其影响作用的性质。正号表明,箭头指向的变量将随着箭头源发的变量的增加而增加、减少而减少;而负号表明变量间取与此相反的关系。但正负号并不表示变量间存在比例关系。
确定回路极性的原则:

(1)若反馈回路包含偶数个负的因果链,则极性为正

(2)若反馈回路包含奇数个负的因果链,则极性为负

反馈回路的极性取决于回路中因果链符号的乘积。

2)因果与相互关系回路图往往用于:

(1)构思模型的初始阶段

(2)非技术性地、直观地描述模型结构,便于与不熟悉系统动力学的人进行交流讨论。

普遍用于构思模型的初始阶段,成熟的构模者可以不做。

因果关系图的重要缺点:在因果关系图中,为了简便,忽略了信息反馈链与物质流的差别。

3)流图法、混合图与图解分析法

        在系统动力学中,流图法和混合图是用于表示系统动态行为的重要工具。流图法通过速率(或称变化率)来描述状态变量随时间的增减变化。仿真中,云状符号代表源(sources)与漏与沟(sinks),它们分别表示输入与输出状态或称位(level)的一切物质。流图能够清晰地区分信息流和物质流,其中信息流用虚线表示,而物质流则用实线表示,这种区分有助于分析系统中不同类型的交互作用。

        混合图则是在因果关系图的基础上,将状态和速率变量结合在一起进行表示,且所有元素均使用实线描绘。这种方式使得混合图能够更全面地展示系统中各个变量之间的关系,便于理解其动态特征。

        此外,图解分析法作为一种简单、形象、且清晰的分析工具,在处理一般线性分析无法解决的简单非线性系统问题时尤为有效。尽管图解法具有一定的优势,但它在分析复杂系统时的能力有限。因此,综合运用流图法、混合图和图解分析法,可以为系统的建模与分析提供多样化的方法支持,帮助研究人员深入理解复杂系统的行为与特征。

4)构成要素介绍

图片来源:高晓宁,韦浩冉,张孟伟.高校网络舆情风险影响因素的系统动力学建模与仿真分析[J/OL].情报科学.https://link.cnki.net/urlid/22.1264.G2.20231013.1625.002

     因果箭:连接因果要素的有向线段。箭尾始于原因,箭头终于结果。因果关系有正负极之分。正(+)为加强,负(-)为减弱。

     因果链:因果关系具有传递性 。在同一链中,若含有奇数条件极性为负的因果箭,则整条因果链是负的因果链,否则,该条因果链为极性正。

     因果反馈回路:原因和结果的相互作用形成因果关系回路(因果反馈回路)。是一种封闭的、首尾相接的因果链,其极性判别如因果链。

2、流程图

     流程图是系统动力学结构模型的基本形式,绘制流程图是系统动力学建模的核心内容。

 图片来源:高晓宁,韦浩冉,张孟伟.高校网络舆情风险影响因素的系统动力学建模与仿真分析[J/OL].情报科学.https://link.cnki.net/urlid/22.1264.G2.20231013.1625.002                 

   (1)流(Flow):系统中的活动和行为,通常只区分实物流和信息流;

   (2)水准(Level):系统中子系统的状态,是实物流的积累;

   (3)速率(Rate):系统中流的活动状态,是流的时间变化;在SD中,R表示决策函数。

   (4)参数量(Parameter):系统中的各种常数;

   (5)辅助变量(Auxiliary Variable):其作用在于简化R,使复杂的决策函数易于理解。

    (6)滞后(Delay):由于信息和物质运动需要一定的时间,于是就带来愿意和结果、输入和输出、发送和接收等之间的时差,并有物流和信息流滞后之分。

3、其余建模要素介绍

1)变量与方程

1 变量
        状态变量:积累变量,是最终决定系统行为的变量,随着时间的变化,当前时刻的值等于过去时刻的值加上这一段时间的变化量。

        速率变量:是直接改变积累变量值的变量,反映积累变量输入或输出的速度,本质上和辅助变量没有区别。

        辅助变量:辅助变量由系统中其他变量计算获得,当前时刻的值和历史时刻的值是相互独立的。

        常量:常量值不随时间变化。

        外生变量:随时间变化,但是这种变化不是由系统中其他变量引起的。

2)变量方程

(1)状态变量方程

(2)速率方程

(3)辅助方程

        外生变量影响到其他系统内生变量但不受内生变量影响,所以往往是关于时间t的函数。如天气,就需要根据天气预报建立关于t的表函数。

3) 表函数(lookup function)

        模型中往往需要描述某些变量之间的非线性关系,这很难通过简单的变量之间运算组合来实现,比较方便的是能够以图形方式给出这种非线性关系。

建立表函数的一般步骤是:

(1)确定表函数中的自变量和因变量;

(2)明确变量的取值变化范围,通常通过历史数据和预测数据来确定;

(3)考虑曲线的形状和斜率,在什么范围内曲线是平缓的,什么范围内曲线坡度高,要符合自变量和因变量之间的影响关系,其中正斜率表示正反馈,负斜率表示负反馈;

(4)选取合适的曲线端点、驻点、拐点;

(5)作出图形,通常用x轴表示自变量,y轴表示因变量。

        表函数曲线并不是一个光滑的曲线,它也是通过离散化来实现的。

        简单例子:十个x对应十个y。建立这些点之间的连线就可以描述这两个变量之间的关系,在vensim中用Graph lookup editor 来实现这一功能。除了已给出的点,可用点之间的斜率求出。当自变量的值溢出表函数中的定义的范围,那么vensim会默认溢出的自变量值对应的因变量输出值为曲线的端点值,同时发出警告信息。解决这样的问题可以通过扩大取值范围来实现。

4) 延迟、平滑和平滑函数

1 物质延迟
(1)DELAY1I:一阶延迟

DELAY1I形式为:DELAY1I(input,delay time,initial value)

DELAY1I=LV(t)/DT

LV(t)=LV(t0)+

LV(t0)=IVxDT

IV表示initial value,DT表示delay time.

以DELAY1I替代一组方程,使用方便,缺点是状态变量被隐含,不输出它的结果。

(2)DELAY3I:三阶延迟

(3)DELAY FIXED

2) 物质延迟的阶次
        一阶与三阶曲线差别很大,增长模式全然不同,但三阶曲线与六阶甚至十二阶曲线比无本质区别,只是程度上差异而已,同样是S形模式。Vensim中备有一阶函数和三阶函数,而无更高阶次的单个函数。若建模者认为确实有必要应用高于三阶的延迟函数,可以用两个三阶函数串成六阶函数。

3 平滑函数
SVAR(t)=SMOOTH[VAR(t),STIME]

其中,SVAR为平滑变量,VAR为待平滑变量,STIME为平滑时间。

4 信息延迟
类似于物质延迟。

5) 函数

1 数学函数
2 逻辑函数
MAX, MIN, IF ELSE THEN

3测试函数
(1)阶跃函数

(2)斜坡函数

(3)脉冲函数

(4)正弦函数

(5)正态分布函数

4、建模输出

动力学模拟软件可以提供的输出:

(1)时间序列的数据输出。

(2)时间序列的图形输出。

(3)变量之间的关系图。

(4)因果关系分析,以及反馈分析等静态分析的输出。

5、 准确度与运行时间单位的选择

        选择time step的经验法则是,取其值为(0.1~0.5)倍的模型最小时间常数,取小于0.5倍可防止出现不合理的计算结果,但若取小于0.1倍则对于计算的准确度提高不大,且耗费大量的计算机时。

        如计算最小时间常数为1/CONST=1/0.2=5,time step=(0.1~0.5)*5=0.5~0.25(分)。

(三)难点-反馈系统介绍

1) 一阶系统

1 一阶系统的数学描述
一阶微分方程式等式右侧保留一项,为指数增长规律或自然增长规律。

一阶微分方程式等式右侧保留两项,曲线呈S形增长特性,通常称为Sigmoid或logistic曲线。

2)一阶系统的重要参数

2.1 指数增长及其参数
(1)指数增长方程式

其中,LEV(t)为状态在t时的值,LEV(0)为状态的初始值,CONST为比例常数。

(2)时间常数T

T=1/CONST,具有时间的量纲。

LEV(T)=2.73LEV(0),LEV(2T)=7.45LEV(0)

(3)倍增时间(doubling time)Td

倍增时间定义为变量由初始值倍增至二倍的初始值所需的时间。

推导可知,Td=0.69T,倍增时间约等于70%的时间常数T。

2.2 一阶负反馈系统的重要参数
(1)方程式的基本形式

其中,LEV(t)为状态在t时的值;LEV(0)为初始状态值;GL为目标值;CONST为比例常数。

(2)时间常数T

\([LEV(t)-LEV(0)/(GL-LEV(0))]\times 100%\)表明在时间t内,状态值与其目标值接近的程度。

\([(GL-LEV(t))/(GL-LEV(0))]\times 100%\)表明在时间t内,状态值与目标值之差距。

经过3倍的时间常数T之后状态值接近目标值的程度已达大约95%,而经过4T后则约达99%。

(3)减半时间函数(或半衰期)(halving time)Th与时间常数T的关系

如果负反馈是指数衰减过程,状态值减半所需时间

减半时间Th约等于0.69倍的系统时间常数T。

3) 正反馈系统

3.1 正反馈的一般结构
        流图中的状态变量LEV为单向流的物质积累。任何有关状态数量上变动的信息,经速率RT控制进入LEV的流量。假定RT正比于LEV,RT等于LEV乘以常数CONST。若CONST=0.2,LEV的初始值为1,则系统的方程如下:

        其中,DT为计算时间间隔(年);CONST为常数(1/年);LEV为状态变量(单位);RT为速率(单位/年)。

3.2 正反馈系统特征
(1)在相当长的时间内增长极慢,然后突然爆炸性地增长上去。

(2)超指数增长。

4)负反馈结构

4.1 负反馈结构基本方程式
负反馈结构基本方程式:

其中,LEV为状态单位;RT为速率(单位/时间);CONST为常数(1/时间);DISC为偏差(单位);GL为目标值(单位)。

4.2 系统特性
LEV随时间变化的曲线包括两个区段:瞬态和稳态。在瞬态区段中,LEV值与目标值GL不相等。此时LEV具有寻的与瞬变的特点。在稳态区则是接近或近似地达到目标值,稳定不变。RT也最终近似地达到0值。

5) 负反馈系统的补偿特性

        负反馈系统具有力图维持系统处于平衡状态的特性。在最简单的系统中,基于状态值与目标值之差的速率发挥调节作用,驱动系统状态趋向目标值。而时间常数决定系统对状态变化的反应速度。

6) S形增长的反馈结构

S形增长包含了指数与渐进两种增长过程。稳态区前的过渡区是由两种明显不同的增长过程组成,先是指数增长,继之渐近增长。前者是正反馈起主导作用,后者是由负反馈起主导作用。

四、动力学建模步骤

   借鉴来源见文档2

建立系统动力学模型可以使用的软件包括:DYNAMO / Powersim / Vensim等。下面介绍用Vensim软件构建系统动力学模型的具体步骤:

1.绘制因果回路图(分析系统中的要素,界定好箭头及各回路的极性)

2.绘制存量流量图(找出水平变量、辅助变量、常量等,系统庞大时可借助影子变量将系统拆分为几个子系统)

3.建立系统动力学方程(构建模型的核心,包括设置方程、单位、初始值、时长、开始和结束的时间等,一定要界定好系统的界限,做好各种假设

L 水平变量方程

R速率变量方程

C常量方程

A辅助变量方程

N初始值方程

4.模型检验(进行模型和单位的检验,可进一步进行现实性检测,以判断是否符合现实情况)

模型检验:菜单栏Model→Check Model

单位检验:菜单栏Model→Units Check

现实性检测:仿真后按Reality Checks

5.模型的仿真模拟(建立模型并进行检验后,可在软件中查看变量的变化图或通过调节模型参数取值,看模型对参数取值变动如何反应)

可微调变量的参数,按键后在参数下方出现拖动条的变量可更改参数

可较大幅度更改变量参数,按键后变蓝色底的变量可更改参数

查看模型中哪些变量会引起该变量发生变化

查看模型中该变量会引起哪些变量发生变化

查看多种变量在该模型现有参数或者不同参数设置下的变化

查看同一变量在该模型现有参数或者不同参数设置下的变化

6.政策优化(参数优化、结构优化、边界优化,寻找最优控制)

五、学习资源与思路

(一)学习思路

(二)学习资源

软件下载及详情介绍请参见Vensim软件官方网站:http://vensim.com/

慕课课程:系统思维与系统决策:系统动力学__中国大学MOOC(慕课) (icourse163.org)

bilibili课程:2. Vensim软件的基本使用方法_哔哩哔哩_bilibili

python系统动力学建模:Python系统动力学仿真:从理论到实践-百度开发者中心 (baidu.com)

simupy - 用于建模和模拟动态系统的框架。_PyPI中文网

(三)其余问题

(1)系统动力学仿真与多主体仿真

        系统动力学仿真和多主体仿真各有其独特的优点和应用场景。在选择合适的方法时,需要根据研究目标、系统特性以及所需分析的层次来决定。两者也可以结合使用,以发挥各自的优势,深入分析复杂系统的动态行为。

1、 系统动力学仿真

        系统动力学(System Dynamics, SD)是一种以时间为基础的建模方法,专注于复杂系统中变量之间的动态关系。系统动力学仿真通常使用微分方程来描述系统内各个元素(如状态变量和流量)的变化,特别强调系统反馈、延迟和非线性特征。

 特点:

1. 宏观视角:系统动力学往往关注整个系统的行为,而不是单个个体的行为。它适用于需要考虑大量因素及其相互作用的情况,如生态系统、经济模型、供应链等。

2. 反馈循环:系统动力学强调反馈机制,包括正反馈和负反馈,这些机制在动态系统中起着关键作用。

3. 长时间尺度:通常应用于分析长期趋势和政策影响,通过模拟不同情境下的系统表现,帮助决策者评估各种策略的潜在影响。

2、 多主体仿真

        多主体仿真(Agent-Based Simulation, ABS)是一种从个体层面出发的建模和仿真方法,关注系统中每个独立个体(即“主体”)的行为和交互。这些主体可以是人、动物、组织或任何能够独立行动的实体。

 特点:

1. 微观视角:多主体仿真关注个体行为与决策,研究主体如何通过互动形成宏观现象。这使得该方法特别适合于社会科学、经济学、生态学等领域的研究。

2. 异质性:每个主体可以具有不同的行为规则、属性和决策过程,从而反映现实世界中的多样性。

3. 自组织特性:通过简单的个体行为规则,系统可能会出现复杂的集体行为,这是多主体仿真的一个重要优势。

3、 差异

1. 建模层次:

   - 系统动力学:主要从整体系统的角度建模,侧重于系统变量之间的动态关系,忽略个体差异。

   - 多主体仿真:主要从个体的角度建模,强调个体行为和相互作用对系统整体行为的影响。

2. 时间尺度:

   - 系统动力学:通常处理较长时间尺度的动态变化,适用于分析长期政策影响和趋势。

   - 多主体仿真:可以在较短的时间尺度上进行仿真,尤其是在研究突发事件或快速变化的动态环境时。

3. 适用场景:

   - 系统动力学:更适合于大型、复杂、且包含多个反馈回路的宏观问题,比如经济增长、生态管理等。

   - 多主体仿真:适用于需要模拟个体决策和交互的场景,比如市场行为、交通流动、社交网络等。

4. 复杂性处理:

   - 系统动力学:通过公式和方程处理复杂性,以定量方式分析变量之间的动态关系。

   - 多主体仿真:通过模拟个体行为和规则的组合,产生复杂的集体行为,更多依赖于计算机仿真。

(2)python进行系统动力学建模的代码

python">import bacteria as bc# 创建模型
model = bc.Model()# 定义模型变量
model.add_variable("risk_level", 0.0, description="当前风险水平")
model.add_variable("mitigation_effort", 0.5, description="风险缓解努力程度")
model.add_variable("incident_frequency", 0.1, description="事件发生频率")
model.add_variable("incident_impact", 0.2, description="事件影响程度")# 定义模型方程
model.add_equation("risk_level = incident_frequency * incident_impact - mitigation_effort", description="风险水平计算公式")# 设定初始条件
model.set_initial_conditions({"risk_level": 0.5,"mitigation_effort": 0.5,"incident_frequency": 0.1,"incident_impact": 0.2
})# 运行模拟
results = model.simulate(time_range=(0, 50), step_size=1)# 打印结果
for time, data in results.items():print(f"Time {time}: Risk Level = {data['risk_level']}")# 结果可视化
import matplotlib.pyplot as pltplt.plot(results.keys(), [data['risk_level'] for data in results.values()], label='Risk Level')
plt.xlabel('Time')
plt.ylabel('Risk Level')
plt.title('Risk Level Over Time')
plt.legend()
plt.show()

解释:

  1. 创建模型:使用 bacteria 库创建一个新的系统动力学模型对象。

  2. 定义模型变量:添加模型变量 risk_levelmitigation_effortincident_frequency 和 incident_impact,这些变量用于表示风险水平、缓解努力、事件发生频率和事件影响程度。

  3. 定义模型方程:添加模型方程来描述风险水平的计算方式。公式 risk_level = incident_frequency * incident_impact - mitigation_effort 表示风险水平由事件的发生频率和影响程度决定,同时考虑缓解努力的影响。

  4. 设定初始条件:设置模型变量的初始值。

  5. 运行模拟:使用 model.simulate() 方法运行模型模拟,时间范围从0到50,步长为1。

  6. 打印结果:输出每个时间点的风险水平。

  7. 结果可视化:使用 matplotlib 库绘制风险水平随时间变化的图表。

他山之石(参考借鉴)

「1」20小时快速学习【系统动力学】-CSDN博客

[2]研究方法丨系统动力学模型构建步骤 - 知乎 (zhihu.com)


http://www.ppmy.cn/devtools/114337.html

相关文章

docker构建镜像环境搭建深度学习开发环境

我想经常需要装环境的同学应该很烦,可能因为你的不小心,导致系统崩溃等等问题,或者环境需要装另一个版本的cuda,但是目前换可能不是很方便。这些我都遇到过,那么docker可以满足你的一切需求,你可以安装不同…

SpringBoot Web开发中的Thymeleaf模版引擎

在Spring Boot的Web开发中,模板引擎是处理视图层的重要组件之一。在众多模板引擎中,Thymeleaf以其优雅的自然模板设计和对HTML的良好支持,成为了Spring Boot官方推荐的模板引擎。本文将详细介绍如何在Spring Boot项目中使用Thymeleaf模板引擎…

VirtualBox增加磁盘并给docker用

在VirtualBox新增磁盘 在虚拟机停止的情况下依次选择,然后创建新磁盘 虚拟机新磁盘创建分区、格式化、挂载分区 开机自动挂载新磁盘分区/dev/sdb1: nano /etc/fstab末尾添加一行: /dev/sdb1 /disk02 e…

[Python学习日记-23] Python v2 和 v3 中的字符编码

[Python学习日记-23] Python v2 和 v3 中的字符编码 简介 Python2 vs Python3 的编码 总结 简介 在Python 中的字符编码(上)和Python 中的字符编码(下)中学习了字符编码的理论知识那么就,我们把目光回到 Python 当…

【深度学习】(2)--PyTorch框架认识

文章目录 PyTorch框架认识1. Tensor张量定义与特性创建方式 2. 下载数据集下载测试展现下载内容 3. 创建DataLoader(数据加载器)4. 选择处理器5. 神经网络模型构建模型 6. 训练数据训练集数据测试集数据 7. 提高模型学习率 总结 PyTorch框架认识 PyTorc…

canvas和svg的区别是什么?它们的应用场景是什么?

区别 绘图方式: Canvas 使用JavaScript API在画布上绘制像素来创建图形,提供了对像素级别的控制,可以实现复杂的图形和动画效果1。SVG 使用XML语法描述图形,是一种基于矢量路径的矢量图形格式,可以无损缩放而不失真1。…

【C++算法】模拟算法

替换所有的问号 题目链接 替换所有的问号https://leetcode.cn/problems/replace-all-s-to-avoid-consecutive-repeating-characters/description/ 算法原理 代码步骤 class Solution { public:string modifyString(string s) {int n s.size();for(int i 0; i < n; i){…

经典sql题(六)查找用户每月累积访问次数

使用聚合开窗查找用户每月累积访问次数&#xff0c;首先介绍一下使用 GROUP BY和开窗的区别 GROUP BY 行数变化&#xff1a;使用 GROUP BY 后&#xff0c;原始数据会按指定列进行分组&#xff0c;结果中每组只保留一行&#xff0c;因此行数通常减少。作用&#xff1a;适用于需…

HarmonyOS第一课-应用程序框架基础习题答案

声明&#xff1a;本题库为最新的HarmonyOS第一课的学习题库&#xff0c;仅供参考学习&#xff01; 一、判断题 1. 在基于Stage模型开发的应用项目中都存在一个app.json5配置文件、以及一个或多个module.json5配置文件。&#xff08;正确&#xff09; 正确(True) 错误(False) -…

比 GPT-4 便宜 187 倍的Mistral 7B (非广告)

Mistral 7B 是一种设计用来快速处理较长文本的人工智能模型。它采用了一些特别的技术来提高速度和效率&#xff0c;比如“分组查询注意力&#xff08;grouped-query attention&#xff09;”和“滑动窗口注意力&#xff08;sliding-window attention&#xff09;”。 这些技术…

001、Git开发流程规范

前言 本篇不详细介绍 Git 的使用&#xff0c;仅介绍基于 Git 的开发分支流程规范。 简述 Git 管理中&#xff0c;最重要的一个点就在于分支的管理。在项目开发中&#xff0c;一般涉及到 Git 的相关分支有&#xff1a; master/main: 主分支&#xff0c;版本正式发布的代码都用…

今日所学啊

ArcGIS打不开焦点统计如何解决_arcgis焦点统计打不开-CSDN博客 好吧其实最后焦点统计还是不行&#xff0c;我就去ArcGIS Pro里做焦点统计了哈哈哈哈哈哈哈 visual studio多工程项目管理_visual studio 的模块管理-CSDN博客 1.今天成功#include <QNetworkReply>不画红线…

还不会pdf转换?试试这四款工具!

大家在日常办工作&#xff0c;一定没少遇到过PDF格式转换的需求吧&#xff0c;我的工作中经常需要处理各种文件&#xff0c;尤其是PDF文件。在工作中&#xff0c;我经常遇到需要将PDF表格转换成Excel的情况。今天&#xff0c;我就从一个普通文员的角度&#xff0c;来分享一下我…

sql语句练习

1661. 每台机器的进程平均运行时间 - 力扣&#xff08;LeetCode&#xff09; select machine_id,round(sum(if(activity_type end,timestamp,-timestamp))/count(distinct process_id),3) as processing_time from Activity group by machine_id if(activity_type end,ti…

24年蓝桥杯及攻防世界赛题-MISC-3

21 reverseMe 复制图片&#xff0c;在线ocr识别&#xff0c;https://ocr.wdku.net/&#xff0c;都不费眼睛。 22 misc_pic_again ┌──(holyeyes㉿kali2023)-[~/Misc/tool-misc/zsteg] └─$ zsteg misc_pic_again.png imagedata … text: “$$KaTeX parse error: Undefined…

CTFshow——萌新隐写(未完待续)

萌新隐写2 首先暴力破解密码&#xff0c;初始密码设为19000000即可 我用的是ziperello 萌新隐写3 萌新隐写4 word打开 - > 打开设置 - > 隐藏文字 - >flag出现 萌新隐写5 中文转unicode 16进制转字符串 base32解码 萌新隐写6 暂时不会。。。。 隐写1 打开就看到头是…

MySQL安装

一、下载 点开下面的官网链接&#xff1a;MySQL :: Download MySQL Community Server 点击Download 就可以下载对应的安装包了, 安装包如下: 二、解压 下载完成后我们得到的是一个压缩包&#xff0c;将其解压&#xff0c;我们就可以得到MySQL 8.0.31 的软件本体了(就是一个文…

828华为云征文 | 华为云Flexusx与Docker技术融合,打造个性化WizNote服务

前言 华为云Flexus X实例携手Docker技术&#xff0c;创新融合打造高效个性化WizNote服务。华为云Flexus X实例的柔性算力与Docker的容器化优势相结合&#xff0c;实现资源灵活配置与性能优化&#xff0c;助力企业轻松构建稳定、高效的云端笔记平台。828华为云企业上云节特惠来袭…

MacOS Sonoma(14.x) 大写模式或中文输入法下的英文模式,光标下方永远会出现的CapsLock箭头Icon的去除办法

如图&#xff0c;MacOS Sonoma(14.x) 大写模式或中文输入法下的英文模式下&#xff0c;光标下方永远会出现一个CapsLock箭头Icon。此Icon挡住视野&#xff0c;还容易误触导致切换大小写状态&#xff0c;带来的收益远远小于带来的困扰。 解决办法 打开终端&#xff0c;输入以下…

主机和Docker容器之间的文件互传方法汇总

Docker渐渐成为前端的一个工具&#xff0c;它像一个通用包装&#xff0c;可以把各种环境包裹其中&#xff0c;从而实现跨设备的兼容。使用的过程中&#xff0c;往往会需要将本地的文件和docker容器内部的文件互传&#xff1a;将主机的文件传递给容器内&#xff0c;让里面的工具…