自学遗传算法的笔记,解析代码李锐博恩的遗传算法代码,学习过程看的是王小平的遗传算法理论与应用,相关概念和说法里面都有。遗传算法基本原理其他地方都有,不在赘述。(以书中为例)
李的前段代码:
function main()
%% -------------主函数-----------------------------------
% 用遗传算法求:
% max: f(x1,x2) = 21.5+x1*sin(4*pi*x1)+x2*sin(20*pi*x2)
% s.t: -3.0 <= x1 <= 12.1
% 4.1 <= x2 <= 5.8
%---------------------------------------------------------------
clear
clc
close all
popsize = 100; %种群大小
x1_length = 18; %x1长度为18
x2_length = 15; %x2长度为15
chromlength = 33; %二进制编码长度(不懂1)
————————————————
版权声明:本文为CSDN博主「李锐博恩」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Reborn_Lee/article/details/82913414
第一章 参数设定
第一步:确定基因编码
定义:把求解问题中的关键因子,即主要影响因素或者主要矛盾,从变现形式到基因型的映射称为编码。
主要内容:二进制编码长度确定
chromlength = 33; %二进制编码长度
本例中实数x就是变现形式,要把x变成二进制编码(可以换成其他的编码比如浮点编码),变为{0,1}的二进制串,串长取决于求解的精度,如果设定求解精度到6位小数,对应变量x的区间长度[-1,2]=3,编码长度就是2^21<3*10^6<2^22,所以编码的二进制串长度最小为22位。
所以对应李的编码长度,求解精度是4位,所以是x1 18位,x2 15位,总计:33位。
转化过程: