数学建模-退火算法和遗传算法

news2024/11/25 18:29:01

退火算法和遗传算法

一.退火算法

退火算法Matlab程序如下:

[W]=xlsread('D:100个目标经度纬度');

>> x=[W(:,1)];

>> y=[W(:,2)];

>> w=[x y];;d1=[70, 40];

>> w=[d1;w;d1]

w=w*pi/180;%角度化成弧度

d=zeros(102);%距离矩阵初始化

for i=1:101

   for j=i+1:102

d(i,j)=6370*acos(w(i,1)-w(j,1))*cos(w(i,2))*cos(w(j,2))+sin(w(i,2))*sin(w(j,2));

   end

end

d=d+d';

path=[];long=inf;%巡航路径及长度初始化

rand('state',sum(clock));%初始化随机数发生器

for j=1:1000

   path0=[1 1+randperm(100),102];temp=0;

   for i=1:101

      temp=temp+d(path0(i),path0(i+1));

   end

   if temp<long

     path=path0;long=temp;

   end

end

e=0.1^30;L=2000;at=0.999;T=1;

for k=1:L %退火过程

c=2+floor(100*rand(1,2));% floor(100*rand(1,2))表示生成向下取整的0~991行2列矩阵

c=sort(c);c1=c(1);c2=c(2);% c=sort(c)表示对矩阵c进行升序排列

df=d(path(c1-1),path(c2))+ d(path(c1),path(c2+1))-d(path(c1-1),path(c1))- d(path(c2),path(c2+1));

%计算代价函数值的增量

   if df<0;%接受准则

   path=[path(1:c1-1),path(c2:-1:c1),path(c2+1:102)];long=long+df;

   else if exp(-df/T)>=rand

   path=[path(1:c1-1),path(c2:-1:c1),path(c2+1:102)];long=long+df;

   end

   T=T*at;

if T<e

   Break;

end

end

>>path;

>>long;

>>xx=w(path,1);

>>yy=w(path,2);

>> plot(xx,yy,'-o')

[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]; e= e*pi/180;
d=zeros(102); %距离矩阵 d
for i=1:101
    for j=i+1:102
       temp=cos(e(i,1)-e(j,1))*cos(e(i,2))*cos(e(j,2))+sin(e(i,2))*sin(e(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 %产生 01 间随机数列进行编码
    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);
xx=e(path,1);yy=e(path,2);

path

long

plot(xx,yy,'-o')

三.改进的遗传算法

clc,clear
[E]=xlsread('D:100个目标经度纬度');

>> x=[E(:,1)];

>> y=[E(:,2)];

>> e=[x y];;d1=[70, 40];

>> e=[d1;e;d1]

e=e*pi/180;%角度化成弧度

d=zeros(102); %距离矩阵 d
for i=1:101
   for j=i+1:102
    temp=cos(e(i,1)-e(j,1))*cos(e(i,2))*cos(e(j,2))+sin(e(i,2))*sin(e(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;
   %交配产生子代 B
   for i=1:2:w
      ch0=rand;ch(1)=4*ch0*(1-ch0);
      for j=2:50
         ch(j)=4*ch(j-1)*(1-ch(j-1));
      end
      ch=2+floor(100*ch);
      temp=B(i,ch);
      B(i,ch)=B(i+1,ch);
      B(i+1,ch)=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)

xx=e(path,1);yy=e(path,2);

path

long

plot(xx,yy,'-o')

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

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

相关文章

新手不会Git也能玩Github吗?

新手不会Git也能玩Github吗&#xff1f; 前言使用Github的准备步骤使用一种访问外网资源的方法&#xff08;这一步才是新手最容易&#xff09;注册账号 创建一个自己的仓库创建完仓库后的界面 搜索你想要的代码类型以搜索坦克大战为例以下载烟花代码为例 总结 前言 说到Github&…

kafka入门学习

kafka官网&#xff1a; Apache Kafka Index of /34 kafka学习视频&#xff1a; 05_尚硅谷_Kafka_概述_基础架构_哔哩哔哩_bilibili 学习资料&#xff1a; &#xff08;1&#xff09;【万字长文】浅谈Apache Kafka --- 入门须知 https://km.woa.com/articles/show/516284…

yolov8数据标注、模型训练到模型部署全过程

文章目录 一、数据标注&#xff08;x-anylabeling&#xff09;1. 安装方式1.1 直接通过Releases安装1.2 clone源码后采用终端运行 2. 如何使用 二、模型训练三、模型部署3.1 onnx转engine3.2 c调用engine模型3.2.1 main_tensorRT.cpp3.2.2 segmentationModel.cpp 一、数据标注&…

谷粒商城【成神路】-【3】——三级分类

目录 &#x1f37f;1.查询三级分类 &#x1f9c2;2.前端页面搭建 &#x1f35f;3.添加网关 &#x1f373;4.解决跨域 &#x1f9c7;5.显示分类 &#x1f95e;6.显示复选框 1.查询三级分类 1.controller 直接调用service层的接口 RequestMapping("/list/tree&qu…

02.PostgreSQL运算符

1. 算术运算符 算术运算符 描述 示例 + 加法运算符 SELECT A+B - 减法运算符 SELECT A-B * 乘法运算符 SELECT A*B / 除法运算符 SELECT A/B % 取余运算符 SELECT A%B 1.1 加法与减法操作符 SELECT 100,100+11,100-11,100+23.0,100-23.0 运算结果 由此得出结论: 一个整数加上…

C语言·贪吃蛇游戏(下)

上节我们将要完成贪吃蛇游戏所需的前置知识都学完了&#xff0c;那么这节我们就开始动手写代码了 1. 程序规划 首先我们应该规划好我们的代码文件&#xff0c;设置3个文件&#xff1a;snack.h 用来声明游戏中实现各种功能的函数&#xff0c;snack.c 用来实现函数&#xff0c;t…

javaScript的序列化与反序列化

render函数的基本实现 javaScript的序列化与反序列化 一&#xff0c;js中的序列化二&#xff0c;序列化三&#xff0c;反序列化四&#xff0c;总结 一&#xff0c;js中的序列化 js中序列化就是对象转换成json格式的字符串&#xff0c;使用JSON对象的stringify方法&#xff0c;…

R-YOLO

Abstract 提出了一个框架&#xff0c;名为R-YOLO&#xff0c;不需要在恶劣天气下进行注释。考虑到正常天气图像和不利天气图像之间的分布差距&#xff0c;我们的框架由图像翻译网络&#xff08;QTNet&#xff09;和特征校准网络&#xff08;FCNet&#xff09;组成&#xff0c;…

vue3-深入组件-依赖注入

Prop 逐级透传问题 通常情况下&#xff0c;当我们需要从父组件向子组件传递数据时&#xff0c;会使用 props。 如果是多层级嵌套的组件&#xff0c;如何从一级传递到 3 级甚至更远呢。 若使用 props 则必须将其沿着组件链逐级传递下去&#xff0c;这会非常麻烦&#xff0c;所…

canvas路径剪裁clip(图文示例)

查看专栏目录 canvas实例应用100专栏&#xff0c;提供canvas的基础知识&#xff0c;高级动画&#xff0c;相关应用扩展等信息。canvas作为html的一部分&#xff0c;是图像图标地图可视化的一个重要的基础&#xff0c;学好了canvas&#xff0c;在其他的一些应用上将会起到非常重…

jupyter notebook显示的扩展很少,只有四五个--解决方案

如下&#xff1a;安装好只有四五个扩展 可以先删除 conda remove jupyter_nbextensions_configurator 然后使用pip安装 pip install jupyter_contrib_nbextensions jupyter contrib nbextensions install --user pip install jupyter_nbextensions_configurator jupyter nbex…

MySQL-运维-主从复制

一、概述 二、原理 三、搭建 1、服务器准备 2、主库配置 &#xff08;1&#xff09;、修改配置文件/etc/my.cnf &#xff08;2&#xff09;、重启MySQL服务器 &#xff08;3&#xff09;、登录mysql&#xff0c;创建远程链接的账号&#xff0c;并授予主从复制权限 &#xff0…

Kafka-服务端-GroupCoordinator

在每一个Broker上都会实例化一个GroupCoordinator对象&#xff0c;Kafka按照Consumer Group的名称将其分配给对应的GroupCoordinator进行管理&#xff1b; 每个GroupCoordinator只负责管理Consumer Group的一个子集&#xff0c;而非集群中全部的Consumer Group。 请注意与Kaf…

华媒舍:10个与汽车媒体国外传播有关的方向

随着近年来汽车销售市场的不断增加与发展&#xff0c;汽车媒体国外传播已经成为汽车行业里至关重要的一环。下面我们就详细介绍10个与汽车媒体国外传播有关的发展方向&#xff0c;并讨论这些趋势对全世界汽车行业的影响。 1.智能化媒体的兴起伴随着互联网的发展与发展&#xff…

2024年第4届IEEE软件工程与人工智能国际会议(SEAI 2024)

2024年第4届IEEE软件工程与人工智能国际会议(SEAI 2024)将于2024年6月21-23日在中国厦门举办。 SEAI旨在为软件工程与人工智能领域搭建高端前沿的交流平台&#xff0c;推动产业发展。本次会议将汇聚海内外的知名专家、学者和产业界优秀人才&#xff0c;共同围绕国际热点话题、核…

地理坐标系、空间坐标系、epsg查询网站

坐标系可用范围和详细信息的查询网站 简介 epsg.ruiduobao.com是一个可以查询gdal中所有坐标系信息的网站&#xff0c;可查询到坐标系的基准面、椭球体、中央子午线等相关信息&#xff0c;并对每个坐标系的可用范围在地图中进行了显示。详细信息可以看操作视频&#xff1a; e…

bank conflict

前置知识&#xff1a; shared memory 被分成 32 个 bank一个 warp 32 个线程每个 bank 4 byte如果同一 warp 中不同线程访问同一 bank 的不同地址则发生 bank conflict 请注意需要是一个 warp 中的不同线程&#xff01;如果一个线程访问 shared memory 的两个元素&#xff0c;…

【ArcGIS Pro】从0开始

1.导入excel&#xff0c;需要安装驱动程序 安装用于 Microsoft Excel 文件的驱动程序 https://pro.arcgis.com/zh-cn/pro-app/latest/help/data/excel/prepare-to-work-with-excel-in-arcgis-pro.htm 2.修改投影坐标系 点到地图图标上&#xff0c;右键才能设置坐标系。 3.…

MSVC++远程调试

1. 介绍 MSVC的调试功能非常强大&#xff0c;可以下断点&#xff0c;单步调试&#xff0c;查看堆栈变量信息等。实际用于生产的电脑环境复杂&#xff0c;更容易发生Bug。生产电脑&#xff0c;由于各种原因有些可能无法安装MSVC用来现场调试。基于打印日志&#xff0c;查看日志…

Elasticsearch:将文档级安全性 (DLS) 添加到你的内部知识搜索

作者&#xff1a;来自 Elastic Sean Story 你的企业很可能淹没在内部数据中。 你拥有问题跟踪、笔记记录、会议记录、维基页面、视频录制、聊天以及即时消息和私信。 并且不要忘记电子邮件&#xff01; 难怪如此多的企业都在尝试创造工作场所搜索体验 - 为员工提供集中、一站…