- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
最优化方法及其Matlab程序设计
1.最优化方法概述
在生活和工作中,人们对于同一个问题往往会提出多个解决方案,并通过各方面的论证从中提取最佳方案。最优化方法就是专门研究如何从多个方案中科学合理地提取出最佳方案的科学。
由于优化问题无所不在,目前最优化方法的应用和研究已经深入到了生产和科研的各个领域,如土木工程、机械工程、化学工程、运输调度、生产控制、经济规划、经济管理等,并取得了显著的经济效益和社会效益。
用最优化方法解决最优化问题的技术称为最优化技术,它包含两个方面的内容:
1) 建立数学模型即用数学语言来描述最优化问题。模型中的数学关系式反映了最优化问题所要达到的目标和各种约束条件。
2) 数学求解数学模型建好以后,选择合理的最优化法进行求解。最优化方法的发展很快,现在已经包含有多个分支,如线性规划、整数规划、非线性规划、动态规划、多目标规划等。
函 数 述 fgoalattain 多目标达到问题 fminbnd 有边界的标量非线性最小化 fmincon 有约束的非线性最小化 fminimax 最大最小化 fminsearch,fminunc 无约束非线性最小化 fseminf 半无限问题 linprog 线性课题 quadprog 二次课题 在[0,1]上的极小点,取容许误差。
求解步骤如下:
(1)用0.618法求单变量函数在单峰区间[a,b]上的近似极小点;
M文件代码如下:
function[s,phis,k,G,.E] = golds(phi,a,b,delta,epsilon)
%输入:phi是目标函数,a,b是搜索区间的两个端点
% delta,epsilon 分别是自变量和函数值的容许误差
%输出:s,phis分别是近似极小点和极小值,G是nx4矩阵;
% 其第k行分别是a,p,q,b的第k次迭代值[ak,pk,qk,bk]
% E=[ds,dphi],分别是s和phis的误差限.
t=(sqrt(5)-1)/2; h =b-a;
phia=feval(phi,a);phib=feval(phi,b);
p=a+(1-t)*h;q=a+t*h;
phip=feval(phi,p);phiq=feval(phi,q)?;
k=1?; G(k,?:)=[a,p,q,b]?;
while(abs(phib-phia)epsilon)|(hdelta)
if(phibphiq)
b = q; phib=phiq;q=p;phiq=phip;
h=b-a?;p=a+(1-t)*h?;phip=feval(phi,p);
else
a = p; phia=phip;p=q;phip=phiq;
h=b-a?;p=a+t*h?;phiq=feval(phi,q);
end
k=k+1;G(k,:)=[a,p,q,b];
end
ds=abs(b-a);dphi=abs(phib-phia);
if(phip=phiq)
s=p;phis=phip;
else
s=q;phis=phiq;
end
E=[ds,dphi];
(2)调用命令;
[s,phis,k,G,E]=golds(inline(‘s^2-sin(s)’),0,1,1e-4,1e-5)
求得近似极小点:0.450183
3.2利用fminbnd函数进行最优化求解(fminbnd是一个M文件,其算法基于黄金分割法和二次插值法)
这里,用humps函数来说明(humps(x)=1/((x-0.3)^2+0.01)+1/((x-0.9)^2+0.04)-6),对humps
函数求解其在x=0.6附近的极小值。
其求解过程为,在Matlab的命令行中输入命令:
作出[0,2]区间上的humps函数曲线,图形如下:
对(1)所得曲线进行分析,可以看出,曲线在x=0.3附近出现了一个最大值,在x=0.6附近出现了一个最小值.我们可以利用下面下面的命令代码估计x=0.6附近的极小值:
H_humps=@humps;
[xmin,value]=fminbnd(H_humps,0.5,0.8)
其结果截图为:
即humps函数在x=0.6(0.6370)附近存在一个极小值:11.2528。
4.Matlab中几个最优化函数的上机实验
4.1 线性规划问题求解—linprog函数
f, x, b, beq, lb和ub为向量,A 和Aeq为矩阵。
语法:x = linprog(f,A,b,Aeq,beq)
·x = linpr
原创力文档


文档评论(0)