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

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

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

简单的遗传算法实例(MATLAB版)_第1张图片

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

详细讲解部分:略

直接上程序设计吧

求解问题:

求下列函数的最大值 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 二进制数转化为十进制数

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

 

你可能感兴趣的:(进化算法)