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求解代码详解

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,884评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,347评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,435评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,509评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,611评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,837评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,987评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,730评论 0 267
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,194评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,525评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,664评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,334评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,944评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,764评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,997评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,389评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,554评论 2 349