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)
上一篇 2025年11月4日 下午2:43
下一篇 2025年11月4日 下午3:15


相关推荐

  • echarts 旭日图sunburst[通俗易懂]

    echarts 旭日图sunburst[通俗易懂]1、配置数据 第一层为最内层的环,第二层为第一层对应的children所构成的环 [ { value:n, 数值,根据同层所有数值的占比,构成百分比圆环,不写为内部第一层children的数值和 若设置的值大于内部第一层的数值,即表示有未显示的内容,具体表示图会压缩同层其他环占比 name:’显示内容’, children:[ { value:n, name:’显示内容’ } ] }, { va

    2026年4月13日
    4
  • 科大讯飞智能办公本操作,科大讯飞智能办公本操作指南

    科大讯飞智能办公本操作,科大讯飞智能办公本操作指南

    2026年3月14日
    2
  • Springboot自动装配原理_自动装配原理

    Springboot自动装配原理_自动装配原理springboot自动装配原理详解1)传统ssm整合redis的时候需要在xml的配置文件中进行大量的配置Bean我们在这里使用springboot来代替ssm的整合,只是通过xml的形式来整合redis第一步:加入配置<dependency><groupId>org.springframework.data</grou…

    2022年8月22日
    8
  • 个人对json的一些简单理解?

    个人对json的一些简单理解?json是什么?没有.json结尾的这种文件,json(JavaScriptObjectNotation)是一种简单的数据交换格式,在此之前我也不知道这个东西其实没有想象的那么抽象,看看后面的例子会更清晰json中的数据结构json中只有两种数据基本结构,一种是MAP,或者叫对象,另一种是Array1.Map类似与java中的Map,这里是以{开始,以}结束,内部object内容是键…

    2022年6月8日
    33
  • SpringCloud Eurake客户端操作相关笔记

    SpringCloud Eurake客户端操作相关笔记2019独角兽企业重金招聘Python工程师标准>>>…

    2022年6月2日
    32
  • pycharm使用小技巧_pycharm基本使用方法

    pycharm使用小技巧_pycharm基本使用方法Pycharm作为Python开发最常用的IDE之一,不仅兼容性好,而且功能也相当丰富,比如调试、语法高亮、智能提示等等功能,它还支持web开发框架比如Django等,当你熟悉了它之后,开发效率是相当之高的。但对于新手来说,Pycharm功能丰富的同时也是一把双刃剑,有的小伙伴刚上手之后看到一堆的英文界面难免会懵逼,哈哈哈,没有关系,今天博主就来教大家一些Pycharm最常用的技巧,以及一些pycharm常用的快捷键,让你快速上手Python开发中最常用的IDEPycharm,跟上老司机的车速!一

    2022年8月28日
    3

发表回复

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

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