⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 realgamax.m

📁 经典遗传算法
💻 M
字号:
%利用遗传算法求解一元函数极小值,用于实值编码
%参数说明:
%obj--要求解的函数
%        调用格式: obj(x)
%m--群体规模
%select--选择函数
%        调用格式: select(fitness,n), fitness为一列向量, 表示适应度值, n为选择个数
%        返回值: n×1的整数向量, 表示被选择个体的编号
%cross--交叉函数
%        调用格式: cross(chrom,pc), chrom为一列矩阵, 表示群体, pc为交叉概率
%        返回值: 一列矩阵, 表示交叉后的新的群体
%mutation--变异函数
%        调用格式: mutation(chrom,pc), chrom为一列矩阵, 表示群体, pm为变异概率
%        返回值: 一列矩阵, 表示变异后的新的群体
%pc--交叉概率
%pm--变异概率
%a, b--搜索空间[a,b]
%gn--迭代次数
%graph--是否要作图
function mx=realGaMax(Obj,m,select,cross,mutation,pc,pm,a,b,gn,graph)
x=a+(b-a)*rand(m,1); %生成初始群体
for t=1:gn
    y=feval(Obj,x);%计算适应度,适应度越大越好
    [my,i]=max(y);%取出最大值
    mx=x(i);% 最优解
    index=feval(select,y,m);%选择
    x=x(index,:);
    x=feval(cross,x,pc); %交叉
    x=feval(mutation,x,pm);%变异
end
if graph
    z=a:0.1:b;
    plot(z,feval(Obj,z))
    hold on
    plot(x,feval(Obj,x),'.')
    hold off
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -