核心函数: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
dsevalFNevalOpsstartPopo
pts
termFNtermOpsselectFNselectOpsxOverFNsxOverOpsmutFNsmutO
ps
遗传算法函数
【输出参数】
x求得的最优解
e
dPop最终得到的种群
bPop最优种群的一个搜索轨迹
【输入参数】
bou
ds代表变量上下界的矩阵
evalFN适应度函数
evalOps传递给适应度函数的参数
startPop初始种群
optsepsilo
prob_opsdisplayopts12等同于i
itializega的optio
s参数,
第三个参数控制是否输出,一般为0。如1e610
termFN终止函数的名称如maxGe
Term
termOps传递个终止函数的参数如100
selectFN选择函数的名称如
ormGeomSelect
selectOps传递个选择函数的参数如008
xOverFNs交叉函数名称表,以空格分开,如arithXoverheuristicXoversimpl
eXover
xOverOps传递给交叉函数的参数表,如202320
mutFNs
变
异
函
数
表
,
如
bou
daryMutatio
multiNo
U
ifMutatio
o
U
ifMuta
tio
u
ifMutatio
mutOps传递给交叉函数的参数表如4006100341003400
f【注意】matlab工具箱函数必须放在工作目录下【问题】求fxx10si
5x7cos4x的最大值,其中0x9【分析】选择二进制编码,种群中的个体数目为10,二进制编码长度为20,交叉概率为095变异概率为008【程序清单】
编写目标函数fu
ctio
solevalfit
esssoloptio
sxsol1evalx10si
5x7cos4x
把上述函数存储为fit
essm文件并放在工作目录下
i
itPopi
itializega1009fit
ess生成初始种群,大小为10xe
dPopbPoptracega09fit
essi
itPop1e611maxGe
Term25
ormGeomSelect
008arithXover2
o
U
ifMutatio
225325次遗传迭代
运算借过为:x78562248553当x为78562时,f(x)取最大值248553
注:遗传算法一般用来取得近似最优解,而不是最优解。另外遗传算法的收敛性跟其初始值有关,大家运行上面的命令所得到的借过可能跟我的借过不同或是差别很大。但多执行几次上面的命令(随即取不同的初始群体)一定可以得到近似最优解。
遗传算法实例2
【问题】在-5Xi5i12区间内,求解fx1x220exp02sqrt05x12x22exp05cos2pix
r