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')

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,'-*')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/603009.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

神经网络中的重要概念

神经网络是一种模拟生物神经网络结构和功能的计算模型&#xff0c;由许多节点&#xff08;或称为神经元&#xff09;和它们之间的连接构成。以下是一些神经网络中的重要概念&#xff0c;并对它们进行细致的讲解&#xff1a; 神经元&#xff08;Neuron&#xff09;&#xff1a;神…

捕捉“五彩斑斓的黑”:锗基短波红外相机的多种成像应用

红外处于人眼可观察范围以外&#xff0c;为我们了解未知领域提供了新的途径。红外又可以根据波段范围&#xff0c;分为短波红外、中波红外与长波红外。较短的SWIR波长——大约900nm-1700nm——与可见光范围内的光子表现相似。虽然在SWIR中目标的光谱含量不同&#xff0c;但所产…

Debezium发布历史51

原文地址&#xff1a; https://debezium.io/blog/2019/03/14/debezium-meets-quarkus/ 欢迎关注留言&#xff0c;我是收集整理小能手&#xff0c;工具翻译&#xff0c;仅供参考&#xff0c;笔芯笔芯. Debezium 遇见 Quarkus 三月 14, 2019 作者&#xff1a; Jiri Pechanec qu…

瓢虫目标检测数据集VOC格式400张

瓢虫&#xff0c;一种小巧玲珑、色彩鲜艳的昆虫&#xff0c;因其独特的形态和生态习性而受到广泛欢迎。 瓢虫的体型小巧&#xff0c;一般为圆球形&#xff0c;体色鲜艳&#xff0c;有红、黄、黑等多种颜色。它们通常有一个坚硬的外壳&#xff0c;可以保护自己不受天敌的侵害。…

Spark回归分析与特征工程

回归分析是统计学和机器学习中的一个重要分支&#xff0c;用于建立因变量与自变量之间的关系模型。在大数据领域&#xff0c;Apache Spark为回归分析提供了强大的工具和库&#xff0c;以处理大规模数据集。本文将深入探讨如何使用Spark进行回归分析以及如何进行特征工程&#x…

AtomicReference自旋加CAS保证对象引用原子性

AtomicReference类提供了对象引用的非阻塞原子性读写操作&#xff0c;并且提供了其他一些高级的用法&#xff0c;对象的引用其实是一个4字节的数字&#xff0c;代表着在JVM堆内存中的引用地址&#xff0c;对一个4字节数字的读取操作和写入操作本身就是原子性的 package Atomic…

【微服务合集】

文章目录 MyBatisPlusMyBatisPlus 注解WrapperMybatisPlus批量插入(saveBatch)MyBatisPlus 分页插件 DockerDockerfileDocker网络Docker部署项目 黑马微服务文档尚硅谷SpringBoot2尚硅谷SpringBoot3 MyBatisPlus MyBatisPlus 注解 TableName TableId TableField MyBatisPlu…

冬天夺去的清爽,可爱,春天都会还给你

这款外套上身可太时尚好看了 春天日常穿着或者出行游玩 应对早晚温差&#xff0c;兼具时尚和温度两不误 干净率性闲适的洒脱范整件衣服干净不失细节 下摆有橡筋收紧更加保暖了工艺方面也毫不逊色&#xff0c;防水拉链 四合扣、猪鼻扣一应俱全简直就是一件实用与时尚并存的…

Embedded-Project项目介绍

Embedded-Project项目介绍 Server后端项目后端启动连接数据库启动时可能遇到的问题架构介绍 web前端项目前端启动启动时可能遇到的问题架构介绍 前后端分离开发流程 项目地址&#xff1a; https://github.com/Catxiaobai/Embedded-Project Server后端项目 系统后端项目&#…

字符编码类型有哪些mysql中编码类型的定义

字符编码类型有很多种&#xff0c;以下是一些常见的字符编码类型&#xff1a; ASCII码&#xff1a;这是最常用的字符编码&#xff0c;它用7位二进制数表示一个字符&#xff0c;总共可以表示128种不同的字符。 ISO/IEC 8859-1码&#xff1a;这是一种8位字符编码&#xff0c;也被…

Unity中URP下的线性雾

文章目录 前言一、线性雾 雾效因子二、MixFog1、ComputeFogIntensity 雾效强度计算2、雾效颜色混合 lerp(fogColor, fragColor, fogIntensity); 前言 在之前的文章中&#xff0c;我们实现了URP下的雾效支持。 Unity中URP下的添加雾效支持 在上一篇文章中,我们解析了 URP 下统…

【读书】《白帽子讲web安全》个人笔记Ⅱ-1

目录 第二篇 客户端脚本安全 第2章 浏览器安全 2.1同源策略 2.2浏览器沙箱 2.3恶意网址拦截 2.4高速发展的浏览器安全 第二篇 客户端脚本安全 第2章 浏览器安全 近年来随着互联网的发展&#xff0c;人们发现浏览器才是互联网最大的入口&#xff0c;绝大多数用户使用互联…

[Flutter]WebPlatform上运行遇到的问题总结

[Flutter]WebPlatform上运行遇到的问题总结 目录 [Flutter]WebPlatform上运行遇到的问题总结 写在开头 正文 Q1、file_version_info.dart Q2、不兼容判断 Q3、跨域问题 Q4、flutter clean &#xff0c;无法删除build文件夹 其他 写在结尾 写在开头 Flutter项目已能在…

nvidia-smi 完整查看显卡型号

当我们在使用nvidia-smi查看显卡的型号的时候&#xff0c;会发现出现如下问题&#xff1a; 可以看到我们此时无法看到显卡的准确型号&#xff0c;只能看到NVIDIA GeForce ... 解决方法&#xff1a;使用如下命令即可完整显示显卡型号 nvidia-smi -L 如下所示&#xff1a;

前端 富文本编辑器原理

富文本编辑器是一种用于编辑和展示富文本内容&#xff08;包括文字、图片、视频等&#xff09;的工具。它通常提供了类似于Microsoft Word的功能&#xff0c;使用户可以对文本进行格式化、插入图片和链接、调整字体样式等操作。在前端开发中&#xff0c;我们可以使用JavaScript…

线性代数 --- 为什么LU分解中L矩阵的行列式一定等于正负1?

以下是关于下三角矩阵L的行列式一定等于-1的一些说明 笔者的一些话(写在最前面)&#xff1a; 这是一篇小文&#xff0c;是我写的关于求解矩阵行列式的一篇文章中的一部分。之所以把这一段专门提溜出来&#xff0c;是因为这一段相对于原文是可以完全独立的&#xff0c;也是因为我…

前端 js/浏览器/node /js 引擎的事件循环机制,宏任务、微任务

首先我们知道js是单线程的&#xff0c;所以有了事件循环机制来处理异步任务&#xff0c; 我们一般说的事件循环机制指 js 引擎的事件循环机制&#xff0c;js是一个编程语言&#xff0c;哪来的事件循环&#xff0c;前端常见的 js 引擎有浏览器和node。 所以在面试中问道【你知…

代码随想录训练营第五十九天| ● 503.下一个更大元素II ● 42. 接雨水

503.下一个更大元素II 这道题和 739. 每日温度 几乎如出一辙&#xff0c;可以自己尝试做一做 代码随想录 这道题是循环数组&#xff0c;因此在遍历时要遍历nums.size()*2次&#xff0c;然后再读取nums中的元素时要使用i % nums.size()来得到对应的下标。 vector<int> ne…

吉他打谱软件Guitar Pro8苹果Mac电脑简体中文特别版

Guitar Pro 8 Mac是一款吉他编曲学习软件&#xff0c;用于吉他、贝和其他弦乐器的制谱和演奏&#xff0c;这是一个多轨编辑器&#xff0c;具有集成的 MIDI 编辑器、合唱绘图仪、吉他、节拍器和其他音乐家工具。它使您能够编辑吉他、贝司和尤克里里、乐谱、指法谱&#xff0c;并…

第11章 GUI Page462~476 步骤二十三,二十四,二十五 Undo/Redo ③实现“Undo/Redo”菜单项

工程六 添加“编辑”菜单和子菜单 菜单ID分别为 idMenuEditUndo 和 idMenuEditRedo 热键&#xff08;快捷键&#xff09;分别为CtrlZ 和 CtrlShiftZ 变量名分别为 MenuItemEditUndo 和 MenuItemEditRedo 分别添加事件 ActionLink类增加成员函数 运行效果&#xff1a;“添加…