数学建模
本节介绍Pyomo:Python优化建模对象。更完整的描述包含在[PyomoBookIII]书中。Pyomo支持复杂优化应用的数学模型的制定和分析。这种能力通常与商业可用的代数建模语言(AMLs)相关联,例如[FGK02]、[AIMMS]和[GAMS]。Pyomo的建模对象嵌入在Python中,这是一种功能齐全的高级编程语言,包含丰富的支持库。
建模是科学研究、工程和商业中许多方面的基本过程。建模涉及制定系统或现实世界对象的简化表示。因此,像Pyomo这样的建模工具可以以多种方式使用:
解释现象 在系统中出现的现象,
预测系统未来的状态,
评估关键因素 影响系统中的现象,
识别系统中的极端状态,这些状态可能代表最坏情况或最小成本计划,并且
分析权衡以支持人类决策者。
数学模型用形式化语言表示系统知识。以下数学概念是现代建模活动的核心:
变量
变量代表模型中未知或变化的部分(例如,是否做出决策,或系统结果的特征)。变量所取的值通常被称为解决方案,通常是优化过程的输出。
参数
参数表示必须提供的数据以执行优化。事实上,在某些设置中,使用数据一词代替参数一词。
关系
这些是方程、不等式或其他数学关系,定义了模型的不同部分如何相互连接。
目标
这些函数反映了被建模系统的目标和目的。
计算资源的广泛可用性使得数学模型的数值分析成为一项常见的活动。如果没有建模语言,设置输入文件、执行求解器并从求解器输出中提取最终结果的过程既繁琐又容易出错。这种困难在复杂的大规模实际应用中更加复杂,当错误发生时很难调试。此外,优化软件包使用了许多不同的格式,而很少有格式被许多优化器识别。因此,应用多个优化求解器来分析模型会引入额外的复杂性。
Pyomo 是一种 AML,它扩展了 Python 以包含用于数学建模的对象。[PyomoBookI], [PyomoBookII], [PyomoBookIII], 和 [Pyomo-paper] 将 Pyomo 与其他 AML 进行了比较。尽管已经开发了许多优秀的 AML 用于优化模型,以下是开发 Pyomo 的动机因素:
开源
Pyomo 是在 Pyomo 的开源项目中开发的,旨在促进建模框架的透明度,并鼓励社区开发 Pyomo 的功能。
可定制能力
Pyomo 通过广泛使用插件来模块化软件组件,支持可定制的功能。
求解器集成
Pyomo 模型可以使用用 Python 编写的求解器或使用编译的低级语言编写的求解器进行优化。
编程语言
Pyomo 利用了一种高级编程语言,与自定义 AML 相比具有多个优势:一种非常健壮的语言、广泛的文档、丰富的标准库集、对类和函数等现代编程功能的支持,以及可移植到许多平台。