系统动力学

“系统动力学是一种观点和一组概念工具,能让我们理解复杂系统的结构和动力学。系统动力学是一种严格的建模方法。我们可以用它建立复杂系统的正式计算机模拟,可用来设计更多有效的政策和组织。此外,我们还可用这些工具建立管理飞行模拟器,即微观世界。微观世界中的空间和时间可以被压缩和放缓,所以我们可以感受决策、学习速度的长期负面效应,促进我们对复杂系统的理解,并为更大的成功设计结构和策略。”

约翰•斯特曼《商业动力学:复杂世界的系统思考和建模》

System Dynamics系统动力学多用于长期的战略模型,并对高度集合的对象进行建模:在系统动力学模型中人、产品、事件和其他离散物都是大量地显示出来。这样,它们就失去了所有的个体特征、历史或动态变化。如果这种抽象层可以解决你的问题,系统动力学是很好的选择。但如果你认为个体细节很重要,你可以在同一AnyLogic环境下使用基于主体建模或离散事件建模方法对模型的全部或局部重新概念化。

AnyLogic系统动力学建模

AnyLogic采用了为系统动力学建模者所熟悉的方式来设计和模拟反馈结构(存量、流程图和决策规则,包括数组变量又叫下标)。你可以:

  • Stock and flow依次定义存量和流变量或使用“流工具”
  • 使用公式中的自动“代码完成”
  • 为了更好地读取你的模型,你可以定义“影子”变量
  • 使用表函数(查找表)、线性或样条内插
  • 定义列举和范围类型层面
  • 定义子层面和子范围
  • 通过任意层面定义数组变量
  • 每个数组变量的不同部分可以使用多种公式
  • 使用具体的系统动力学和标准的Java数学函数

分层和以目标为对象的系统动力学建模

作为一个面向对象的工具,AnyLogic为系统动力学建模者提供面向对象方法的所有优点。你可以用分层方式定义复杂的模型,那些根据逻辑关系分开的存量和流量图的部分包含于不同的活跃对象中,只有它们的界面变量显示出来(作为输入或输出)。此外,你可以开发一个经常使用的系统动态学模式,将其嵌入一个活跃的对象类中,你就可以在一个模型内或跨模型间任意地多次使用。

建立飞行模拟器,在网页上发布系统动力学模型

和AnyLogic的其他模型一样,系统动力学模型可以添加可视化和交互式内容:你可以添加图表或任意图形使模型动态化,在运行时你还可以添加滑块、按钮、文本输入等来控制模型的执行。AnyLogic所支持的图表处理工具和控制设置比其他任何系统动力学工具都丰富得多。

由于AnyLogic是100%的Java应用程序,它们当然可作为程序在网页上发布。与其他现有解决方案不同,你不需要在网页服务器上建立模型,也无需保持远程客户界面与模型间的交流:整个模型通过用程序自动在客户机上运行。你可以选择你想显示给用户的模型部分。AnyLogic的很多系统动力学程序发布于这个网址上。

将系统动力学模型与基于主体模型和离散事件模型结合

AnyLogic是唯一能将系统动力学模型组件与基于主体模型组件或离散事件模型组件相结合的工具。这可以通过多种不同的方法来实现,例如,你可以用系统动力学为消费者市场建模,用基于主体的方法为供应链建模。你可以用分类的方法(作为主体)为城市人口建模,用系统动力学为潜在的经济和基础设施状况建模。你甚至可以将系统动力学图表置入主体:例如系统动力学可以建模公司的生产流程,然而公司在上一层却是主体。从技术层面上来讲,系统动力学与基于主体或离散事件建模间的链接和反馈非常简单:一些系统动力学变量可以用于主体的决策逻辑或作为过程流程图的参数,后者反过来可以改变其他的系统动力学变量。

参照网上模型库AnyLogic系统动力学模型程序

Combination of methods