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

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

退火算法和遗传算法

一.退火算法

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

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

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

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

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

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

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

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

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

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

退火算法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')文章来源地址https://www.toymoban.com/news/detail-829458.html

三.改进的遗传算法

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

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

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

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

相关文章

  • 数学建模(三):模拟退火算法(SA)

    1、 算法简介 模拟退火算法(simulated annealing,SA)来源于固体退火原理,是一种基于概率的算法。 模拟退火算法(SA)来源于固体退火原理,是一种基于概率的算法。将固体加温至充分高的温度,再让其徐徐冷却,加温时,固体内部粒子随温升变为无序状,内能增大,分子和原

    2023年04月17日
    浏览(46)
  • Matlab数学建模算法之模拟退火算法(SA)详解

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

    2024年01月16日
    浏览(31)
  • 数学建模--退火算法求解最值的Python实现

    目录 1.算法流程简介 2.算法核心代码 3.算法效果展示

    2024年02月09日
    浏览(26)
  • 数学建模之遗传算法

    遗传算法是美国教授Holland于1975年提出的一种基于模仿生物遗传学的优化算法。这种算法很难得到问题的精确答案,但是能够在允许的时间复杂度内得到一个较优的答案。常用来解决一些目前不存在多项式算法的问题,如旅行商问题(TSP问题),背包问题。 我们假设在自然界

    2024年02月08日
    浏览(34)
  • 遗传算法模型--数学建模

    遗传算法是一种模仿自然选择和遗传机制的优化算法,主要用于求解最优化问题。它模拟了生物进化过程中的遗传、交叉和变异过程,通过不断地进化优秀的个体,逐渐搜索到全局最优解。 在开始之前,我们先来了解下遗传算法中的几个概念。 在遗传算法中,我们首先需要

    2024年02月16日
    浏览(30)
  • 数学建模学习(10):遗传算法

    遗传算法简介 • 遗传算法(Genetic Algorithms)是基于生物进化理论的原理发展起来的一种广为 应用的、高效的随机搜索与优化的方法。其主要特点是群体搜索策略和群体中个体之 间的信息交换,搜索不依赖于梯度信息。它是20世纪70年代初期由美国密执根 (Michigan)大学的霍

    2024年02月13日
    浏览(29)
  • 数学建模(二):遗传算法(GA)

    1、 算法简介 计算智能(Computational Intelligence,CI)方法主要包括: 神经网络(Neural Network,NN); 模糊逻辑(Fuzzy Logic,FL); 遗传算法 (Genetic Algorithm,GA); 蚁群优化算法(Ant Colony Optimization,ACO); 粒子群优化算法(Particle Swarm Op); 免疫算法(Immune Algorithm,IA); 分布估计算

    2024年02月02日
    浏览(26)
  • 数学建模——遗传算法步骤及程序详解

    遗传算法是一种基于生物染色体遗传时发生交叉、变异的原理,是一种通过模拟自然进化过程,对解集进行优化更新的算法,属于优化算法的一种。   遗传算法是基于生物染色体遗传时发生的原理,那么就要先了解一下生物学关于遗传的基本原理。假设种群为P(t),下一代种

    2024年02月06日
    浏览(35)
  • 数学建模-动态规划&遗传算法(美赛运用)

    动态规划模型的要素是对问题解决的抽象,其可分为: 阶段。指对问题进行解决的自然划分。例如:在最短线路问题中,每进行走一步的决策就是一个阶段。 状态。指一个阶段开始时的自然状况。例如:在最短线路问题中,每进行走一步后,对所走的点进行标注。 决策。当

    2024年03月13日
    浏览(38)
  • 数学建模|通过模拟退火算法求解供货与选址问题:问题二(python代码实现)

    今天继续用模拟退火算法供货与选址问题的问题二,如果还没看过问题一的可以看我之前的博客 数学建模|通过模拟退火算法求解供应与选址问题:问题一(python代码实现)-CSDN博客 这里还是把题目放上来(题目来自数学建模老哥的视频): 那么我们可以分析一下,第一问和

    2024年01月16日
    浏览(39)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包