简单的遗传算法实例(MATLAB版)

遗传算法(Genetic Algorithm)是模拟自然界生物进化机制的一种算法,即遵循适者生存、优胜劣汰的法则,也就是寻优过程中有用的保留无用的去除。在科学和生产实践中表现为,在所有可能的解决方法中找出最符合该题所要求的的条件的解决方法。及找出一个最优解。

 遗传操作就是模拟生物基因的遗传的做法。在遗传算法中,通过编码组成初试群体后,遗传操作的任务就是对群体的个体按照它们对环境适应度(适应度评估)施加一定的操作,从而实现优胜劣汰的进化过程。从优化搜索的角度而言,遗传操作可使问题的解,一代又一代地优化,并逼近最优解。遗传算法过程图如图所示:

遗传操作包括以下三个基本算子:选择、交叉、变异。个体遗传算子的操作都是在随机扰动的情况下进行的。因此群体中个体想最优解迁移的规则是随机的。需要强调的是,这种随机化操作和传统的随机搜索方法是有区别的,遗传操作进行高效有向的搜索,而不是如一般随机搜索方法进行无向搜索。

详细讲解部分:略

直接上程序设计吧

求解问题:

求下列函数的最大值 f(x)=9*sin(5x)+8*cos(4x),其中x\in [0,10]

1.初试化种群

%初始化
function pop = initpop(popsize,chromlength)
    pop = round(rand(popsize,chromlength));
    %rand随机产生每一个单元为{0,1}行数为popsize,列数为chromlength的矩阵
    %round对矩阵每一个单元进行园整,这样产生初试种群。
end

initpop.m函数实现种群的初试化

popsize表示种群的大小

chromlength表示染色体(二值数的长度),长度大小取决于变量的二进制编码长度。

2.目标函数值

2.1 二进制数转化为十进制数

...待续,下次再更...

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值