优化算法之遗传算法--入门--工具箱的使用

遗传算法的优点

遗传算法是一种基于生物自然选择与遗传机理的随机搜索与优化方法。遗传算法求解复杂优化问题的巨大潜力及其在工业工程领域的成功应用 ,而受到了广泛关注。Matlab 的遗传算法工具箱具有使用简单方便 ,计算可靠 ,快捷高效和图形结果可视化等特点 ,具有广阔的应用前景。

遗传算法的基本思想

遗传算法模拟物种从低级到高级的演化过程, 即从初始群体出发, 采用优胜劣汰, 适者生存的自然法则选择个体, 通过交叉、变异来产生下一代群体, 逐代演化,直到产生满足条件的个体为止。

遗传算法工具箱的使用

1、初始化

初始化的程序存在于  initialize.m  文件中, 初始化函数用法如下:
Function [ pop ] = initialize ( num , bounds ,evalFN ,evalops , options)
输入参数包括:
        num:群体数量;
        bounds:变量上限和下限组成的矩阵;
        evalfFN:评价函数;
        options:可选参数:[  epsilon float\ binary prec ]
                        epsilon : 表示两代之间的差距;
                        float \ binary:参数取 0 表示采用二进制编码 ,取 1 表示采用实数本身
                        prec :表示变量的精度

2、选择操作

选择或复制操作是决定哪些个体可以进入下一代。
选择算法有:赌轮盘选择法 (roulette) ,锦标赛选择法(tournSelect) 和几何规划排序选择 ( normGeomSelect) 。
采用几何规划排序选择:
function [ newPop ] = normGeomSelect (oldPop ,options)
其中 options 为选择概率 ; oldpop 为旧群体

3、交叉操作

交叉过程是选取 2 个个体作为父代:parent1、parent2,产生出 2 个新的子代个体:  child1 、   child2

算术交叉:

function [ c1 ,c2 ] = arithXover(p1 ,p2 ,bounds ,ops)
该函数会产生一个随机数a; 然后通过父代  p1 p2,得到子代个体 c1 和 c2:

c1=p1\cdot a + p2 \cdot (1 - a)

 4、变异操作

GAOT 提供的非统一变异函数使用方法为:

function [ parent ] = nonUnifMutate (parent ,bounds ,ops)

​​​​​​​parent :父代对应的变量值和适应值;

bounds:变量上限和下限组成的矩阵

5、评价函数

评价函数是评价种群中个体适应度的依据,评价函数根据实际目标函数确定。

6、主程序函数

function [ x , endPop , bPop , traceInfo ] = ga ( bounds , evalFN , evalops , startPop , opts , termFN , termops , selectFN , selectops ,xoverFNs ,xoverops ,mutFNs ,mutops) 

 右边输入参数依次为:

bounds:变量上限和下限组成的矩阵;

evalFN:评价函数;

evalops:评价函数需要输入的参数;

startpop:初始化得到的种群染色体;

opts:参数设置;

termFN:终止函数;

selectFN:选择函数;

xoverFN:交叉函数;

mutFN:变异函数;

你可能感兴趣的:(数学建模)