☰
系统动力学课件与案例分析:从因果回路图到库存劳动力仿真
2026/10/29 4:33:19 网站建设 项目流程

简介:面向高校师生、管理决策学习者及复杂系统建模爱好者,这份系统动力学课件以单份PPT梳理学科脉络与案例应用,帮助读者建立从因果反馈、系统结构到仿真决策的整体认识。压缩包共1个PPT文件,约1.11MB,轻量便于课堂演示、自学浏览和专题汇报。内容覆盖系统动力学的发展历程、基本原理、分析问题步骤与基本概念,并延伸到Forrester的工业动力学、世界模型以及国内应用脉络;分析流程涉及识别关键元素、定义变量关系、构建因果环路图、建立动态模型、仿真与敏感性分析。案例部分以啤酒游戏等情境展示供应链库存动态、需求预测中的反馈与延迟,便于理解模型构建和策略优化思路。目前已有1138人学习,适合课程入门、案例讨论及建模方法查漏补缺时参考。

1. 一次库存实验的翻车:系统动力学课件与案例分析要解决的真问题

某同学做供应链课设,系统动力学模型跑出来的库存曲线很漂亮,答辩时被追问“第 8 周曲线为什么掉头”,当场卡住。翻回课件,前面全是学科发展历程和概念定义,案例分析部分只有一个现成的啤酒游戏模型,参数一动就发散。这套系统动力学课件与案例分析资源要补的就是这段断层:把“概念怎么来的”“模型怎么搭的”“参数为什么这么取”串成一条能自己走完的链。它适合两类人——正在做系统动力学课程设计或毕设、需要一个从因果回路图一直跑到仿真结果完整范例的学生;以及要给团队做系统思考训练、手里缺一份能直接改的案例底稿的从业者。

2. 知识地图拆解:课件五大板块的边界与各自交付物

一份能当方案用的课件,不是把教材目录抄一遍,而是每个板块都要回答一个明确问题、留下一个能检查的产物。这套内容按发展历程、原理、分析步骤、基本概念、实际案例五块组织,我在整理时给每块都配了“输入—动作—交付物”三件套,学生照着做不会漏项,从业者拿去改也能一眼看出哪里该替换成自己行业的素材。

板块要回答的问题交付物
发展历程这门方法为什么会出现一张三阶段演进时间轴
原理为什么结构决定行为一段可复述的反馈逻辑链
分析步骤从问题到模型走哪几步七步流程检查表
基本概念存量、流量、延迟怎么定义术语与单位对照表
实际案例模型长什么样、怎么跑可运行模型与实验记录

2.1 发展历程板块:三个阶段对应三类建模对象

二十世纪五十年代中期,工业化进程带来城市人口膨胀、失业、环境污染、资源约束这几类问题,它们的共同点很扎眼:彼此关联甚至互相冲突,比如增长与环保;大量环节存在长延迟,投资效果和信息传递都要过很久才显现;既有可量化的经济量,也有价值观这类偏定性的东西。静态的、单因素的分析方法处理不了这种局面,而电子计算机的出现让反复迭代的仿真成为可能,方法才顺势落地。

课件把这段演进切成三段:诞生期以企业系统为研究对象,方法最初就叫工业动力学;成熟期的标志是两座大型模型的建成——一个把研究对象扩大到全球范围,讨论增长上限;另一个是国家级的宏观经济模型,用反馈结构解释了长周期波动与通胀、失业、利率同时上行并存的怪现象;九十年代之后进入扩散期,与控制理论、突变理论、结构稳定性分析、灵敏度分析、参数估计、最优化技术等方向交叉,应用铺到能源、交通、环境、生态、医学、城市管理等领域。

这三段不是背年份用的。它的实际价值在于:你手上的题目属于哪一类对象,就决定了边界怎么划。做企业库存、产能、人力这类问题,参照的是第一阶段的思路,边界画在企业内部;做区域规划、环保政策这类问题,参照的是第二、三阶段,边界必须扩到包含政策制定者和社会响应。很多课设的模型从一开始就发虚,根子就在边界画得比研究对象小了半圈。国内从七十年代末引入这套方法后,先在区域与城市规划、企业管理、产业研究、科技管理、生态环保等方向铺开,这些领域的共同特征同样是多因素、长延迟、含定性成分,正好对上方法的适用面。

2.2 原理板块:结构决定行为的论证链要能自己讲一遍

原理这块最容易讲成口号。真正要钉死的是四句话之间的推导关系:系统内部众多变量在反馈环里存在因果联系;这些反馈环相互连接构成系统的结构;结构是系统行为的根本决定因素;所以改变行为要从改变结构入手,而不是从调整结果入手。

由此引出方法论的定位:它基于系统论,吸收控制论和信息论的内容,是结构方法、功能方法、历史方法的统一。结构方法看内部构造,功能方法看输入输出关系,历史方法看演化路径,三者缺一,模型就会退化成一条拟合曲线。课件里“寻优”的表述也来自这里——求解问题的过程本质是寻找较优结构以获得较优行为,而寻优分三个层次:参数优化是动几个敏感参数;结构优化是增删存量或速率变量;边界优化是改变系统边界和边界条件。这三种优化在答辩时经常被混为一谈,学生说自己做了“优化”,一问只是把某个常数从 0.2 调到 0.25,这就属于层次没分清。

讲原理时我一般要求学习者做一件事:不看资料,用三分钟把“结构决定行为”这条链讲给外行听,中间不许出现“反馈”这个词的解释循环。能讲通,说明真懂了;讲不通,后面建模一定是照猫画虎。

2.3 分析步骤板块:七个动作的输入输出要能对上

从问题到模型通常走七步:识别系统关键要素、定义变量之间的关系、构建因果环路图、建立存量流量模型、仿真运行、敏感性分析、基于结果做决策优化。这七步在课件里是并列列出的,但实际执行时有严格的先后依赖,前一步的产物就是后一步的输入。

第一步产出的是要素清单和系统边界说明;第二步产出变量清单和每条因果链的方向标注;第三步产出因果回路图,环的数量和极性要能数清楚;第四步产出存量流量图和方程集;第五步产出行为曲线,与预期模式做比对;第六步产出敏感参数排序;第七步产出一组政策实验的对比结果。我在检查学生作业时只看一件事:这七份产物在不在,能不能对上号。经常出现的情况是因果回路图画得很花,但一到方程阶段发现某个关键变量在图上没出现过,说明第三步就是画着玩的。

提示:七步里最容易省略的是第一步的边界说明。省掉它,后面所有讨论都会滑向“什么都相关”,模型永远收敛不了。

2.4 基本概念板块:五个定义必须先钉死

存量与流量是最基础的一对:存量是状态,是某一时刻的累积量;流量是速率,是单位时间内的变化量。方程里存量的更新永远是“上一期存量 + 时间步长 ×(流入 − 流出)”,这条形式不能变通。反馈分正反馈与负反馈,正反馈放大偏离,负反馈拉回目标,判断依据是环路内所有链路符号的乘积。

延迟是第三个必须钉死的概念,它分物质延迟和信息延迟两类,前者如产品生产周期,后者如决策者对需求变化的认知滞后。延迟不处理,模型就会显得“太灵敏”,需求一波动产量立刻跟上,现实里的震荡全被吃掉。时间常数是第四个,它决定了系统对扰动的响应快慢,调整时间常数、平滑时间常数、库存修正时间都属于这一类,单位必须与仿真时间单位一致。第五个是量纲一致性,存量单位是“件”,流量单位就必须是“件/周”,任何一条方程两侧单位不相等,模型就是错的,哪怕曲线看起来很像。

这五个定义之所以要放在建模之前,是因为它们直接决定方程怎么写。定义含糊,方程必然含糊;方程含糊,仿真结果就只能当装饰品。

2.5 案例板块:从演示型到开放型的难度梯度

案例按干预程度分三档。第一档是演示型,比如啤酒游戏,模型结构完整,学习者只扮演其中一个角色做决策,体会需求信息在供应链上逐级放大的效果,重点是理解牛鞭效应的成因,不需要改结构。第二档是改造型,给一个已有模型,替换其中的行业参数和时间常数,观察行为如何变化,重点是理解参数与行为的关系。第三档是开放型,只给问题背景和参考模式,从边界开始自己搭,重点是完整走一遍七步流程。

课设和毕设的选题难度,通常落在第二档偏第三档。我的建议是:如果时间只有两三周,做改造型,把参数替换和灵敏度分析做扎实,答辩时讲得清每个参数的来源;如果有整学期,做开放型,但边界一定要收窄,宁可做一个只有两个存量的小模型,也不要摊开一个画了二十个变量却算不出结果的巨图。啤酒游戏这类演示型案例的价值不在模型本身,而在于它给出了一个可对照的“标准行为模式”——库存先积压再短缺再震荡,你搭的新模型如果跑不出类似形态,说明反馈结构里少了一条关键链路。

3. 建模方案的分层设计:从因果回路图到可运行方程的四层推进

模型搭得乱,多半是因为把四件事混在一起做:想清楚看什么、画清楚关系、分清状态与速率、写出方程。这四层各自有独立的检查标准,混着做就会出现“边画图边写方程,写完发现图要重画”的循环。分层推进的顺序不能颠倒,下面按层拆开讲,每层都给出可执行的判定规则。

3.1 系统边界与参考模式:先定看哪条曲线

动手画图之前,先确定两件事:系统边界画在哪里,以及用什么曲线判断模型跑得对不对。参考模式指的是关键变量随时间变化的典型形态——单调上升、S 形饱和、超调后震荡收敛、持续震荡、指数发散,这五种基本形态覆盖了绝大多数社会经济问题。

判定方法很朴素:拿历史数据或领域经验,把关注变量画成一条时间曲线,圈出它的形态特征和关键拐点时间。比如库存问题,参考模式是“需求阶跃后库存先冲高再回落,谷底出现在第 12 到 16 周之间,两次震荡后收敛”,这就成了后续所有模型的验收标尺。没有这条标尺,模型跑出什么形状你都会觉得“差不多”。

边界确定有个实操技巧:把与参考模式直接相关的变量列出来,然后逐个问“它的变化是否显著影响这条曲线的形态和拐点时间”,影响显著就纳入内生变量,影响微弱或只提供背景的放到外生参数里。这一步做完,变量清单通常能压到十个以内,够用了。边界画大了,模型跑得动但解释不清;边界画小了,参考模式根本复现不出来。

3.2 因果回路图:链路极性与环路计数

因果回路图只表达两件事:谁影响谁,以及影响的方向。每条链路标一个符号:源变量增加导致目标变量增加记正号,导致减少记负号。环路的极性由环内所有链路符号的乘积决定,乘积为正即正反馈环,为负即负反馈环。这个规则简单,但手工数环时极易出错,尤其是变量超过八个之后。

我一般让学生先把图写成链路列表,再用脚本判极性。这样既能避免肉眼漏环,也方便后期改图时快速复查。

# 环路极性判定:links 按环路顺序给出 (源, 目标, 符号),符号取 +1 或 -1 def loop_polarity(links): product = 1 for _, _, sign in links: product *= sign return ("正反馈环(增强型)" if product > 0 else "负反馈环(调节型)") # 示例:库存—生产—积压这条链 inventory_loop = [ ("库存", "可发货量", +1), # 库存越多,能发的货越多 ("可发货量", "积压订单", -1), # 发货越多,积压越少 ("积压订单", "目标产量", +1), # 积压越多,越想多生产 ("目标产量", "产量", +1), ("产量", "库存", +1), # 产量补进库存 ] print(loop_polarity(inventory_loop)) # 输出:负反馈环(调节型)

这段代码的价值不只是判极性,更在于把图变成可版本管理的文本。改模型时先改列表,再重跑判定,比在图软件里点来点去可靠得多。判定完还要做一次环的功能归类:增强型环路负责增长或崩溃,调节型环路负责稳定或震荡,一个健康的模型里两类环都要有,只有增强环会发散,只有调节环会死气沉沉。

3.3 存量流量图:把环路翻译成状态与速率

因果回路图只讲关系不讲积累,所以必须转成存量流量图。转换规则有三条:凡是能在某一时刻被“拍快照”计量的量,做成存量;凡是表达“每单位时间多少”的量,做成速率;其余中间计算量做成辅助变量。

存量必须有初始值,速率必须挂到某个存量上,辅助变量不许直接连存量(中间必须经过速率)。这三条是语法级别的约束,违反了模型就跑不起来。常见的结构错位是把“积压订单”和“订单速率”混成一个变量,结果方程写出来量纲对不上,怎么调都不对。正确的拆法是:积压订单是存量,单位件;订单到达速率和发货速率是流量,单位件/周;积压订单的变化等于两者之差。

存量流量图还要标出信息链和物质链的区别。物质链上流动的是实物或资金,会真的被消耗;信息链上传递的是决策依据,不消耗源头。延迟大多发生在物质链上,而决策滞后发生在信息链上,两者在图上要用不同线型区分,写方程时才不会把两种延迟混用同一个函数。

3.4 方程层:量纲、时间常数与延迟函数

方程层的核心约束是量纲一致性。写每条方程前,先把参与运算的变量的单位写在旁边,算一遍右边的合成单位,与左边比对。这件事听起来琐碎,实际能拦住大量错误,尤其是“件/周”和“件/月”混用这种隐蔽问题。

# 量纲登记与检查:右边算出的合成单位必须等于左边变量声明的单位 UNITS = { "库存": "件", "产量": "件/周", "劳动力": "人", "人均产出": "件/(人·周)", "招聘速率": "人/周", "调整时间": "周", } def check(lhs, rhs_units, expr=""): assert UNITS[lhs] == rhs_units, f"{lhs} 应为 {UNITS[lhs]},实际 {rhs_units}({expr})" check("产量", "件/周", "劳动力 × 人均产出 = 人 × 件/(人·周)") check("招聘速率", "人/周", "(目标劳动力 − 劳动力) / 调整时间 = 人 / 周")

延迟函数的选择取决于延迟类型。信息延迟通常用一阶指数平滑,形式是“期望值向实际值按时间常数逼近”;物质延迟用高阶延迟链,阶数对应实际环节数。时间常数的取值不能拍脑袋,要从业务数据里反推:订单平滑时间可以取历史订单波动被决策者“消化”掉的平均周期,劳动力调整时间可以取招聘到上岗再到形成产能的实际周数。取不到数据时,先用领域经验给一个区间,再靠后面的灵敏度分析看结果对这个参数有多敏感。

时间步长也有讲究。仿真步长应显著小于模型中最小的那个时间常数,通常取它的四分之一到八分之一。步长取大了,欧拉积分会失真,曲线出现锯齿甚至发散;步长取小了,计算量上升但结果改善有限。我一般先按最小时间常数的八分之一设定,再做一次步长减半的收敛测试,两次结果差异在可接受范围内才算过关。

4. 案例的工程化落地:库存—劳动力系统的可复现实现

有了前面四层设计,案例部分就不该停留在“看老师演示一遍”。这一章把工业动力学里最经典的库存—劳动力系统完整跑一遍:从假设、方程、代码到参数扫描,最后回到图形化工具的方程写法,形成一份可以交上去、也可以直接改行业参数的实现底稿。

4.1 案例选型与建模假设:为什么先做它而不是啤酒游戏

啤酒游戏适合讲现象,不适合讲建模。它的决策由人来做,每轮输入靠参与者拍板,模型结构藏在软件后面,学习者看到的是结果不是方程。库存—劳动力系统相反,结构清晰、变量少、每个参数都有现实对应物,而且能复现出“超调—震荡—收敛”这类典型形态,非常适合作为第一个自己动手搭的模型。

建模假设有四条:单一产品、单一工厂,不考虑多品种混合;产能只由劳动力数量决定,人均产出视为常数;订单信息存在一阶平滑延迟,招聘存在调整延迟;不考虑资金约束和原材料供应上限。这四条假设写进作业的“模型假设”一节,答辩时被问到边界问题就有话可说。

变量划分为两个存量、三个速率和若干辅助变量。存量是库存与劳动力;速率是生产速率、发货速率、招聘速率;辅助变量包括期望订单、目标劳动力、目标库存、人均产出。参考模式设定为:需求在第 20 周阶跃上升 20%,库存应出现一次明显超调,谷底不低于安全库存,劳动力在第 30 周前后达到峰值,整体在第 70 周左右收敛。

4.2 差分方程实现:把流图翻译成可运行的脚本

下面的脚本用欧拉法推进状态,结构与流图一一对应。所有时间单位统一为周,避免单位混用。

import pandas as pd # ===== 参数区:时间单位统一为“周” ===== DT = 0.25 # 仿真步长,取最小时间常数(2周)的 1/8 T_END = 104 # 仿真两年 PRODUCTIVITY = 4.0 # 人均产出,件/(人·周) ADJ_TIME = 6.0 # 劳动力调整时间常数,周 SMOOTH_TIME = 8.0 # 订单信息平滑时间常数,周 INV_COVER = 4.0 # 目标库存覆盖周数 # ===== 状态初值 ===== inventory = 400.0 # 库存,件 workforce = 100.0 # 劳动力,人 expected_orders = 100.0 # 期望订单,件/周 rows = [] for step in range(int(T_END / DT)): t = step * DT # 需求情景:第20周阶跃至120,第60周回落至90 orders = 100.0 if t < 20 else (120.0 if t < 60 else 90.0) # 信息延迟:期望订单按时间常数向实际订单指数逼近 expected_orders += DT * (orders - expected_orders) / SMOOTH_TIME # 目标库存与目标劳动力:既要满足期望订单,也要把库存拉回覆盖水平 desired_inventory = expected_orders * INV_COVER desired_workforce = (expected_orders / PRODUCTIVITY + (desired_inventory - inventory) / (INV_COVER * PRODUCTIVITY)) # 招聘速率:受调整时间常数约束,人/周 hiring = (desired_workforce - workforce) / ADJ_TIME production = workforce * PRODUCTIVITY # 件/周 # 发货速率:需求与可用库存取小,库存不足时最多发完现有库存 shipment = min(orders, inventory / DT) if inventory > 0 else 0.0 # 欧拉积分推进两个存量 inventory += DT * (production - shipment) workforce += DT * hiring rows.append((t, orders, inventory, workforce, production, shipment)) df = pd.DataFrame(rows, columns=["week", "orders", "inventory", "workforce", "production", "shipment"]) print(df.iloc[::8].round(2).to_string(index=False))

关键点说明几处。shipment里的inventory / DT是把库存换算成“本周最多能发多少”,如果不做这个换算,库存会被发成负数,模型立刻失真。desired_workforce拆成两项:前一项匹配订单需求,后一项修正库存偏差,两项相加才构成完整的负反馈调节。hiring除以调整时间常数后单位变成人/周,正好与存量的积分形式匹配。运行结束后要看的不是单个数字,而是三条曲线的形态:库存是否超调、峰值出现在第几周、第 70 周后是否收敛到 400 附近。

4.3 参数扫描:用灵敏度分析找真正敏感的那个参数

单次仿真只能说明模型能跑,灵敏度分析才能说明模型可信。做法是把待检验参数按倍数拉开,其他条件不变,比较关键行为指标的变化幅度。行为指标一般取峰值、谷值、超调幅度、收敛时间四个。

def simulate(adj_time=6.0, smooth_time=8.0, dt=0.25, t_end=104): # 与上节主体一致,此处省略重复代码,返回 DataFrame ... summary = {} for at in (3.0, 6.0, 12.0): d = simulate(adj_time=at) summary[f"调整时间={at}周"] = { "库存峰值": round(d["inventory"].max(), 1), "库存谷值": round(d["inventory"].min(), 1), "超调幅度": round(d["inventory"].max() - d["inventory"].min(), 1), "末值偏差": round(abs(d["inventory"].iloc[-1] - 400.0), 1), } print(pd.DataFrame(summary).T.to_string())

扫描结果一般会呈现这样的规律:调整时间越短,系统响应越快但越容易震荡,谷值压得更低;调整时间拉长到 12 周以上,震荡消失但恢复极慢,末值偏差在仿真期内收不回来。这个权衡关系就是政策建议的落点——不是“越快越好”,而是在服务水平与稳定性之间选一个可接受的区间。平滑时间常数的扫描逻辑类似,它影响的是系统对需求噪声的过滤强度。

灵敏度分析还要配一组极端条件测试,用来验证结构而非数值:把订单设为零,库存应当单调下降并在耗尽后停在零,产量随之归零,不出现负库存;把调整时间设到极小,招聘速率会剧烈波动,此时看的是模型会不会数值发散,如果发散,问题在步长而不在结构。这两组测试放进作业附录,答辩时非常好用。

4.4 回到图形化工具:方程对照与交付物打包

最终交付一般要求图形化模型文件,所以脚本跑通之后要回到图形工具里把同一套方程重建一遍。对应的方程写法如下表,逐条对照录入即可。

变量类型方程写法单位
库存存量INTEG(生产速率 − 发货速率, 400)件
劳动力存量INTEG(招聘速率, 100)人
生产速率速率劳动力 × 人均产出件/周
招聘速率速率(目标劳动力 − 劳动力) / 调整时间人/周
期望订单辅助SMOOTH(订单, 平滑时间)件/周
目标劳动力辅助期望订单 / 人均产出 + (目标库存 − 库存) / (库存覆盖周数 × 人均产出)人

交付物建议打成四件:模型文件、参数与假设说明、仿真结果截图(含参考模式对照)、灵敏度分析表。四件齐了,作业的完整度就到位了;缺哪一件,答辩时都容易被追着问。

5. 避坑与常见问题:五个最容易翻车的建模动作

模型跑不出来、跑出来不像、像了但讲不清,追根溯源多半栽在下面五个动作上。这几条是历年改作业里出现频率最高的,每一条都按“现象—原因—解决”拆开写,遇到问题时可以直接对号入座。

5.1 反馈环极性判反

现象:模型跑出来单调发散或者死寂不动,与预期的震荡收敛完全不搭。原因:环内某条链路的符号标反了,尤其是“积压订单增加导致发货压力增大”这类间接链路,中间隔着两三层,凭直觉容易标错。解决:把图转成链路列表,用 3.2 节的脚本重算一次乘积,同时逐条复核“源增加时目标真的增加吗”。判极性还有一个笨办法有效:假设只让源变量增加一点,顺着链路推一圈,看最终回到源变量时是推高还是压低,推高就是正环。

5.2 量纲不统一

现象:曲线形状对,但数值离谱,库存动辄上万或者小数点后六位。原因:时间单位混用,订单按“件/月”录入,仿真步长按“周”推进,中间差四倍多;或者存量与流量直接相加,件和件/周混在一个式子里。解决:先建单位登记表,所有方程写完后逐条核对合成单位;时间单位在模型开头统一声明,中途不改。这条经验是血泪换来的,量纲错一次,后面所有分析全部作废。

5.3 延迟被当成瞬时

现象:需求一波动,产量立刻跟上,库存曲线平滑得不像真的,牛鞭效应完全看不出来。原因:模型里没有信息延迟和物质延迟,决策者被假设成实时掌握全部信息并能瞬间调整产能。解决:给信息链加一阶平滑,给物质链加延迟链,时间常数从实际业务周期反推。加了延迟之后,模型才开始出现超调和震荡,这才是真实系统该有的样子。

5.4 仿真步长沿用默认值

现象:同一套方程换台机器或者换个软件版本,结果不一样;曲线出现锯齿。原因:步长大于最小时间常数的一半,欧拉积分失稳。解决:按最小时间常数的八分之一设定步长,再做一次步长减半的收敛测试,两次的关键指标差异控制在百分之几以内。步长这件事没有后悔药,只能老老实实测一遍。

5.5 用参数拟合代替结构建模

现象:模型能完美复现历史数据,但换个情景预测就崩,问结构逻辑也说不清。原因:把参数标定当成了建模本身,结构只搭了个大概,靠调参数硬凑曲线。解决:先把结构确认测试做在前面——每条链路的存在性能否用领域知识解释,极限条件下行为是否合理;参数标定放在结构通过之后。如果结构和参数打架,永远改参数不改结构,但结构本身必须先站得住,否则模型就是个黑匣子。

6. 验收与答辩:用对照实验证明模型不是玄学

模型交上去之前,我一般会走一遍固定的检验清单,六项全部通过才算能用。这套清单同时也是答辩时的讲解顺序,评委问什么,你都有一项对应的证据。

检验项做法通过标准
结构确认逐条链路对照领域知识复核每条链路能给出至少一句现实解释
量纲一致逐条方程核对单位全部方程左右单位相等
极端条件需求归零、参数取极值无负库存、无发散、行为方向合理
行为重现与参考模式曲线比对峰值与拐点时间落在预设区间内
灵敏度关键参数三档扫描能说清哪些参数敏感、哪些不敏感
政策稳健同一政策在多组参数下测试结论方向不随参数小幅变动而反转

答辩演示我建议只讲三张图和一次实验。第一张因果回路图,标出两个正环一个负环,说清哪个环主导了前期的超调、哪个环负责后期收敛。第二张存量流量图,指着两个存量说明为什么它们必须是状态而不能是速率。第三张是参考模式与仿真曲线的叠图,峰值和拐点时间对得上,模型的解释力就立住了。最后做一次政策实验:只改调整时间常数这一项,展示震荡幅度与恢复速度的此消彼长,把“没有最优参数,只有可接受的权衡区间”这个结论说出来。评委听到权衡两个字,基本就知道你是自己跑过模型的。

有一件事值得单独提醒:别在答辩里说“模型预测第 73 周库存回到 400 件”这种话。系统动力学模型的输出是行为模式,不是精确点位,你要讲的是“在给定的延迟结构下,库存会在两到三次震荡后收敛”,而不是某一个具体数值。把这一点讲清楚,反而显得你懂方法的边界。从那以后我每次带人做模型,都强制先走一遍量纲检查和极端条件测试,再谈结果好不好看——顺序反了,后面全是白费功夫。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询