从事运筹优化的小伙伴看过来,假如你需要梳理下的建模相关的知识,点进来准没错!作为一名运筹优化的研究人员,后续会根据学习进展定期更新有关内容,欢迎关注!如果你有想了解的,也可以留言,有时间会为你解答~~
目录
一、什么是数学建模?
数学建模(Mathematical Modeling)是一种利用数学语言、结构和方法,对实际问题进行描述、简化、分析和求解的过程。其核心在于通过将复杂的现实世界问题转化为可操作的数学形式,从而利用数学理论和计算技术对其进行深入研究和解决。
一句话总结,数学建模涉及对系统的基本组成和关系进行抽象和简化。
二、数学建模的核心思想
数学建模的核心思想是将现实世界中的问题转换为数学问题,从而借助数学工具进行分析。具体而言,这包括以下几个关键要素:
抽象化:忽略问题中的不相关或次要因素,只保留影响最显著的因素,从而简化问题的描述。
数学描述:使用数学语言(如变量、方程、函数等)来描述问题的核心结构和动态行为。
分析和求解:利用数学方法对模型进行求解,得到问题的可能解或最优解。
验证与迭代:将模型的输出与实际情况对比,进行模型的修正和改进,以提升其准确性和可靠性。
预测与优化:通过模型预测未来趋势,分析系统行为,并提出优化方案。
三、数学建模的基本步骤
数学建模通常遵循以下几个基本步骤:
问题定义:明确问题背景、目标和约束条件,收集必要的数据和信息,理解影响系统行为的关键因素。
建立模型:基于问题的特点,选择合适的数学模型(如代数模型、微分模型、概率模型等)。定义相关变量、参数和关系式,构建数学表达式或方程系统。
求解模型:根据模型的具体形式,选择适当的求解方法(如解析法、数值方法、优化算法等)。解析方法通常用于相对简单的模型,而复杂模型常需要数值模拟或计算机算法求解。
模型验证与分析:将模型的输出与实际数据进行比较,检验模型的准确性和有效性。分析模型的灵敏度,探讨不同参数变化对结果的影响,进行模型的改进和优化。
模型应用与解释:使用模型的结果进行预测、决策支持或策略优化。解释模型结果的实际意义,并为模型使用者提供建议或操作指南。
模型更新与维护:随着时间和环境的变化,问题可能会有新的要求或约束条件,模型需要不断更新和维护,以确保其适用性和有效性。
四、常用数学建模方法
解析方法:如微分方程求解、线性规划、动态规划等,这些方法通过数学公式和推导直接得到模型的解,适用于一些较为简单或具有明确公式解的模型。
优化技术:用于寻找模型的最优解,包括线性和非线性优化、整数规划、遗传算法、粒子群优化等。这些方法常用于资源分配、成本最小化和效益最大化问题。
网络和图论方法:用于分析和建模复杂网络系统(如社会网络、交通网络、电力网络等),包括图算法、随机图模型、复杂网络分析等。
数值方法:对于复杂系统或无法解析求解的模型,数值方法是一种有效的手段,包括蒙特卡洛模拟、有限元分析、差分方法等,通常依赖计算机程序和算法来获得近似解。
统计和机器学习方法:在数据丰富的环境下,使用统计分析、回归模型、分类算法、神经网络、支持向量机等机器学习技术来建模和预测。数据驱动的模型可以揭示潜在的模式和规律,为未知系统提供有用的洞见。
五、常见运筹优化类模型
能力有限,先给出以下使用频率较高的四类运筹优化模型,包括:线性规划模型、整数规划模型、动态规划模型、图论模型,其他模型如有需要后续可补充。
1. 线性规划模型
线性规划(LP)是研究线性约束条件下线性目标函数的极值问题的数学理论和方法。可为合理利用有限人力、物力、财力等资源做出最优决策提供科学依据。
1.1 建模三要素
决策变量:问题中要确定的未知量,用于表明规划问题中的用数量表示的方案、措施等,可由决策者决定和控制。
目标函数:按照一定的思路把已知条件利用起来,去求解未知量的函数关系式。是决策变量的函数,优化目标通常是求该函数的最大值或最小值。
约束条件:决策变量的取值所受到的约束和限制条件,通常用含有决策变量的等式或不等式表示。
举个例子:假如我们想要预测公司楼下手抓饼店明天能卖多少张手抓饼,已知过去10天每天卖多少,以及每天的天气情况,是否有节假日,和手抓饼店老板和老板娘的感情状况,这几项数据都统计好了。对应的解释就是:
决策变量:是明天能卖多少手抓饼,未知量。
目标函数:目标函数可以是明天能卖多少钱,也可以直接把卖多少手抓饼作为目标函数。已知条件是每天的天气情况,节假日,老板老板娘感情状况。
约束条件:卖手抓饼数量受天气情况,节假日,老板老板娘感情状况等的约束和限制情况。
1.2 模型特点
要解决的问题是优化类的(即在有限的资源条件下,获取最大的收益),即在一组线性约束条件下,求线性目标函数的最大值或最小值。
目标函数和约束条件都是决策变量的线性函数。
1.3 建模步骤
1) 根据影响所要达到目的的因素找到决策变量。
2) 由决策变量和所在达到目的之间的函数关系确定目标函数。
3) 由决策变量所受的限制条件确定决策变量所要满足的约束条件。
2. 整数规划模型
整数规划是线性规划问题的一种扩展,即在线性规划的基础上,规划中的变量(部分或全部)限制为整数。整数规划模型是一种 NP-难问题,目前没有有效的多项式时间算法可以求解。
整数规划问题在实际应用中非常广泛,例如:指派问题、旅行商问题、生产计划等。但是,由于其 NP-难的特性,常常需要借助于一些特殊的性质来求解。
2.1 整数规划分类
如不加特殊说明,一般指整数线性规划。对于整数线性规划模型大致可分为两类:
变量全限制为整数时,称纯 / 完全整数规划。
变量部分限制为整数的,称混合整数规划。
2.2 与线性规划关系
1) 松弛的线性规划有可行解,当自变量限制为整数后,其整数规划解出现下述情况:
① 线性规划最优解全是整数,则整数规划最优解与线性规划最优解一致。
② 线性规划最优解不是整数,整数规划有可行解,但最优解变差。
③ 线性规划最优解不是整数,整数规划没有可行解。
2) 松弛的线性规划没有可行解,则整数规划没有可行解。
2.3 求解方法分类
分支定界法:将问题分成多个子问题,并在每个子问题中选择一个变量作为分支变量,通过不断地对分支变量进行取整或剪枝,不断缩小可行解空间,直到找到最优解。可求纯或混合整数规划。
割平面法:在每个迭代中,加入一些不在整数点上的线性约束条件,形成一个新的松弛问题,不断进行线性规划求解,直到找到整数最优解。可求纯或混合整数规划。
隐枚举法—常用的有过滤隐枚举法和分枝隐枚举法。可求解0-1整数规划。
匈牙利法—求解指派问题。0-1整数规划特殊情形。
3. 动态规划模型
动态规划:(Dynamic programming,DP)是一种在数学、计算机科学和经济学中使用的,通过把原问题分解为相对简单的子问题的求解方法。 动态规划常常适用于有重叠子问题和最优子结构性质的问题,动态规划方法所耗时间往往远少于朴素解法。
3.1 问题特点
1) 问题具有最优子结构性质。如果问题的最优解所包含的子问题的解也是最优的,我们就称该问题具有最优子结构性质。
2) 无后效性。当前的若干个状态值一旦确定,则此后过程的演变就只和这若干个状态的值有关,和之前是采取哪种手段或经过哪条路径演变到当前的这若干个状态没有关系。
3.2 模型建立
建立动态规划的模型,就是分析问题并建立问题的动态规划基本方程。
应用动态规划方法的关键,在于识别问题的多阶段特征,将问题分解成为可用递推关系式联系起来的若干子问题,而正确建立基本递推关系方程的关键又在于正确选择状态变量,保证各阶段的状态变量具有递推的状态转移关系.
动态规划模型的构成要素:阶段、状态变量、决策变量、状态转移方程以及指标函数,如下图所示
3.3 建模要点
1) 将原问题分解为子问题
把原问题分解为若干个子问题,子问题和原问题形式相同或类似,只不过规模变小了。如果子问题都解决了,原问题就解决了。
子问题的解一旦求出就会被保存,所以每个子问题只需求解一次。
2) 确定状态
将和子问题相关的各个变量的一组取值,称之为一个“状 态”。一个“状态”对应于一个或多个子问题,某个“状态”下的“值”,就是这个“状态”所对应的子问题的解。
所有“状态”的集合,构成问题的“状态空间”。“状态空间”的大小与用动态规划解决问题的时间复杂度直接相关。
整个问题的时间复杂度是状态数目乘以计算每个状态所需的时间。
3) 根据状态变量与决策变量的含义,正确写出状态转移方程或转移规则。
4) 正确列出最优指标函数的递推关系及边界条件(即基本方程)。
定义出什么是“状态”,以及在该“状态”下的“值”后,就要找出不同的状态之间如何迁移――即如何从一个或多个“值”已知的 “状态”,求出另一个“状态”的“值”(递推型)。状态的迁移可以用递推公式表示,此递推公式也可被称作“状态转移方程”。
4. 图论模型
4.1 基本概念
图论中的图( Graph )是由若干给定的点及连接两点的线所构成的图形,通常用来描述某些事物之间的某种特定关系,用点代表事物,用连接两点的线表示相应两个事物间具有的这种关系。
由点和边构成的图叫无向图(简称图),无向图记为G=(V,E) 。 V是点集合,E是边集合。
由点和弧构成的图叫有向图,有向图记为D=(V,A) 。 V是点集合,A是弧集合。
无向图是一种特殊的有向图,无向图的边实际等价于两条反向的弧。
对于一个无向图上的每一条边(vi,vj),如果相应的有一个数wij,则称这样的图G为赋权图, wij称为边(vi,vj)上的权。
对于一个有向图上的每一条弧,如果相应的有一个数cij,则称这样的图D为赋权图,cij称为弧(vi,vj)上的权。
在赋权有向图D中指定一个点作为发点,一个点作为收点,其余点称为中间点,并把D中的每条弧的赋权数cij称为弧(vi,vj)的容量,这样的赋权有向图就称为网络。
无向图的权重邻接矩阵
有向图的权重邻接矩阵
4.2 最短路径问题
最短路径问题是从一个赋权有向图D中的指定源点 s 到终点 t 的路径中找到一条路,使得这条路径的权数总和最小,这条路被称为从s 到t 的最短路,这条路上所有弧的权数总和被称为从s 到t 的距离。
在计算机科学中,有很多算法可以用来求解最短路径问题,其中最著名的两种算法是 Dijkstra 算法和 Floyd 算法。
Dijkstra 算法: Dijkstra 算法是一种贪心算法,用于解决无负权边的单源最短路径问题。它从起点开始,通过逐步扩展最短路径来逐步找到所有节点的最短路径。在每一步中,它找到距离起点最近的未标记节点,并标记该节点。然后,它计算通过该节点到达其他未标记节点的距离,并更新其距离。
Floyd 算法: Floyd 算法是一种动态规划算法,用于解决所有节点对的最短路径问题。它通过一个中间节点的集合来计算最短路径。具体来说,对于每个节点对 (i, j),算法计算它们之间通过 k 的最短路径长度,其中 k 是 1 到 n 的整数。然后,通过比较 i 到 j 的直接距离和 i 到 k 加上 k 到 j 的距离,来更新 i 到 j 的最短距离。
以上部分内容参考韩伯棠主编的《管理运筹学》,部分内容参考以下几位大神的帖子,如有不明,可移步查看更多 -- >
图论模型-迪杰斯特拉算法和贝尔曼福特算法★★★★_迪杰斯特拉 贝尔曼福特-CSDN博客
数学建模--30+种常用算法模型_数学建模30种经典模型-CSDN博客
如有错误,欢迎留言指正,看到会更新昂~~期待和你共同进步~~