求解函数Y=sin(3*x)+7*x.^(1/2)+1在(0,10)内的最大值,初始种群数为100,精确到6位小数,利用24位二进制编码方式表示个体染色体串,迭代次数为100次。
Initpop:
%初始化群体,规定初始种群的数量与个体长度
%popnumb表示初始种群的数目,individuallength表示个体的长度
functionpop = initpop(popnumb,individuallength)
pop= round(rand(popnumb,individuallength));
binarytodecimal:
%将种群的二进制编码与定义域内的数对应
functionpop2=binarytodecimal(pop)
[px,py]=size(pop);
fori=1:py;
pop1(:,i)=2.^(py-i).*pop(:,i); %将矩阵中的每位二进制乘以权重
end
Dcv=sum(pop1,2);%转化为十进制数表示的一维列向量
pop2=Dcv*10/(2^py);%将十进制数转化为自变量定义域内的数
objectvalue:
function[objvalue] = objectvalue(pop)
%计算适应度函数值
m=binarytodecimal(pop);%调用binarytodecimal将种群中的个体转化为对应的自变量定义域内的数
objvalue=sin(3*m)+7*m.^(1/2)+10;%适应函数采用目标函数
selection: