遗传算法工具箱使用实例
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
遗传算法工具箱的使用
在MATLAB命令行窗口输入gatool,打开遗传算法工具箱:
Solver(求解器):用于选择需要的算法。 Problem:需要解决的问题。
(1)Fitness function:需要优化的目标函数,填写的格式为: @funname,其中funname.m是编写目标函数的M文件,返回一个具体
70 60 50 40 30 20 10 0 -10 -20
0
1
2
3
4
5
6
7
8
9
Best: -10.9692 Mean: -10.9692 10
Best fitness Mean fitness
5
Fitness value
0
-5
-10
-15
0
10
20
30
40
50 60 Generation
70
80
0
10
20
30
40
35 30
50 60 Generation
70
80
90
100
遗传算法求出最小值为: x=3.322,y=-10.2173
25 20 15 10 5 0 -5 -10 -15
0
1
2
3
4
5
6
7
8
9
10
【问题】求f(x)= 5*x+12*sin(3*x)+8*cos(7*x);的最小值,其中0<=x<=9 【分析】选择二进制编码,二进制编码长度为20,交叉概率为0.95,变 异概率为0.08
evalOps:传递给适应度函数的参数
startPop:初始种群
opts:选择编码形式(浮点编码或二进制编码) [1e-6 1 0] 1e-6:变量进行二进制编码时指定的精度,1:选择浮点编码,
0:为二进制编码
termFN:终止函数的名称 termOps:传递给终止函数的参数,一般为需要的遗传代数
遗传算法工具箱使用实例
遗传算法运算流程:
Step 1:对遗传算法的运行参数进行赋值。参数包括种群规模、变量 个数、交叉概率、变异概率以及遗传运算的终止进化代数。 Step 2:建立区域描述器。求解变量的约束条件,设置变量的取值范 围。 Step 3:在Step 2的变量取值范围内,随机产生初始群体,代入适应 度函数计算其适应度值。 Step 4:执行比例选择算子进行选择操作。 Step 5:按交叉概率对交叉算子执行交叉操作。 Step 6:按变异概率执行离散变异操作。 Step 7:计算Step 6得到局部最优解中每个个体的适应值,并执行最 优个体保存策略。 Step 8:判断是否满足遗传运算的终止进化代数,不满足则返回Step 4,满足则输出运算结果。
options:选择编码形式(浮点编码或二进制编码)precision F_or_B
Precision:变量进行二进制编码时指定的精度,F_:选择浮点编码, _B:为二进制编码
遗传算法函数: Function[x,endPop,bPop,traceInfo]=ga(bounds,evalFN,evalOps,startPop,
(3)Bounds:填写独立变量的取值范围。在Lower中填写变量的取值下界,
的M文件nonlcon.m,则在此处填写@nonlcon。
Run solver and view results运行求解器并观察结果:
点击Start即可开始运行遗传算法。Current iteration中将显示当前
运行的代数。Final point栏中显示最优解对应的变量的取值。
的个数。其中第一行描述初始种群中变量
的取值下限,第二行描述初始种群中变量 的取值上限。
Fitness scaling:变换适应度函数值的函数句柄。 Elite count:直接保留上一代的个体的个数。 Crossover fraction:交叉的概率。 Migration中,指定迁移的方向,概率,和频率。 Stopping criteria中,指定结束条件。Generations和time limit指定代数和时 间的最大极限。 Fitness limit指定fitness值相差小于某一阈值时就可以收敛了。 Stall generation和stall time limit指经历多少代或多久,最优值都没有出现 变化时即收敛。 Plot functions与图形输出有关,plot interval指定多少代输出一次,默认为 1.best fitness和best invividual表示将最优值和相应个体输出到图像上。 Display 通过command window输出到命令窗口。有off,final,interative, diagnose 4个选择。
selectFN:选择函数的名称
selectOps:传递给选择函数的参数 xOverFNs:交叉函数名称表,以空格分开
xOverOps:传递给交叉函数的参数表
mutFNs:变异函数表 mutOps:传递给交叉函数的参数表
【问题】求f(x)=x^2-7*x+2; 的最小值,其中0<=x<=10 【分析】选择二进制编码,二进制编码长度为20,交叉概率为0.95,变异概率 为0.08 %编写目标函数 function y=f(x) y=x^2-7*x+2; %把上述函数存储为f.m文件并放在工作目录 下 使用fplot('x^2-7*x+2',[0,10]);画出目标函数,与遗传算法求出的最
Initial population初始种群,如果不指
定初始种群,则系统将运用创建建函数创 建初始种群。
Initial scores初始得分,如果此处没有
定义初始得分,则系统应用适应度函数来 计算初始得分。
Initial range初始范围,用于指定初始
种群中的各变量的上下限。初始范围用一 个矩阵表示,该矩阵行数为2,列数为变量
的进化特性,搜素过程中不需要问题的内在性质,对于任意形式的
目标函数和约束,无论是线性的还是非线性的,离散的还是连续的 都可处理。
2.进化算子的各态历经性使得遗传算法能够非常有效地进行概
率意义的全局搜索。 3.遗传算法对于各种特殊问题可以提供极大的灵活性来混合构
造领域独立的启发式,从而保证算法的有效性。
核心函数:
初始种群的生成函数: Function[pop]=initializega(num,bounds,eevalFN,eevalOps,options) 输出参数: pop:生成的初始种群 输入参数: num:种群中的个体数目
bounds:代表变量的上下界的矩阵
eevalFN:适应度函数 eevalOps:传递给适度函数的参数
Option部分是遗传算法参数的设定:
Population种群参数设定: Population type编码方式:有浮点编码和
二进制编码,默认为Double vector。
Population size种群大小:默认为20,定 义每一代种群的个体数量。种群规模越大,遗 传算法的运行速度越慢。 Creation function创建函数:创建初始种 群。
%编写目标函数 function y=f(x) y=5*x+12*sin(3*x)+8*cos(7*x); %把上述函数存储为f.m文件并放在工作目录下
使用fplot(‘y=5*x+12*sin(3*x)+8*cos(7*x)’,[0,9]);画出目标函数,与 遗传算法求出的最优解对比,验证是否正确。
opts,…termFN,termOps,selectOps,xOverFNs,xOverOps,mutFNs,mutOps)
输出参数: x:求得的最优解
endPop:最终得到的种群
bPop:最优种群的一个搜索轨迹 traceInfo :每一代种群的最优个体和均值
输入参数:
bounds :代表变量上下界的矩阵 evalFN:适应度函数
90
100
70 60 50 40 30 20 10 0 -10 -20
遗传算法求出最小值为: x=1.38,y=-10.9692
根据原函数可以看出求出的 最优解与实际最优解基本相等。
0
1
2
3
4
5
6
7
8
9
遗传算法是一种全局优化概率算法,主要的优点有 :
1.遗传算法对所求解的优化问题没有太多的数学要求,由于他
遗传算法相比较于精确算法存在以下缺点:
1.需要多次迭代,需要Hale Waihona Puke Baidu长的时间来获得优解。
2.可能无法获得最优解,只能获得伪最优解。
数值。
(2)Number of variables:目标函数输入变量的数目。
Constraints(约束):
(1)Linear inequalities线性不等式约束:表示为:A*x<=b,填写矩阵A和
向量b的信息。
(2)Linear equalities线性等式约束:表示为:Aeq*x=beq,填写矩阵Aeq 和向量beq的信息。 Upper中填写变量的取值上界,均以向量形式表示。 (4)Nonlinear constraint function非线性约束函数:编写非线性约束函数
优解对比,验证是否正确。
35 30 25 20 15 10 5 0 -5 -10 -15
0
1
2
3
4
5
6
7
8
9
10
Best: -10.2183 Mean: -10.2173 -1 -2 -3 -4
Best fitness Mean fitness
Fitness value
-5 -6 -7 -8 -9 -10 -11