代码如下
clc
clear all
close all
%定义自变量的范围
lbx1=-5.12;ubx1=5.12;
lbx2=-5.12;ubx2=5.12;
%% 定义遗传算法参数
NIND=100; %个体数目
MAXGEN=30; %最大遗传代数
PRECI=20; %变量的二进制位数
GGAP=0.95; %代沟
px=0.6; %交叉概率
pm=0.1; %变异概率
trace=zeros(MAXGEN,2); %寻优结果的初始值
FieldD=[PRECI PRECI;lbx1 lbx2;ubx1 ubx2;1 1;0 0;1 1;1 1 ]; %区域描述器
Chrom=crtbp(NIND,PRECI2); %初始种群
%% 优化
gen=0; %代计数器
X=bs2rv(Chrom,FieldD); %计算初始种群的十进制转换
X1=X(:,1);X2=X(:,2);
ObjV=20+X1.2+X2.2-10(cos(2piX1)+cos(2piX2)); %计算目标函数值
while gen<MAXGEN
FitnV=ranking(ObjV); %分配适应度值
SelCh=select(‘sus’,Chrom,FitnV,GGAP); %选择
SelCh=recombin(‘xovsp’,SelCh,px); %重组
SelCh=mut(SelCh,pm); %变异
X=bs2rv(SelCh,FieldD); %子代个体的十进制转换
X1=X(:,1);X2=X