[原创]基于遗传算法模拟退火举例
发布:fantuanxiaot | 分类:会计库
关于本站
人大经济论坛-经管之家:分享大学、考研、论文、会计、留学、数据、经济学、金融学、管理学、统计学、博弈论、统计年鉴、行业分析包括等相关资源。
经管之家是国内活跃的在线教育咨询平台!
经管之家新媒体交易平台
提供"微信号、微博、抖音、快手、头条、小红书、百家号、企鹅号、UC号、一点资讯"等虚拟账号交易,真正实现买卖双方的共赢。【请点击这里访问】
论文
- 毕业论文 | 写毕业论文
- 毕业论文 | 为毕业论文找思路
- 毕业论文 | 可以有时间好好写 ...
- 毕业论文 | 毕业论文如何选较 ...
- 毕业论文 | 毕业论文选题通过 ...
- 毕业论文 | 还有三人的毕业论 ...
- 毕业论文 | 毕业论文答辩过程 ...
- 毕业论文 | 本科毕业论文,wi ...
考研考博
- 考博 | 南大考博经济类资 ...
- 考博 | 考博英语10000词汇 ...
- 考博 | 如果复旦、南大这 ...
- 考博 | 有谁知道春招秋季 ...
- 考博 | 工作与考博?到底 ...
- 考博 | 考博应该如何选择 ...
- 考博 | 考博失败了
- 考博 | 考博考研英语作文 ...
留学
- 日本留学 | 在日本留学心得
- 日本留学 | 日本留学生活必需 ...
- 日本留学 | 【留学日本】2015 ...
- 日本留学 | 日本海外留学8年来 ...
- 日本留学 | 日本留学费用_日本 ...
- 日本留学 | 求在日本留学的师 ...
- 日本留学 | 日本留学的有没有 ...
- 日本留学 | 日本留学
TOP热门关键词
一,基于遗传算法的模拟退火工具箱应用。用模拟退火工具箱试了试一个例子,发现全局收敛非常不稳定,总会收敛到局部,因子加入遗传算法就好很多了,以下是基于谢菲尔德大学的遗传算法的模拟退火算法,对MATLAB的模拟 ...
免费学术公开课,扫码加入 |
[hide]
- function SA_GA_ExampleI()
- clc;
- clear all
- ub_lb=[-5 -5;5 5];
- %ub_lb的设置其中第一行是下界第二行是上界
- Population=10;
- MaxIteration=10;
- SelectionProbability=0.9;
- CrossoverProbability=0.7;
- MutationProbability=0.01;
- NumberofIndividuals=2;
- traceX=zeros(MaxIteration,NumberofIndividuals);
- traceY=zeros(1,MaxIteration);
- Precision=8;
- %以上为参数的设置
- FielD=[repmat(Precision,1,NumberofIndividuals);ub_lb;repmat([1;0;1;1],1,NumberofIndividuals)];
- Iteration=0;
- Chromsome=CRTBP(Population,NumberofIndividuals*Precision);
- X=BS2RV(Chromsome,FielD);
- ObjV=ObjVfun(X);
- while Iteration<MaxIteration
- FitV=RANKING(ObjV);
- SelCh=SELECT('SUS',Chromsome,FitV,SelectionProbability);
- SelCh=RECOMBIN('XOVSP',SelCh,CrossoverProbability);
- SelCh=MUT(SelCh,MutationProbability);
-
- X=BS2RV(SelCh,FielD);
- ObjSelV=ObjVfun(X);
-
- [Chromsome,ObjV]=REINS(Chromsome,SelCh,1,1,ObjV,ObjSelV);
- X=BS2RV(Chromsome,FielD);
-
- Iteration=Iteration+1;
- [fval,index]=min(ObjV);
- traceY(Iteration)=fval;
- traceX(Iteration,:)=X(index,:);
- end
- figure(1)
- set(figure(1),'color','w')
- hold on
- plot(traceY,'ro','markerfacecolor','r','markersize',12,'markeredgecolor','k')
- grid on
- legend('The Best FvalPath')
- hold off
- YY=traceY(end);
- disp(['The Best Fval= ',num2str(YY)])
- end
- %目标函数与建立最优初始值结果
- function Obj=ObjVfun(X)
- %X是初始值矩阵
- N=size(X,1);
- ObjectiveFunction = @fun;
- lb = [-5 -5];
- ub = [5 5];
- options = saoptimset('MaxIter',300,'StallIterLim',200,'TolFun',1e-20,'AnnealingFcn',@annealingfast,...
- 'InitialTemperature',100,'TemperatureFcn',@temperatureexp,'ReannealInterval',500);
- Obj=zeros(N,1);
- for i=1:N
- [~,fval]=simulannealbnd(ObjectiveFunction,X(i,:),lb,ub,options);
- Obj(i)=fval;
- end
- end
- %目标函数
- %y = (4 - 2.1*x(1)^2 + x(1)^4/3)*x(1)^2 + x(1)*x(2) + (-4 +
- %4*x(2)^2)*x(2)^2;
- %Rastrigin's function
- function y=fun(x)
- y = 20 + x(1)^2 + x(2)^2 - 10*(cos(2*pi*x(1))+cos(2*pi*x(2)));
- end
最终:The Best Fval= 2.0843e-007
二,基于遗传算法的模拟退火算法例子应用
- function SA_GA_Example()
- clc;
- clear all
- ub_lb=[-5 -5;5 5];
- %种群
- %基于遗传算法的参数设置
- Population=40;
- MaxIteration=20;
- SelectionProbability=0.9;
- CrossoverProbability=0.7;
- MutationProbability=0.01;
- NumberofIndividuals=2;
- Precision=20;
- %基于模拟退火算法的参数设置
- Temp=90;
- a=0.97;
- T_end=3;
- %用于跟踪遗传算法最优的变量和解值
- TraceY=zeros(MaxIteration,1);
- TraceX=zeros(MaxIteration,NumberofIndividuals);
- %用于跟踪模拟退火的最优变量和解值
- BestY=100;
- BestX=100*ones(1,2);
- %建立区域扫描区间
- FielD=[repmat(Precision,1,NumberofIndividuals);ub_lb;repmat([1;0;1;1],1,NumberofIndividuals)];
- %初始化染色体
- Chromsome=CRTBP(Population,NumberofIndividuals*Precision);
- %将二进制数转化为十进制数
- X=BS2RV(Chromsome,FielD);
- ObjV=ObjVfun(X);
- while Temp>=T_end
- Iteration=0;
- while Iteration<MaxIteration
- FitV=RANKING(ObjV);
- SelCh=SELECT('SUS',Chromsome,FitV,SelectionProbability);
- SelCh=RECOMBIN('XOVSP',SelCh,CrossoverProbability);
- SelCh=MUT(SelCh,MutationProbability);
-
- X=BS2RV(SelCh,FielD);
- ObjSelV=ObjVfun(X);
- [Chromsome,ObjV]=REINS(Chromsome,SelCh,1,1,ObjV,ObjSelV);
- X=BS2RV(Chromsome,FielD);
-
- Iteration=Iteration+1;
- [Fval,Index]=min(ObjV);
- TraceY(Iteration)=Fval;
- TraceX(Iteration,:)=X(Index,:);
- end
-
- [FvalY,I]=min(TraceY);
- if FvalY<=BestY
- BestY=[BestY FvalY];
- BestX=TraceX(I,:);
- elseif rand<exp(-(FvalY-BestY)/Temp)
- BestY=[BestY FvalY];
- BestX=TraceX(I,:);
- else
- BestY=[BestY BestY(end)];
- end
- Temp=Temp*a;
- end
- figure(1)
- set(figure(1),'color','w')
- hold on
- plot(2*(1:length(BestY)),BestY,'ro','markerfacecolor','r','markersize',8,'markeredgecolor','k')
- grid on
- legend('The BestY FvalPath')
- hold off
- X1=BestX(1);
- X2=BestX(2);
- disp(['The X1 value is',num2str(X1),' and The X2 value is',num2str(X2)])
- end
- %列向量目标函数
- function Obj=ObjVfun(X)
- N=size(X,1);
- Obj=zeros(N,1);
- for i=1:N
- Obj(i)=fun(X(i,:));
- end
- end
- %目标函数
- %y = (4 - 2.1*x(1)^2 + x(1)^4/3)*x(1)^2 + x(1)*x(2) + (-4 +
- %4*x(2)^2)*x(2)^2;
- %Rastrigin's function
- function y=fun(x)
- y = 20 + x(1)^2 + x(2)^2 - 10*(cos(2*pi*x(1))+cos(2*pi*x(2)));
- end
「经管之家」APP:经管人学习、答疑、交友,就上经管之家!
免流量费下载资料----在经管之家app可以下载论坛上的所有资源,并且不额外收取下载高峰期的论坛币。
涵盖所有经管领域的优秀内容----覆盖经济、管理、金融投资、计量统计、数据分析、国贸、财会等专业的学习宝库,各类资料应有尽有。
来自五湖四海的经管达人----已经有上千万的经管人来到这里,你可以找到任何学科方向、有共同话题的朋友。
经管之家(原人大经济论坛),跨越高校的围墙,带你走进经管知识的新世界。
扫描下方二维码下载并注册APP
免流量费下载资料----在经管之家app可以下载论坛上的所有资源,并且不额外收取下载高峰期的论坛币。
涵盖所有经管领域的优秀内容----覆盖经济、管理、金融投资、计量统计、数据分析、国贸、财会等专业的学习宝库,各类资料应有尽有。
来自五湖四海的经管达人----已经有上千万的经管人来到这里,你可以找到任何学科方向、有共同话题的朋友。
经管之家(原人大经济论坛),跨越高校的围墙,带你走进经管知识的新世界。
扫描下方二维码下载并注册APP
您可能感兴趣的文章
本站推荐的文章
- 哲学名言 | 【独家发布】经典哲学名言
- 哲学书籍 | 求推荐一本讲人生目标的哲学书籍 ...
- 哲学书籍 | 经济人,开拓你逻辑思维的哲学书 ...
- 哲学书籍 | 哲学书籍
- 哲学书籍 | 哲学书籍
- 哲学书籍 | 哲学书籍
- 哲学书籍 | 经典的哲学书籍
- 哲学书籍 | 发22本经典的经济学及哲学书籍《 ...
人气文章
1.凡人大经济论坛-经管之家转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。