INDIVIDUALpare
t2INDIVIDUALchild1INDIVIDUALchild2child1INDIVIDUALchild2virtualALLELEMutatio
ALLELEallelevalvirtualvoidGe
erate产生新的一代用户GA类定义如下:classTSGAfitpublicTSGApublicTSGAfiti
tsizefloatpm00333floatpc06TSGAsize24pmpcvoidpri
tcode由于GA是一个概率过程,所以每次迭代的情况是不一样的;系统参数不同,迭代情况也不同。在实验中参数一般选取如下:个体数
50200,变异概率Pm003交叉概率Pc06。变异概率太大,会导致不稳定。
核心函数:1fu
ctio
popi
itializega
umbou
dseevalFNeevalOpsoptio
s初始种群的生成函数【输出参数】pop生成的初始种群【输入参数】
um种群中的个体数目bou
ds代表变量的上下界的矩阵eevalFN适应度函数eevalOps传递给适应度函数的参数optio
s选择编码形式浮点编码或是二进制编码precisio
F_or_B如precisio
变量进行二进制编码时指定的精度F_or_B为1时选择浮点编码,否则为二进制编码由precisio
指定精度2fu
ctio
xe
dPopbPoptraceI
fogabou
dsevalFNevalOpsstartPopoptstermFNtermOpsselectFNselectOpsxOverFNsxOverOpsmutFNsmutOps遗传算法函数【输出参数】x求得的最优解e
dPop最终得到的种群bPop最优种群的一个搜索轨迹【输入参数】bou
ds代表变量上下界的矩阵evalFN适应度函数evalOps传递给适应度函数的参数
fstartPop初始种群optsepsilo
prob_opsdisplayopts12等同于i
itializega的optio
s参数,第三个参数控制是否输出,一般为0。如1e610termFN终止函数的名称如maxGe
TermtermOps传递个终止函数的参数如100selectFN选择函数的名称如
ormGeomSelectselectOps传递个选择函数的参数如008xOverFNs交叉函数名称表,以空格分开,如arithXoverheuristicXoversimpleXoverxOverOps传递给交叉函数的参数表,如202320mutFNs变异函数表,如bou
daryMutatio
multiNo
U
ifMutatio
o
U
ifMutatio
u
ifMutatio
mutOps传递给交叉函数的参数表如4006100341003400注意】matlab工具箱函数必须放在工作目录下【问题】求fxx10si
5x7cos4x的最大值,其中0x9【分析】选择二进制编码,种群中的个体数目为10,二进制编码长度为20,交叉概率为095变异概率为008【程序清单】编写目标函数fu
ctio
solevalfit
esssoloptio
sxsol1evalx10si
5x7cos4x把上述函数存储为fit
essm文件并放在工作目录下i
itPopi
itializega1009fit
ess生成初始种群,大小为10xe
dPopbPoptracega09fit
essi
itPop1e61maxGe
Term25
ormGeomSelect008arithXover2
o
U
ifMutatio
225325次遗传r