matlab最优化程序包括
无约束一维极值问题 进退法 黄金分割法 斐波那契法 牛顿法基本牛顿法 全局牛顿法 割线法 抛物线法 三次插值法 可接受搜索法 Goidstein法 WolfePowell法
单纯形搜索法 Powell法 最速下降法 共轭梯度法 牛顿法 修正牛顿法 拟牛顿法 信赖域法 显式最速下降法, Rosen梯度投影法 罚函数法 外点罚函数法
内点罚函数法 混合罚函数法 乘子法 G-N法 修正G-N法 L-M法 线性规划 单纯形法 修正单纯形法 大M法 变量有界单纯形法 整数规划 割平面法 分支定界法 0-1规划 二次规划
拉格朗曰法 起作用集算法 路径跟踪法 粒子群优化算法 基本粒子群算法 带压缩因子的粒子群算法 权重改进的粒子群算法 线性递减权重法 自适应权重法 随机权重法
变学习因子的粒子群算法 同步变化的学习因子 异步变化的学习因子 二阶粒子群算法 二阶振荡粒子群算法
如果目标函数或约束条件中包含非线性函数,就称这种规划问题为非线性规划问 题。一般说来,解非线性规划要比解线性规划问题困难得多。而且,也不象线性规划有单纯形法这一通用方法,非线性规划目前还没有适于各种问题的一般算法,各个方法都有自己特定的适用范围。
如果线性规划的优解存在,其优解只能在其可行域的边界上达到(特别是可行 域的顶点上达到);而非线性规划的优解(如果优解存在)则可能在其可行域的任意一点达到。
Matlab 中非线性规划的数学模型写成以下形式
其中 是非线性函数
Matlab 中的命令是
X=FMINCON(FUN,X0,A,B,Aeq,Beq,LB,UB,NONLCON,OPTIONS)
NONLCON 是用 M 文件定义的非线性向量函数
给出例子如下
求解程序:
当用迭代法求函数的极小点时,常常用到一维搜索,即沿某一已知方向求目标函数的极小点。一维搜索的方法很多,常用的有:
下面有两个通过不断地缩短区间[a,b]的长度,来搜索得到近似优解的两个方法。
迭代法大体上分为两点:一是用到函数的一阶导数或二阶导数, 称为解析法。另一是仅用到函数值,称为直接法。
带有约束条件的极值问题称为约束极值问题,也叫规划问题。 求解约束极值问题要比求解无约束极值问题困难得多。为了简化其优化工作,可采用以下方法:将约束问题化为无约束问题;将非线性规划问题化为线性规划问题,以及能将复杂问题变换为较简单问题的其它方法。 库恩—塔克条件是非线性规划领域中重要的理论成果之一,是确定某点为优点的必要条件,但一般说它并不是充分条件(对于凸规划,它既是优点存在的必要条件, 同时也是充分条件)。
若某非线性规划的目标函数为自变量 x的二次函数,约束条件又全是线性的,就称 这种规划为二次规划。
例求解如下的例子
注意要提出
利用罚函数法,可将非线性规划问题的求解, 转化为求解一系列无约束极值问题 , 因而也称这种方法为序列无约束小化技术
罚函数法求解非线性规划问题的思想是,利用问题中的约束函数作出适当的罚函数,由此构造出带参数的增广目标函数,把问题转化为无约束非线性规划问题。主要有 两种形式,一种叫 外罚函数法 ,另一种叫 内罚函数法 ,下面介绍外罚函数法。
取一个充分大的数M>0,构造函数如下:
直观上可以理解为若 则给这个目标函数一个很大的惩罚,而如果 则对该目标函数无影响
或者写成:
例
或者写成矩阵形式:
其中的 min([x';zeros(1,2)]) 表示 都大于0
再在命令行中输入
可以看出两次的效果略有偏差。但是我们不满足于此,由于问题的规模较小,尝试使用 fmincon 求得精确得最优解
可以看出罚函数法虽然收敛速度快,但是精确度不是很高。当问题规模较大,不好求解时,可以考虑使用。
其中约束条件为:
当使用梯度求解上述问题时,效率更高并且结果更准确。 题目中目标函数的梯度为(对 分别求偏导数):
在命令行中输入optimtool可以打开图形界面
对于上一个问题,只要选择方法(solver)后,在相应位置输入@fun10,@fun11,点击start就可以
以上就是关于matlab最优化算法有哪些全部的内容,包括:matlab最优化算法有哪些、非线性规划、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)