matlab遗传算法实例求最短路径_遗传算法经典实例

matlab遗传算法实例求最短路径_遗传算法经典实例Matlab遗传算法实例

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

Matlab遗传算法实例

  • 确定目标函数
  • 初始化种群
  • 2进制(染色体)与10进制(数值)转换
  • 选择(轮盘赌法)
  • 交叉(交叉原则)
  • 变异(变异概率)
  • 选择…
clear;
clc;
%popsize=input('输入种群大小:\n');
%lengh=input('请输入染色体长度:\n');
popsize=100;
lengh=10;
a=-1;
b=2;
%y=x*sin(10*pi*x)+1.0
%初始种群
pop=round(rand(popsize,lengh));%行:种群大小,列:染色体长度

%二进制转换十进制
[px,py]=size(pop);
for i=1:py
    pop1(:,i)=2^(py-i).*pop(:,i);
end
pop2=sum(pop1,2);

%对应的实数  目标值
vpop=pop2*((b-a)/(2^(lengh)-1))-1.0;
x=vpop;
y=sin(10*pi*x).*x+1;
% m=1;
% m=m+1;
% S=zeros(100,1);
% S(m,1)=max(y);
%选择  适者生存
for i=1:px
    cpoint=round(rand*(px-10));
    A=y(cpoint:cpoint+9,:);
    [Y,U]=max(A);
    j=U+cpoint-1;
    newpop(i,:)=pop(j,:);
end
pop=newpop;

%交叉
newpop=ones(size(pop));
pc=0.6;%交叉概率
for i=1:2:px-1
    if(rand<pc)
        cpoint=round(rand*py);
        newpop(i,:)=[pop(i,1:cpoint),pop(i+1,cpoint+1:py)];
        newpop(i+1,:)=[pop(i+1,1:cpoint),pop(i,cpoint+1:py)];
    else
        newpop(i,:)=pop(i,:);
        newpop(i+1,:)=pop(i+1,:);
    end   
end

%变异
%newpop=ones(size(pop));
pb=0.02;
%newpop=pop;
for i=1:px
    if (rand<pb)
        cpoint=round(rand*py);
        if newpop(i,cpoint)==0
            newpop(i,cpoint)=1;
        else
            newpop(i,cpoint)=0;
        end 
    end
end
pop=newpop;    
        

%实验报告
%s生产种群
%二进制转十进制
%交叉   实验题目  实验内容   实验代码   实验结果    
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/194509.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • volatile禁止指令重排的原理_警告禁止指令提示颜色顺序

    volatile禁止指令重排的原理_警告禁止指令提示颜色顺序Volatile禁止指令重排什么是指令重排?你写的程序,计算机并不是按照你写的那样去执行的。源代码->编译器优化的重排->指令并行可能会重排->内存系统可能会重排->执行处理器在进行指令重排的时候,考虑,数据之间的依赖性!指令重排不会造成影响的例子intx=1;//1inty=2;//2x=x+5;//3y=x*x;//4我们所期望的:1234执行的时候可能会变成21341324但是不可能是4321

    2022年10月17日
    0
  • vue + springboot_SpringBootTest

    vue + springboot_SpringBootTestVue+SpringBoot介绍前言介绍  博主简单的学习完SpringBoot的技术之后,发现好像thymeleaf+SpringBoot的开发方式现在使用的并不多,现在大部分在使用的是前后端分离的开发方式,其中的一种是Vue+SpringBoot的开发方式,所以特地去BiliBili网站上去找了相关的视频,但是相关的视频也不是很多,找了一个4个小时的视频,简单的了解和运用。BiliBil…

    2022年9月22日
    0
  • 字符串匹配——枚举法[通俗易懂]

    字符串匹配——枚举法[通俗易懂]字符串匹配——枚举法给定主串T和模式串P,返回P在T中首次出现的位置,如果P不存在于T中,返回-1。这样的问题就是字符串匹配问题,这里先给出枚举法的思想。设主串T的长度为n,模式串P的长度为m。主串从0到n-m,每次选取连续的m个字符,跟模式串P的m个字符进行一一比较。伪代码BruteForce(T,P)01fors<-0ton-m02j<-003//check

    2022年8月21日
    5
  • Windows Azure Platform 系列文章,第二章 使用Azure PowerShell 修改Windows服务器登录帐号密码…

    Windows Azure Platform 系列文章,第二章 使用Azure PowerShell 修改Windows服务器登录帐号密码…

    2021年9月3日
    49
  • pycharm2021.3.2激活码【2021.8最新】

    (pycharm2021.3.2激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月26日
    314
  • 关于dos启动的一些知识

    关于dos启动的一些知识       最近装一个linux版本,就要用到dos,找来找去,忙乎了半天,又是缺文件,又是改配置。发现,一直用dos,但是还没有好好研究它。要研究dos,得从它的启动信息开始。。。。   一、DOS启动过程:开机->IO.SYS->MSDOS.SYS->CONFIG.SYS->COMMAND.COM->AUTOEXEC.BAT一般来说需要修改的是MSDOS.SYS、C

    2022年7月26日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号