推荐阅读《基于Matlab 遗传算法工具箱的优化计算实现-陈秋莲》这篇论文
关于GAOT工具箱具体信息可自行百度,这里主要看一下GAOT工具箱怎么设置交叉概率和变异概率。
首先看一下GAOT工具箱中ga.m的解释
ga run a genetic algorithm
function [x,endPop,bPop,traceInfo]=ga(bounds,evalFN,evalOps,startPop,opts,
termFN,termOps,selectFN,selectOps,
xOverFNs,xOverOps,mutFNs,mutOps)
Output Arguments:
x - the best solution found during the course of the run
endPop - the final population
bPop - a trace of the best population
traceInfo - a matrix of best and means of the ga for each generation
Input Arguments:
bounds - a matrix of upper and lower bounds on the variables
evalFN - the name of the evaluation .m function
evalOps - options to pass to the evaluation function ([NULL])
startPop - a matrix of solutions that can be initialized
from initialize.m
opts - [epsilon prob_ops display] change required to consider two
solutions different, prob_ops 0 if you want to apply the
genetic operators probabilisticly to each solution, 1 if
you are supplying a deterministic number of operator
applications and display is 1 to output progress 0 for
quiet. ([1e-6 1 0])
termFN - name of the .m termination function (['maxGenTerm'])
termOps - options string to be passed to the termination function
([100]).
selectFN - name of the .m selection function (['normGeomSelect'])
selectOpts - options string to be passed to select after
select(pop,#,opts) ([0.08])
xOverFNS - a string containing blank seperated names of Xover.m
files (['arithXover heuristicXover simpleXover'])
xOverOps - A matrix of options to pass to Xover.m files with the
first column being the number of that xOver to perform
similiarly for mutation ([2 0;2 3;2 0])
mutFNs - a string containing blank seperated names of mutation.m
files (['boundaryMutation multiNonUnifMutation ...
nonUnifMutation unifMutation'])
mutOps - A matrix of options to pass to Xover.m files with the
first column being the number of that xOver to perform
similiarly for mutation ([4 0 0;6 100 3;4 100 3;4 0 0])
那我直接摘取论文中以下解释:
所以从这里看出,大多数情况下GA算法的选择方法是轮盘赌方法,在GAOT工具箱可以使用其他选择方法,而且可以设置选择概率。在交叉操作中,如果你使用GAOT中的arithXover方法,那么交叉概率是随机的:
但是我们可以自己设置啊,比如上图我设置交叉概率为0.4即可。