数学建模 | MATLAB 学习 | 遗传算法

 遗传算法(Genetic Algorithm)是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法(进化算法),其基本原理是效仿生物界中的“物竞天择、适者生存”的演化法则。通俗来讲,遗传算法是一种解决问题的方法。它模拟大自然中种群在选择压力下的演化,从而得到问题的一个近似解。

 

 遗传算法有三个基本操作:选择(Selection)、交叉(Crossover)和变异(Mutation)

  •   选择。选择的目的是为了从当前群体中选出优良个体,使他们有机会作为父代为下一代繁衍子孙,根据各个个体的适应度值,按照一定的规则或方法从上一代群体中选择出一些优良的个体遗传到下一代种群中,选择的依据是适应性强的个体为下一代贡献一个或多个后代的概率大。
  • 交叉。通过交叉操作可以得到新一代个体,新个体组合了父辈个体的特性,将群体中的各个个体随机搭配成对,对每一个个体,以交叉概率交换它们之间的部分染色体。
  • 变异。对种群中的每一个个体,以变异概率改变某一个或多个基因座上的基因值为其他的等位基因,同生物界中一样,变异发生的概率很低,变异为新个体的产生提供了机会。

 

 

 遗传算法基本步骤:

 1) 编码:GA在进行搜索之前先将解空间的解数据表示成遗传空间的基因型串结构数据,这些串结构数据的不同组合便构成了不同的点。

 2)初始种群的生成:随机产生N个初始串结构数据,每个串结构数据称为一个个体,N个个体构成了一个群体。GA以这个串结构数据作为初始点开始进化。

 3) 适应度评估:适应度表明个体或解的优劣性。不同的问题,适应性函数的定义方式也不同。

 4)(选择适应度高的染色体进行复制)选择:将选择算子作用于群体。选择的目的是把优化的个体直接遗传到下一代或通过配对交叉产生新的个体再遗传到下一代。选择操作是建立在群体中个体的适应度评估基础上的。

 5)交叉:交叉操作是遗传算法中最主要的遗传操作。通过交叉操作可以得到新一代个体,新个体组合了其父辈的特性,交叉体现了信息交换的思想

 6)变异:对群体中的个体串的某些基因座上的基因值作变动。GA中变异发生的概率很低,通常取值很小。

 

 

 遗传算法工具箱:

  MATLAB内嵌遗传算法工具箱.gadst

  Sheffield大学遗传算法工具箱.gadst

  北卡罗莱纳大学遗传算法工具箱.gadst


重点函数解读:

  • Optimtool

 不仅包含了遗传算法的优化问题,带约束的非线性优化、最小最大优化、不带约束的优化、半正定、非线性、方程的求解、模拟退火等。 

有两种启动方法: 

1)在命令行输入optimtool 

2)在MATLAB主界面单击左下角的“Start”按钮,然后依次选择“ToolboxesOptimizationOptimization tool

就会得到如下:(使用MATLAB2016b版本)


 简单的遗传算法可以使用Matlab自带的遗传算法工具箱,但是要从Matlab2010版本之后才会自带这个工具箱,且调用命令也有变化,分别是gatooloptimtoolGUI界面如下图所示: 

1、problem setup and results设置与结果 

(1)Solver:求解程序,选择要用的求解程序(遗传算法,遗传算法多目标等) 

2problem 

 1fitness function适应度函数(问题求解的目标函数),求最小,这里的使用度函数要自己编写,书写格式是“@函数名”。 

 2number of variable变量数,必须是整数,即,使用这个GUI界面的适应度函数的变量必须是[1*n]的向量,而不能是[m*n]的矩阵。

  3constraints约束 

 4linear inequalities线性不等式,A*x<=b形式,其中A是矩阵,b是向量 

 5linear equalities线性等式,A*x=b形式,其中A是矩阵,b是向量 

 6bounds定义域,lower下限,upper上限,列向量形式,每一个位置对应一个变量 

 7nonlinear constraint function非线性约束,用户定义,非线性等式必须写成c=0形式,不等式必须写成c<=0形式 

 8integer variable indices整型变量标记约束,使用该项时Aeqbeq必须为空,所有非线性约束函数必须返回一个空值,种群类型必须是实数编码 

举例,若是想让第一个、第三个、第五个变量保持是整数的话,则直接在此处填写[1 3 5]

  9run solver and view results求解 

use random states from previous run使用前次的状态运行,完全重复前次运行的过程和结果

 

2population (种群的一些设定)

 1population type编码类型 

  1double vector实数编码,采用双精度。整数规划的种群类型必须是实数编码。 

  2bitstring二进制编码。对于生成函数和变异函数,只能选用uniformcustom,对于杂交函数,只能使用 scattered singlepointtwopointcustom不能使用 hybrid functionnonlinear constraint function 

  3custom 自定义 

 2population size:种群大小 

 3creation function:生成函数,产生初始种群 

  1constraint dependent:约束相关。无约束时为uniform,有约束时为feasible population 

  2uniform:均匀分布 

  3feasible population :自适应种群,生成能够满足约束的种群 

 4initial population:初始种群,不指定则使用creation function生成,可以指定少于种群数量的种群,由creation function完成剩余的 

 5initial scores:初始值,如果不指定,则由计算机计算适应度函数作为初始值,对于整型约束不可用,使用向量表示 

 6initial range:初始范围,使用向量矩阵表示,第一行表示范围的下限,第二行表示上限

 

3、fitness scaling:适应度尺度 

 rank:等级。将适应度排序,然后编号 proportional:按比例 

 top:按比例选取种群中最高适应度的个体,这些个体有等比例的机会繁衍,其余的个体被淘汰 

 shift linear:线性转换 

 custom:用户定义  

 

4、selectionselection function)依据适应值选择父代 

 stochastic uniform:随机均匀分布 

 remainder 残余,取适应值的整数部分进行轮盘赌选择

 uniform:不是一个好方法,但是可以用来做测试 

 shift linear:线性转换 

 roulette:轮盘赌算法 

 tournament:联赛选择算法 

 custom:自定义  

 

5、reproduction复制,决定如何产生子代 

 elite count:精英数,直接传到下一代的个体数 

 crossover fraction:杂交概率  

 

6、mutationmutation function)突变 

 use constraint dependent 默认,与约束有关,无约束时使用

 gaussian,有约束时使用

 adaptive feasible 

 gaussian :利用高斯分布来选取 

 uniform:均匀 

 adaptive feasible 

 custom:自定义 

 

7、crossover杂交 

 scattered:随机生成遗传二进制向量,按0-1杂交 

 single point:单点杂交,生成一个数字,该数字代表的位置开始两父代基因交换 

 two point:两点交换 

 intermediate:媒介,加权平均 

 heuristic:启发式算法 

 arithmetic:算术平均 

 custom:自定义 

 

8、migration迁移 

 direction方向:forward n-n+1 both 双向 

 fraction:指定迁移率,以较小数量种群为标准

 interval:发生迁移的间隔  

 

9constraint parameters约束参数,对应于非线性约束求解器 

 initial penalty 初始罚函数大于等于

 penalty factor:处罚因子 大于等于1  

 

10hybrid function混合函数,指定另外一个最小值函数,在遗传算法结束之后计算,在整数值限制的时候不可用。 none 

 fminsearch只用于无约束 

 patternsearch约束与无约束 

 fminunc无约束 

 fmincon有约束  

 

11stopping criteria停止标准 

 generations到达代数 

 time limit时间限制 

 itness limit适应值限制 

 stall generations迟滞代数,经过多代适应值没有明显提升 

 stall time limit 迟滞时间限制,经过限定时间适应值没有明显提升 

 function tolerance 在迟滞代数内适应度函数值的改变量小于这个值,则停止 

 nonlinear constraint tolerance 非线性约束容忍值  

 

12plot function 绘图函数 

 plot interval 绘图间隔  

 best fitness最佳适应度值 

 best individual最佳个体 

 distance个体间平均距离 

 expectation期望 

 genealogy家系 

 range适应度值最小最大平均值 

 score diversity每一代分数的柱状图

 scores每一代个体的分数 

 selection 描绘对每一代贡献的父代 

 stopping停止标准的水平 

 max constraint非线性约束中超出范围的最大值 c

 ustom自定义  

13output function输出函数  

 Custom function: 自定义  

14display to command window off不输出 

 iterative每一次迭代都输出 

 diagnose诊断,每一次迭代都输出,并且诊断问题信息和选项中相对于默认值的改变值 

 final只输出最终值  

15evaluate fitness and constraint functions评价适应度和约束函数 

 in serial 分别独立评价 

 vectorized用同一个函数调用 in parallel 并行处理

 

  • Initializega(新版MATLAB没有了)
  • Ga

案例:一元函数优化、BP神经网络初始权值和阈值优化

  • Normgeomselect
  • Arithxover
  • Nonunifmutation




 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值