% 下面举例说明遗传算法 %% 求下列函数的最大值 %% f(x)=10*sin(5x)+7*cos(4x) x∈[0,10] %% 将 x 的值用一个 10 位的二值形式表示为二值问题,一个 10 位的二值数提供的分辨率是每为 (10—0)/(2^10—1)≈0.01 。 %% 将变量域 [0,10] 离散化为二值域 [0,1023], x=0+10*b/1023, 其中 b 是 [0,1023] 中的一个二值数. % M 文件函数定义语句: function 输出变量=函数名称(输入变量 1,输入变量 2,…) 语句; %输入变量与输出变量的关系 end; %非必须的 例如: function c=myadd(a,b) c=a+b; 调用方式: c=myadd(1,2) % 输出结果为 c=a+b=1+2=3% 2。1 初始化(编码)% initpop.m 函数的功能是实现群体的初始化,popsize 表示群体的大小,chromlength 表示染色体的长度(二值数的长度),% 长度大小取决于变量的二进制编码的长度(在本例中取 10 位)。%遗传算法子程序%Name: initpop。m (实现群体的初始化)%初始化function pop=initpop(popsize,chromlength) %定义 M 文件函数(实现种群初始化的函数)pop=round(rand(popsize,chromlength)); % rand()随机产生函数。rand 随机产生每个单元为 {0,1} 行数为 popsize,列数为 chromlength 的矩阵,此式子为输出变量 pop 与输入变量 popsize 和 chromlength 的关系式。% round 对矩阵的每个单元进行圆整,round 函数的作用是按指定的位数对数值进行四舍五入。这样产生的初始种群.% r% 2.2 计算目标函数值% 2.2.1 将二进制数转化为十进制数(1)%遗传算法子程序%Name: decodebinary.m %产生 [2^n 2^(n—1) 。.. 1] 的行向量,然后求和,将二进制转化为十进制function pop2=decodebinary(pop) %定义 M 文件函数(将二进制数转化为十进制数的函数)[px,py]=size(pop); %求 pop 的行数和列数.px 为种群数,染色体的长度为 pyfor i=1:py pop1(:,i)=2。^(py-i)。*pop(:,i); %pop1(:,i)表示 pop1 矩阵的第 i 列全部元素endpop2=sum(pop1,2); %求 pop1 的每行之和 %matlab 中 sum()函数的用法%a=sum(x); %对 x 矩阵的列求和 a=sum(x,2); %对 x 矩阵的行求和 a=sum(x(:)); %x 矩阵的所有元素求和%A(:,j)表示提取 A 矩阵的第 j 列全部元素 A(i,:)表示提取 A 矩阵的第 i 行元素, A(i, j)表示提取 A 矩阵...