全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
%matlab 程序实现 模拟退火算法程序 函数求极值(引用后修改,感谢 ARMYLAU)%使用模拟退火法求函数f(x,y) = 3*cos(xy) + x + y2的最小值%解:根据题意,我们设计冷却表进度表为:%即初始温度为30%衰减参数为0.95%马可夫链长度为10000%Metropolis的步长为0.02%结束条件为根据上一个最优解与最新的一个最优解的之差小于某个容差。%使用METROPOLIS接受准则进行模拟, 程序如下%* 日期:201211-29%* 作者:steven%*EMAIL:%* 结束条件为两次最优解之差小于某小量function BestX,BestY=SimulateAnnealing1clear;clc;%/ 要求最优值的目标函数,搜索的最大区间XMAX= 4;YMAX = 4;%冷却表参数MarkovLength = 10000; %/ 马可夫链长度DecayScale = 0.95; %/ 衰减参数StepFactor = 0.02; %/ 步长因子Temperature=30; %/ 初始温度Tolerance = 1e-8; %/ 容差AcceptPoints = 0.0; %/ Metropolis过程中总接受点rnd =rand;% 随机选点 初值设定PreX = -XMAX * rand ;PreY = -YMAX * rand;PreBestX= PreX;PreBestY = PreY;PreX = -XMAX * rand ;PreY = -YMAX * rand;BestX = PreX;BestY = PreY;% 每迭代一次退火一次(降温), 直到满足迭代条件为止mm=abs( ObjectFunction( BestX,BestY)-ObjectFunction (PreBestX, PreBestY);while mm ToleranceTemperature=DecayScale*Temperature;AcceptPoints = 0.0;% 在当前温度T下迭代loop(即MARKOV链长度)次for i=0:MarkovLength:1% 1) 在此点附近随机选下一点p=0;while p=0NextX = PreX + StepFactor*XMAX*(rand-0.5);NextY = PreY + StepFactor*YMAX*(rand-0.5);if p= (NextX = -XMAX & NextX = -YMAX & NextY ObjectFunction(NextX,NextY)% 保留上一个最优解PreBestX =BestX;PreBestY = BestY;% 此为新的最优解BestX=NextX;BestY=NextY;end% 3) Metropolis过程if( ObjectFunction(PreX,PreY) - ObjectFunction(NextX,NextY) 0 )%/ 接受, 此处lastPoint即下一个迭代的点以新接受的点开始PreX=NextX;PreY=NextY;AcceptPoints=AcceptPoints+1;elsechanger = -1 * ( ObjectFunction(NextX,NextY) - ObjectFunction(PreX,PreY) ) / Temperature ;rnd=rand;p1=exp(changer);double (p1);if p1 rand%/ 不接受, 保存原解PreX=NextX;PreY=NextY;AcceptPoints=AcceptPoints+1;endendendmm=abs( ObjectFunction( BestX,BestY)-ObjectFunction (PreBestX, PreBestY);enddisp(最小值在点:);BestXBestYdisp( 最小值为:0);ObjectFunction(BestX, BestY)end*子函数,目标函数值计算functionvalue=ObjectFunction(x,y)value=3*cos(x*y)+x+y*y;end%使用模拟退火法求函数f(x,y)=sin(x*y)+x2+y2的最小值format longXMAX=4; %搜索的最大区间YMAX=4; %搜索的最大区间MarkovLength=10000; %马可夫链长度DecayScale=0.95; %衰减参数0.95StepFactor=0.02; %步长因子Temperature=100; %初始温度Tolerance=1e-8; %容差AcceptPoints=0.0; %Metropolis过程中总接受点PreX=-XMAX*rand; %初始的搜索值PreY=-YMAX*rand; %初始的搜索值PreBestX=PreX; %上一个最优解PreBestY=PreY; %上一个最优解BestX=PreX; %最终解BestY=PreY; %最终解while(1) Temperature=Temperature*DecayScale; %每迭代一次退火一次(降温),直到满足迭代条件为止 AcceptPoints=0.0; %在当前温度下迭代(即MARKOV链长度)次 for i=0:1:MarkovLength while(1) NextX=PreX+StepFactor*XMAX*(rand-0.5); %在初始点附近随机选下一点 NextY=PreY+StepFactor*YMAX*(rand-0.5); %在初始点附近随机选下一点 %判断新产生的点是否在规定的最大搜索区间内,若在,则退出循环,不在,继续循环,直到新产生的点在规定的最大搜索区间内 if(NextX=-XMAX & NextX=-YMAX & NextYminfunction(NextX,NextY) PreBestX=BestX; %保留上一个最优解 PreBestY=BestY; BestX=NextX; %新的最优解 BestY=NextY; end %接受新产生的点为下一迭代的开始点 if(minfunction(PreX,PreY)-minfunction(NextX,NextY)0) PreX=NextX; PreY=NextY; AcceptPoints=AcceptPoints+1; else change=-1*(minfunction(NextX,NextY)-minfunction(PreX,PreY)/Temperature; %不接受,保存原解 if(exp(change)rand) PreX=NextX; PreY=NextY; AcceptPoints=AcceptPoints+1; end end end %结束条件为根据上一个最优解与最新的一个最优解的之差小于某个容差 if(abs(minfunction(BestX,BestY)-minfunc
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医学生专业知识测试题及答案参考
- 生产现场安全隐患排查测试题库及答案集全
- 医学综合考试题库及答案解析
- 医学领域招聘考试题库及答案详解
- 医学微生物学考试试题集及答案解析
- 小车能力测试题及答案大全
- 小漂钓鱼知识竞赛题及答案全收录
- 小米面试题集与实战策略解析
- 行业市场分析报告模板市场趋势详解版
- 2025年检查汇报工作总结(大全8篇)
- 2025年设备经理岗位招聘面试参考题库及参考答案
- 农药安全生产讲课课件
- 数据治理与管理实施方案
- 2025上海市生物医药技术研究院招聘专技人员12人考试笔试参考题库附答案解析
- 【二年级】2025秋季期中家长会:让每一颗小小的种子【课件】
- 2025 CSCO宫颈癌诊疗指南
- 甲状腺乳腺外科医院科室制度规定
- 交投公司面试题及答案
- GB/T 46341-2025超宽负荷灵活运行水轮机基本技术条件
- 七年级上期中家长会《家校携手共前行一路向阳待花开》课件
- 2025-2026学年湖南省长沙一中教育集团八年级(上)期中数学试卷
评论
0/150
提交评论