Matlab最优化编程例子
更新时间:2024-06-17 05:03:01 阅读量: 综合文库 文档下载
题目:分别用最速下降法、FR共轭梯度法、DFP法和BFGS法求解问题:
22minf(x)?x1?2x1x2?4x2?x1?3x2
取初始点x(1)?(1,1)T,通过Matlab编程实现求解过程。 公用函数如下:
1、function f= fun( X ) %所求问题目标函数
f=X(1)^2-2*X(1)*X(2)+4*X(2)^2+X(1)-3*X(2); end
2、function g= gfun( X ) %所求问题目标函数梯度
g=[2*X(1)-2*X(2)+1,-2*X(1)+8*X(2)-3]; end
3、function He = Hess( X ) %所求问题目标函数Hesse矩阵 n=length(X); He=zeros(n,n); He=[2,-2; -2,4];
End
解法一:最速下降法
function [ x,val,k ] = grad( fun,gfun,x0 ) %功能:用最速下降法求无约束问题最小值
%输入:x0是初始点,fun和gfun分别是目标函数和梯度 %输出:x、val分别是最优点和最优值,k是迭代次数 maxk=5000;%最大迭代次数 rho=0.5;sigma=0.4; k=0;eps=10e-6; while(k g=feval(gfun,x0);%计算梯度 d=-g;%计算搜索方向 if(norm(d) if(feval(fun,x0+rho^m*d) x0=x0+rho^mk*d; k=k+1; end x=x0; val=feval(fun,x0); end 解法二:FR共轭梯度法 function [ x,val,k ] = frcg( fun,gfun,x0 ) %功能:用FR共轭梯度法求无约束问题最小值 %输入:x0是初始点,fun和gfun分别是目标函数和梯度 %输出:x、val分别是最优点和最优值,k是迭代次数 maxk=5000;%最大迭代次数 rho=0.5;sigma=0.4; k=0;eps=10e-6; n=length(x0); while(k g=feval(gfun,x0);%计算梯度 itern=k-(n+1)*floor(k/(n+1)); itern=itern+1; %计算搜索方向 if(itern==1) d=-g; else beta=(g*g')/(g0*g0'); d=-g+beta*d0; gd=g'*d; if(gd>=0.0) d=-g; end end if(norm(g) while(m<20) if(feval(fun,x0+rho^m*d) x0=x0+rho^mk*d; val=feval(fun,x0); g0=g;d0=d; k=k+1; end x=x0; val=feval(fun,x0); end 解法三:DFP法 function [ x,val,k ] = dfp( fun,gfun,x0 ) %功能:用DFP法求无约束问题最小值 %输入:x0是初始点,fun和gfun分别是目标函数和梯度 %输出:x、val分别是最优点和最优值,k是迭代次数 maxk=5000;%最大迭代次数 rho=0.5;sigma=0.4; k=0;eps=10e-6; n=length(x0); Hk=inv(feval('Hess',x0)); while(k gk=feval(gfun,x0); if(norm(gk) dk=-Hk*gk'; dk=dk'; m=0;mk=0; while(m<20) if(feval(fun,x0+rho^m*dk) ?P校正 x=x0+rho^mk*dk; sk=x-x0; yk=feval(gfun,x)-gk; if(sk'*yk>0) Hk=Hk-(((Hk*yk')*yk)*Hk)/(yk*Hk*yk')+(sk'*sk)/(sk*yk'); end k=k+1; x0=x; end val=feval(fun,x0); end 解法四:BFGS法 function [ x,val,k ] = bfgs( fun,gfun,x0 ) %功能:用BFGS法求无约束问题最小值 %输入:x0是初始点,fun和gfun分别是目标函数和梯度 %输出:x、val分别是最优点和最优值,k是迭代次数 maxk=5000;%最大迭代次数 rho=0.5;sigma=0.4; k=0;eps=10e-6; n=length(x0); Bk=eye(n); while(k gk=feval(gfun,x0); if(norm(gk) dk=-Bk*gk'; m=0;mk=0; while(m<20) new=sigma*rho^m*gk*dk; old=feval(fun,x0); if(feval(fun,x0+rho^m*dk') ?GS校正 x=x0+rho^mk*dk'; sk=x-x0; yk=feval(gfun,x)-gk; if(yk'*sk>0) Bk=Bk-(((Bk*sk')*sk)*Bk)/(sk*Bk*sk')+(yk'*yk)/(yk*sk'); end k=k+1; x0=x; end val=feval(fun,x0); end
正在阅读:
Matlab最优化编程例子06-17
Contributions of LEP1.5, LEP2 and linear-collider data to indirect constraints on non-Abeli08-13
专项施工方案“模板工程施工方案编制”04-07
1 - 4075014 - SPWM变频调速系统设计论文09-12
2018年湖北大学艺术学院333教育综合之教育学考研基础五套测试题05-05
谈生命教案 Microsoft Word 文档 (4)04-23
市林业发展“十一五”规划06-28
语文课培养学生语言表达能力的策略研究03-11
农村贫困问题的现状及对策03-28
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 最优化
- 例子
- 编程
- Matlab
- 岗位标准化管理制度
- 宁夏回族宁夏回族自治区融资性担保公司管理实施细则的应用
- 3、村级经济股份合作社股东代表、理事会、监事会选举办法
- 枳沟镇人的风俗习惯调查报告九二
- 安全事故反思材料提纲(范本)
- 2009年读书心得鼓励奖获奖文章
- 2018-2019-挂职锻炼干部年个人工作总结(挂职锻炼,干部,个人工
- 皇帝的新装导学案a
- 局部解剖学重点(很实用)
- 以富硒产业挺起宜春农业的脊梁
- 试题库(玉米)
- 研究复习参考高中物理开放问题教学的初步
- 第三届合唱节实施方案(细案)
- 作文基本功训练
- 统计学原理复习思考题
- 施工组织设计模板
- 万科物业服务合同
- 南京城建污水处理收费资产支持收益专项资产管理计划募集说明书
- 新华医院项目技术策划 - 图文
- 2018-2019年广州一模:广东省广州市2018届高三第一次模拟考试英