GA

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

描述

例子

x= ga (有趣的,nvars)找到一个局部无约束极小值,x对于目标函数,有趣的nvars是尺寸(数设计变量的)有趣的

注意

传递额外的参数(Optimization Toolbox)说明如何向目标函数和非线性约束函数传递额外的参数(如有需要)。

例子

x= ga (有趣的,nvars,一个,b)求局部极小值x有趣的,受线性不等式斧头bGA计算矩阵乘积斧头好像x转置(A * x ')。

例子

x= ga (有趣的,nvars,一个,b,Aeq,BEQ)求局部极小值x有趣的,受线性等式AEQ * X=BEQ斧头b。(设置A = []B = []如果没有线性不等式存在。)GA计算矩阵乘积AEQ * X好像x转置(AEQ * X”)。

例子

x= ga (有趣的,nvars,一个,b,Aeq,BEQ,,乌兰巴托)定义了设计变量的一组上限和下限的,x,从而在这个范围内找到一个解x乌兰巴托。(设置Aeq = []说真的= []如果没有线性等式存在。)

例子

x= ga (有趣的,nvars,一个,b,Aeq,BEQ,,乌兰巴托,nonlcon)将最小化为定义的约束nonlcon。功能nonlcon接受x并返回向量C量表信,分别表示非线性不等式和等式。GA最小化了有趣的这样C(x)的0CEQ(X)= 0。(设置磅= []UB = []如果没有边界存在。)

例子

x= ga (有趣的,nvars,一个,b,Aeq,BEQ,,乌兰巴托,nonlcon,选项)中的值替换默认优化参数后最小化选项。(设置nonlcon = []如果不存在非线性的约束。)创建选项运用optimoptions

例子

x= ga (有趣的,nvars,一个,b[][],,乌兰巴托,nonlcon,INTCON)x= ga (有趣的,nvars,一个,b[][],,乌兰巴托,nonlcon,INTCON,选项)要求变量中列出INTCON取整数值。

注意

当有整数约束GA不接受线性或非线性等式约束,只接受不等式约束。

x= ga (问题)找到最低的问题,在那里问题是一个结构。

例子

(x,FVAL)= ga (___),对于之前的任何输入参数,也将返回FVAL,适应度函数的值为x

例子

(x,FVAL,exitflag,产量)= ga (___)同样的回报exitflag,一个确定算法终止原因的整数,和产量,该结构包含每一代的输出和关于算法性能的其他信息。

例子

(x,FVAL,exitflag,产量,人口,分数)= ga (___)也会返回一个矩阵人口,其行是最后的人口,以及矢量分数,最终群体的分数。

例子

全部收缩

ps_example.m文件附带软件。绘制功能。

ξ= linspace (2300);易= linspace (4300);(X, Y) = meshgrid (xi, yi);Z = ps_example ([X (:), Y (:)));Z =重塑(Z,大小(X));冲浪(X, Y, Z,“MeshStyle”,“没有”)colormap“喷气机”视图(-26,43)xlabel('×(1)')ylabel (“x”(2))标题('PS \ _example(X)')

求这个函数的最小值GA

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);

解决使用约束问题GA

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

约束是满足的约束公差的默认值之内,1 e - 3。计算一下A * X” - B,它应该有负分量。

disp (A * x - b)
0.0010 -5.9990

使用遗传算法来最小化ps_example区域函数X(1)+ X(2)> = 1x(2) == 5 + x(1)

首先,将这两个约束转换为矩阵形式A * x < =Aeq * x =说真的。换句话说,得到x将变量放在表达式的左侧,使不等式变为小于等于形式:

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

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

A = [-1 -1];b = 1;Aeq = [-1];说真的= 5;

解决使用约束问题GA

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

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

disp (A * x - b)
1.0000 e 03
DISP(AEQ * X”  - 贝克)
-9.9989e-04

使用遗传算法来最小化ps_example区域函数X(1)+ X(2)> = 1x(2) == 5 + x(1)。此外,设定界限1 <= x(1) <= 6-3 <= X(2)<= 8

首先,将这两个线性约束转换为矩阵形式A * x < =Aeq * x =说真的。换句话说,得到x将变量放在表达式的左侧,使不等式变为小于等于形式:

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

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

A = [-1 -1];b = 1;Aeq = [-1];说真的= 5;

设置范围乌兰巴托

磅= [1-3];UB = [6〜8];

解决使用约束问题GA

rng默认%的再现性有趣= @ps_example;x = ga(乐趣2 A、b Aeq,说真的,磅,乌兰巴托)
终止优化:适应度值的平均变化小于选择。
x =1×21.0000 - 5.9991

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

disp (A * x - b)
-5.9991
DISP(AEQ * X”  - 贝克)
-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,第二个输出中的等式约束,量表信。保存文件ellipsecons.m您MATLAB®路径上的文件夹中。

类型ellipsecons
功能并[c,CEQ] = ellipsecons(X)C = 2 *×(1)^ 2 + X(2)^ 2  -  3;CEQ =(X(1)1)^ 2  - (X(2)/ 2)^ 4;

包含一个函数句柄ellipsecons作为nonlcon论点。

nonlcon = @ellipsecons;有趣= @ps_example;rng默认%的再现性X = GA(乐趣,2,[],[],[],[],[],[],nonlcon)
优化终止:在健身值平均变化小于options.FunctionTolerance和约束违反小于options.ConstraintTolerance。
x =1×2-0.9766 0.0362

检查非线性约束是在满足x。满足约束条件时c≤0和量表信的默认值内ConstraintTolerance,1 e - 3

测查[c] = nonlcon (x)
c = -1.0911
测查= 5.4645 e-04

使用遗传算法来最小化ps_example区域函数X(1)+ X(2)> = 1x(2) == 5 + x(1)使用约束公差比默认小。

首先,将这两个约束转换为矩阵形式A * x < =Aeq * x =说真的。换句话说,得到x将变量放在表达式的左侧,使不等式变为小于等于形式:

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

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

A = [-1 -1];b = 1;Aeq = [-1];说真的= 5;

为了获得更精确的解,设置一个约束公差1 e-6。并对求解过程进行监控,设置绘图功能。

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

解决最小化问题。

rng默认%的再现性有趣= @ps_example;X = GA(乐趣,2,A,B,AEQ,BEQ,[],[],[],选项)
终止优化:适应度值的平均变化小于选择。

x =1×2-2.0000 - 3.0000

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

disp (A * x - b)
9.9999 e-07
DISP(AEQ * X”  - 贝克)
-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.FunctionTolerance和约束违反小于options.ConstraintTolerance。
x =1×2-5.0000 - -0.0000

利用遗传算法最小化一个整数约束的非线性问题。得到最小值和最小函数值的位置。

IntCon = 1;rng默认%的再现性有趣= @ps_example;一个= [];b = [];Aeq = [];说真的= [];磅= [];乌兰巴托= [];nonlcon = [];[X,FVAL] = GA(乐趣,2,A,B,AEQ,BEQ,LB,UB,nonlcon,INTCON)
优化终止:在点球适应值平均变化小于options.FunctionTolerance和约束违反小于options.ConstraintTolerance。
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)整数值。了解解算器停止的原因以及如何停止GA求最小值,得到exitflag产量结果。另外,在求解过程中绘制观察到的最小目标函数值。

IntCon = 1;rng默认%的再现性有趣= @ps_example;一个= [];b = [];Aeq = [];说真的= [];磅= [];乌兰巴托= [];nonlcon = [];选项= optimoptions(“遗传算法”,“PlotFcn”,@gaplotbestf);[x, fval exitflag、输出]= ga(乐趣2 A、b Aeq,说真的,磅,乌兰巴托,nonlcon, IntCon,选项)

优化终止:在点球适应值平均变化小于options.FunctionTolerance和约束违反小于options.ConstraintTolerance。
x =1×2-5.0000 - -0.0000
FVAL = -1.9178
exitflag = 1
输出=结构体字段:problemtype: 'integerconstraints' rngstate:[1x1的结构]世代:96 funccount:3691的消息: '优化终止:在点球适应值小于options.FunctionTolerance平均变化...' maxconstraint:0

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

IntCon = 1;rng默认%的再现性有趣= @ps_example;一个= [];b = [];Aeq = [];说真的= [];磅= [];乌兰巴托= [];nonlcon = [];[X,FVAL,exitflag,输出,人口​​,分数] = GA(乐趣,2,A,B,AEQ,BEQ,LB,UB,nonlcon,INTCON);
优化终止:在点球适应值平均变化小于options.FunctionTolerance和约束违反小于options.ConstraintTolerance。

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

disp(人口(1:10)):
-5.0000 -0.0000 -5.0000 -0.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
disp(分数(1:10))
-1.9178 -1.9165 - 1.0008 64.0124 25.0011 -1.5126 2.5072 -1.5126 -1.9178

输入参数

全部收缩

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

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

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

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

变量数,指定为正整数。解算器通过长度的行向量nvars有趣的

例子:4

数据类型:

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

一个编码线性不等式

A * x < =,

哪里x的列向量nvars变量X(:),b是与列矢量元素。

例如,指定

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

给这些制约因素:

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

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

数据类型:

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

b编码线性不等式

A * x < =,

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

例如,指定

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

给这些制约因素:

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

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

数据类型:

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

Aeq编码线性等式

Aeq * x =说真的,

哪里x的列向量N变量X(:),BEQ是与列矢量元素。

例如,指定

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

给这些制约因素:

Aeq = [1、2、3、2、4、1];说真的= (10、20);

例子:要指定控制变量之和为1,给予约束Aeq = 1 (1, N)说真的= 1

数据类型:

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

BEQ编码线性等式

Aeq * x =说真的,

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

例如,指定

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

给这些制约因素:

Aeq = [1、2、3、2、4、1];说真的= (10、20);

例子:要指定控制变量之和为1,给予约束Aeq = 1 (1, N)说真的= 1

数据类型:

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

在内部,GA将一个数组到向量磅(:)

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

数据类型:

上界,指定为实向量或双精度数组。乌兰巴托以明智的方式表示上界元素x乌兰巴托

在内部,GA将一个数组乌兰巴托到向量乌兰巴托(:)

例子:UB = [Inf文件; 4; 10]意味着x (2)≤4,x (3)≤10

数据类型:

非线性约束,指定为功能手柄或函数的名称。nonlcon函数是否接受向量或数组x并返回两个数组,c (x)量表(x)

  • c (x)非线性不等式约束的数组在xGA试图满足

    c (x) < = 0

    对于所有c

  • 量表(x)非线性等式约束的数组在吗xGA试图满足

    量表(x) = 0

    对于所有量表信

例如,

X = GA(@ myfun,4,A,B,AEQ,BEQ,LB,UB,@ mycon)

哪里myconMATLAB是一种®等功能

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

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

注意

GA不强制非线性约束得到满足时,PopulationType选项设置为“位”“自定义”

如果INTCON不为空,第二输出nonlcon(量表信)必须为空项([])。

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

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

优化选项,指定为输出optimoptions或结构。

创建选项通过使用optimoptions(推荐)或从优化应用程序导出选项。详情请参阅导入和导出您的工作(优化工具箱)。

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

  • 在价值观{}表示默认值。

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

  • 我*表明GA以不同的方式处理整数约束的选项;这个符号不适用gamultiobj

  • NM表示该选项不适用于gamultiobj

选项GA、整数GA,gamultiobj

选项 描述
ConstraintTolerance

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

对于选项结构,请使用TolCon

正标|{1E-3}

CreationFcn

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

{' gacreationuniform '}|{' gacreationlinearfeasible} *|自定义创建功能

CrossoverFcn

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

{' crossoverscattered '}对于GA,{' crossoverintermediate} *对于gamultiobj|“crossoverheuristic”|“crossoversinglepoint”|“crossovertwopoint”|'crossoverarithmetic'|自定义转换函数

CrossoverFraction

跨界函数产生的下一代人口(不包括精英儿童)的比例。

正标|{0.8}

显示

显示水平。

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

DistanceMeasureFcn

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

对于期权的结构,使用功能句柄,不是一个名字。

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

EliteCount

NM正整数,指定当前代中有多少个体能够存活到下一代。不习惯在gamultiobj

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

FitnessLimit

NM如果适应度函数的值为FitnessLimit,算法暂停。

标量|{} -Inf

FitnessScalingFcn

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

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

FunctionTolerance

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

gamultiobj时,算法停止,当几何平均值的相对变化值蔓延超过options.MaxStallGenerations代数小于options.FunctionTolerance,并最终扩展小于平均价差在过去options.MaxStallGenerations一代又一代。看到gamultiobj算法

对于选项结构,请使用TolFun

正标|{1 e-6}对于GA,{1E-4}对于gamultiobj

HybridFcn

我*在此之后继续优化功能GA终止。指定为名称或功能句柄。

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

gamultiobj,唯一的混合功能是@fgoalattain。看到gamultiobj混合函数

看到何时使用混合函数

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

1×2单元阵列|{@solver, hybridoptions},在那里解算器= fminsearch,patternsearch,fminunc,或fmincon{[]}

InitialPenalty

NM我*惩罚参数的初始值

正标|{10}

InitialPopulationMatrix

用于种子遗传算法的初始种群。有族群大小行和N列,N是变量的个数。你可以通过一个局部种群,意思是小于族群大小行。在这种情况下,遗传算法使用CreationFcn生成剩余的人口成员。看到人口的选择

对于选项结构,请使用InitialPopulation

矩阵|{[]}

InitialPopulationRange

指定初始种群中个体范围的矩阵或向量。适用于gacreationuniform创建函数。GA移和鳞默认的初始范围,以匹配任何有限边界。

对于选项结构,请使用PopInitRange

矩阵或向量|{(-10;10)}无界成分,{[1 e4 + 1; 1 e4 + 1]}对于积分约束问题的无界分量,{(磅;乌兰巴托)}为界的部件,与所述默认范围修改以匹配片面界限。

InitialScoresMatrix

我*初始分数来确定健身。有族群大小行和具有NF列,NF为适应度函数的个数(1对于GA,大于1对于gamultiobj)。你可以通过一个部分分数矩阵,这意味着一个比少族群大小行。在这种情况下,求解器在评估适应度函数时填充分数。

对于选项结构,请使用InitialScores

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

MaxGenerations

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

对于选项结构,请使用

正整数|{100 * numberOfVariables}对于GA,{200 * numberOfVariables}对于gamultiobj

MaxStallGenerations

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

gamultiobj时,算法停止,当几何平均值的相对变化值蔓延超过options.MaxStallGenerations代数小于options.FunctionTolerance,并最终扩展小于平均价差在过去options.MaxStallGenerations一代又一代。看到gamultiobj算法

对于选项结构,请使用StallGenLimit

正整数|{50}对于GA,{100}对于gamultiobj

MaxStallTime

NM如果目标函数没有改进,则算法停止MaxStallTime秒,以秒为单位抽搐toc

对于选项结构,请使用StallTimeLimit

积极的标量| {Inf}

MaxTime

算法在运行之后停止MaxTime秒,以秒为单位抽搐toc。这个限制是在每次迭代之后执行的,所以GA当迭代花费大量时间时,可能超出限制。

对于选项结构,请使用期限

正标|{Inf}

MigrationDirection

的方向迁移。看到迁移选项

'都'|{“向前”}

MigrationFraction

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

标量|{0.2}

MigrationInterval

正整数,指定个体在亚种群之间迁移时发生的代数。看到迁移选项

正整数|{20}

MutationFcn

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

{' mutationgaussian '}对于GA,{' mutationadaptfeasible} *对于gamultiobj|“mutationuniform”|自定义功能突变

NonlinearConstraintAlgorithm

非线性约束算法。看到非线性约束求解算法。选项为不变gamultiobj

对于选项结构,请使用NonlinConAlgorithm

{' auglag '}对于GA,{'罚款'}对于gamultiobj

OutputFcn

的函数GA在每次迭代中调用。指定为函数句柄或函数句柄的单元数组。看到输出函数的选择

对于选项结构,请使用OutputFcns

功能手柄或函数处理的单元阵列|{[]}

ParetoFraction

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

标量|{0.35}

PenaltyFactor

NM我*点球更新参数。

正标|{100}

PlotFcn

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

对于选项结构,请使用PlotFcns

GAgamultiobj:{[]} |' gaplotdistance' |' gaplotgenealogy' |' gaplotselection' |' gaplotscorediversity' |'gaplotscores' |' gaplot' |' gaplotmaxconstr' |自定义绘制函数

GA只有:'gaplotbestf' | 'gaplotbestindiv' | ' gaplotexpected ' | 'gaplotrange'

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

PlotInterval

指定对plot函数的连续调用之间的代数。

正整数|{1}

族群大小

人口规模。

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

PopulationType

数据类型的人群。一定是“doubleVector”对于混合整数问题。

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

GA忽略所有约束时PopulationType被设置为“位”“自定义”。看到人口的选择

SelectionFcn

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

gamultiobj唯一用途“selectiontournament”

{' selectionstochunif '}对于GA,{ 'selectiontournament'}对于gamultiobj|“selectionremainder”|“selectionuniform”|“selectionroulette”|自定义选择函数

StallTest

NM停止测试类型。

“geometricWeighted”|{' averageChange '}

UseParallel

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

真正的|{假}

UseVectorized

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

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

真正的|{假}

例子:optimoptions( 'GA', 'PlotFcn',@ gaplotbestf)

整型变量,指定为从采取的值的正整数的向量1nvars。每个值在INTCON代表x部件被整数值。

注意

INTCON非空的,AeqBEQ必须为空项([]),nonlcon必须返回空的量表信。有关整数编程的更多信息,请参见混合整数遗传算法优化

例子:以指定其中的偶数项x是整数值,设定INTCON据nvar 2:2:

数据类型:

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

fitnessfcn

健身功能

nvars

设计变量数

Aineq

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

Bineq

b向量为线性不等式约束

Aeq

Aeq矩阵为线性等式约束

贝克

BEQ向量为线性等式约束

上下界x

乌兰巴托

上界上x

nonlcon

非线性约束函数

rngstate

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

求解

“遗传算法”

选项

选择使用optimoptions还是从优化应用出口

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

数据类型:结构体

输出参数

全部收缩

解,作为实向量返回。x最好的一点是GA位于其迭代期间。

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

原因GA停止,作为整数返回。

出口标志 意义
1

没有非线性约束- 在在适应度函数的值平均累积变动MaxStallGenerations代数小于FunctionTolerance,约束冲突小于ConstraintTolerance

具有非线性约束- 互补性措施的重要性(见互补措施) 小于√ConstraintTolerance,子问题是利用公差小于解决FunctionTolerance,约束冲突小于ConstraintTolerance

3.

适应度函数的值没有变化MaxStallGenerations代和约束冲突小于ConstraintTolerance

4

比机器精度步骤更小,并且约束违反的量值小于ConstraintTolerance

5

最低的健身限制FitnessLimit到达且约束冲突小于ConstraintTolerance

0

最大代数MaxGenerations超过了。

1

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

-2

没有可行点发现。

-4

拖延时间限制MaxStallTime超过了。

5

时间限制MaxTime超过了。

当有整数约束GA使用罚适应度值而不是适应度值来停止条件。

关于优化过程的信息,返回与这些领域的结构:

  • problemtype- 问题类型,之一:

    • “无约束”

    • “boundconstraints”

    • “linearconstraints”

    • “nonlinearconstr”

    • “integerconstraints”

  • rngstate- 国家MATLAB的随机数生成器,该算法开始之前。您可以使用值rngstate的输出GA。看到复制的结果

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

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

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

  • maxconstraint-最大约束冲突,如果有的话。

最终群体,返回为族群大小——- - - - - -nvars矩阵。的行人口是个体。

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

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

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

更多关于

全部收缩

互补措施

在增广拉格朗日非线性约束求解器中互补措施是向量,其元素为常态cλ,在那里c是否违反非线性不等式约束,且λ是对应的拉格朗日乘子。看到增广拉格朗日遗传算法

提示

  • 将附加参数的函数写入可以调用的独立变量中GA,请参阅传递额外的参数(优化工具箱)。

  • 对于使用人口类型问题双矢量(默认),GA不接受输入类型为的函数复杂。为了解决涉及复杂数据的问题,写你的功能,使他们接受现实载体,通过分离实部和虚部。

算法

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

对于混合整数规划算法的说明,请参见整数遗传算法

对于非线性约束算法的描述,参见非线性约束求解算法

兼容性注意事项

全部展开

行为在R2019b中改变

参考文献

大卫·戈德堡,遗传算法在搜索,优化和机器学习,addison - wesley, 1989。

[2] A. R.康涅狄格州,N. I.M。古尔德,和pH值。L. Toint。“全局收敛的增广拉格朗日算法优化与通用约束和界约束”,数值分析28卷,第2号,545-572,1991页。

[3] A. R. Conn, N. i.m.古尔德,和Ph. L. Toint。“一种全局收敛增广拉格朗日势垒算法,用于一般不等式约束和简单边界的优化”,数学的计算,第66卷,第217号,第261-288页,1997年。

扩展功能

之前介绍过的R2006a