主要内容

遗传算法

利用遗传算法求函数的最小值

描述

例子

x= ga (有趣的据nvar求一个局部无约束最小值,x,到目标函数,有趣的据nvar尺寸(设计变量的数量)是有趣的

请注意

传递额外参数解释如何在必要时将额外参数传递给目标函数和非线性约束函数。

例子

x= ga (有趣的据nvar一个b求局部极小值x有趣的,受线性不等式约束* xb遗传算法计算矩阵乘积* x好像x转置(A * x ').

例子

x= ga (有趣的据nvar一个bAeq说真的求局部极小值x有趣的,服从线性等式Aeq * x说真的而且* xb.(设置一个= []而且b = []如果不存在线性不等式。)遗传算法计算矩阵乘积Aeq * x好像x转置(Aeq * x ').

例子

x= ga (有趣的据nvar一个bAeq说真的乌兰巴托定义一组设计变量的下界和上界,x,从而在值域内找到解x乌兰巴托.(设置Aeq = []而且说真的= []如果不存在线性等式。)

例子

x= ga (有趣的据nvar一个bAeq说真的乌兰巴托nonlcon中定义的约束约束最小化nonlcon.这个函数nonlcon接受x返回向量C而且量表信,分别表示非线性不等式和不等式。遗传算法最小化了有趣的这样C (x)0而且Ceq(x) = 0.(设置磅= []而且乌兰巴托= []如果不存在边界。)

例子

x= ga (有趣的据nvar一个bAeq说真的乌兰巴托nonlcon选项中的值替换默认优化参数,使之最小化选项.(设置nonlcon = []如果不存在非线性约束。)创建选项使用optimoptions

例子

x= ga (有趣的据nvar一个bAeq说真的乌兰巴托nonlconintconx= ga (有趣的据nvar一个bAeq说真的乌兰巴托nonlconintcon选项要求中列出的变量intcon取整数值。

请注意

当有整数约束时,遗传算法不接受非线性不等式约束,只接受非线性不等式约束。

x= ga (问题求最小值问题中描述的结构问题

例子

xfval= ga(___,对于任何先前的输入参数,也会返回fval的适应度函数值x

例子

xfvalexitflag输出= ga(___同样的回报exitflag,表示算法终止原因的整数,以及输出,该结构包含每一代的输出和关于算法性能的其他信息。

例子

xfvalexitflag输出人口分数= ga(___也返回一个矩阵人口,它的行是最终的总体,和一个向量分数,即最终种群的分数。

例子

全部折叠

ps_example.m文件在运行此示例时包含。画出函数。

Yi = linspace(-4,4,300);[X,Y] = meshgrid(xi,yi);Z = ps_example([X(:),Y(:)]);Z =重塑(Z,大小(X));冲浪(X, Y, Z,“MeshStyle”“没有”) colormap“喷气机”视图(-26年,43)包含(“x”(1)) ylabel (“x”(2))标题(' ps \ _example (x)的

图中包含一个轴对象。标题为p s _ e x a m p le (x)的axis对象包含一个类型为surface的对象。

求这个函数的最小值遗传算法

rng默认的%用于再现性X = ga(@ps_example,2)
优化终止:适应度值的平均变化小于options.FunctionTolerance。
x =1×2-4.6793 - -0.0860

利用遗传算法来最小化ps_example对区域的作用X (1) + X (2) >= 1而且X (2) <= 5 + X (1).运行此示例时包含此函数。

首先,将两个不等式约束转换为矩阵形式A*x <= b.换句话说,得到x不等式左边的变量,使两个不等式都小于等于

-x(1) -x(2) <= -1

-x(1) + x(2) <= 5

A = [-1,-1;1,1];B = [-1;5];

用求解约束问题遗传算法

rng默认的%用于再现性Fun = @ps_example;x = ga(fun,2,A,b)
优化终止:适应度值的平均变化小于options.FunctionTolerance。
x =1×20.9992 - 0.0000

约束满足在约束容差的默认值内,1 e - 3.要看到这一点,计算一下A*x' - b,它应该有负分量。

disp(A*x' - b)
0.0008 - -5.9992

利用遗传算法来最小化ps_example对区域的作用X (1) + X (2) >= 1而且X (2) == 5 + X (1).运行此示例时包含此函数。

首先,将两个约束转换为矩阵形式A*x <= b而且Aeq*x = beq.换句话说,得到x表达式左边的变量,并将不等式转化为小于或等于形式:

-x(1) -x(2) <= -1

-x(1) + x(2) == 5

A = [-1 -1];B = -1;Aeq = [-1 1];Beq = 5;

用求解约束问题遗传算法

rng默认的%用于再现性Fun = @ps_example;x = ga(fun,2,A,b,Aeq,beq)
优化终止:适应度值的平均变化小于options.FunctionTolerance。
x =1×2-2.0005 - 2.9995

检查约束是否满足默认值ConstraintTolerance1 e - 3

disp(A*x' - b)
1.0000 e 03
disp(Aeq*x' - beq)
-1.5494 e-05

利用遗传算法来最小化ps_example对区域的作用X (1) + X (2) >= 1而且X (2) == 5 + X (1).的ps_example函数在运行此示例时包含。另外,设置边界1 <= x(1) <= 6而且-3 <= x(2) <= 8

首先,将两个线性约束转换为矩阵形式A*x <= b而且Aeq*x = beq.换句话说,得到x表达式左边的变量,并将不等式转化为小于或等于形式:

-x(1) -x(2) <= -1

-x(1) + x(2) == 5

A = [-1 -1];B = -1;Aeq = [-1 1];Beq = 5;

设置范围而且乌兰巴托

Lb = [1 -3];Ub = [6 8];

用求解约束问题遗传算法

rng默认的%用于再现性Fun = @ps_example;x = ga(fun,2,A,b,Aeq,beq,lb,ub)
优化终止:适应度值的平均变化小于options.FunctionTolerance。
x =1×21.0000 - 6.0000

检查线性约束是否满足默认值ConstraintTolerance1 e - 3

disp(A*x' - b)
-6.0000
disp(Aeq*x' - beq)
-7.9765 e-08

利用遗传算法来最小化ps_example对区域的作用 2 x 1 2 + x 2 2 3. 而且 x 1 + 1 2 x 2 / 2 4 .的ps_example函数在运行此示例时包含。

要做到这一点,请使用函数ellipsecons.m在第一个输出中返回不等式约束,c,和第二个输出中的等式约束,量表信.的ellipsecons函数在运行此示例时包含。检查ellipsecons代码。

类型ellipsecons
函数[c,ceq] = ellipsecons(x) c = 2*x(1)^2 + x(2)^2 - 3;Ceq = (x(1)+1)^2 - (x(2)/2)^4;

的函数句柄ellipsecons随着nonlcon论点。

Nonlcon = @ellipsecons;Fun = @ps_example;rng默认的%用于再现性X = ga(fun,2,[],[],[],[],[],[],[],[],[],[],[],非lcon)
优化终止:适应度值的平均变化小于选项。FunctionTolerance而且constraint violation is less than options.ConstraintTolerance.
x =1×2-0.9766 - 0.0362

检查非线性约束是否满足x.约束条件满足时c≤0和量表信= 0到的默认值ConstraintTolerance1 e - 3

[c,ceq] = nonlcon(x)
C = -1.0911
Ceq = 5.4645e-04

利用遗传算法来最小化ps_example对区域的作用X (1) + X (2) >= 1而且X (2) == 5 + X (1)使用小于默认值的约束容差。的ps_example函数在运行此示例时包含。

首先,将两个约束转换为矩阵形式A*x <= b而且Aeq*x = beq.换句话说,得到x表达式左边的变量,并将不等式转化为小于或等于形式:

-x(1) -x(2) <= -1

-x(1) + x(2) == 5

A = [-1 -1];B = -1;Aeq = [-1 1];Beq = 5;

为获得更精确的解,可设置约束公差为1 e-6.为了监控解算器的进度,设置一个绘图函数。

选项= optimoptions(“遗传算法”“ConstraintTolerance”1 e-6“PlotFcn”, @gaplotbestf);

解决最小化问题。

rng默认的%用于再现性Fun = @ps_example;x = ga(fun,2,A,b,Aeq,beq,[],[],[],选项)
优化终止:适应度值的平均变化小于options.FunctionTolerance。

{

x =1×2-2.0000 - 3.0000

检查线性约束是否满足1 e-6

disp(A*x' - b)
9.9967 e-07
disp(Aeq*x' - beq)
-2.9701 e-08

利用遗传算法来最小化ps_example函数受限于x (1)整数形式。运行此示例时包含此函数。

Intcon = 1;rng默认的%用于再现性Fun = @ps_example;A = [];B = [];Aeq = [];Beq = [];Lb = [];Ub = [];Nonlcon = [];x = ga(fun,2,A,b,Aeq,beq,lb,ub,nonlcon,intcon)
优化终止:惩罚适应度值的平均变化小于选项。FunctionTolerance和constraint违例要小于options. constraintolerance。
x =1×2-5.0000 - -0.0834

利用遗传算法最小化整数约束的非线性问题。同时获得最小值和最小函数值的位置。目标函数,ps_example,在运行此示例时包含。

Intcon = 1;rng默认的%用于再现性Fun = @ps_example;A = [];B = [];Aeq = [];Beq = [];Lb = [];Ub = [];Nonlcon = [];[x,fval] = ga(fun,2,A,b,Aeq,beq,lb,ub,nonlcon,intcon)
优化终止:惩罚适应度值的平均变化小于选项。FunctionTolerance和constraint违例要小于options. constraintolerance。
x =1×2-5.0000 - -0.0834
Fval = -1.8344

将这个结果与没有约束的问题的解决方案进行比较。

[x,fval] = ga(fun,2)
优化终止:适应度值的平均变化小于options.FunctionTolerance。
x =1×2-4.6906 - -0.0078
Fval = -1.9918

利用遗传算法来最小化ps_example函数约束为x (1)整数值。的ps_example函数在运行此示例时包含。了解解算器停止的原因和如何停止的遗传算法搜索一个最小值,得到exitflag而且输出结果。另外,随着求解器的进展,绘制最小观测目标函数值。

Intcon = 1;rng默认的%用于再现性Fun = @ps_example;A = [];B = [];Aeq = [];Beq = [];Lb = [];Ub = [];Nonlcon = [];选项= optimoptions(“遗传算法”“PlotFcn”, @gaplotbestf);[x,fval,exitflag,output] = ga(fun,2,A,b,Aeq,beq,lb,ub,nonlcon,intcon,options)

{

优化终止:惩罚适应度值的平均变化小于选项。FunctionTolerance和constraint违例要小于options. constraintolerance。
x =1×2-5.0000 - -0.0834
Fval = -1.8344
Exitflag = 1
输出=带字段的结构:问题类型:'integerconstraints' rngstate: [1x1 struct] generations: 86 funccount: 3311 message: '优化终止:惩罚适应度值的平均变化小于选项. functiontolerance…' maxconstraint: 0 hybridflag: []

利用遗传算法来最小化ps_example函数约束为x (1)整数值。的ps_example函数在运行此示例时包含。获得所有输出,包括最终的总体和分数向量。

Intcon = 1;rng默认的%用于再现性Fun = @ps_example;A = [];B = [];Aeq = [];Beq = [];Lb = [];Ub = [];Nonlcon = [];[x,fval,exitflag,output,population,scores] = ga(fun,2,A,b,Aeq,beq,lb,ub,nonlcon,intcon);
优化终止:惩罚适应度值的平均变化小于选项。FunctionTolerance和constraint违例要小于options. constraintolerance。

检查最终总体的前10个成员及其相应的分数。请注意,x (1)为所有这些总体成员的整数值。整数遗传算法算法只生成整数可行总体。

disp(人口(1:10)):
1.0e+03 * -0.0050 -0.0001 -0.0050 -0.0001 -1.6420 0.0027 -1.5070 0.0010 -0.4540 0.0104 -0.2530 -0.0011 -0.1210 -0.0003 -0.1040 0.1314 -0.0140 -0.0010 0.0160 -0.0002
disp(分数(1:10))
1.0e+06 * -0.0000 -0.0000 2.6798 2.2560 0.2016 0.0615 0.0135 0.0099 0.0001 0.0000

输入参数

全部折叠

目标函数,指定为函数句柄或函数名。写出目标函数接受长度为行的向量据nvar并返回一个标量值。

“UseVectorized”选择是真正的,写有趣的接受流行——- - - - - -据nvar矩阵,流行是当前的种群大小。在这种情况下,有趣的返回与的长度相同的向量流行包含适应度函数值。确保有趣的不假设任何特定的大小流行,因为遗传算法即使在向量化计算中也可以通过一个群体的单个成员。

例子:Fun = @(x)(x-[4,2]).^2

数据类型:字符|function_handle|字符串

变量数,指定为正整数。求解器传递长度的行向量据nvar有趣的

例子:4

数据类型:

线性不等式约束,指定为实矩阵。一个是一个——- - - - - -据nvar矩阵,是不等式的个数。

一个编码线性不等式

A*x <= b

在哪里x列向量是据nvar变量x (:),b列向量是元素。

例如,指定

x1+ 2x2≤10
3.x1+ 4x2≤20
5x1+ 6x2≤30日

给出这些约束条件:

A = [1,2;3,4;5,6];B = [10;20;30];

例子:要指定控制变量的和小于等于1,请给出约束条件A = ones(1,N)而且B = 1

数据类型:

线性不等式约束,指定为实向量。b是一个元素的相关向量一个矩阵。如果你通过了b作为行向量,解算器内部转换b对列向量b (:)

b编码线性不等式

A*x <= b

在哪里x列向量是N变量x (:),一个矩阵的大小——- - - - - -N

例如,指定

x1+ 2x2≤10
3.x1+ 4x2≤20
5x1+ 6x2≤30日

给出这些约束条件:

A = [1,2;3,4;5,6];B = [10;20;30];

例子:要指定控制变量的和小于等于1,请给出约束条件A = ones(1,N)而且B = 1

数据类型:

线性等式约束,指定为实矩阵。Aeq是一个——- - - - - -据nvar矩阵,是等式的个数。

Aeq编码线性等式

Aeq*x = beq

在哪里x列向量是N变量x (:),说真的列向量是元素。

例如,指定

x1+ 2x2+ 3x3.= 10
2x1+ 4x2+x3.= 20,

给出这些约束条件:

Aeq = [1,2,3;2,4,1];Beq = [10;20];

例子:要指定控制变量的和为1,请给出约束条件Aeq = ones(1,N)而且Beq = 1

数据类型:

线性等式约束,指定为实向量。说真的是一个元素的相关向量Aeq矩阵。如果你通过了说真的作为行向量,解算器内部转换说真的对列向量说真的(:)

说真的编码线性等式

Aeq*x = beq

在哪里x列向量是N变量x (:),Aeq矩阵的大小微地震——- - - - - -N

例如,指定

x1+ 2x2+ 3x3.= 10
2x1+ 4x2+x3.= 20,

给出这些约束条件:

Aeq = [1,2,3;2,4,1];Beq = [10;20];

例子:要指定控制变量的和为1,请给出约束条件Aeq = ones(1,N)而且Beq = 1

数据类型:

下界,指定为实向量或双精度数组。中元素的下界x乌兰巴托

在内部,遗传算法转换数组对向量磅(:)

例子:lb = [0;-Inf;4]意味着X(1)≥0X(3)≥4

数据类型:

上界,指定为实向量或双精度数组。乌兰巴托中元素的上界x乌兰巴托

在内部,遗传算法转换数组乌兰巴托对向量乌兰巴托(:)

例子:ub = [Inf;4;10]意味着X(2)≤4X(3)≤10

数据类型:

非线性约束,指定为函数句柄或函数名。nonlcon函数接受向量或数组吗x并返回两个数组,c (x)而且量表(x)

  • c (x)非线性不等式的约束数组是在x遗传算法试图满足

    C (x) <= 0

    对于所有c

  • 量表(x)非线性等式约束的数组是在x遗传算法试图满足

    Ceq (x) = 0

    对于所有量表信

例如,

x = ga(@myfun,4,A,b,Aeq,beq,lb,ub,@mycon)

在哪里mycon是一个MATLAB®函数如

函数[c,ceq] = mycon(x) c =…计算x上的非线性不等式ceq =…计算x处的非线性等式。
有关更多信息,请参见非线性约束

要了解如何使用向量化约束,请参见矢量化的约束

请注意

遗传算法不强制满足非线性约束时PopulationType选项设置为“位”“自定义”

如果intcon是不是空的,第二输出的nonlcon量表信)必须为空项([]).

有关如何遗传算法使用nonlcon,请参阅非线性约束求解算法

数据类型:字符|function_handle|字符串

的优化选项,指定为的输出optimoptions或者一个结构。

optimoptions中列出的选项斜体.看到optimoptions隐藏的选项

  • {}表示默认值。

  • {} *表示存在线性约束时的默认值,对于MutationFcn当有边界时也是如此。

  • 我*指示整数约束的默认值,或指示整数约束的特殊考虑因素。

  • 纳米指示该选项不应用于gamultiobj

选项遗传算法而且gamultiobj

选项 描述
ConstraintTolerance

确定非线性约束的可行性。同时,max (sqrt (eps), ConstraintTolerance)确定线性约束的可行性。

对于选项结构,使用TolCon

正标量|{1 e - 3}

CreationFcn

创建初始总体的函数。指定为内置创建函数或函数句柄的名称。看到人口的选择

{' gacreationuniform '}|{' gacreationlinearfeasible} *|“gacreationnonlinearfeasible”|{' gacreationuniformint '}我*遗传算法|{' gacreationsobol '}我*gamultiobj|自定义创建功能

CrossoverFcn

算法用来创建交叉子结点的函数。指定为内置交叉函数或函数句柄的名称。看到交叉选项

{' crossoverscattered '}遗传算法{' crossoverintermediate} *gamultiobj|{' crossoverlaplace '}我*|“crossoverheuristic”|“crossoversinglepoint”|“crossovertwopoint”|“crossoverarithmetic”|自定义交叉功能

CrossoverFraction

交叉函数所创造的下一代人口比例,不包括精英子女。

正标量|{0.8}

显示

显示级别。

“关闭”|“通路”|“诊断”|{'最后'}

DistanceMeasureFcn

函数,用于计算个体的距离度量。指定为内置距离测量函数或函数句柄的名称。该值适用于决策变量或设计空间(基因型)或功能空间(表型)。默认的“distancecrowding”是在功能空间(表型)。为gamultiobj只有。看到多目标的选择

对于选项结构,使用函数句柄,而不是名称。

{' distancecrowding '}意思和{@distancecrowding,“表现型”}|{@distancecrowding,基因型的}|自定义距离函数

EliteCount

纳米一个正整数,指定当前一代中有多少个体能保证存活到下一代。不用于gamultiobj

正整数|{装天花板(0.05 * PopulationSize)}|{0.05 *(默认PopulationSize)}对于混合整数问题

FitnessLimit

纳米如果适应度函数达到的值FitnessLimit时,算法停止。

标量|{无穷}

FitnessScalingFcn

缩放适应度函数值的函数。指定为内置缩放函数或函数句柄的名称。选项不可用gamultiobj

{' fitscalingrank '}|“fitscalingshiftlinear”|“fitscalingprop”|“fitscalingtop”|自定义适应度缩放功能

FunctionTolerance

如果最佳适应度函数值的平均相对变化超过,则算法停止MaxStallGenerations代数小于等于FunctionTolerance.如果StallTest“geometricWeighted”,则加权平均相对变化小于或等于时,算法停止FunctionTolerance

gamultiobj,当算法停止几何平均的相对变化值的蔓延超过选项。米axStallGenerations代数小于选项。FunctionTolerance,最终价差小于过去的平均价差选项。米axStallGenerations一代又一代。看到gamultiobj算法

对于选项结构,使用TolFun

正标量|{1 e-6}遗传算法{1}的军医gamultiobj

HybridFcn

我*之后继续优化的函数遗传算法终止。作为名称或函数句柄指定。

或者,指定混合函数及其选项的单元格数组。看到ga Hybrid命令功能

gamultiobj,唯一的杂化函数为@fgoalattain.看到gamultiobj Hybrid函数

当问题有整数约束时,不能使用混合函数。

看到何时使用混合函数

函数名或句柄|'fminunc' | 'fmincon' | {[]}

1 × 2单元格数组|{@solver, hybridoptions},在那里求解器= fminsearchpatternsearchfminunc,或fmincon{[]}

InitialPenalty

纳米我*惩罚参数的初始值

正标量|{10}

InitialPopulationMatrix

初始种群用于遗传算法的种子。已达PopulationSize行和N列,N是变量的数量。你可以通过部分总体,也就是小于PopulationSize行。在这种情况下,遗传算法使用CreationFcn生成剩余的种群成员。看到人口的选择

对于选项结构,使用InitialPopulation

矩阵|{[]}

InitialPopulationRange

指定初始种群中个体范围的矩阵或向量。适用于gacreationuniform创建函数。遗传算法移动和缩放默认初始范围以匹配任何有限边界。

对于选项结构,使用PopInitRange

矩阵或向量|{(-10; 10)}对于无界分量,{[1 e4 + 1; 1 e4 + 1]}对于整数约束问题的无界分量,{(磅;乌兰巴托)}对于有界组件,将默认范围修改为匹配单边边界

InitialScoresMatrix

用于确定适应度的初始分数。已达PopulationSize行和Nf列,Nf为适应度函数的个数(1遗传算法,大于1gamultiobj).你可以传递一个部分分数矩阵,意思是小于PopulationSize行。在这种情况下,求解器在评估适应度函数时填写分数。

对于选项结构,使用InitialScores

单目标|列向量,多目标|矩阵{[]}

MaxGenerations

算法停止前的最大迭代次数。

对于选项结构,使用一代又一代

正整数|{100 * numberOfVariables}遗传算法{200 * numberOfVariables}gamultiobj

MaxStallGenerations

如果最佳适应度函数值的平均相对变化超过,则算法停止MaxStallGenerations代数小于等于FunctionTolerance.如果StallTest“geometricWeighted”,则加权平均相对变化小于或等于时,算法停止FunctionTolerance

gamultiobj,当算法停止几何平均的相对变化值的蔓延超过选项。米axStallGenerations代数小于选项。FunctionTolerance,最终价差小于过去的平均价差选项。米axStallGenerations一代又一代。看到gamultiobj算法

对于选项结构,使用StallGenLimit

正整数|{50}遗传算法{100}gamultiobj

MaxStallTime

纳米如果目标函数没有改进,算法将停止MaxStallTime秒,用抽搐而且toc

对于选项结构,使用StallTimeLimit

积极的标量| {Inf}

MaxTime

算法运行后停止MaxTime秒,用抽搐而且toc.这个限制是在每次迭代之后强制执行的,所以遗传算法当迭代花费大量时间时,可能会超出限制。

对于选项结构,使用期限

正标量|{Inf}

MigrationDirection

迁移方向。看到迁移选项

“两个”|{“向前”}

MigrationFraction

从0到1的标量,指定每个子种群中迁移到不同子种群的个体的比例。看到迁移选项

标量|{0.2}

MigrationInterval

正整数,表示个体在亚种群之间的迁移所发生的代数。看到迁移选项

正整数|{20}

MutationFcn

产生变异子代的函数。指定为内置突变函数或函数句柄的名称。看到突变的选择

{' mutationgaussian '}遗传算法没有约束|{' mutationadaptfeasible} *gamultiobj遗传算法约束|{' mutationpower '}我*|“mutationpositivebasis”|“mutationuniform”|自定义突变函数

NonlinearConstraintAlgorithm

非线性约束算法。看到非线性约束求解算法.不可更改的选项gamultiobj

对于选项结构,使用NonlinConAlgorithm

{' auglag '}遗传算法{“惩罚”}gamultiobj

OutputFcn

的函数遗传算法在每次迭代中调用。指定为函数句柄或函数句柄的单元格数组。看到输出函数选项

对于选项结构,使用OutputFcns

函数句柄或函数句柄|的单元格数组{[]}

ParetoFraction

从0到1的标量,指定当解算器从更高的前沿选择个体时,保留在第一个帕累托前沿的个体的比例,为gamultiobj只有。看到多目标的选择

标量|{0.35}

PenaltyFactor

纳米我*惩罚更新参数。

正标量|{100}

PlotFcn

绘制由算法计算的数据的函数。指定为内置绘图函数、函数句柄或内置名称或函数句柄的单元格数组的名称。看到绘图选项

对于选项结构,使用PlotFcns

遗传算法gamultiobj{[]} |' gaplotdistance' |' gaplotgenealogy' |' gaplotselection' |' gaplotscorediversity' |'gaplotscores' |' gaplotstop ' |' gaplotmaxconstr' |自定义绘图函数

遗传算法只有:'gaplotbestf' | 'gaplotbestindiv' | 'gaplotexpectation' | ' gaplottrange '

gamultiobj只有:'gaplotpareto' | 'gaplotparetodistance' | 'gaplotrankhist' | 'gaplotspread'

PlotInterval

正整数,指定连续调用绘图函数之间的代数。

正整数|{1}

PopulationSize

人口规模。

正整数|{50}numberOfVariables <= 5{200}否则|{最小(最大(10 *据nvar, 40), 100)}对于混合整数问题

PopulationType

总体的数据类型。必须“doubleVector”对于混合整数问题。

“位”|“自定义”|{' doubleVector '}

遗传算法忽略所有约束,当PopulationType设置为“位”“自定义”.看到人口的选择

SelectionFcn

选择交叉和突变子代的父代的函数。指定为内置选择函数或函数句柄的名称。

gamultiobj只使用“selectiontournament”

{' selectionstochunif '}遗传算法{' selectiontournament '}gamultiobj|“selectionremainder”|“selectionuniform”|“selectionroulette”|自定义选择功能

StallTest

纳米停止测试类型。

“geometricWeighted”|{' averageChange '}

UseParallel

并行计算适应度和非线性约束函数。看到向量化和并行选项(用户功能评估)而且如何在全局优化工具箱中使用并行处理

真正的|{假}

UseVectorized

指定函数是否向量化。看到向量化和并行选项(用户功能评估)而且向量化适应度函数

对于选项结构,使用矢量化用价值观“上”“关闭”

真正的|{假}

例子:optimoptions(“遗传算法”,“PlotFcn”,@gaplotbestf)

整数变量,指定为一个正整数向量,从1据nvar.中的每个值intcon代表一个x整数值的组件。

请注意

intcon非空的,nonlcon必须返回空量表信.有关整数规划的更多信息,请参见混合整数ga优化

例子:来指定偶数项x是整数吗intcon据nvar 2:2:

数据类型:

问题描述,指定为包含这些字段的结构。

fitnessfcn

健身功能

据nvar

设计变量数量

Aineq

一个线性不等式约束的矩阵

Bineq

b线性不等式约束的向量

Aeq

Aeq矩阵的线性等式约束

说真的

说真的线性等式约束的向量

上的下界x

乌兰巴托

上限值x

nonlcon

非线性约束函数

intcon 整数变量的下标
rngstate

字段重置随机数生成器的状态

解算器

“遗传算法”

选项

使用以下方法创建的选项optimoptions或者是期权结构

您必须指定字段fitnessfcn据nvar,选项.其余的是可选的遗传算法

数据类型:结构体

输出参数

全部折叠

解,作为实向量返回。x最好的一点是这个吗遗传算法在迭代过程中定位。

目标函数在解处的值,作为实数返回。一般来说,fval有趣的(x)

原因,遗传算法停止,以整数形式返回。

出口标志 意义
1

无非线性约束-适应度函数值的平均累积变化MaxStallGenerations代数小于FunctionTolerance,约束违反小于ConstraintTolerance

有非线性约束-互补性措施的大小(见互补措施)小于√ConstraintTolerance时,子问题用小于的公差来解决FunctionTolerance,约束违反小于ConstraintTolerance

3.

的适应度函数值没有变化MaxStallGenerations代与约束违反小于ConstraintTolerance

4

步长小于机床精度且约束违反的幅度小于ConstraintTolerance

5

最低健康限度FitnessLimit达到且约束违反小于ConstraintTolerance

0

最大代数MaxGenerations超过了。

-1

由输出函数或绘图函数终止的优化。

-2

找不到可行点。

4

失速时限MaxStallTime超过了。

5

时间限制MaxTime超过了。

当有整数约束时,遗传算法使用惩罚适合度值代替停止条件的适合度值。

关于优化过程的信息,作为包含以下字段的结构返回:

  • problemtype-问题类型,其中之一:

    • 无约束的

    • “boundconstraints”

    • “linearconstraints”

    • “nonlinearconstr”

    • “integerconstraints”

  • rngstateMATLAB随机数生成器的状态,在算法开始之前。中的值可以使用rngstate再现…的输出遗传算法.看到复制的结果

  • 一代又一代-计算的代数。

  • funccount-适应度函数的评价次数。

  • 消息—算法终止的原因。

  • maxconstraint-最大约束违反(如有)。

  • hybridflag- hybrid函数退出标志。涉及HybridFcn选项.不适用于gamultiobj

最终的填充,返回为aPopulationSize——- - - - - -据nvar矩阵。一排排的人口是个体。

最终分数,作为列向量返回。

  • 对于非整数问题,最终得分为行的适应度函数值人口

  • 对于整数问题,最终得分为种群成员的惩罚适应度值。看到整数ga算法

更多关于

全部折叠

互补措施

在增广拉格朗日非线性约束求解器中,采用了互补措施向量的范数是哪些元素cλ,在那里c非线性不等式约束违反,和λ为对应的拉格朗日乘子。看到增广拉格朗日遗传算法

提示

  • 编写带有附加参数的自变量函数遗传算法,请参阅传递额外参数

  • 对于使用填充类型的问题双矢量(默认),遗传算法不接受输入类型为的函数复杂的.要解决涉及复杂数据的问题,可以通过分离实部和虚部来编写函数,使它们接受实向量。

算法

有关遗传算法的描述,请参见遗传算法是如何工作的

有关混合整数规划算法的说明,请参见整数ga算法

有关非线性约束算法的描述,请参见非线性约束求解算法

选择功能

应用程序

优化活动编辑器任务提供了一个可视化界面遗传算法

参考文献

[1]戈德堡,大卫E。搜索、优化与机器学习中的遗传算法, Addison-Wesley, 1989。

A. R.康恩,N. I. M.古尔德,L.托因特博士。具有一般约束和简单边界的全局收敛增广拉格朗日优化算法数值分析杂志,第28卷第2期,第545-572页,1991年。

A. R.康恩,N. I. M.古尔德,L.托因特博士。具有一般不等式约束和简单边界的全局收敛增广拉格朗日势垒优化算法计算数学,第66卷,第217期,261-288页,1997年。

扩展功能

版本历史

R2006a之前介绍

全部展开