遗传算法求二元函数的最小值

本文介绍了如何运用遗传算法解决二元函数最小值问题,涉及种群初始化、适应度计算、选择、交叉和变异等关键步骤。通过示例函数y=x1^2+x2^2,探讨了在[-5,5]区间内寻找最小值的遗传算法实现细节。" 105671992,8590459,手把手教你实现DeepFM:模型详解与代码实战,"['推荐系统', '机器学习', '深度学习', '模型实现', 'TensorFlow']

二元函数为y=x1^2+x2^2,x∈[-5,5]

NIND=121;       %初始种群的个数(Number of individuals)
NVAR=2;         %一个染色体(个体)有多少基因
PRECI=20;       %变量的二进制位数(Precision of variables)
MAXGEN=200;     %最大遗传代数(Maximum number of generations)
GGAP=0.8;       %代沟(Generation gap),以一定概率选择父代遗传到下一代
trace=zeros(MAXGEN,2);          %寻优结果的初始值

Chrom=crtbp(NIND,PRECI*NVAR);   %初始种群

%区域描述器(Build field descriptor)
%确定每个变量的二进制位数,取值范围,及取值范围是否包括边界等。
FieldD=[rep([PRECI],[1,NVAR]);rep([-5;5],[1,NVAR]);rep([1;0;1;1],[1,NVAR])];
Objv=objfun(bs2rv(Chrom,FieldD))
gen=1;                  %代计数器
while gen<=MAXGEN
    Fitv=ranking(Objv); %分配适应度值(Assign fitness values)
    SelCh=select('sus',Chrom,Fitv,GGAP);    %选择
    SelCh=recombin('xovsp',SelCh,1);        %重组
    SelCh=mut(SelCh);                       %变异
    ObjVSel=objfun(bs2rv(SelCh,FieldD));%子代个体的十进制转换
    %重插入子代的新种群
    [Chrom,Objv]=reins(Chrom,SelCh,1,1,Objv,ObjVSel);
    trace(gen,1)=min(Objv); 
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值