全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
%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 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*子函数,目标函数值计算function value=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 %保留上一个最优解PreBestY=BestY;BestX=NextX; %新的最优解BestY=NextY;end%接受新产生的点为下一迭代的开始点if(minfunction(PreX,PreY)-minfunction(NextX,NextY)0)PreX=NextX;PreY=NextY;AcceptPoints=AcceptPoints+1;elsechange=-1*(minfunction(NextX,NextY)-minfunction(PreX,PreY)/Temperature;%不接受,保存原解if(exp(change)rand)PreX=NextX;PreY=NextY;AcceptPoints=AcceptPoints+1;endendend%结束条件为根据上一个最优解与最新的一个最优解的之差小于某个容差if(abs(minfunction(BestX,BestY)-minfuncti
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 585-2026船用法兰铸钢截止止回阀
- T/ZMDS 30004-2023口腔正畸活动矫治器
- T/JQR 13-2023高等教育 互动智慧教室 使用管理规范
- T/CNCA 156-2025煤矿用掘锚一体机再制造技术规范
- T/CAWAORG 058-2026基于长寿医学的老年健康服务规范
- T/CSPIA 002-2020手机音视频紧急求助与报警系统技术要求
- GB/T 223.3-2026钢铁及合金磷含量的测定分光光度法、滴定法和重量法
- 2025~2026学年广东省深圳市龙岗区北师大版六年级上册12月阶段性试卷【附答案】
- AI赋能电子元器件生产全流程质量管控
- 钻杆热处理调质操作工规程
- 河南华师联盟2027届高三上学期10月质量检测语文+答案
- 2026年高级会计师考试题+参考答案
- 湖南省自然科学基金学科分类目录及代码(新申报版)
- 2026年人教版新教材数学五年级上册第二单元《小数乘法》检测题(含答案)
- 2026年秋季四年级数学人教版第二单元单元检测卷(含答案)
- 《对比之魅》教学课件-2026-2027学年人美版(新教材)小学美术四年级上册
- 我国食品安全存在的问题及对策
- 2026语文新教材 六年级上册第3课 古诗词三首 教学课件
- 2026年上海农林职业技术学院高职单招笔试职业适应性测验试题库含答案解析3套试卷
- 2026年动物防疫专员试题(附答案)
- 河南农商行审计考试试题及答案
评论
0/150
提交评论