MATLAB遗传算法例子二:求多元函数最小值

本文基于谢菲尔德大学遗传算法工具箱。
多元函数表达式如下:
这里写图片描述
其最小值显然在0处

%定义遗传算法参数
NIND=40;               %个体数目(Numbe of individuals)
MAXGEN=500;            %最大遗传代数(Maximum number of generations)
NVAR=20;               %变量的维数
PRECI=20;              %变量的二进制位数(Precision of variables)
GGAP=0.9;              %代沟(Generation gap)
trace=zeros(MAXGEN, 2);
%建立区域描述器(Build field descriptor)
FieldD=[rep([PRECI],[1,NVAR]);rep([-512;512],[1, NVAR]);rep([1;0;1;1],[1,NVAR])];
Chrom=crtbp(NIND, NVAR*PRECI);                       %创建初始种群
gen=0;                                               %代计数器
ObjV=objfun1(bs2rv(Chrom, FieldD));                  %计算初始种群个体的目标函数值
while gen<MAXGEN                                     %迭代
    FitnV=ranking(ObjV);                             %分配适应度值(Assign fitness values)
    SelCh=select('sus', Chrom, FitnV, GGAP);         %选择
    SelCh=recombin('xovsp', SelCh, 0.7);             %重组
    SelCh=mut(SelCh);                                %变异
    ObjVSel=objfun1(bs2rv(SelCh, FieldD));           %计算子代目标函数值 
    [Chrom ObjV]=reins(Chrom, SelCh, 1, 1, ObjV, ObjVSel);     %重插入
    gen=gen+1;                                                 %代计数器增加
    trace(gen, 1)=min(ObjV);                                   %遗传算法性能跟踪
    trace(gen, 2)=sum(ObjV)/length(ObjV);
end
plot(trace(:,1));hold on;
plot(trace(:,2),'-.');grid;
legend(' 种群均值的变化','解的变化')
%输出最优解及其对应的20个自变量的十进制值,Y为最优解,I为种群的序号
[Y, I]=min(ObjV)
X=bs2rv(Chrom, FieldD);
X(I,:)

代码来自于雷英杰《MATLAB_遗传算法工具箱与应用》

注意

与一元函数不同,这里的种群是40*400大小的矩阵,40是种群中个体数目,400是20*20,因为有该多元函数有20个变量,每个变量用20位来表示。、
同时,区域描述器FiledD也要跟着变成20列,每一列描述一个变量。这里写图片描述
代码运行之后,查看X可以发现,是一个40*20的矩阵,绝大部分都接近于0值,而20个0正好是最小值处。

  • 7
    点赞
  • 118
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
对于使用遗传算法多元函数最小值的问题,在MATLAB中可以通过编写相应的遗传算法函数来实现。下面是一个基本的遗传算法框架,你可以根据你的具体问题进行适当的修改和优化: 1. 初始化种群:随机生成一组初始解作为种群,每个个体表示问题的一个可能解。 2. 评估适应度:对种群中的每个个体,计算其适应度值,即多元函数的目标值。适应度值越小,表示解越优。 3. 选择操作:根据适应度值,使用选择算子(如轮盘赌选择)选取父代个体,产生用于交叉和变异的父代池。 4. 交叉操作:从父代池中选取两个个体,通过交叉操作生成两个子代个体。可以使用不同的交叉方式(如单点交叉、多点交叉等)。 5. 变异操作:对子代个体进行变异操作,以增加种群的多样性。可以使用不同的变异方式(如位变异、均匀变异等)。 6. 更新种群:将新产生的子代个体与原始种群合并,得到新一代种群。 7. 重复步骤2-6,直到满足终止条件(如达到最大迭代次数)。 8. 输出最优解:从最终种群中选取适应度最好的个体,即代表多元函数最小值。 你需要根据你具体的多元函数进行编写适应度函数、选择算子、交叉操作和变异操作,并设置适当的参数(如种群大小、交叉概率、变异概率等)。此外,你还可以根据需要在遗传算法中引入其他优化策略,如精英保留、动态调整参数等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值