遗传算法

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

描述

实例

x= GA(有趣的,据nvar)找到一个局部无约束极小值,x,到目标函数,有趣的据nvar维度(设计变量的数量)是有趣的

请注意

传递额外的参数(优化工具箱)说明如何在必要时将额外参数传递给目标函数和非线性约束函数。

实例

x= GA(有趣的,据nvar,A.,B)找到局部最小值x有趣的,服从线性不等式* xB遗传算法计算矩阵乘积* x好像x是转置的(A*x')。

实例

x= GA(有趣的,据nvar,A.,B,Aeq,说真的)找到局部最小值x有趣的,服从线性等式Aeq * x=说真的* xB.(放一个= []b = []如果不存在线性不等式)。遗传算法计算矩阵乘积Aeq * x好像x是转置的(Aeq * x ')。

实例

x= GA(有趣的,据nvar,A.,B,Aeq,说真的,,乌兰巴托)定义一组设计变量的上下限,x,以便在范围内找到解决方案x乌兰巴托.(放Aeq=[]说真的= []如果不存在线性等式。)

实例

x= GA(有趣的,据nvar,A.,B,Aeq,说真的,,乌兰巴托,nonlcon)使最小值服从于nonlcon.这个函数nonlcon接受x并返回向量CCeq,分别表示非线性不等式和等式。遗传算法最小化有趣的这样C (x)0量表(x) = 0.(放lb=[]乌兰巴托= []如果没有边界的话。)

实例

x= GA(有趣的,据nvar,A.,B,Aeq,说真的,,乌兰巴托,nonlcon,选项)中的值替换默认优化参数选项.(放nonlcon = []如果不存在非线性约束。)创建选项使用最佳选择

实例

x= GA(有趣的,据nvar,A.,B[] [],,乌兰巴托,nonlcon,IntCon)x= GA(有趣的,据nvar,A.,B[] [],,乌兰巴托,nonlcon,IntCon,选项)要求所列的变量IntCon取整个值。

请注意

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

x= GA(问题)求最小值问题,在那里问题是一个结构。

实例

[x,fval] = GA(___),对于任何以前的输入参数,也返回fval,健身功能的值x

实例

[x,fval,出口滞后,输出] = GA(___)也退货出口滞后,一个识别算法终止的原因的整数,输出,该结构包含每一代的输出以及有关算法性能的其他信息。

实例

[x,fval,出口滞后,输出,人口,分数] = GA(___)也返回一个矩阵人口,其中的行是最终的填充,以及一个向量分数,即最终人口的分数。

例子

全部折叠

这个ps_example.m文件随软件一起发布。绘制函数。

席=林空间(-623);yi=linspace(-4,4300);[X,Y]=meshgrid(xi,yi);Z=ps_示例([X(:),Y(:)]);Z=重塑(Z,尺寸(X));冲浪(X,Y,Z,'meshstyle',“没有”)ColorMap.'喷射'视图(-26年,43)包含(“x”(1)) ylabel (“x”(2))标题(' ps \ _example (x)的)

使用以下命令查找此函数的最小值:遗传算法

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

用遗传算法最小化ps_example区域职能X (1) + X (2) >= 1X (2) <= 5 + X (1)

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

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

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

一个= [1,1;1,1];b =(1、5);

遗传算法

rng默认的%的再现性有趣= @ps_example;x = ga(乐趣2 A, b)
优化终止:适应度值的平均变化小于选项。
x =1×20.9990 - -0.0000

约束满足于约束公差的默认值内,1E-3.要看到这一点,请计算* x - b,应具有负分量。

显示(A*x'-b)
0.0010 - -5.9990

用遗传算法最小化ps_example区域职能X (1) + X (2) >= 1X (2) == 5 + X (1)

首先,将这两个约束转换为矩阵形式A * x < =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默认的%的再现性有趣= @ps_example;x = ga(乐趣2 A、b、Aeq beq)
优化终止:适应度值的平均变化小于选项。
x =1×2-2.0000 2.9990

检查约束是否满足于默认值ConstraintTolerance,1E-3

显示(A*x'-b)
1.0000 e 03
disp (Aeq * x”——beq)
-9.9989 e-04

用遗传算法最小化ps_example区域职能X (1) + X (2) >= 1X (2) == 5 + X (1).此外,设置界限1<=x(1)<=6-3 <= x(2) <= 8

首先,将两个线性约束转换为矩阵形式A * x < =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默认的%的再现性有趣= @ps_example;x = ga(乐趣2 A、b Aeq,说真的,磅,乌兰巴托)
优化终止:适应度值的平均变化小于选项。
x =1×21.0000 5.9991

检查线性约束是否满足默认值的范围ConstraintTolerance,1E-3

显示(A*x'-b)
-5.9991
disp (Aeq * x”——beq)
-9.0713 e-04

用遗传算法最小化ps_example区域职能 2. x 1. 2. + x 2. 2. 3. ( x 1. + 1. ) 2. = ( x 2. / 2. ) 4.

为此,首先编写一个函数ellipsecons.m在第一个输出中返回不等式约束,C,和第二个输出中的等式约束,ceq.保存文件ellipsecons.m到您的MATLAB®路径中的一个文件夹。

类型椭圆秒
c = 2*x(1)^2 + x(2)^2 - 3;= (x(1)+1)^2 - (x(2)/2)^4;

包含一个函数句柄椭圆秒随着nonlcon争论。

nonlcon = @ellipsecons;有趣= @ps_example;rng默认的%的再现性x = ga(有趣,2 ,[],[],[],[],[],[], nonlcon)
优化终止:适应度值的平均变化小于选项。FunctionTolerance和Constraint violation is less than options.ConstraintTolerance.
x =1×2-0.9766 - 0.0362

检查非线性约束在x。当C≤0和ceq= 0到默认值ConstraintTolerance,1E-3

[c,ceq]=非LCON(x)
c = -1.0911
ceq=5.4645e-04

用遗传算法最小化ps_example区域职能X (1) + X (2) >= 1X (2) == 5 + X (1)使用小于默认值的约束容限。

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

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

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

a = [-1 -1];b = -1;AEQ = [-1 1];BEQ = 5;

要获得更准确的解决方案,请设置约束公差1E-6。若要监视解算器进度,请设置绘图功能。

选择= optimoptions (“嘎”,“约束宽容”1 e-6“PlotFcn”, @gaplotbestf);

解决最小化问题。

rng默认的%的再现性有趣= @ps_example;x = ga(乐趣2 A、b Aeq,说真的 ,[],[],[], 选项)
优化终止:适应度值的平均变化小于选项。

x =1×2-2.0000 3.0000.

检查线性约束是否满足以下条件:1E-6

显示(A*x'-b)
9.9999 e-07
disp (Aeq * x”——beq)
-9.8695 e-07

用遗传算法最小化ps_example函数受x(1)是一个整数。

IntCon=1;rng默认的%的再现性有趣= @ps_example;一个= [];b = [];Aeq = [];说真的= [];磅= [];乌兰巴托= [];nonlcon = [];x = ga(乐趣2 A、b Aeq,说真的,磅,乌兰巴托,nonlcon, IntCon)
优化终止:惩罚适应度值的平均变化小于选项。函数容忍度和约束违背小于options. constraintolerance。
x =1×2-5.0000 - -0.0000

用于遗传算法,以最小化整数约束的非线性问题。获取最小值和最小函数值的位置。

IntCon=1;rng默认的%的再现性有趣= @ps_example;一个= [];b = [];Aeq = [];说真的= [];磅= [];乌兰巴托= [];nonlcon = [];[x, fval] = ga(乐趣2 A、b Aeq,说真的,磅,乌兰巴托,nonlcon, IntCon)
优化终止:惩罚适应度值的平均变化小于选项。函数容忍度和约束违背小于options. constraintolerance。
x =1×2-5.0000 - -0.0000
fval = -1.9178

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

[x, fval] = ga(有趣,2)
优化已终止:超过最大生成数。
x =1×2-4.7121 0.0051
fval = -1.9949

用遗传算法最小化ps_example功能受限x(1)整数值。理解解算器停止的原因和如何停止遗传算法查找最小值,获取出口滞后输出结果。此外,随着解算器的进行,绘制观察到的最小目标函数值。

IntCon=1;rng默认的%的再现性有趣= @ps_example;一个= [];b = [];Aeq = [];说真的= [];磅= [];乌兰巴托= [];nonlcon = [];选择= optimoptions (“嘎”,“PlotFcn”, @gaplotbestf);[,FVAL,EXITFLAG,输出] = GA(有趣,2,A,B,AEQ,BEQ,LB,UB,NONLCON,INTCON,选项)

优化终止:惩罚适应度值的平均变化小于选项。函数容忍度和约束违背小于options. constraintolerance。
x =1×2-5.0000 - -0.0000
fval = -1.9178
exitflag = 1
输出=带字段的结构:问题类型:'integerconstraints' rngstate: [1x1 struct] generations: 96 funccount: 3691 message: 'Optimization terminated: average change in the penalty fitness value less than options.FunctionTolerance…“maxconstraint: 0

用遗传算法最小化ps_example功能受限x(1)整数值。获得所有的输出,包括最终的总体和分数向量。

IntCon=1;rng默认的%的再现性有趣= @ps_example;一个= [];b = [];Aeq = [];说真的= [];磅= [];乌兰巴托= [];nonlcon = [];[x, fval exitflag、输出人口,分数)= ga(乐趣2 A、b Aeq,说真的,磅,乌兰巴托,nonlcon, IntCon);
优化终止:惩罚适应度值的平均变化小于选项。函数容忍度和约束违背小于options. constraintolerance。

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

disp(人口(1:10)):
-5.0000 -0.0000 -5.0000 -5.0000 -5.0000 - 0.0014 -6.0000 0.0008 -13.0000 -0.0124 -10.0000 0.0011 -4.0000 -0.0010 0 0.0072 -4.0000 0.0010 -5.0000 -0.0000 - 0.00000
disp(分数(1:10))
-1.9178 -1.9178 -1.9165 1.0008 64.0124 25.0011 -1.5126 2.5072 -1.5126 -1.9178

输入参数

全部折叠

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

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

例子:有趣= @ (x) (x - (4,2)) ^ 2

数据类型:字符|功能手柄|字符串

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

例子:4.

数据类型:

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

A.编码M线性不等式

A * x < =,

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

例如,指定

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

给这些约束:

= [1, 2, 3, 4, 5, 6);b =(10、20、30);

例子:要指定控制变量的和为1或更小,请给出约束条件一个= 1 (1,N)b=1

数据类型:

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

B编码M线性不等式

A * x < =,

在哪里x列向量是N变量x (:),A.矩阵的大小是多少M——- - - - - -N

例如,指定

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

给这些约束:

= [1, 2, 3, 4, 5, 6);b =(10、20、30);

例子:要指定控制变量的和为1或更小,请给出约束条件一个= 1 (1,N)b=1

数据类型:

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

Aeq编码线性等式

aeq * x = beq,

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

例如,指定

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

给这些约束:

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

例子:要指定控制变量的和为1,请给出约束条件AEQ = ONE(1,N)beq=1

数据类型:

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

说真的编码线性等式

aeq * x = beq,

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

例如,指定

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

给这些约束:

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

例子:要指定控制变量的和为1,请给出约束条件AEQ = ONE(1,N)beq=1

数据类型:

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

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

例子:磅=[0;无穷;4)意味着x(1)≥0,x(3)≥4

数据类型:

上限,指定为真正的矢量或双打数组。乌兰巴托表示上限元素明智x乌兰巴托

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

例子:乌兰巴托= (Inf; 4; 10)意味着x(2)≤4,x(3)≤ 10

数据类型:

非线性约束,指定为函数句柄或函数名。nonlcon是一个接受向量或数组的函数x返回两个数组,c (x)ceq(x)

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

    c (x) < = 0

    的所有条目C

  • ceq(x)是一组非线性等式约束x遗传算法试图满足

    量表(x) = 0

    的所有条目ceq

例如,

x = ga (@myfun 4 A、b Aeq,说真的,磅,乌兰巴托,@mycon)

在哪里mycon是一个MATLAB®功能如

功能[c,ceq] = mycon(x)c = ...%计算x的非线性不等式。CEQ = ...%计算X的非线性等于。
有关更多信息,请参见非线性约束(优化工具箱)。

要学习如何使用向量化约束,请参见矢量化限制

请注意

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

如果IntCon是不是空的,第二个输出nonlcon(ceq)必须是空的条目([])。

了解如何遗传算法使用nonlcon看见非线性约束求解算法

数据类型:字符|功能手柄|字符串

优化选项,指定为输出最佳选择或者一个结构。

创建选项通过使用最佳选择(推荐)或从优化应用中导出选项。具体操作请参见导入和导出您的工作(优化工具箱)。

最佳选择隐藏中列出的选项斜体.看到Options隐藏的选项

  • {}表示默认值。

  • {} *表示存在线性约束时的默认值,以及突变还有当有界限的时候。

  • 我*表明遗传算法处理不同的约束的选项;这种表示法不适用于gamultiobj

  • 纳米表示该选项不适用于gamultiobj

选择遗传算法, 整数遗传算法,gamultiobj

选项 描述 价值观
ConstraintTolerance

确定非线性约束的可行性。此外,max (sqrt (eps), ConstraintTolerance)确定关于线性约束的可行性。

对于期权结构,请使用TolCon

积极的标量|{1 e - 3}

CreationFcn

我*创建初始填充的函数。指定为内置创建函数或函数句柄的名称。请参阅人口选择

{' gacreationuniform '}|{'GACreationLinearAbility'}*|创建自定义函数

交叉

我*算法用于创建交叉子子的功能。指定为内置交叉函数或函数句柄的名称。看到交叉选项

{''横穿镜头'}遗传算法,{'crossoverintermediate'}*gamultiobj|“crossoverheuristic”|“crossoversinglepoint”|“交叉点”|“crossoverarithmetic”|自定义转换函数

CrossoverFraction

跨界功能产生的下一代人口比例,不包括精英子女。

积极的标量|{0.8}

显示

显示级别。

'离开'|“国际热核实验堆”|“诊断”|{'最后'}

distancemeasurefcn.

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

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

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

EliteCount

纳米正整数,指定当前一代中保证生存到下一代的个体数。在中不使用gamultiobj

正整数|{装天花板(0.05 * PopulationSize)}|{0.05 *(默认人群化)}整数的问题

适用范围

纳米若适应度函数为适用范围,算法暂停。

标量|{无穷}

FitnessScalingFcn

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

{' fitscalingrank '}|“fitscalingshiftlinear”|“fitscalingprop”|'fitscalingtop'|自定义适应度标度函数

FunctionTolerance

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

gamultiobj,算法停止时,相对变化的几何平均值的扩散选项。MaxStallGenerations世代少于选项.功能公差最后的价差小于过去的平均价差选项。MaxStallGenerations一代又一代。看到gamultiobj算法

对于期权结构,请使用塔尔芬

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

HybridFcn

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

或者,指定混合函数及其选项的单元格数组。请参阅GA混合功能

gamultiobj,唯一的混合函数是@福格拉坦.看到gamultiobj混合函数

看到何时使用混合功能

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

1 × 2单元阵列|{@solver,hybridoptions},在那里Solver = fminsearch.,PatternSearch.,fminunc,或fmincon{[]}

InitialPenalty

纳米我*惩罚参数初值

积极的标量|{10}

initialpopulationmatrix.

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

对于期权结构,请使用InitialPopulation

矩阵|{[]}

InitialPopulationRange

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

对于期权结构,请使用PopInitRange

矩阵或者向量|{(-10; 10)}对于无限的组件,{[-1e4+1;1e4+1]}对于整数约束问题的无界分量,{[LB; UB]}对于有界组件,修改默认范围以匹配单边边界。

InitialScoresMatrix

我*用来确定适合度的初始分数。有PopulationSize行,Nf列,Nf是适应度函数的个数(1.遗传算法,大于1.gamultiobj)。你可以通过部分分数矩阵,也就是分数小于PopulationSize在这种情况下,解算器在评估适应度函数时填写分数。

对于期权结构,请使用InitialScores

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

最大世代

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

对于期权结构,请使用一代又一代

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

MaxStallGenerations

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

gamultiobj,算法停止时,相对变化的几何平均值的扩散选项。MaxStallGenerations世代少于选项.功能公差最后的价差小于过去的平均价差选项。MaxStallGenerations一代又一代。看到gamultiobj算法

对于期权结构,请使用失速极限

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

MaxStallTime

纳米如果目标函数没有改进,则算法停止MaxStallTime秒,以抽搐toc

对于期权结构,请使用StallTimeLimit

正标量| {Inf}

MaxTime.

运行after后算法停止MaxTime.秒,以抽搐toc.每次迭代后强制执行此限制遗传算法当迭代花费大量时间时,可能会超过该限制。

对于期权结构,请使用时限

积极的标量|{Inf}

迁移转向

迁移方向。请参阅迁移选项

“两个”|{'向前'}

迁移汇编

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

标量|{0.2}

迁徙Interval.

正整数指定亚步骤之间的个人迁移之间的几代数量。看到迁移选项

正整数|{20}

突变

我*产生突变子的功能。指定为内置突变函数或函数句柄的名称。看到突变的选择

{' mutationgaussian '}遗传算法,{' mutationadaptfeasible} *gamultiobj|“mutationuniform”|定制的变异函数

NonlinearConstraintAlgorithm

非线性约束算法。看到非线性约束求解算法.选择不变的gamultiobj

对于期权结构,请使用NonlinConAlgorithm

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

outputfcn.

函数遗传算法每次迭代都呼叫。指定为函数句柄或功能句柄阵列。看到输出函数的选择

对于期权结构,请使用OutputFcns

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

帕累托分离

从0到1的标量,指定当求解器从更高的前沿选择个体时,保持在第一个Pareto前沿的个体比例gamultiobj只有。看到多目标的选择

标量|{0.35}

PenaltyFactor

纳米我*点球更新参数。

积极的标量|{100}

绘图仪

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

对于期权结构,请使用绘图仪

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

遗传算法仅:“gaplotbestf”|“gaplotbestindiv”|“gaplotexpectation”|“gaplotrange”

gamultiobj仅:'gaplotpareto' | 'gaplotparetodistance' | 'gaplotrankhist' | 'gaplotspread'

绘图间隔

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

正整数|{1}

PopulationSize

人口规模。

正整数|{50}numberOfVariables < = 5,{200}否则|{min(max(10 * nvars,40),100)}整数的问题

PopulationType

总体的数据类型。必须'doublevector'对于混合整数问题。

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

遗传算法忽略所有约束:PopulationType被设定为'bitstring'“自定义”.看到人口选择

SelectionFcn

我*选择交叉和突变的孩子的父母的功能。指定为内置选择函数或函数句柄的名称。

gamultiobj只使用“selectiontournament”

{'selectionstochunif'}遗传算法,{' selectiontournament '}gamultiobj|'选择余数'|“选择制服”|“selectionroulette”|自定义选择功能

StallTest

纳米停止测试类型。

“geometricWeighted”|{' averageChange '}

UseParallel

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

真正的|{假}

UseVectorized

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

对于期权结构,请使用矢量化有价值“开”'离开'

真正的|{假}

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

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

请注意

什么时候IntCon是不是空的,Aeq说真的必须为空项([]),及nonlcon必须返回空ceq。有关整数规划的更多信息,请参阅混合整数遗传算法优化

例子:将偶数项指定为x是整数值,IntCon据nvar 2:2:

数据类型:

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

适合性

健身功能

据nvar

设计变量数

Aineq.

A.线性不等式约束的矩阵

倍耐克

B线性不等式约束的向量

Aeq

Aeq线性等式约束的矩阵

说真的

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

上下界x

乌兰巴托

上限x

nonlcon

非线性约束函数

rngstate

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

解算器

“嘎”

选项

选择使用最佳选择或从优化应用程序导出

创建问题通过从优化应用程序导出问题,如导入和导出您的工作(优化工具箱)。

数据类型:结构

输出参数

全部折叠

解,返回实向量。x这是最好的一点吗遗传算法位于迭代期间。

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

原因,遗传算法已停止,作为整数返回。

退出旗帜 意义
1.

没有非线性约束-适应度函数值的平均累积变化MaxStallGenerations世代少于FunctionTolerance,约束违背小于ConstraintTolerance

具有非线性约束-互补性度量的大小(见互补措施)少于√ConstraintTolerance时,子问题用小于的公差求解FunctionTolerance,约束违背小于ConstraintTolerance

3.

健身功能的价值没有改变MaxStallGenerations代和约束违背小于ConstraintTolerance

4.

步长小于机器精度,约束违背小于ConstraintTolerance

5.

最低的健身限制适用范围达到且约束违背小于ConstraintTolerance

0

最大世代数最大世代超过。

-1

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

-2

没有找到可行点。

-4

失速时间限制MaxStallTime超过。

-5

时间限制MaxTime.超过。

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

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

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

    • 无约束的

    • “boundconstraints”

    • 'linearconstraints'

    • 'nonlinearconstr'

    • “integerconstraints”

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

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

  • funccount—适应度函数的计算次数。

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

  • maxconstraint—最大约束违背(如果有)。

最终的人口,返回为PopulationSize——- - - - - -据nvar矩阵。的行人口是个体。

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

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

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

更多关于

全部折叠

互补措施

在增强拉格朗日非线性约束求解器中,互补测度元素所在的向量的范数是多少Cλ,在那里C是非线性不等式约束违法行为,λ是相应的拉格朗日乘数。请参阅增广拉格朗日遗传算法

提示

  • 编写一个函数,在可被调用的独立变量上附加参数遗传算法看见传递额外的参数(优化工具箱)。

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

算法

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

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

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

兼容性的考虑

展开全部

R2019b中的行为发生了变化

参考

[1] Goldberg, David E.,搜索、优化和机器学习中的遗传算法艾迪生·韦斯利,1989年。

A. R. Conn, n.i.m. Gould,和Ph. L. Toint。“具有一般约束和简单边界的全局收敛增广拉格朗日优化算法”,数值分析学报, 1991年第28卷第2期545-572页。

A. R. Conn, n.i.m. Gould,和Ph. L. Toint。“具有一般不等式约束和简单界的全局收敛增广拉格朗日势垒优化算法”,数学的计算, 1997年第66卷,第217号,261-288页。

扩展功能

之前介绍过的R2006a