MATLAB 求解最优化问题
来源:互联网 发布:怎么用php设计网站 编辑:程序博客网 时间:2024/05/01 19:55
MATLAB 求解最优化问题
MATLAB 优化工具箱解线性规划
模型1
命令:
模型2
命令:
注意:若没有不等式:
模型3
命令:[1]
注意:[1] 若没有等式约束:
命令:[x,fval]=linprog(…)
返回最优解x
及x
出的目标函数的值fval
求解优化问题的主要函数
1. MATLAB求解优化问题的主要函数
2. 优化函数的输入变量
3. 优化函数的输出变量表
4. 控制参数options
的设置
用MATLAB解无约束问题
1. 一元函数无约束优化问题
常用格式如下
x=fminbnd(fun,x1,x2);x=fminbnd(fun,x1,x2,options);[x,fval]=fminbnd(...);[x,fval,exitflag]=fminbnd(...);[x,fval,exitflag,output]=fminbnd(...);%%其中3、4、5的等式右边可用1或2的等式右边
函数fminbnd
的算法基于黄金分割法和二次插值法,它要求目标函数必须是连续函数,并可能只给出局部最优解。
2. 多元函数无约束优化问题
标准型为:
命令格式为:
x=fminunc(fun,X0); %或x=fminsearch(fun,X0)x=fminunc(fun,X0,options); %或x=fminsearch(fun,X0,options)[x,fval]=fminunc(...); %或[x,fval]=fminsearch(...)[x,fval,exitflag]=fminunc(...); %或[x,fval,exitflag]=fminsearch(...)[x,fval,exitflag,output]=fminunc(...); %或[x,fval,exitflag,output]=fminsearch(...)
fminsearch
是用单纯性法寻优
fminunc
的算法:
fminunc
为无约束优化提供了大型优化和中型优化算法。- 由
options
中的参数LargeScale
控制:LargeScale='on'
使用大型算法,LargeScale='off'
使用小型算法
- 由
fminunc
为中型优化算法的搜素方向提供了4种算法,由options
中的参数HessUpdate
控制HessUpdate='bfgs'
(默认值),拟牛顿法的BFGS
公式HessUpdate='dfp'
,拟牛顿法的DFP
公式HessUpdate='steepdesc'
,最速下降法
fminunc
为中型优化算法的步长一维搜索提供了两种算法,由options
中参数LineSearchType
控制:LineSearchType='quadcubic'
(缺省值),混合的二次和三次多项式插值LineSearchType='cubicpoly'
,三次多项式插值
使用fminunc
和fminsearch
可能会得到局部最优解
用MATLAB解非线性规划
标准型为:
其中
X
为n
维变元向量,G(X)
与Ceq(X)
均为非线性函数组成的向量,其他变量的含义和线性规划、二次规划相同。MATLAB求解:首先建立M文件
fun.m
,定义目标函数F(X)
function f=fun(X);f=F(X);
若约束条件中有非线性约束:
G(X)≤0 或Ceq(X)=0 ,则建立M文件nonlcon.m
定义函数G(X)
与Ceq(X)
:function [G,Ceq]=nonlcon(X);G=...Ceq=...
建立主程序,非线性规划求解的函数是
fmincon
,命令的基本格式如下:x=fmincom('fun',X0,A,b);x=fmincon('fun',X0,A,b,Aeq,beq);x=fmincon('fun',X0,A,b,Aeq,beq,VLB,VUB);x=fmincon('fun',X0,A,b,Aeq,beq,VLB,VUB,'nonlcon');x=fmincon('fun',X0,A,b,Aeq,beq,VLB,VUB,'nonlcon',options);[x,fval]=fmincon(...);[x,fval,exitflag]=fmincon(...);[x,fval,exitflag,output]=fmincon(...);
fmincon
函数提供了大型优化算法和中型优化算法。默认时,若在fun
函数中提供了梯度(options
参数的GradObj
设置为on
),并且只有上下界存在或只有等式约束,fmincon
函数将选择大型算法。当既有等式约束又有梯度约束时,使用中型算法。
fmincon
函数的中型算法使用的是序列二次规划法。在每一步迭代中求解二次规划子问题,并用BFGS
法更新拉格朗日Hessian
矩阵。
fmincon
函数可能会给出局部最优解,这与初值X0
的选取有关。
- MATLAB 求解最优化问题
- matlab-求解最优化问题的函数fminbnd,fmincon,quadprog.....区别总结
- 粒子群算法求解优化问题(MATLAB)
- 贪心算法求解最优化问题
- Matlab函数fminunc/fminbnd/fmincon求解工程优化问题
- Matlab遗传算法优化问题求解的示例代码
- 利用Matlab优化工具箱求解旅行商最短路径问题
- [最优化算法]最速下降法求解无约束最优化问题
- matlab求解最短路径
- matlab求解线性规划问题
- matlab 求解线性规划问题
- Matlab求解数学问题
- UVaLive 3708 Graveyard (构造法求解最优化问题)
- 约束最优化问题求解:拉格朗日乘子法和KKT条件
- 迭代求解最优化问题——步长确定
- 利用Matlab求解线性规划问题
- 线性规划问题的matlab求解
- 线性规划问题的matlab求解
- LVM动态扩展根分区实战
- 1775:采药 01背包
- React native环境搭建
- Linux学习笔记(一)------Linux起源
- NIO拷贝文件示例
- MATLAB 求解最优化问题
- zookeeper来完成分布式锁的功能
- 基于C/S模型的讨论组实现
- solrJ客户端测试笔记
- 0042_Trapping Rain Water
- c#5.0/6.0/7.0
- 46546546465456456
- 跳台阶
- LCD驱动--硬件+代码