施法前摇:高等数学、线性代数、概率与数理统计、数值计算等.
1 函数极值与规划模型
1.1 线性规划模型
1.1.1 线性代数预备知识
- 线性代数的本质
- 问题是线性的
- 约束是线性的
线性代数主要用于解决线性关系问题.
- 行列式(求解线性方程组)
I.二阶行列式与对角线法则
II.逆序数
设是
这
个自然数的任意排列,并规定从小到大为标准次序.
先看有多少个比大的数排在
前面,记为
;
再看有多少个比大的数排在
前面,记为
;
......
最后看有多少个比大的数排在
前面,记为
;
则此排列的逆序数为
III.n阶行列式
其中为行列式
的
元.
注意:
一阶行列式
IV.行列式的性质
- 行列式与它的转置行列式相等
- 互换行列式的两行(列),行列式变号
- 行列式的某一行(列)中所有的元素都乘以同一个倍数k,等于用数k乘以此行列式
- 行列式中如果有两行(列)元素成比例,则此行列式为零;即:若存在一个常数
,使
,则
- 若行列式的某一列(行)的元素都是两数之和,则等于对应的两个行列式之和
V.行列式的计算
VI.方阵的行列式
注意区分行列式、方阵、矩阵、方阵的行列式.
方阵是一个二维数组,其中每个元素是一个一维数组,其行数与列数相同,即方阵是“个数按照一定方式排成的数表”;
- 矩阵
I.矩阵与线性变换:系数矩阵
II.矩阵的运算:矩阵的加法(同型矩阵)、数乘矩阵、矩阵与矩阵相乘
III.转置矩阵运算规律
把矩阵
的行换成同序数的列得到一个新矩阵,叫作
的转置矩阵,记为
IV.单位矩阵、纯量阵
单位矩阵在矩阵乘法中的作用类似于数1,即:
- 特征值与特征向量
1.1.2 Python预备知识
1.1.3 运用python进行矩阵的运算
#引入numpy库
import numpy as np
a = np.array([[1,2,3],[4,5,6]])
b = np.array([[1,2],[3,4],[5,6]])
c = np.array([[1,2,3]])
d = np.array([[9,8,7],[3,2,1]])
#矩阵加法
sum = a + d
#矩阵放缩
e = 3*a
#数乘,矩阵乘
e = np.dot(a,b)
#元素乘
e = a*d
#转置
e = c.T
e = np.array([[1,2],[3,4]])
#逆矩阵
result = np.linalg.det(e)
#矩阵的秩
e = np.linalg.matrix_rank(d)
1.1.4 线性规划标准形式
- 存在不等约束时变换可应用松弛变量
- 规划问题的核心在于决策变量,目标函数和约束条件
松弛变量用于将约束条件转化为等式,是简化问题的一种方式.
在线性规划问题中,每个问题都可以表示为一个等式,若出现需要将小于等于的约束条件转化为等式的情况,就需要引入松弛变量.
引入松弛变量后,我们可以在更大的可行域内求解问题,同时保持问题的凸性.
举个栗子:
若有
,令
,其中
即为松弛变量,其取值范围为非负实数.
什么时候需要引入松弛变量?
- 需要将线性规划化成标准形式
- 遇到绝对值问题
- 不等式过多,甚至出现非线性不等关系
标准形式之一(规范式):
把方程组改写成矩阵形式.
决策变量,目标函数,约束条件
- 不等式组条件的矩阵化 [1]
- 方程组条件的矩阵化 [2]
- 每个变量自己的取值范围 [3]
- 目标函数的向量化
- 取极值
标准形式之二(一般式):
1.1.5 图解法(找出凸集的顶点)
图解法简单直观,有助于了解线性规划问题求解的基本原理。
注意图解法只适用于有两个决策变量的问题.
可行域一定是凸集.
【运筹学】课程精讲 |1.1 线性规划问题-图解法_哔哩哔哩_bilibili
- 图解法求解步骤(以存在唯一最优解的情况为例)
- 由全部约束条件作图求出可行域(绘制约束条件的函数图线,找出满足所有约束条件的平面区域)
- 作目标函数等值线,确定使目标函数最优的移动方向(赋予目标函数一个值,绘制等值线的函数图像,作出移动方向的法线)
- 平移目标函数的等值线,找出最优点,算出最优值(将目标函数图线沿着法线平移,直到与可行域有且仅有一个交点)
如果不能通过平移使目标函数与可行域有且仅有一个交点,那么就不存在唯一最优解,而存在无穷多最优解.
如果无论如何平移目标函数都始终与可行域交点数量相同,那么就存在无界解,出现这种情况时,建模是不完备的,需要找出更多约束条件.
当可行域为空集时,存在无解或无可行解,出现这种情况时,往往是在建模时写下了两个相互矛盾的约束条件.
1.1.6 康-希表上作业法(运输问题)
某商品有
个产地、
个销地,各产地的产量分别为
,各销地的需求量分别为
.若该商品由
产地运到
销地的单位运价为
,问应该如何调运才能使总运费最省?
解:引入变量,其取值为由
产地运往
销地的该商品数量,数学模型为
1.1.7 单纯形法(向量和基分解)
固定变量,变换基向量求方程组带入,检验是否为最优解.
单纯形法要求约束条件都为等式,因此需要引入松弛变量
1.1.8 蒙特卡洛法(以频率估计概率)
在可行域范围内生成大批量随机数据点,观测这些数据点在什么位置取得近似最优;但由于线性问题可以得到准确解,因此蒙特卡洛法更适用于解非线性问题.
1.2 整数规划模型
1.2.1 0−1型整数规划
0-1型整数规划是整数规划中的特殊情形,它的变量仅取值0或1;这时
称
为0-1变量,或称二进制变量;仅取值0或1这个条件可由下述约束条件:
,整数所代替,是和一般整数规划的约束条件形式一致的.
1.2.2 分枝定界法(可求纯或混合整数线性规划)
1.2.3 割平面法(可求纯或混合整数线性规划)
1.2.4 隐枚举法(求解0-1整数规划)
-
过滤隐枚举法
-
分枝隐枚举法
1.2.5 匈牙利法(解决指派问题)
1.2.6 蒙特卡洛法(求解各种类型规划)
1.3 非线性规划模型
在线性规划的基础上,目标函数可以非线性,限制条件可以非线性,包括非线性的不等式和非线性的等式.
太地狱了,这是matlab的代码,不是python的.
1.3.1 高等数学预备知识
- 多元函数
- 多元函数的微分
- 多元函数的极值
- 拉格朗日乘子法与KKT
类比松弛变量的思想.
1.3.2 二次规划基本形式
目标函数形式如果是一个二次函数,那么就是一个二次规划.
附录:相关文章,书籍与课程(本文参考)
数学建模是什么?
https://www.zhihu.com/answer/2818182261
【【数学建模快速入门】数模竞赛基础+MATLAB入门+论文写作+数学模型算法(数模美赛国赛小白零基础必看教程)-哔哩哔哩】
建模全过程
如何入门?(常用模型与数模工具)
https://www.zhihu.com/question/19714813/answer/2990641232
A/B/C赛题如何选择?
python还是matlab?
https://zhuanlan.zhihu.com/p/446905509
入门书籍
https://www.zhihu.com/answer/1528941666
司守奎教材_免费高速下载|百度网盘-分享无限制 (baidu.com)
文献检索
职责分工
建模手
-
熟悉数学和统计知识:包括微积分、线性代数、概率论等
-
学习建模技巧:包括问题抽象和建模、模型求解和结果分析等
-
阅读优秀的建模作品:阅读一些获奖或者优秀的建模作品,了解别人在建模过程中的思路和方法
写作手
论文要力图通俗易懂,能让人明白你用什么方法解决了什么问题,结果如何,有什么特点。为此,应尽可能使论文的表述清晰、主题明确、论述严密、层次分明、重点突出、符合科技论文的写作规范。同时,要注意论文的写作工作是贯穿始终的,在建模的每个阶段都应该把你的主要思路和工作写下来,这是论文写作时的第一手材料。
——《数学建模方法及其应用》
【LaTeX中文学习教程(用于论文或稿件排版,15集全)-哔哩哔哩】
编程手
- 基于Python的数学建模课程