当前位置:文档之家› 遗传算法及matlab实现

遗传算法及matlab实现


第4部分:运行命令和结果 部分:
Run solver
Use random states from previous run: 重复运算上一次运算过程—运算结果一致。 重复运算上一次运算过程—运算结果一致。 Start、Pause、Stop:开始、暂停、停止。 Start、Pause、Stop:开始、暂停、停止。 Status and results:状态和结果。提示是 results:状态和结果。 否正常计算,以及正常运算的最优结果。 否正常计算,以及正常运算的最优结果。 Final point:最优结果时的参数值。 point:最优结果时的参数值。
选择(Slection) 选择(Slection)
选择(或称为复制)是在种群中选择适 选择(或称为复制) 应度高(函数更加优化) 应度高(函数更加优化)的个体产生新的种 群的过程。 群的过程。遗传算法中的选择操作就是用来 确定如何从父代群体中按某种方法选取哪些 个体遗传到下一代群体中的一种遗传运算, 个体遗传到下一代群体中的一种遗传运算, 用来确定重组或交叉个体。如轮盘赌选择, 用来确定重组或交叉个体。如轮盘赌选择, 随机竞争选择等
遗传算法的定义
遗传算法( Genetic Algorithm :GA)是一种寻求函 遗传算法( GA) 问题)最优解的数学方法。 基本原理是: 数(问题)最优解的数学方法。其基本原理是:模拟自然界 生物繁衍过程中基因重组与进化的自然过程, 生物繁衍过程中基因重组与进化的自然过程,把待解决问题 的参数编成二进制码或十进制码(也可编成其他进制码), 的参数编成二进制码或十进制码(也可编成其他进制码), 即基因,若干基因组成一个染色体(个体), ),许多染色体进 即基因,若干基因组成一个染色体(个体),许多染色体进 行类似于自然选择、配对交叉和变异的运算, 行类似于自然选择、配对交叉和变异的运算,经过多次重复 迭代(即世代遗传)直至得到最后的优化结果。 迭代(即世代遗传)直至得到最后的优化结果。
编码与解码
在遗传算法中如何描述问题的可行解, 在遗传算法中如何描述问题的可行解, 即把一个问题的可行解从其解空间转换到遗 传算法所能处理的搜索空间的转换方法就称 为编码。 为编码。而由遗传算法解空间向问题空间的 转换称为解码。如二进制编码,格雷码编码, 转换称为解码。如二进制编码,格雷码编码, 浮点数编码,多参数级联编码等。 浮点数编码,多参数级联编码等。
第2部分:约束条件 部分:
Linear inequalities(线性不等式):A*x <= b 。其中A是矩阵,b是列向量,书 A*x 写格式如A中填写[1,2,3;12,3,43;1,23,4],b中填写[5;4;7]; Linear equalities (线性等式): Aeq*x = beq 。其中Aeq Aeq*x eq是矩阵,beq eq是列向量, 格式同上; Bounds (边界):变量的最小和最大值。矩阵形式表示,负无穷大为-Inf,正 无穷大为Inf。 Nonlinear constraint function(非线性限制函数) :类似于“Fitness Function” 中的输入,首先生成对应的.M文件,此处输入函数的句柄,调用其中的(非线 性限制)函数。 格式为: function [c,ceq]=game(x) c(1) = (x(1)^2)/9 + (x(2)^2)/4 - 1; ceq = [ ];
遗传算法的计算过程
(随机)产生初始种群

输出结果并结束 是否满足停止准则

计算个体适应度值 选择运算 交叉运算 变异运算
产生新一代种群
随机产生种群
M i n f ( x ) = x1 + x 2 + 0 < xi ≤ 1 1 x − 1 x3 x3
基因1:x1 个体1:初始解1 相当于染色体1 种群 (种群数为2) 个体2:初始解2 相当于染色体2 基因2:x2 基因3:x3 基因1:x1 基因2:x2 基因3:x3
2 x1
9 4 9 4 不 等 式 必 须 是“ ≤ 0”
+
2 x2
≤1 →
2 x1
+
2 x2
−1≤ 0
等 式 不 等 式 都 必 须 返 回 , 若 无 则 为 “ []
第3部分:运算参数 部分:
参数的设置主要影响到运算过程的速度和运算结果的精 准性,两者在很多时候是相互矛盾的。 准性,两者在很多时候是相互矛盾的。 运算参数有很多,均有缺省值,一般都不需要修改。各 运算参数有很多,均有缺省值,一般都不需要修改。 个参数选项的详细信息在参考书中有详细介绍 另外在工具 介绍, 个参数选项的详细信息在参考书中有详细介绍,另外在工具 箱操作界面的右侧也有相应的英文介绍。 箱操作界面的右侧也有相应的英文介绍。
生成.M文件 生成.M文件
定义 对应的函数:编辑并生成适应度 对应的函数: 函数的.M文件 文件——便于工具箱使用时调 函数的.M文件——便于工具箱使用时调 用。
格式: test(x) 格式: function z=test(x) z=具体函数
英文,自由命名
注意事项:一个函数中变量只能是X1,X2,……,不能是x 注意事项:一个函数中变量只能是X1,X2,……,不能是x, y,z;.M文件名无需与函数名 对应。 .M文件名无需与函数名 对应。
交叉(Crossover) 交叉(Crossover)
交叉是按较大的概率从群体中选择两个 个体,交换两个个体的某个或某些位。 个体,交换两个个体的某个或某些位。 如单点交叉,多点交叉等。 如单点交叉,多点交叉等。
例如: 例如: 交叉前: 交叉前: 个体1 00000|01110000000010000 个体1:00000| 个体2 11100|00000111111000101 个体2:11100|00000111111000101 交叉后 : 00000|00000111111000101 00000|00000111111000101 11100|01110000000010000 11100|
例如:一组x1,x2,x3编码为0010 1100 0010 x1,x2,x3编码为 编码为0010 例如:
更高精度
个体(染色体)
基因型 1000101110110101000111
解码
编码
表现型:0.637197
适应度函数( Function) 适应度函数(Fitness Function)
定义:度量个体适应度的函数。 定义:度量个体适应度的函数。 在某种程度上来说, 在某种程度上来说,适应度函数就 相当于实际问题的目标函数, 相当于实际问题的目标函数,只是它只 求最小值,因此, 求最小值,因此,当实际问题是求最大 值时,需要做相应转换。 值时,需要做相应转换。
变异(Mutation) 变异(Mutation)
以较小的概率对个体编码串上的某个或某些位值进 行改变,如二进制编码中0 变为“ 行改变,如二进制编码中0”变为“1”,“1” 变为“0”,进而生成新个体。 变为“ 进而生成新个体。 它决定了遗传算法的局部搜索能力, 它决定了遗传算法的局部搜索能力,同时保持种群 的多样性。交叉运算和变异运算的相互配合, 的多样性。交叉运算和变异运算的相互配合,共同 完成对搜索空间的全局搜索和局部搜索。 完成对搜索空间的全局搜索和局部搜索。
参考书目
MATLAB遗传算法工具箱及应用 MATLAB遗传算法工具箱及应用 niuyongjie的专栏: niuyongjie的专栏: 的专栏 /niuyongjie/archi ve/2009/11/24/4863979.aspx
特点
群体搜索特性:许多传统的搜索方法都是单点搜索,遗传算 群体搜索特性:许多传统的搜索方法都是单点搜索, 法采用的是同时处理群体中多个个体的方法使遗传算法具有 较好的全局搜索性能,不容易陷入局部最优; 较好的全局搜索性能,不容易陷入局部最优; 遗传算法的适应度函数(目标函数)可以解决不连续、不可 遗传算法的适应度函数(目标函数)可以解决不连续、 随机或高度非线性的问题,而且其定义域可以任意设定; 微、随机或高度非线性的问题,而且其定义域可以任意设定; 遗传算法具有可扩展性,易于同别的技术混合使用。 遗传算法具有可扩展性,易于同别的技术混合使用。
第4部分:运行显示 部分:
Plot对话框:运算过程的图形显示界面, Plot对话框:运算过程的图形显示界面,可 对话框 同时选择多项, 同时选择多项,在运算过程中将显示对应的 fitness将显示每一代 运算过程。比如: 运算过程。比如:best fitness将显示每一代 中最佳适应度的函数值; 中最佳适应度的函数值;Best fitness 将显 示每一代最佳个体的取值;Scores将显示每 示每一代最佳个体的取值;Scores将显示每 一代所有个体的取值等。 一代所有个体的取值等。
MATLAB遗传算法工具箱 MATLAB遗பைடு நூலகம்算法工具箱
Matlab遗传算法工具箱操作 Matlab遗传算法工具箱操作
打开工具箱: 打开工具箱:
键入命令:gatool 键入命令: 点击命令: 点击命令:
工具箱界面
1 2 3
4
第1部分:定义函数句柄 部分:
在Fitness Function中输入一个计算适 Function中输入一个计算适 应度函数的. handle) 应度函数的.M文件函数的句柄(handle), 以调用文件中函数。格式: test( 以调用文件中函数。格式:@test(与相 应的M 应的M文件名一致) 在 Number of variance中输入变量个 variance中输入变量个 数
Export to Workspace
将当前问题和参数设置 保存到Matlab工作空间 保存当前问题和参数时 将当前结果的相关信息也 也保存,下次运行保存的 问题时,初始种群为此次 结果的最后种群,而不是重 新产生新种群
相关主题