![eebdbff9c73ed58f9ed877471f9a8179.png](https://i-blog.csdnimg.cn/blog_migrate/b74121145f48402cb17593226d24a913.jpeg)
一. 最优化基础[1]
- 最优化方法概念:求解一元或多元函数的极小值或最小值的计算方法(目标:求解方程最优的待定参数)
- 解决最优化问题的方法:①确定性算法。②随机性算法。
1.引例:
- 前提:所给的两个变量
数据隐含变量的一种确定性关系
- 目的:希望通过求解参数
确定最优的函数关系。
- 优化:近似偏差最小,即需要选择一条曲线使其尽可能多地穿过图形中的点,而数学上表示,就是
,即转化为求解一元函数
的极小值的方法:求所有驻点+不可导点;判断是否为极值;求极小值
- 缺点:过程繁琐不易实现,运行时间偏长,若目标函数过于复杂还可能得不到正确的结果。
- 最优化数学模型例子:①下料问题。②运输问题。(线性规划也是一种最优化的例子)
- 最优化数学模型表示:
、
其中
2.迭代下降算法
迭代下降准则(框架算法):
1)给出目标函数的初始迭代点
2)按一定规则产生
3)再沿方向
4)若满足停机条件,则终止迭代并输出
注意:
a.在适当的假设下一般可以说明算法能在有限步之内找到最优解或得到一个收敛到最优解的迭代点列。
二. 无约束优化问题
1.函数:fminbnd
即求
- 特点:求数值解,过程简洁容易实现单要确定搜索区间。
- 注意:有时变换函数的表示形式,极坐标方程/参数方程在确定区间时有一定优势。
2.函数fminsearch和fminunc
- 区别:
- fminsearch采用了基于免导数算法,适用范围更广,但处理问题规模较小,求解素服较慢。
- fminunc采用了基于导数的算法,若可以提供导数信息,求解更高效
3.线性规划linprog
这里
4.非线性规划fmincon
编程思路:
- 首先建立M文件定义优化目标函数 function f = fun(X)
- 然后建立M文件定义非线性约束条件function [C,Ceq] = nonlcon(X)
- 建立主程序,调用上述两个函数代入fmincon
待续。
附:
Matlab优化工具箱:
%命令 % 算法 % 问题
fminbnd() %黄金分割法,抛物线插值法 求单变量无约束最优化
[xmin,ymin] = fminbnd(fun,x1,x2);%fun是目标函数,x是搜索区间,xminymin分别是极小点,极小值
fminsearch() %基于免导数的算法:Nelder-Mead单纯形方法 求多变量无约束最优化
fminunc() %基于导数的算法:拟牛顿方法,信赖域方法 求多变量无约束最优化
[Xmin,Fmin] = fminsearch(FUN,X0);
[Xmin,Fmin] = fminunc(FUN,X0);
linprog() %内点法、(对偶)单纯形法、有效集法 求线性规划问题
intlinprog() %分支定界法 求解混合整数线性规划问题
[Xmin,Fmin] = linprog(C,A,b,Aeq,beq,Lb,Ub)如果条件无则用空矩阵代替
[Xmin,Fmin] = intlinprog(C,I,A,b,Aeq,beq,Lb,Ub)如果条件无则用空矩阵代替
fmincon() %信赖域法、有效集法、内点法、序列二次规划 求多变量有约束最优化
[Xmin,Fmin]=fmincon(fun,X0,A,b,Aeq,Beq,Lb,Ub,nonlcon)%nonlcon是针对非线性约束编写的函数文件名
ga() %遗传算法 求困难复杂多态最优化的最优解
partideswarm() %粒子群优化 求困难复杂多态最优化的最优解
simulannealbnd() %模拟退火 求困难复杂多态最优化的最优解
参考
- ^张勇主编,数学实验与数学建模基础,电子科技大学出版社,2020