精华内容
下载资源
问答
  • 二进制蝙蝠算法用于解决背包问题算法流程背包问题Matlab 代码目标函数仿真结果参考文献 算法流程 背包问题 参考[Matlab] 离散二进制粒子群算法(BPSO )解决背包问题 Matlab 代码 %% 二进制蝙蝠算法 %初始化种群...

    算法流程

    C:\Users\Qin\AppData\Roaming\Typora\typora-user-images\image-20210413204611041.png)]

    背包问题

    参考[Matlab] 离散二进制粒子群算法(BPSO )解决背包问题

    Matlab 代码

    %% 二进制蝙蝠算法
    
    %初始化种群
    r = 0.7;
    narvs = 10; %问题的维度
    n = 100;
    dim = narvs;
    maxgen = 100;
    populationSize = 100;
    
    Qmin=0;         % Frequency minimum 频率最小值
    Qmax=2;         % Frequency maximum 频率最大值
    
    Q=zeros(n,1);   % Frequency
    v=zeros(n,dim);   % Velocities 速度
    
    cg_curve=zeros(1,maxgen);
    
    x = randsrc(n,narvs,[0,1;0.5,0.5]);
    
    %计算适应度值
    fitness =targetPackage(x',100);
    
    %找到当前最好
    [fmax,I]=max(fitness);
    best=x(I,:);
    
    A = 0.6;
    bestfit = zeros(maxgen,1);
    for i = 1:maxgen
        cg_curve(i)=fmax; %当前值
        for j = i:populationSize
            for d = 1:dim
                Q(i) = Qmin+(Qmin-Qmax)*rand; %更新频率
                v(j,d) = v(j,d)+(x(j,d)-best(d))*Q(j); %更新速度
                % V型的转换函数,很多采用的是西格玛函数用于速度到位置的离散转换
                V_shaped_transfer_function=abs((2/pi)*atan((pi/2)*v(j,d))); 
                if rand<V_shaped_transfer_function % Equation 10 in the paper
                    x(j,d)=~x(j,d);
                else
                    x(j,d)=x(j,d);
                end
                if rand > r  % Pulse rate ()
                    x(j,d)=best(d);
                end
            end
            Fnew = targetPackage(x(j,:)',1);
            if (Fnew >= fitness(j,:))&&(rand < A)
                x(j,:)=x(j,:);
                fitness(j,:) = Fnew;
            end
            if Fnew>=fmax
                best=x(j,:);
                fmax=Fnew;
            end
        end 
        bestfit(i,:) = fmax;
    end
    
    targetPackage(best',1)
    plot(bestfit)
    
    

    目标函数

    function fitness = targetPackage(x,indNum)
    %targetPackage 此处显示有关此函数的摘要
    %   X:表示种群
    volume=[95 75 23 73 50 22 6 57 89 98];        %物品体积
    value=[89 59 19 43 100 72 44 16 7 64];          %物品价值
    Weight=300;  %背包重量
    % a = zeros(indNum,1);
    % for i=1:indNum
    %     a(i,1) = volume*x(:,i);
    % end
    %超过总重量的个体的适应度值都视为0
    k = find(volume*x<Weight);
    fitness=zeros(indNum,1);
    for j=1:size(k,2)
        fitness(k(j),1) = value*x(:,k(j));
    end
    end
    

    仿真结果

    在这里插入图片描述

    参考文献

    [1] Mirjalili, Seyedali, Seyed Mohammad Mirjalili, and Xin-She Yang. 2014. “Binary Bat Algorithm.” Neural Computing and Applications 25 (3): 663–81.

    展开全文
  • Matlab实现遗传算法(二进制编码)

    热门讨论 2011-05-26 15:05:44
    使用Matlab实现二进制编码方案的遗传算法,算法分为初始化init.m、编码encoding、解码decoding、交叉crossover、变异mutation、选择selection以及适应度函数的计算。该文件为编码算法
  • 一、在matlab中编程 因为我想生成16进制的数,所以加了一个dec2hex,加了之后生成的文件有点问题,因为这个时候生成的y是两列字符,不是数字,可能因为这个原因生成的文件莫名其妙多了一个空格,所以只能把加的...

    参考资料:

    https://blog.csdn.net/yake827/article/details/42651829

     一、在matlab中编程

    因为我想生成16进制的数,所以加了一个dec2hex,加了之后生成的文件有点问题,因为这个时候生成的y是两列字符,不是数字,可能因为这个原因生成的文件莫名其妙多了一个空格,所以只能把加的逗号去掉。

    二、问题

    现在想想直接生成十进制数也不是不可以。

     

    转载于:https://www.cnblogs.com/zlll/p/9732289.html

    展开全文
  • 使用Matlab实现二进制编码方案的遗传算法,算法分为初始化init.m、编码encoding、解码decoding、交叉crossover、变异mutation、选择selection以及适应度函数的计算。该文件为初始化算法
  • 本文详细讨论了基于FPGA的mif文件创建与使用,对于mif文件创建与使用均给出了两种可行性的方法。mif文件具有固定格式,而对mif文件使用主要就是...本文以四位二进制加法查找表的实现为例,给出了m(Matlab)语言源程序。
  • CRC matlab

    2020-06-19 10:37:07
    InitialState:初始化状态。移位寄存器的初始内容。 可以将此属性指定为二进制标量,二进制向量或以’0x’开头的字符串,该字符串是二进制向量的十六进制表示形式。 作为二进制矢量,其长度必须比多项式的二进制矢量...

    Polynomial : 多项式

    InitialState:初始化状态。移位寄存器的初始内容。 可以将此属性指定为二进制标量,二进制向量或以’0x’开头的字符串,该字符串是二进制向量的十六进制表示形式。 作为二进制矢量,其长度必须比多项式的二进制矢量表示的长度小一。

    ReflectInput:输入。一个布尔量,指定在进入移位寄存器之前是否应按字节对输入数据进行翻转。

    ReflectRemainder: 一个布尔量,指定在输入数据完全通过移位寄存器后,是否应将二进制输出CRC校验和绕其中心翻转。

    c r c . generator的理解:
    Usage Example:

    % Construct a CRC generator with a polynomial defined
    % by x^4+x^3+x^2+x+1:
    h = crc.generator([1 1 1 1 1]) 
    
    % Construct a CRC generator with a polynomial defined
    % by x^4+x^3+x^2+x+1, all-ones initial states, reflected
    % input, and all-zeros final XOR value:
    h = crc.generator('Polynomial', '0xF', 'InitialState', ...
    '0xF', 'ReflectInput', true, 'FinalXOR', '0x0')
    
    % Create a CRC-16 CRC generator, then use it to generate
    % a checksum for the
    % binary vector represented by the ASCII sequence '123456789'.
    gen = crc.generator('Polynomial', '0x8005', ...
    'ReflectInput', true, 'ReflectRemainder', true);
    % The message below is an ASCII representation of ...
    % the digits 1-9
    msg = reshape(de2bi(49:57, 8, 'left-msb')', 72, 1);   % 将49:57这些数字转换为8行的2禁止数据,左位为最高位。然后再把数组变为9*8的 72行 1列数据
    
    encoded = generate(gen, msg);
    
    % Construct a CRC generator with a polynomial defined
    % by x^3+x+1, with zero initial states,
    % and with an all-ones final XOR value:
    h = crc.generator('Polynomial', [1 0 1 1], ...
                       'InitialState', [0 0 0], ...
                       'FinalXOR', [1 1 1])
    

    函数:de2bi( 把一个十进制数转换成一个字符串形式的二进制数)
    具体参看 CRC在matlab中运用 篇博客

    展开全文
  • 遗传算法的matlab代码

    2018-10-08 16:45:32
    随机初始化100个个体,采用二元锦标赛选择,模拟二进制交叉以及多项式变异算子等进行最优解的求解
  • MATLAB遗传算法函数总结

    千次阅读 2019-05-30 11:24:21
    种群表示和初始化函数bs2rv: 二进制串到实值的转换 Phen=bs2rv(Chrom,FieldD) FieldD=[len, lb, ub, code, scale, lbin, ubin] code(i)=1为标准的二进制编码,code(i)=0为格雷编码 scale(i)=0为算术刻度,scale(i)=1...

    MATLAB遗传算法函数总结

     

    种群表示和初始化函数 bs2rv:
    二进制串到实值的转换 
    Phen=bs2rv(Chrom,FieldD)               FieldD=[len, lb, ub, code, scale, lbin, ubin] 
    code(i)=1为标准的二进制编码,code(i)=0为格雷编码 
    scale(i)=0为算术刻度,scale(i)=1为对数刻度 
    函数 crtbp:
    创建初始种群 
    [Chrom,Lind,BaseV]=crtbp(Nind,Lind)

    [Chrom,Lind,BaseV]=crtbp(Nind,BaseV) 
    [Chrom,Lind,BaseV]=crtbp(Nind,Lind,BaseV) 

    Nind指定种群中个体的数量,Lind指定个体的长度 
    函数 crtrp:
    创建实值原始种群 
    Chrom=crtrp(Nind,FieldDR) 

    适应度计算函数 ranking:
    基于排序的适应度分配(此函数是从最小化方向对个体进行排序的) 
    FitV=ranking(ObjV) 
    FitV=ranking(ObjV, RFun) 
    FitV=ranking(ObjV, RFun, SUBPOP) 
    Rfun(1)线性排序标量在[1 2]间为,非线性排序在[1 length(ObjV)-2] 
    Rfun(2)指定排序方法,0为线性排序,1为非线性排序 
    SUBPOP指明ObjV中子种群的数量,默认为1 

    选择高级函数 select:
    从种群中选择个体 
    SelCh=select(SEL_F, Chrom, FitnV) 
    SelCh=select(SEL_F, Chrom, FitnV, GGAP) 
    SelCh=select(SEL_F, Chrom, FitnV, GGAP, SUBPOP) 

    SEL_F是一字符串,为一低级选择函数名,如rws或sus 
    GGAP指出了代沟,默认为1;也可大于1,允许子代数多于父代的数量 
    rws: 轮盘赌选择 
    NewChrIx=rws(FitnV, Nsel) 使用轮盘赌选择从一个种群中选择Nsel个个体 
    NewChrIx 是为育种选择的个体的索引值 
    sus:
    随机遍历抽样 
    NewChrIx=sus(FitnV, Nsel) 

    交叉高级函数 recombin:
    重组个体 
    NewChrom=recombin(REC_F, Chrom) 
    NewChrom=recombin(REC_F, Chrom, RecOpt) 
    NewChrom=recombin(REC_F, Chrom, RecOpt, SUBPOP) 
    REC_F是包含低级重组函数名的字符串,例如recdis,recint,reclin,xovdp, xovdprs, xovmp, xovsh, xovshrs, xovsp, xovsprs 
    recdis:
    离散重组 
    NewChrom=recdis(OldChorm) 
    recint:
    中间重组 
    NewChrom=recint(OldChorm) 
    reclin:
    线性重组 
    NewChrom=reclin(OldChorm) 
    xovdp:

    两点交叉 

    NewChrom=xovdp(OldChrom, XOVR) 


    XOVR为交叉概率, 默认为0.7 
    Xovdprs:
    减少代理的两点交叉 
    NewChrom=xovdprs(OldChrom, XOVR) 
    Xovmp:

    多点交叉 

    NewChrom=xovmp(OldChrom, XOVR, Npt, Rs) 

    Npt指明交叉点数, 0 洗牌交叉;1 单点交叉;2 两点交叉;
    默认为0 

    Rs指明使用减少代理, 0 不减少代理;1 减少代理;
    默认为0 
    Xovsh:

    洗牌交叉 

    NewChrom=xovsh(OldChrom, XOVR) 
    Xovshrs:
    减少代理的洗牌交叉 
    NewChrom=xovshrs(OldChrom, XOVR) 
    Xovsp:
    单点交叉 
    NewChrom=xovsp(OldChrom, XOVR) 
    Xovsprs:
    减少代理的单点交叉 
    NewChrom=xovsprs(OldChrom, XOVR) 

    变异高级函数 mutate:
    个体的变异 
    NewChorm=mutate(MUT_F, OldChorm, FieldDR) NewChorm=mutate(MUT_F, OldChorm, FieldDR, MutOpt) NewChorm=mutate(MUT_F, OldChorm, FieldDR, MutOpt, SUBPOP) MUT_F为包含低级变异函数的字符串,例如mut, mutbga, recmut 
    mut:
    离散变异算子 
    NewChrom=mut(OldChorm, Pm) NewChrom=mut(OldChorm, Pm, BaseV) 
    Pm为变异概率,默认为Pm=0.7/Lind 
    mutbga:
    实值种群的变异(遗传算法育种器的变异算子) NewChrom=mutbga(OldChorm, FieldDR) 
    NewChrom=mubga(OldChorm, FieidDR, MutOpt) 
    MutOpt(1)是在[ 0 1]间的重组概率的标量,默认为1 
    MutOpt(2)是在[0 1]间的压缩重组范围的标量,默认为1(不压缩) 
    recmut:
    具有突变特征的线性重组 
    NewChrom=recmut(OldChorm, FieldDR) 
    NewChrom=recmut(OldChorm, FieidDR, MutOpt) 

    重插入函数 reins:
    重插入子群到种群 
    Chorm=reins(Chorm, SelCh) 
    Chorm=reins(Chorm, SelCh, SUBPOP) 
    Chorm=reins(Chorm, SelCh, SUBPOP, InsOpt, ObjVch) 
    [Chorm, ObjVch]=reins(Chorm, SelCh, SUBPOP, InsOpt, ObjVch, ObjVSel) 
    InsOpt(1)指明用子代代替父代的选择方法,0为均匀选择,1为基于适应度的选择,默认为0 
    InsOpt(2)指明在[0 1]间每个子种群中重插入的子代个体在整个子种群的中个体的比率,默认为1 

    ObjVch包含Chorm中个体的目标值,对基于适应度的重插入是必需的 
    ObjVSel包含Selch中个体的目标值,如子代数量大于重插入种群的子代数量是必需的 

    其他函数矩阵复试函数 rep:
    MatOut=rep(MatIn, REPN)
    REPN为复制次数

    展开全文
  • 遗传算法原理及其matlab程序实现

    千次阅读 多人点赞 2019-08-06 22:50:15
    遗传算法原理及其matlab实现一、遗传算法背景二、遗传算法原理及其数学模型2.1 编码方式2.1.1 二进制编码2.1.2 浮点数编码2.2 种群初始化2.3 计算初始种群的适应度函数值2.4 对初始种群个体进行筛选(以轮盘赌方式...
  • 文章目录1 概述2 步骤2.1 种群初始化2.2 适应度计算(种群评估)2.3 筛选2.4 交叉(交配)运算2.5 突变2.6 终止判断3 代码 1 概述 遗传算法(Genetic Algorithm, GA)是模拟达尔文生物进化论的自然选择和遗传学机理的...
  • matlab--旅行商社问题

    2020-03-27 15:55:39
    (1)种群初始化:个体编码方式有二进制编码和实数编码,在解决TSP问题过程中个体编码方式为实数编码。对于TSP问题,实数编码为1-n的实数的随机排列,初始化的参数有种群个数M、染色体基因个数N(即城市的个数)、迭代...
  • 数学建模–ML之遗传算法(MATLAB)【求具体函数最大值问题】 前言:博主为MATLAB初学者,本文作为博主学习笔记,如有错误之处还...先将初始群体的二进制编码转换为十进制数,再计算目标函数值。 3)计算群体中个体
  • MATLAB谢菲尔德遗传算法工具箱使用

    万次阅读 多人点赞 2016-04-09 20:45:06
    种群表示和初始化 函数 bs2rv: 二进制串到实值的转换  Phen=bs2rv(Chrom,FieldD)   FieldD=[len, lb, ub, code, scale, lbin, ubin]  code(i)=1为标准的二进制编码,code(i)=0为格雷编码
  • 1)种群初始化。我们需要首先通过随机生成的方式来创造一个种群,一般该种群的数量为100~500,这里我们采用二进制将一个染色体(解)编码为基因型。随后用进制转化,将二进制的基因型转化成十进制的表现型..
  • 如求下列函数的最大值 f(x)=10*sin(5x)+7*cos(4x) x∈[0,10] 一、初始化(编码) initpop.m函数的功能是实现群体的初始化,popsize表示群体的大小,...长度大小取决于变量的二进制编码的长度(在本例中取10位)。
  • %初始化种群 function pop=initial_pop(popsize,stringlength,dimension) %stringlength 是二进制的位数;popsize是种群中个体的数目;dimension是自变量的维数; pop=round(rand(popsize,dimension*stringlength+1)...
  • 遗传算法MATLAB代码

    热门讨论 2012-11-08 20:19:48
    "位二进制换成十进制,%冒号表示对所有行进行操作。 fit=eval(f);%eval转化成数值型的 %计算适应度 figure(1);%打开第一个窗口 fplot(f,[xmin,xmax]);%隐函数画图 grid on;hold on; plot(x,fit,'k*');%作图,...
  • 10.2.8 初始化模块 406 10.2.9 基站接收器 410 10.3 cdma 2000前向业务信道 412 pdf文件下载地址: 请见帖子附件( 觉得好可要顶起来啊! 不能只下载不回贴的啊!~ 【版主确认:138页之后...
  • 10.2.8 初始化模块 406 10.2.9 基站接收器 410 10.3 cdma 2000前向业务信道 412 pdf文件下载地址: 请见帖子附件( 觉得好可要顶起来啊! 不能只下载不回贴的啊!~ 【版主确认:138页之后...
  • 10.2.8 初始化模块 406 10.2.9 基站接收器 410 10.3 cdma 2000前向业务信道 412 pdf文件下载地址: 请见帖子附件( 觉得好可要顶起来啊! 不能只下载不回贴的啊!~ 【版主确认:138页之后...
  • 10.2.8 初始化模块 406 10.2.9 基站接收器 410 10.3 cdma 2000前向业务信道 412 pdf文件下载地址: 请见帖子附件( 觉得好可要顶起来啊! 不能只下载不回贴的啊!~ 【版主确认:138页之后...
  • 10.2.8 初始化模块 406 10.2.9 基站接收器 410 10.3 cdma 2000前向业务信道 412 pdf文件下载地址: 请见帖子附件( 觉得好可要顶起来啊! 不能只下载不回贴的啊!~ 【版主确认:138页之后...
  • 10.2.8 初始化模块 406 10.2.9 基站接收器 410 10.3 cdma 2000前向业务信道 412 pdf文件下载地址: 请见帖子附件( 觉得好可要顶起来啊! 不能只下载不回贴的啊!~ 【版主确认:138页之后...
  • 10.2.8 初始化模块 406 10.2.9 基站接收器 410 10.3 cdma 2000前向业务信道 412 pdf文件下载地址: 请见帖子附件( 觉得好可要顶起来啊! 不能只下载不回贴的啊!~ 【版主确认:138页之后...
  • %初始化映射表 bits = zeros(1,8);%8位二进制模式串 nCurBin=1; for ii=0:255 num=ii; nCnt=0; %获得灰度num的二进制表示bits while (num) bits(8-nCnt)=mod(num,2); num=floor(num/2); nCnt=nCnt+1; end ...
  • %权值初始化:任意 %学习方式:有导师 %变换函数:二进制 %清理环境 clear; close all; clc; %设置参数 fun_handle = @sgn; %变换函数的句柄 %四个样本 X = [ -1,0,0;-1,0,1;-1,1,0;-...
  • 格式:PDG 作者:邓华 出版社:人民邮电出版社 出版日期:2003-09-01 内容简介 本书着重介绍了MATLAB在通信仿真,尤其是移动通信仿真...10.2.8 初始化模块 406 10.2.9 基站接收器 410 10.3 cdma 2000前向业务信道 412
  • 遗传算法matlab程序(2009-04-14 18:25:19)转载标签: 遗传算法二进制编码if杂谈 遗传算法程序: 说明: fga.m 为遗传算法的主程序; 采用二进制Gray编码,采用基于轮盘赌法的非线性排名选择, 均匀交叉,变异操作,而且还...
  • 4 设菲尔德大学的MATLAB遗传算法工具箱(王辉) Matlab 遗传算法(Genetic Algorithm)优化工具箱是基于基本操作及终止条件、二进制和十进制相互转换等操作的综合函数库。其实现步骤包括:通过输入及输出函数求出遗传...

空空如也

空空如也

1 2 3
收藏数 47
精华内容 18
关键字:

matlab二进制初始化

matlab 订阅