Matlab自带遗传算法工具箱简介

Matlab提供遗传算法工具箱(Matlab2010版本之后),方便解决简单的优化问题,官方提示后续可能取消该功能。个人不建议使用工具箱求解数学规划问题,参数设置零散复杂,容易错漏,但可学习作为Demo问题的演示工具。

打开GA工具箱

  • 方式一:命令行输入 >> optimtool
  • 方式二:菜单栏APPOptimization工具箱→Solver中选择ga
工具箱GUI界面

GUI界面使用说明

按从上到下,从左到右的顺序对Matlab自带的遗传算法工具箱GUI界面进行介绍和使用注意事项说明。

Problem Setup and Results 设置与结果

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

  2. Problem 问题

  • Fitness function: 适应度函数,求最小,这里的使用度函数要自己编写,书写格式是“@函数名”。
  • Number of variables: 变量数,必须是整数,即使用这个GUI界面的适应度函数的变量必须是[1×n]的向量,而不能是[m×n]的矩阵。

示例用法

  • 求解f(x)的最小值


    求解f(x)的最小值
  • 编写适应度函数
    适应度函数一般就是目标函数,保存为m函数文件。


    目标函数
  • 参数设置
    在Fitness function(适应度函数)处输入@目标函数名(因为此处传递的是函数句柄所以一定要加@),Number of Variables是指待求变量的个数,此处约束条件是xi是0到0.9pi之间的实数,在Bound处输入,然后点击Start按钮求出结果。


    参数设置
  • 含约束条件的数学规划问题参数设置


    含约束条件的数学规划问题
定义不等式约束
添加不等式约束
  • 含非线性约束条件的数学规划问题参数设置


    含非线性约束条件
非线性约束条件
添加非线性不等式约束
  1. Constraints 约束
  • Linear inequalities: 线性不等式,A*x<=b形式,其中A是矩阵,b是向量。
  • Linear equalities: 线性等式,A*x=b形式,其中A是矩阵,beq是向量。
  • Bounds: 定义域,Lower: 下限,Upper: 上限,列向量形式,每一个位置对应一个变量。
  • Nonlinear constraint function: 非线性约束,用户定义,非线性等式必须写成c=0形式,不等式必须写成c<=0形式。
  • Integer variable indices: 整型变量标记约束,使用该项时Aeq和beq必须为空,所有非线性约束函数必须返回一个空值,种群类型必须是实数编码。举例,若是想让第一个、第三个、第五个变量保持是整数的话,则直接在此处填写[1 3 5]。
  1. Run solver and view results 求解与结果展示
  • Use random states from previous run: 使用前次的状态运行,完全重复前次运行的过程和结果。

Options 选项

population 种群

  1. Population type 编码类型
  • Double vector 实数编码。采用双精度,整数规划的种群类型必须是实数编码。
  • Bit string 二进制编码
  • Custom 自定义
  1. Population size 种群大小
  2. Creation function 生成函数,产生初始种群
  3. Initial population 初始种群,不指定则使用creation function生成,可以指定少于种群数量的种群,由creation function完成剩余的。
  4. Initial scores 初始值,如果不指定,则由计算机计算适应度函数作为初始值,对于整型约束不可用,使用向量表示。
  5. Initial range 初始范围,使用向量矩阵表示,第一行表示范围的下限,第二行表示上限。

Fitness scaling 适应度尺度

  • Rank 等级,将适应度排序,然后编号;
  • Proportional 按比例;
  • Top 按比例选取种群中最高适应度的个体,这些个体有等比例的机会繁衍,其余的个体被淘汰;
  • Shift linear 线性转换;
  • Custom 用户定义;

Selection 依据适应值选择

  • Stochastic uniform:随机均匀分布;
  • Remainder: 残余,取适应值的整数部分进行轮盘赌选择;
  • Uniform:均匀分布,不是一个好方法,但是可以用来做测试;
  • Roulette:轮盘赌算法;
  • Tournament:联赛选择算法;
  • Custom:自定义;

Reproduction 复制,决定如何产生子代

  • Elite count:精英数,直接传到下一代的个体数;
  • Crossover fraction:杂交概率;

Mutation (Mutation function) 突变

  • Use constraint dependent 默认,与约束有关,无约束时使用gaussian,有约束时使用adaptive feasible;
  • Gaussian :利用高斯分布来选取;
  • Uniform:均匀;
  • Adaptive feasible:自适应;
  • Custom:自定义;

Crossover 杂交

  • Scattered:随机生成遗传二进制向量,按0-1杂交;
  • Single point:单点杂交,生成一个数字,该数字代表的位置开始两父代基因交换;
  • Two point:两点交换;
  • Intermediate:媒介,加权平均;
  • Heuristic:启发式算法;
  • Arithmetic:算术平均;
  • Custom:自定义;

Migration 迁移

  • Direction方向:forward n->n 1 ;both 双向;
  • Fraction:指定迁移率,以较小数量种群为标准;
  • Interval:发生迁移的间隔;

Constraint parameters 约束参数

对应于非线性约束求解器

  • Initial penalty: 初始罚函数大于等于1;
  • Penalty factor:处罚因子 大于等于1;

Hybrid function 混合函数

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

  • None
  • Fminsearch 只用于无约束;
  • Patternsearch 约束与无约束;
  • Fminunc 无约束;
  • Fmincon 有约束;

Stopping criteria 停止标准

  • Generations 到达代数;
  • Time limit 时间限制;
  • Fitness limit 适应值限制;
  • Stall generations迟滞代数,经过多代适应值没有明显提升;
  • Stall time limit 迟滞时间限制,经过限定时间适应值没有明显提升;
  • Function tolerance 在迟滞代数内适应度函数值的改变量小于这个值,则停止;
  • Constraint tolerance 约束容忍值;

Plot function 绘图函数

  • Plot interval 绘图间隔;
  • Best fitness 最佳适应度值;
  • Best individual 最佳个体;
  • Distance 个体间平均距离;
  • Expectation 期望;
  • Genealogy 家系;
  • Range 适应度值最小最大平均值;
  • Score diversity 每一代分数的柱状图;
  • Scores 每一代个体的分数;
  • Selection 描绘对每一代贡献的父代;
  • Stopping 停止标准的水平;
  • Max constraint 非线性约束中超出范围的最大值;
  • Custom function 自定义;

Output function 输出函数

  • Custom function: 自定义;

Display to command window

  • Off 不输出;
  • Final 只输出最终值;
  • Iterative 每一次迭代都输出;
  • Diagnose 诊断,每一次迭代都输出,并且诊断问题信息和选项中相对于默认值的改变值;

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

  • In serial 分别独立评价;
  • Vectorized 用同一个函数调用;
  • In parallel 并行处理;

Matlab遗传算法工具箱使用简介
Matlab自带遗传算法工具箱的介绍和使用注意事项
超详细的遗传算法(Genetic Algorithm)解析和TSP求解代码详解

你可能感兴趣的:(Matlab自带遗传算法工具箱简介)