遗传算法经典实例matlab_蚁群算法matlab实例

遗传算法经典实例matlab_蚁群算法matlab实例二进制编码为基础%目标函数functiony=fobj(x)ifx<=0y=sin(x);elseifx<=2y=x^2/2;elsey=3-x/2;endend%主程序%清楚窗口内容和变量clearclcpc=0.8;%交叉率pm=0.05;%变异率Iter_N=100;%迭代最大代数popsize=10;%种群规模,个体的集合LB=-10;UB=

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

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

二进制编码为基础

%目标函数
function y = fobj(x)
if x <= 0
    y = sin(x);
elseif x <= 2
        y = x^2/2;
else 
    y = 3-x/2;
end
end
%主程序
%清楚窗口内容和变量
clear
clc   

pc = 0.8 ;%交叉率
pm = 0.05 ;%变异率

Iter_N =100; %迭代最大代数
popsize = 10; %种群规模,个体的集合

LB = -10;
UB = 10;  %左右边界
DELTA = 1e-2; 
x=LB:0.05:UB;

for i = 1:length(x)
    y(i)=fobj(x(i));  %目标函数
end
plot(x,y)
hold on;
1. 初始化种群
function pop = ini_pop(LB,UB,DELTA,popsize)
N = ceil(log2((UB-LB)/DELTA+1)); %
for i = 1:popsize
    pop(i,:)=randi(2,[1,N])-1; %
end

%2. fitness 计算适应性
function y = fitness(LB,UB,x)
popsize = size(x,1);
for i = 1:popsize
    xtemp = x(i,:);
    N = length(xtemp);
    xdec = Bin2Dec(xtemp(1:N));
    xx = LB+(UB-LB)/(2^N-1)*xdec;
    y(i) = fobj(xx);
end
%主程序
pop=ini_pop(LB,UB,DELTA,popsize); %生成初始种群
fit_pop = fitness(LB,UB,pop) %计算适应度
[best_fit,ind]=max(fit_pop); %找到最大适应度个体
best_pop = pop(ind,:); %记录最佳个体
for k = 1:Iter_N
    newpop = selection(pop,fit_pop); %轮盘赌选择新种群
    newpop = crossover(newpop,pc); %交叉算子
    newpop = mutation(newpop,pm); %变异算子
    fit_pop = fitness(LB,UB,newpop);%计算适应度
    [bf,ind] = max(fit_pop);
    if bf<best_fit
        R=randi(popsize);
        newpop(R,:)=best_pop;
        fit_pop(R)=best_fit;
    else
        best_pop=newpop(ind,:);
    end
    pop = newpop;
    fstar(k)=best_fit;
    N=length(best_pop);
    xdec=Bin2Dec(best_pop(1:N));
    xx=LB+(UB-LB)/(2^N-1)*xdec;
    best_fit;
    plot(xx,best_fit,'r*');
    pause(0.1);
end

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

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


相关推荐

  • Linux修改文件内容【命令】

    Linux修改文件内容【命令】在/opt/hello/world.txt文件中增加一行 hellolinuxworld!方法一:命令是:vi,vimvi编辑器,相当于记事本,有编辑功能,但较弱vim复杂的编辑器,相当于windows的editplus,notepad++等————————步骤:1、执行viworld.txt 进入编辑器(默认

    2022年7月26日
    17
  • @EnableConfigServer 注解无法导入

    @EnableConfigServer 注解无法导入

    2020年11月19日
    177
  • TDD与FDD

    TDD与FDDFDD和TDD主要区别就在于采用不同的双工方式,为频分双工(FDD)和时分双工(TDD)是两种不同的双工方式。FDD是在分离的两个对称频率信道上进行接收和发送,用保护频段来分离接收和发送信道。FDD的缺点就是必须采用成对的频率,依靠频率来区分上下行链路,其单方向的资源在时间上是连续的。FDD虽然在支持对称业务时,能充分利用上下行的频谱,但在支持非对称业务时,频谱利用率将大大降低。  …

    2022年6月13日
    35
  • RNN-bptt简单推导「建议收藏」

    RNN-bptt简单推导「建议收藏」摘要:在前面的文章里面,RNN训练与BP算法,我们提到了RNN的训练算法。但是回头看的时候在时间的维度上没有做处理,所以整个推导可能存在一点问题。那么,在这篇文章里面,我们将介绍bptt(BackPropagationThroughTime)算法如在训练RNN。关于bptt这里首先解释一下所谓的bptt,bptt的思路其实很简单,就是把整个RNN按时间的维度展

    2022年6月23日
    42
  • java输入语句怎么写_java输入语句应该怎样写?示例演示

    java输入语句怎么写_java输入语句应该怎样写?示例演示作为初步进入java开发学习的小白来说,就像是小时候刚刚学说话一样,这种经历既是必然的也是有趣的,学习java语言一开始的时候也是得一步步的学习,比如说,java输入语句应该这么去实现呢?一起跟小编来看看吧。第一步:导包。先将java.io.*;以及java.util.*;导入Java代码中。charc=(char)System.in.read();是输入单个字符;inta=cin.nextI…

    2022年7月9日
    33
  • 基于物品的协同过滤算法:理论说明,代码实现及应用「建议收藏」

    基于物品的协同过滤算法:理论说明,代码实现及应用「建议收藏」基于物品的协同过滤算法:理论说明,代码实现及应用标签:爬虫Python主要参考资料:项亮.推荐系统实践[M].北京:人民邮电出版社,2012.转载请注明出处:sss0.一些碎碎念从4月中旬开始,被导师赶到北京的郊区搬砖去了,根本就没有时间学习看书,这个时候才知道之前的生活是多么的幸福:每天看自己想看的书,然后实践一下,最后写博文总结一下,偶尔还能去跑个步,游个泳。想找实习的计划也泡汤了

    2022年6月26日
    21

发表回复

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

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