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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 硬盘恢复分区_windows恢复分区

    硬盘恢复分区_windows恢复分区配置RedFlagLinux4.0分区(转)  对很多用户来讲,安装Linux系统最麻烦的就是创建Linux分区了!在下文中,笔者将告诉安装程序要在哪里安装系统,即为将要安装RedFlagLinuxDes…

    2022年8月22日
    5
  • oracle11g下载地址_如何安装oracle10g数据库

    oracle11g下载地址_如何安装oracle10g数据库OracleDatabase10gRelease2(10.2.0.1.0)Enterprise/StandardEditionforMicrosoftWindows(32-bit)http://download.oracle.com/otn/nt/oracle10g/10201/10201_database_win32.ziphttp://download.ora

    2022年8月30日
    0
  • 像Excel一样使用python进行数据分析

    像Excel一样使用python进行数据分析Excel是数据分析中最常用的工具,本篇文章通过python与excel的功能对比介绍如何使用python通过函数式编程完成excel中的数据处理及分析工作。在Python中pandas库用于数据处理

    2022年7月6日
    15
  • CSDN 夏令营课程 项目分析

    CSDN 夏令营课程 项目分析

    2022年1月14日
    38
  • PTP授时服务器(NTP网络时间服务器)技术方案应用

    PTP授时服务器(NTP网络时间服务器)技术方案应用PTP授时服务器(NTP网络时间服务器)技术方案应用PTP授时服务器(NTP网络时间服务器)技术方案应用摘要:文章介绍了北斗卫星系统授时原理,分析了北斗/GPS双模授时在CDMA无线通信系统中应用的可行性,并给出了北斗/GPS双模授时系统的组成和在CDMA中的两种应用方式。1、概述卫星导航定位与授时系统是现代化大国极为重要的基础设施,卫星导航系统提供的精密授时在一个国家的工业、国防、通信等领域有着广泛和重要的应用。目前的卫星导航系统主要有美国的全球卫星定位系统GPS、俄罗斯的全球卫星导航系统GLO

    2025年5月25日
    1
  • Eclipse使用技巧–代码自动补全功能

    Eclipse使用技巧–代码自动补全功能1、在“触发代码提示”允许的范围之内,空格键和回车键就是快捷键。2、补全代码功能需设置“AutoActivationtriggersforjava”。3、“AutoActivationtriggersforjava”这个选项就是指触发代码提示的的选项,把“.”改成“.abcdefghijklmnopqrstuvwxyz(”的意思,就是指遇到26个字母和“.与(”这些符号就触发代码提示功能了。4、代码提示选项补充完整后,输入关键字即可得到提示功能,得到提示功能后,回车键与空格键就是

    2022年5月31日
    41

发表回复

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

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