优化模型
优化模型就是给定一个目标函数,然后在约束条件下求出该目标函数的最优值。
形如:
min(或max) z=f(x),x=(x1,...)s.t.gi(x)≤0,i=1,2,...
决策变量: x
目标函数: f(x)
约束条件: $ s.t. g_i(x)\leq0 $
优化问题三要素:
数学规划:
- 线性规划(Linear Programming,简称LP)
- 非线性规划(Nonlinear Programming,简称NLP)
- 整数规划
LINGO软件求解优化模型
例题:
max S⎩⎪⎪⎨⎪⎪⎧aixi=S,i=1,2,...∑i=16xi=5000,a5x6=5000.
| 存期年限 |
1年 |
2年 |
3年 |
4年 |
5年 |
| 最有收益 |
1.018 |
1.0432 |
1.0776 |
1.09715968 |
1.144 |
LINGO代码:
!求解规划问题; model: min = S; 1.018 * x1 = S; 1.0432 * x2 = S; 1.07776 * x3 = S; 1.09715968 * x4 = S; 1.144 * x5 = S; x1 + x2 + x3 + x4 + x5 + x6 = 5000; 1.144 * x6 = 5000; end
|
运行结果:
Global optimal solution found. Objective value: 135.2227 Infeasibilities: 0.000000 Total solver iterations: 0
Variable Value Reduced Cost S 135.2227 0.000000 X1 132.8317 0.000000 X2 129.6230 0.000000 X3 125.4664 0.000000 X4 123.2479 0.000000 X5 118.2016 0.000000 X6 4370.629 0.000000
Row Slack or Surplus Dual Price 1 135.2227 -1.000000 2 0.000000 0.2110548 3 0.000000 0.2059565 4 0.000000 0.1993522 5 0.000000 0.1958273 6 0.000000 0.1878093 7 0.000000 -0.2148538 8 0.000000 0.1878093
|
其中Objective value项即为所求目标值,下面的Variable即为在最优状态下各变量值。
关于LINGO教程网上有很多,在这里不再赘述。读者可以前往 这里查看。
MATLAB软件求解优化模型
常用的优化功能函数:
- 求解线性规划问题的主要函数是linprog。
- 求解二次规划问题的主要函数是quadprog。
- 求解无约束非线性规划问题的主要函数是fminbnd、fminunc和fminsearch。
- 求解约束非线性规划问题的主要函数是fgoalattain和fminimax。
一般步骤:
- 针对具体工程问题建立优化设计的数学模型
- 建立目标函数文件
- 建立约束函数文件
- 建立调用优化工具函数的命令文件
- 将优化设计的命令文件复制到MATLAB命令窗口中进行运算求解。
线性规划问题
数学模型形式:
minfTXs.t.AX≤b (线性不等式约束条件)AeqX=beq (线性等式约束条件lb≤X≤ub (边界约束条件)
MATLAB中函数调用格式:
[xopt, fopt]=linprog(f, A, b, Aeq, beq, lb, ub, x0, options)
|
参数及返回值释义:
xopt: 最优解
fopt: 最优值
f: 目标函数各维变量系数向量
x0:初始点
options: 可选项
注: A, b, Aeq, beq, lb, ub均和上述数学模型对应。
二次规划问题
数学模型形式:
minf(X)=21XTHX+CTXs.t.AX≤bAeqX=beqlb≤X≤ub
[xopt, fopt]=quadprog(H,C, A, b, Aeq, beq, lb, ub, x0, options)
|
参数及返回值释义:
xopt: 最优解
fopt: 最优值
H: 目标函数的海塞矩阵
C: 目标函数的一次项系数向量
其余同上。
示例:
求解约束优化问题
f(X)=2X12+2x22+x32−2x1x2+x3s.t.g(X)=x1+3x2+2x3≤6h(X)=2x1−x2+x3=4x1,x2,x3≥0
解:(1)将目标函数写成二次函数的形式f(X)=21XTHX+CTX,其中:
X=⎣⎢⎡x1x2x3⎦⎥⎤H=⎣⎢⎡4−20−240002⎦⎥⎤C=⎣⎢⎡001⎦⎥⎤
(2)编写求解二次规划的M文件:
H=[4,-2,0;-2,4,0;0,0,2]; C=[0,0,1]; A=[1,3,2]; b=[6]; Aeq=[2,-1,1]; beq=[4]; lb=zeros(3,1); [xopt,fopt]=quadprig(H,C,A,b,Aeq,beq,lb)
|
其他规划问题
其他规划问题的MATLAB函数使用方法和前面两个类似,这里不再赘述,具体使用方法读者可以查阅相关资料。
微分方程及数值解
数学建模中的微分方程模型,其实就是高等数学中的微积分知识在建模中的应用。常见的微分方程模型有人口模型和种群数量模型。
实例 温度冷却
由物理学知道,物体冷却的速度与当时的物体温度和周围环境温度之差成正比.今 100℃的沸水注入杯里,放在室温为 20℃的环境冷却,5min 后测得水温为 60℃.求水温 u 与时间 t 的函数关系.
- 问题分析及模型的建立
设比例系数为k(k>0),根据题意可得微分方程
dtdu=−k(u−20)u∣t=0=100,u∣t=5=60
-
模型的求解
此为简单的一阶可分离变量微分方程,可得解析解u=20+80(0.5)5t.
使用MATLAB求解微分方程解析解(通解或特解):
dsolve('Du+k*(u-20)=0','u(0)=100','t') %dsolve 为求常微分方程的符号解函数
|
运算结果为:
使用MATLAB求解微分方程数值解:
由给定条件u∣t=5=60,可得k=5ln2,即u=20+80(0.5)5t.
MATLAB代码:
f=inline('-0.2*log(2)*(u-20)','t','u'); [t,u]=ode45(f,[0,100],100); %ode45 为龙格库塔法求微分方程的数值解 plot(t,u) %绘制 0 到 100 分钟的温度随时间变化的图形
|
MATLAB求解的函数微分方程(组)
那些不可以用积分方法求解的微分方程初值问题,可以用 MATLAB 的函数,如二三阶龙格-库塔法ode23 或四五阶龙格-库塔法 ode45 命令来求其数值解.
对于微分方程(组)的初值问题
x(t)=f(t,x),x=(x1,...,xn)T,f=(f1,...,fn)Tx(t0)=x0,x0(x01,...,x0n)T
可用下面的 MATLAB 命令实现计算:
[t,x]= =ode23(odefun ,ts ,x0 ,options) [t,x]= =ode45(odefun ,ts ,x0 ,options)
|
这里 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聚类(快速聚类)分层聚类(系统聚类)hierarchical cluster判别分析 ⎩⎪⎪⎨⎪⎪⎧根据距离判别fisher判别法逐步判别法(选择变量)时间序列分析 {指数平滑Box−Jenkins方法
注:聚类分析对类及类的数量是未知的,而判别分析是已知的。
评价模型
常用评价模型:
- 层次分析法:定性与定量相结合的多准则决策
- 灰色综合评价法:灰色关联度分析
- 模糊综合评价法: 根据模糊数学的隶属度评价
- BP神经网络综合评价法
- 数据包络(DEA): 是一个对多投入/多产出的多决策单元的效率评价方法,广泛使用于业绩评价
综合评价模型:
- 线性加权综合法 y=∑j=1mwixj
- 非线性加权综合法 y=∏j=1mxjwj
- 逼近理想点(TOPSIS)方法
- 动态加权
动态加权函数:
智能计算方法
- 模拟退火算法(SA):寻找全局最优思想
- 自动转换: 满足条件自动转换到另外一种状态
- 概率转换: 当不满足条件时按照一定的概率转换到另外一种状态
- 遗传算法(GA): 1. 选择 2. 交叉 3. 变异
- 粒子群算法(PSO):信息共享思想