欢迎光临散文网 会员登陆 & 注册

应用matlab编程中关于非线性规划算法的总结

2023-02-16 15:18 作者:硬核的野生技术  | 我要投稿

应用matlab编程中关于非线性规划算法的总结 如果目标函数或约束条件中包含非线性函数,那么这种规划问题就是非线性规划问题。一般说来,解非线性规划要比解线性规划问题困难得多。而且,也不像线性规划有单纯形法这一通用方法,非线性规划目前还没有适于各种问题的一般算法,各个方法都有自己特定的适用范围。 线性规划与非线性规划的区别:如果线性规划的最优解存在,其最优解只能在其可行域的边界上达到(特别是可行  域的顶点上达到);而非线性规划的最优解(如果最优解存在)则可能在其可行域的任意一点达到。 由于线性规划的目标函数为线性函数,可行域为凸集,因而求出的最优解就是整个可行域上的全局最优解。非线性规划却不是这样,有时求出的某个解虽是一部分可行域上的极值点,但却并不一定是整个可行域上的全局最优解。 凸规划是一类比较简单而又具有重要理论意义的非线性规划。

当用迭代法求函数的极小点时,常常用到一维搜索,即沿某一已知方向求目标函数的极小点。一维搜索的方法很多,常用的有:(1)试探法(“成功—失败”,斐波那契法,0.618 法等);(2)插值法(抛物线插值法,三次插值法等);(3)微积分中的求根法(切线法,二分法等)。

如果目标函数是非二次函数,一般来说,用Newton法通过有限轮迭代并不能保证可求得其最优解。Newton法的优点是收敛速度快;缺点是有时不好用而需采取改进措施。

变尺度法(Variable Metric Algorithm)是近20多年来发展起来的,它不仅是求解无约束极值问题非常有效的算法,而且也被用来求解约束极值问题。由于它既避免了计算二阶导数矩阵及其求逆过程,又比梯度法的收敛速度快,特别是对高维问题具有显著的优越性,因而使变尺度法获得了很高的声誉。

在无约束非线性规划方法中,遇到问题的目标函数不可导或导函数的解析式难以表示时,一般需要使用直接搜索方法。同时,由于这些方法一般都比较直观和易于理解,因而在实际应用中常为人们所采用。

Matlab 工具箱中,用于求解无约束极值问题的函数有 fminunc 和 fminsearch。

带有约束条件的极值问题称为约束极值问题,也叫规划问题。求解约束极值问题要比求解无约束极值问题困难得多。为了简化其优化工作,可采用以下方法:将约束问题化为无约束问题;将非线性规划问题化为线性规划问题,以及 

能将复杂问题变换为较简单问题的其它方法。库恩—塔克条件是非线性规划领域中最重要的理论成果之一,是确定某点为最优点的必要条件,但一般说它并不是充分条件(对于凸规划,它既是最优点存在的必要条件,同时也是充分条件)

若某非线性规划的目标函数为自变量x的二次函数,约束条件又全是线性的,就称这种规划为二次规划。

利用罚函数法,可将非线性规划问题的求解,转化为求解一系列无约束极值问题,因而也称这种方法为序列无约束最小化技术,简记为 SUMT (Sequential Unconstrained 

Minization Technique)。罚函数法求解非线性规划问题的思想是,利用问题中的约束函数作出适当的罚函数,由此构造出带参数的增广目标函数,把问题转化为无约束非线性规划问题。主要有两种形式,一种叫外罚函数法,另一种叫内罚函数法。

在Matlab优化工具箱中,用于求解约束最优化问题的函数有:fminbnd、fmincon、 quadprog、fseminf、fminimax。

Matlab 优化工具箱中的optimtool命令提供了优化问题的用户图形界面解法。optimtool可应用到所有优化问题的求解,计算结果可以输出到Matlab工作空间中。

 

 

 

 

 

1  

应用matlab编程中关于非线性规划算法的总结的评论 (共 条)

分享到微博请遵守国家法律