Matlab:遗传算法,模拟退火算法练习题

这篇具有很好参考价值的文章主要介绍了Matlab:遗传算法,模拟退火算法练习题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、遗传算法

(1)遗传算法是一种基于自然选择原理和自然遗传机 制的搜索(寻优)算法,它是模拟自然界中的生命进化机制,在人工系统中实现特定目 标的优化。遗传算法的实质是通过群体搜索技术,根据适者生存的原则逐代进化,最终 得到最优解或准最优解。它必须做以下操作:初始群体的产生、求每一个体的适应度、 根据适者生存的原则选择优良个体、被选出的优良个体两两配对,通过随机交叉其染色 体的基因并随机变异某些染色体的基因后生成下一代群体,按此方法使群体逐代进化, 直到满足进化终止条件。其实现方法如下:

【1】根据具体问题确定可行解域,确定一种编码方法,能用数值串或字符串表示
可行解域的每一解。
【2】对每一解应有一个度量好坏的依据,它用一函数表示,叫做适应度函数。
【3】确定进化参数群体规模 M 、交叉概率 p c 、变异概率 p m 、进化终止条件。
为便于计算,一般来说,每一代群体的个体数目都取相等。群体规模越大、越容
易找到最优解,但由于受到计算机的运算能力的限制,群体规模越大,计算所需要的时
间也相应的增加。进化终止条件指的是当进化到什么时候结束,它可以设定到某一代进
化结束,也可以根据找出近似最优是否满足精度要求来确定。表 2 列出了生物遗传概念
在遗传算法中的对应关系。

(2)例:已知100个目标的经纬度,我方有一个基地,经度和纬度为(70,40)。假设我方飞机的速度为 1000 公里/小时。 我方派一架飞机从基地出发,侦察完所有目标,再返回原基地。在每一目标的侦察时间不计,求该架飞机所花费的时间(假设我方飞机巡航时间可以充分长)。

tic 
clc,clear 
load sj.txt %加载100个目标的数据
x=sj(:,1:2:8); x=x(:); 
y=sj(:,2:2:8); y=y(:); 
sj=[x y]; d1=[70,40]; 
sj0=[d1;sj;d1]; sj=sj0*pi/180; 
d=zeros(102); %距离矩阵d 
for i=1:101 
 for j=i+1:102 
 temp=cos(sj(i,1)-sj(j,1))*cos(sj(i,2))*cos(sj(j,2))+sin(sj(i,2))*sin(sj(j,2)); 
 d(i,j)=6370*acos(temp); 
 end 
end 
d=d+d';L=102;w=50;dai=100; 
%通过改良圈算法选取优良父代A 
for k=1:w 
 c=randperm(100); 
 c1=[1,c+1,102]; 
 flag=1; 
 while flag>0 
 flag=0; 
 for m=1:L-3 
 for n=m+2:L-1 
 if d(c1(m),c1(n))+d(c1(m+1),c1(n+1))<d(c1(m),c1(m+1))+d(c1(n),c1(n+1)) 
 flag=1; 
 c1(m+1:n)=c1(n:-1:m+1); 
 end 
 end 
 end 
 end 
 J(k,c1)=1:102; 
end 
J=J/102; 
J(:,1)=0;J(:,102)=1; 
rand('state',sum(clock)); 
%遗传算法实现过程
A=J; 
for k=1:dai %产生0~1间随机数列进行编码
 B=A; 
 c=randperm(w); 
%交配产生子代B 
 for i=1:2:w 
 F=2+floor(100*rand(1)); 
 temp=B(c(i),F:102); 
 B(c(i),F:102)=B(c(i+1),F:102); 
 B(c(i+1),F:102)=temp; 
 end 
%变异产生子代C 
by=find(rand(1,w)<0.1); 
if length(by)==0 
 by=floor(w*rand(1))+1; 
end 
C=A(by,:); 
L3=length(by); 
for j=1:L3 
 bw=2+floor(100*rand(1,3)); 
 bw=sort(bw); 
 C(j,:)=C(j,[1:bw(1)-1,bw(2)+1:bw(3),bw(1):bw(2),bw(3)+1:102]); 
end 
 G=[A;B;C]; 
 TL=size(G,1); 
 %在父代和子代中选择优良品种作为新的父代
 [dd,IX]=sort(G,2);temp(1:TL)=0; 
 for j=1:TL 
 for i=1:101 
 temp(j)=temp(j)+d(IX(j,i),IX(j,i+1)); 
 end 
 end 
 [DZ,IZ]=sort(temp); 
 A=G(IZ(1:w),:); 
end 
path=IX(IZ(1),:) 
long=DZ(1) 
toc 
xx=sj0(path,1);yy=sj0(path,2); 
plot(xx,yy,'-o')

Matlab:遗传算法,模拟退火算法练习题,数学建模,matlab,数据结构,开发语言,算法,学习

2、模拟退火算法

(1)模拟退火算法得益于材料的统计力学的研究成果。统计力学表明材料中粒子的不 同结构对应于粒子的不同能量水平。在高温条件下,粒子的能量较高,可以自由运动和 重新排列。在低温条件下,粒子能量较低。如果从高温开始,非常缓慢地降温(这个过 程被称为退火),粒子就可以在每个温度下达到热平衡。当系统完全被冷却时,最终形成处于低能状态的晶体。

(2)例:已知100个目标的经纬度,我方有一个基地,经度和纬度为(70,40)。假设我方飞机的速度为 1000 公里/小时。 我方派一架飞机从基地出发,侦察完所有目标,再返回原基地。在每一目标的侦察时间不计,求该架飞机所花费的时间(假设我方飞机巡航时间可以充分长)。

tic 
clc,clear 
load sj.txt %加载100个目标的数据
x=sj(:,1:2:8);
x=x(:); 
y=sj(:,2:2:8);
y=y(:); 
sj=[x y]; 
d1=[70,40]; 
sj=[d1;sj;d1]; 
sj=sj*pi/180; 
d=zeros(102); %距离矩阵d 
for i=1:101 
 for j=i+1:102 
 temp=cos(sj(i,1)-sj(j,1))*cos(sj(i,2))*cos(sj(j,2))+sin(sj(i,2))*sin(sj(j,2)); 
 d(i,j)=6370*acos(temp); 
 end 
end 
d=d+d'; 
S0=[];Sum=inf; 
rand('state',sum(clock)); 
for j=1:1000 
 S=[1 1+randperm(100),102]; 
 temp=0; 
 for i=1:101 
 temp=temp+d(S(i),S(i+1)); 
 end 
 if temp<Sum 
 S0=S;Sum=temp; 
 end 
end 
e=0.1^30;L=20000;at=0.999;T=1; 
%退火过程
for k=1:L 
 %产生新解
c=2+floor(100*rand(1,2)); 
c=sort(c); 
c1=c(1);
c2=c(2); 
 %计算代价函数值
 df=d(S0(c1-1),S0(c2))+d(S0(c1),S0(c2+1))-d(S0(c1-1),S0(c1))-d(S0(c2),S0(c2+1)); 
 %接受准则
 if df<0 
 S0=[S0(1:c1-1),S0(c2:-1:c1),S0(c2+1:102)]; 
 Sum=Sum+df; 
 elseif exp(-df/T)>rand(1) 
 S0=[S0(1:c1-1),S0(c2:-1:c1),S0(c2+1:102)]; 
 Sum=Sum+df; 
 end 
 T=T*at; 
 if T<e 
 break; 
 end 
end 
 %输出巡航路径及路径长度
S0,Sum
toc
xx=sj(S0,1);
yy=sj(S0,2); 
plot(xx,yy,'-*')

Matlab:遗传算法,模拟退火算法练习题,数学建模,matlab,数据结构,开发语言,算法,学习文章来源地址https://www.toymoban.com/news/detail-811498.html

到了这里,关于Matlab:遗传算法,模拟退火算法练习题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Matlab数学建模算法之模拟退火算法(SA)详解

    🔗 运行环境:Matlab 🚩 撰写作者:左手の明天 🥇 精选专栏:《python》 🔥  推荐专栏:《算法研究》 🔐####  防伪水印——左手の明天 #### 🔐 💗 大家好🤗🤗🤗,我是 左手の明天 !好久不见💗 💗今天分享 matlab数学建模算法 —— 模拟退火算法 💗

    2024年01月16日
    浏览(43)
  • 数学建模-退火算法和遗传算法

    退火算法和遗传算法 一.退火算法 退火算法Matlab程序如下: [W]=load(\\\'D:100个目标经度纬度.txt\\\'); 二、遗传算法 [E]=xlsread(\\\'D:100个目标经度纬度\\\');  % 加载敌方 100 个目标的数据, 数据按照表格中的位置保存在纯文本文件 sj.txt 中 x=[E(:,1)]; y=[E(:,2)]; e =[x y]; d1=[70,40]; e =[d1;  e ;d1];

    2024年02月20日
    浏览(55)
  • 模拟退火算法,遗传算法,禁忌搜索算法的特点

    (1)借助物理学中退火的思想,从某一高温出发,随着温度参数不断下降, 在解空间中寻找目标函数的全局最优解,温度影响着当新解不优于当前解时, 接受新解的概率,温度越高,接受新解的概率越高。 (2)基于概率的算法 (3)需要设置如何产生新解 当产生的新解不

    2024年02月12日
    浏览(54)
  • 蚁群算法、模拟退火算法、遗传算法优缺点

    1.可以突破爬山算法的局限性,获得全局最优解(以一 定的概率接受较差解,从而跳出局部最;优解)。 2.初始解与最终解都是随机选取的,它们毫无关联,因此具有很好的鲁棒性,即抵御外界不稳定因素的能力。 3.其最优解常常受迭代次数k的影响,若k值越大,则搜索时间越长

    2024年02月01日
    浏览(40)
  • 国际旅游网络的大数据分析(数学建模练习题)

    伴随着大数据时代的到来,数据分析已经深入到现代社会生活中的各个方面。 无论是国家政府部门、企事业单位还是个人,数据分析工作都是进行决策之前的 重要环节。 山东省应用统计学会是在省民政厅注册的学术类社会组织,于 1989 年成立。 学会是全省目前从事统计调查

    2024年02月11日
    浏览(51)
  • 【遗传模拟退火算法的Java实现及其应用】

    遗传模拟退火算法是一种基于遗传算法和模拟退火算法的启发式优化算法。它的基本思路是在解决优化问题时模拟生物进化的过程,利用遗传算法的遗传操作和模拟退火算法的搜索策略。 初始化种群 :初始化种群包含解和目标函数值。 适应度评估 :使用目标函数对种群中的

    2024年02月08日
    浏览(62)
  • 蓝桥杯练习题-穷举模拟

    本文主要是【穷举模拟】——蓝桥杯练习题-穷举模拟的文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是听风与他🥇 ☁️博客首页:CSDN主页听风与他 🌄每日一句:狠狠沉淀,顶峰相见 题目描述:已知A、B、C、D中有一个凶手,对他们审讯,已

    2024年01月17日
    浏览(43)
  • 【人工智能】—局部搜索算法、爬山法、模拟退火、局部剪枝、遗传算法

    在某些规模太大的问题状态空间内,A*往往不够用 问题空间太大了 无法访问 f 小于最优的所有状态 通常,甚至无法储存整个边缘队列 解决方案 设计选择更好的启发式函数 Greedy hill-climbing (fringe size = 1) Beam search (limited fringe size) 瓶颈:内存不足,无法存储整个边缘队列 爬山搜

    2023年04月22日
    浏览(47)
  • matlab 习题练习

    1.编写函数实现以下功能:硅谷公司员工的工资计算方法如下: 2.(1)工作时数超过120小时者,超过部分加发15%; 3.(2)工作时数低于60小时者,扣发700元; (3)其余按每小时84元计发。 按输入的工号和该号员工的工时数,计算应发工资。 2.编写函数实现以下功能:产生20个两位随

    2024年02月11日
    浏览(36)
  • 数学建模学习(9):模拟退火算法

    模拟退火算法(Simulated Annealing, SA)的思想借 鉴于固体的退火原理,当固体的温度很高的时候,内能比 较大,固体的内部粒子处于快速无序运动,当温度慢慢降 低的过程中,固体的内能减小,粒子的慢慢趋于有序,最 终,当固体处于常温时,内能达到最小,此时,粒子最为 稳

    2024年02月14日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包