通过MATLAB分别对比二进制编码遗传优化算法和实数编码遗传优化算法

目录

1.程序功能描述

2.测试软件版本以及运行结果展示

3.核心程序

4.本算法原理

4.1二进制编码遗传优化算法

4.2实数编码遗传优化算法

5.完整程序


1.程序功能描述

       通过MATLAB分别对比二进制编码遗传优化算法和实数编码遗传优化算法,对比最优适应度值,平均适应度值以及算法运算效率。

2.测试软件版本以及运行结果展示

MATLAB2022a版本运行

3.核心程序

...............................................................
%-10~10,初始化种群
Popu    = 6*rand(NUM,dim)-3;
%初始化最优适应度值
Vbest   =-inf;
for i=1:NUM%计算适应度值
    y(i)=fitness(Popu(i,:));
    if y(i)>Vbest 
       Vbest=y(i);
       Vopt=Popu(i,:);
    end
end
%迭代
for t=1:Maxiter
    t
    %选择
    p = y/sum(y);
    q = cumsum(p);
    %选择个体索引
    for i=1:NUM
        temp       = rand(1);
        idx        = find(q>=temp);
        Popus(i,:) = Popu(idx(1),:);
    end
    %交叉
    for i=1:NUM
        if rand(1)<pc
            i1=randi([1,NUM]);
            i2=randi([1,NUM]);
            while i1==i2
                i1=randi([1,NUM]);
                i2=randi([1,NUM]);
            end
            k                 = randi([1,dim]);
            temp              = Popus(i1,k+1:end);
            Popus(i1,k+1:end) = Popus(i2,k+1:end);
            Popus(i2,k+1:end) = temp;
        end
    end
    %变异
    Pm0   = rand(NUM,dim);
    Popus = (Pm0>=pm).*Popus + (Pm0<pm).*Pm0;
    %更新
    .....................................................
end
figure
plot(1:Maxiter,Vsave0)
hold on
plot(1:Maxiter,Vsave1)
legend('最优适应度','平均适应度')
xlabel('迭代次数')
ylabel('适应度值')
t=toc 
save R1.mat 
0003

4.本算法原理

       遗传算法是一种基于生物进化原理的优化算法,广泛应用于各种问题,如函数优化、机器学习、图像处理等。在遗传算法中,编码方式是关键的一步,因为它决定了问题的表示方式以及算法的搜索空间。主要有两种编码方式:二进制编码和实数编码。

4.1二进制编码遗传优化算法


       二进制编码遗传优化算法是一种常见的遗传算法,它将问题的解表示为二进制字符串。在二进制编码中,每个解的每个基因都被编码为一个0或1的二进制数。这种编码方式在许多问题中都很有效,因为它可以很容易地表示离散解空间。

      二进制编码遗传优化算法的基本步骤:

       初始化:随机生成一组二进制字符串作为初始种群。每个字符串的长度等于问题中决策变量的数量。

       适应度评估:计算每个字符串的适应度值,适应度值是根据问题的目标函数来计算的。

       选择:根据适应度值选择哪些字符串进入下一代。通常使用轮盘赌选择法或锦标赛选择法等。

       交叉(重组):随机选择两个字符串,进行交叉操作,产生新的字符串。交叉操作是通过交换两个字符串的部分基因来完成的。

       变异:随机选择一些字符串,对它们的基因进行变异操作,以增加种群的多样性。变异操作是通过随机改变一个基因的值来实现的。

       终止条件:当达到预设的迭代次数或找到满足要求的解时,算法终止。

4.2实数编码遗传优化算法


       实数编码遗传优化算法将问题的解表示为实数字符串。在实数编码中,每个解的每个基因都被编码为一个实数值。这种编码方式在连续问题或具有连续决策变量的混合离散问题中很常见。

以下是实数编码遗传优化算法的基本步骤:

       初始化:随机生成一组实数字符串作为初始种群。每个字符串的长度等于问题中决策变量的数量。

       适应度评估:计算每个字符串的适应度值,适应度值是根据问题的目标函数来计算的。

       选择:根据适应度值选择哪些字符串进入下一代。通常使用轮盘赌选择法或锦标赛选择法等。

       交叉(重组):随机选择两个字符串,进行交叉操作,产生新的字符串。交叉操作是通过线性组合两个字符串的基因来完成的。

       变异:随机选择一些字符串,对它们的基因进行变异操作,以增加种群的多样性。变异操作是通过随机改变一个基因的值来实现的。

       终止条件:当达到预设的迭代次数或找到满足要求的解时,算法终止。

       二进制编码和实数编码的主要区别在于问题的表示方式不同。二进制编码适用于离散问题,而实数编码适用于连续问题或具有连续决策变量的混合离散问题。此外,由于实数编码使用了实数表示解,因此可以直接对连续空间进行搜索,而二进制编码只能通过离散的搜索空间进行搜索。然而,由于实数编码的搜索空间是连续的,因此可能需要更复杂的搜索策略来找到全局最优解,因为初始种群可能陷入局部最优解中。在某些问题中,实数编码可能比二进制编码更有效,但在其他问题中,二进制编码可能更有效。选择哪种编码方式取决于问题的具体性质和要求。

5.完整程序

VVV

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

软件算法开发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值