通过MATLAB分别对比二进制编码遗传优化算法和实数编码遗传优化算法
创作时间:
作者:
@小白创作中心
通过MATLAB分别对比二进制编码遗传优化算法和实数编码遗传优化算法
引用
1
来源
1.
https://developer.aliyun.com/article/1567012
本文通过MATLAB分别对比二进制编码遗传优化算法和实数编码遗传优化算法,对比最优适应度值,平均适应度值以及算法运算效率。文章详细介绍了两种编码方式的遗传算法原理,并提供了具体的MATLAB实现代码。
1.程序功能描述
通过MATLAB分别对比二进制编码遗传优化算法和实数编码遗传优化算法,对比最优适应度值,平均适应度值以及算法运算效率。
2.测试软件版本以及运行结果展示
MATLAB2022a版本运行
3.核心程序
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实数编码遗传优化算法
实数编码遗传优化算法将问题的解表示为实数字符串。在实数编码中,每个解的每个基因都被编码为一个实数值。这种编码方式在连续问题或具有连续决策变量的混合离散问题中很常见。
以下是实数编码遗传优化算法的基本步骤:
初始化:随机生成一组实数字符串作为初始种群。每个字符串的长度等于问题中决策变量的数量。
适应度评估:计算每个字符串的适应度值,适应度值是根据问题的目标函数来计算的。
选择:根据适应度值选择哪些字符串进入下一代。通常使用轮盘赌选择法或锦标赛选择法等。
交叉(重组):随机选择两个字符串,进行交叉操作,产生新的字符串。交叉操作是通过线性组合两个字符串的基因来完成的。
变异:随机选择一些字符串,对它们的基因进行变异操作,以增加种群的多样性。变异操作是通过随机改变一个基因的值来实现的。
终止条件:当达到预设的迭代次数或找到满足要求的解时,算法终止。
二进制编码和实数编码的主要区别在于问题的表示方式不同。二进制编码适用于离散问题,而实数编码适用于连续问题或具有连续决策变量的混合离散问题。此外,由于实数编码使用了实数表示解,因此可以直接对连续空间进行搜索,而二进制编码只能通过离散的搜索空间进行搜索。然而,由于实数编码的搜索空间是连续的,因此可能需要更复杂的搜索策略来找到全局最优解,因为初始种群可能陷入局部最优解中。在某些问题中,实数编码可能比二进制编码更有效,但在其他问题中,二进制编码可能更有效。选择哪种编码方式取决于问题的具体性质和要求。
本文原文来自阿里云开发者社区
热门推荐
合肥周边特色村落全攻略:艺术、温泉与传统文化的完美融合
少吃肉、少吃油,为什么血脂还是高?血液里的血脂到底从哪里来的
吃辣后头疼?布洛芬来救场!
充足膳食纤维巧搭配
小心!有人利用微信支付“百万保障”诈骗
庐州烤鸭与逍遥鸡:合肥必尝的两大美食名片
合肥市10大经典网红打卡点推荐!
工商管理专业,就业前景如何?未来趋势和发展方向分析
2024就业最好的15个专业,你想到了几个,你毕业的是什么专业
梅里雪山摄影指南:五大要点轻松拍大片
工程管理是一个烂专业吗?为什么说千万别学工程管理专业?
菌类食物:痛风患者的高嘌呤陷阱
痛风不能吃海鲜?医生:真正需要忌口的4种食物,需特别留意
守一城山水 建一城幸福 阿尔山全力打造宜居宜游品质城市
秋冬季节补气血的茶饮配方大全:适合秋冬养生的21款补气血茶
丽江古城秋冬打卡全攻略:雪景、夜景、红叶一个都不能少!
丽江古城婚纱照打卡地推荐:从古城到雪山的浪漫之旅
理解儿童的非语言交流:科学指南
冬天总喝这种茶,身体暖、气血足、免疫力变好
重返豪门,我的逆袭人生:从平凡到富豪的逆袭之路
《重返豪门,我的逆袭人生》完全攻略:从平凡到富豪的逆袭之路
饮食调整助力改善下肢血管堵塞
下肢动脉堵塞的早期信号,这些症状千万别忽视!
新式家常炒鸡:融合传统与创新的美味升级
黑豆茶:养生奇效与保健功能揭秘
用尼康Z7II拍出绝美梅里雪山日照金山
丽江古城首届非遗文化周:六大主题活动演绎纳西文化新魅力
丽江古城必打卡:樱花餐厅&油纸伞街
丽江古城的文化遗产日:东巴文化的魅力
丽江古城:网红打卡与纳西风情的完美融合