优化模型
优化模型就是给定一个目标函数,然后在约束条件下求出该目标函数的最优值。
形如:
决策变量: x
目标函数: f(x)
约束条件: $ s.t. g_i(x)\leq0 $
优化问题三要素:
- 决策变量
- 目标函数
- 约束条件
数学规划:
- 线性规划(Linear Programming,简称LP)
- 非线性规划(Nonlinear Programming,简称NLP)
- 整数规划
LINGO软件求解优化模型
例题:
存期年限 | 1年 | 2年 | 3年 | 4年 | 5年 |
---|---|---|---|---|---|
最有收益 | 1.018 | 1.0432 | 1.0776 | 1.09715968 | 1.144 |
LINGO代码:
|
|
运行结果:
|
|
其中Objective value项即为所求目标值,下面的Variable即为在最优状态下各变量值。
关于LINGO教程网上有很多,在这里不再赘述。读者可以前往 这里查看。
MATLAB软件求解优化模型
常用的优化功能函数:
- 求解线性规划问题的主要函数是linprog。
- 求解二次规划问题的主要函数是quadprog。
- 求解无约束非线性规划问题的主要函数是fminbnd、fminunc和fminsearch。
- 求解约束非线性规划问题的主要函数是fgoalattain和fminimax。
一般步骤:
- 针对具体工程问题建立优化设计的数学模型
- 建立目标函数文件
- 建立约束函数文件
- 建立调用优化工具函数的命令文件
- 将优化设计的命令文件复制到MATLAB命令窗口中进行运算求解。
线性规划问题
数学模型形式:
MATLAB中函数调用格式:
|
|
参数及返回值释义:
xopt: 最优解
fopt: 最优值
f: 目标函数各维变量系数向量
x0:初始点
options: 可选项
注: A, b, Aeq, beq, lb, ub均和上述数学模型对应。
二次规划问题
数学模型形式:
|
|
参数及返回值释义:
xopt: 最优解
fopt: 最优值
H: 目标函数的海塞矩阵
C: 目标函数的一次项系数向量
其余同上。
示例:
求解约束优化问题
解:(1)将目标函数写成二次函数的形式$f(X)=\frac{1}{2}X^THX+C^TX$,其中:
$\begin{array}{lcl}
X=\begin{bmatrix}
x_1\
x_2\
x_3
\end{bmatrix}
H=\begin{bmatrix}
4 & -2 & 0\
-2 & 4 & 0\
0 & 0 & 2
\end{bmatrix}
C=\begin{bmatrix}
0\
0\
1
\end{bmatrix}
\end{array}$
(2)编写求解二次规划的M文件:
|
|
其他规划问题
其他规划问题的MATLAB函数使用方法和前面两个类似,这里不再赘述,具体使用方法读者可以查阅相关资料。
微分方程及数值解
数学建模中的微分方程模型,其实就是高等数学中的微积分知识在建模中的应用。常见的微分方程模型有人口模型和种群数量模型。
实例 温度冷却
由物理学知道,物体冷却的速度与当时的物体温度和周围环境温度之差成正比.今 100℃的沸水注入杯里,放在室温为 20℃的环境冷却,5min 后测得水温为 60℃.求水温 u 与时间 t 的函数关系.
- 问题分析及模型的建立
设比例系数为k(k>0),根据题意可得微分方程
模型的求解
此为简单的一阶可分离变量微分方程,可得解析解$u=20+80(0.5)^{\frac{t}{5}}$.
使用MATLAB求解微分方程解析解(通解或特解):
|
|
运算结果为:
|
|
使用MATLAB求解微分方程数值解:
由给定条件$u|_{t=5}=60$,可得$k=\frac{\ln 2}{5}$,即$u=20+80(0.5)^\frac{t}{5}$.
MATLAB代码:
|
|
MATLAB求解的函数微分方程(组)
那些不可以用积分方法求解的微分方程初值问题,可以用 MATLAB 的函数,如二三阶龙格-库塔法ode23 或四五阶龙格-库塔法 ode45 命令来求其数值解.
对于微分方程(组)的初值问题
可用下面的 MATLAB 命令实现计算:
|
|
这里 ode23 用的是 3 级 2 阶的龙格-库塔法公式,ode45 用的是 5 级 4 阶的龙格-库塔公式.输入参数 odefun 是待解方程写成的函数 M 文件或inline 格式的函数$f(t,x)$。
ts=[t0,t1,…,tf],则输出为在指定时刻 t0,t1,…,tf 的函数值.如果输入 t0∶k∶tf,则输出为在[t0,tf]内以 k 为间隔的等分点处的函数值。
x0 为函数初值( n 维向量)。
options 可用于设定误差限(options 默认时设定相对误差${10}^{-3}$绝对误差${10}^{-6}$),命令为:options=odeset(‘reltol’,rt,‘abstol’,at)
这里 rt,at 分别为设定的相对误差和绝对误差。
命令的输出 t 为由输入指定的 ts,x 为相应的函数值( n维向量)。
其他MATLAB函数
MATLAB中还有诸如求解偏微分方程的函数,读者可以自行查询相关资料。
机器学习
由于机器学习内容很多这里我只将常用学习算法进行归类。机器学习分为监督学习和无监督学习。其中监督学习又分为分类、集成学习、降维。
分类:
- K最近邻
- 决策树
- 贝叶斯分类器
- 逻辑回归
- 支持向量机
集成学习:
- bagging:随机森林
- boosting:AdaBoost、GBDT、XGBoost(工业级)
无监督学习:
- K-Means
- DBSCAN(基于密度的聚类)
概率统计模型
注:聚类分析对类及类的数量是未知的,而判别分析是已知的。
评价模型
常用评价模型:
- 层次分析法:定性与定量相结合的多准则决策
- 灰色综合评价法:灰色关联度分析
- 模糊综合评价法: 根据模糊数学的隶属度评价
- BP神经网络综合评价法
- 数据包络(DEA): 是一个对多投入/多产出的多决策单元的效率评价方法,广泛使用于业绩评价
综合评价模型:
- 线性加权综合法 $y=\sum^m_{j=1}w_ix_j$
- 非线性加权综合法 $y=\prod^m_{j=1}x_j^{w_j}$
- 逼近理想点(TOPSIS)方法
- 动态加权
动态加权函数:
- 分段变幂函数
- 偏大型正态分布函数
- S型分布函数
智能计算方法
- 模拟退火算法(SA):寻找全局最优思想
- 自动转换: 满足条件自动转换到另外一种状态
- 概率转换: 当不满足条件时按照一定的概率转换到另外一种状态
- 遗传算法(GA): 1. 选择 2. 交叉 3. 变异
- 粒子群算法(PSO):信息共享思想