主要内容

遗传算法

使用遗传算法找到最小的函数

描述

例子

x= ga (有趣的,据nvar)发现当地的一个无约束最小,x目标函数,有趣的据nvar的维度(设计变量的数量)有趣的

请注意

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

例子

x= ga (有趣的,据nvar,一个,b)发现一个局部最小值x有趣的,线性不等式* xb遗传算法评估矩阵乘积* x好像x转置(A * x ')。

例子

x= ga (有趣的,据nvar,一个,b,Aeq,说真的)发现一个局部最小值x有趣的,线性等式Aeq * x=说真的* xb。(设置一个= []b = []如果不存在线性不等式)。遗传算法评估矩阵乘积Aeq * x好像x转置(Aeq * x ')。

例子

x= ga (有趣的,据nvar,一个,b,Aeq,说真的,,乌兰巴托)定义了一组上下界限的设计变量,x发现,这样一个解决方案的范围x乌兰巴托。(设置Aeq = []说真的= []如果不存在线性等式)。

例子

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

例子

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

例子

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

请注意

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

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)包含(“x”(1))ylabel (“x”(2))标题(' ps \ _example (x)的)

图包含一个坐标轴对象。坐标轴对象标题p s _ e x m p l e (x)包含一个类型的对象的表面。

找到这个函数的最小使用遗传算法

rng默认的%的再现性x = ga (@ps_example, 2)
优化终止:平均不到options.FunctionTolerance健身价值的变化。
x =1×2-4.6793 - -0.0860

使用遗传算法来最小化ps_example函数在该地区x (1) + (2) > = 1(2)< = 5 + x (1)

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

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

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

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

解决约束问题遗传算法

rng默认的%的再现性有趣= @ps_example;x = ga(乐趣2 A, b)
优化终止:平均不到options.FunctionTolerance健身价值的变化。
x =1×20.9990 - -0.0000

默认值内的约束满足约束的宽容,1 e - 3。看到这,计算* x - b应负的组件。

disp (A * x - b)
0.0010 - -5.9990

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

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

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

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

一个= [1];b = 1;Aeq = [1];说真的= 5;

解决约束问题遗传算法

rng默认的%的再现性有趣= @ps_example;x = ga(乐趣2 A、b、Aeq beq)
优化终止:平均不到options.FunctionTolerance健身价值的变化。
x =1×2-2.0000 - 2.9990

检查约束是满意的默认值ConstraintTolerance,1 e - 3

disp (A * x - b)
1.0000 e 03
disp (Aeq * x”——beq)
-1.0000 e 03

使用遗传算法来最小化ps_example函数在该地区x (1) + (2) > = 1(2)= = 5 + x (1)。此外,设置范围1 < = x (1) < = 63 < = x (2) < = 8

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

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

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

一个= [1];b = 1;Aeq = [1];说真的= 5;

设置范围乌兰巴托

1磅= [3];乌兰巴托= 8 [6];

解决约束问题遗传算法

rng默认的%的再现性有趣= @ps_example;x = ga(乐趣2 A、b Aeq,说真的,磅,乌兰巴托)
优化终止:平均不到options.FunctionTolerance健身价值的变化。
x =1×21.0000 - 5.9991

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

disp (A * x - b)
-5.9991
disp (Aeq * x”——beq)
-9.5926 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] = ellipsecons c (x) = 2 * x (1) ^ 2 + (2) ^ 2 - 3;测查= (x (1) + 1) ^ 2 - (x (2) / 2) ^ 4;

包括一个函数处理ellipsecons随着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和量表信= 0的默认值ConstraintTolerance,1 e - 3

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

使用遗传算法来最小化ps_example函数在该地区x (1) + (2) > = 1(2)= = 5 + x (1)使用约束小于默认的公差。

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

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

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

一个= [1];b = 1;Aeq = [1];说真的= 5;

获得更准确的解决方案,设定一个约束的宽容1 e-6。并监督解决进度,设置一个情节功能。

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

解决最小化问题。

rng默认的%的再现性有趣= @ps_example;x = ga(乐趣2 A、b Aeq,说真的,[],[],[],选项)
优化终止:平均不到options.FunctionTolerance健身价值的变化。

图遗传算法包含一个坐标轴对象。坐标轴对象与标题最好:4代表:4包含2线类型的对象。这些对象代表最好的健身,健身。

x =1×2-2.0000 - 3.0000

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

disp (A * x - b)
9.9563 e-07
disp (Aeq * x”——beq)
-9.9593 e-07

使用遗传算法来最小化ps_example函数的约束x (1)是一个整数。

intcon = 1;rng默认的%的再现性有趣= @ps_example;一个= [];b = [];Aeq = [];说真的= [];磅= [];乌兰巴托= [];nonlcon = [];x = ga(乐趣2 A、b Aeq,说真的,磅,乌兰巴托,nonlcon, intcon)
优化终止:点球健身价值低于平均变化的选择。FunctionTolerance和约束违反小于options.ConstraintTolerance。
x =1×2-5.0000 - -0.0834

使用遗传算法来最小化一个integer-constrained非线性问题。获得最低的位置和最小函数值。

intcon = 1;rng默认的%的再现性有趣= @ps_example;一个= [];b = [];Aeq = [];说真的= [];磅= [];乌兰巴托= [];nonlcon = [];[x, fval] = ga(乐趣2 A、b Aeq,说真的,磅,乌兰巴托,nonlcon, intcon)
优化终止:点球健身价值低于平均变化的选择。FunctionTolerance和约束违反小于options.ConstraintTolerance。
x =1×2-5.0000 - -0.0834
fval = -1.8344

比较该结果与无约束问题的解决方案。

[x, fval] = ga(有趣,2)
优化终止:平均不到options.FunctionTolerance健身价值的变化。
x =1×2-4.6906 - -0.0078
fval = -1.9918

使用遗传算法来最小化ps_example函数限制,x (1)整数值。理解解算器停止的原因和方式遗传算法寻找一个最低,获得exitflag输出结果。情节也观察到的最小目标函数值作为解决进展。

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

图遗传算法包含一个坐标轴对象。坐标轴对象与标题最好:-1.83445意味着:880470包含2线类型的对象。这些对象代表最好的惩罚值,意味着惩罚值。

优化终止:点球健身价值低于平均变化的选择。FunctionTolerance和约束违反小于options.ConstraintTolerance。
x =1×2-5.0000 - -0.0834
fval = -1.8344
exitflag = 1
输出=结构体字段:problemtype:“integerconstraints”rngstate: [1 x1 struct]代:86 funccount: 3311信息:优化终止:点球健身价值低于平均变化options.FunctionTolerance……“maxconstraint: 0 hybridflag: []

使用遗传算法来最小化ps_example函数限制,x (1)整数值。获得所有的输出,包括最后的人口和向量的分数。

intcon = 1;rng默认的%的再现性有趣= @ps_example;一个= [];b = [];Aeq = [];说真的= [];磅= [];乌兰巴托= [];nonlcon = [];[x, fval exitflag、输出人口,分数)= ga(乐趣2 A、b Aeq,说真的,磅,乌兰巴托,nonlcon, intcon);
优化终止:点球健身价值低于平均变化的选择。FunctionTolerance和约束违反小于options.ConstraintTolerance。

检查前10的成员最终人口和相应的分数。请注意,x (1)所有这些人口成员是整数值。整数遗传算法算法生成只有integer-feasible人群。

disp(人口(1:10)):
1.0 e + 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.0 e + 06 * -0.0000 -0.0000 2.6798 2.2560 0.2016 0.0615 0.0135 0.0099 0.0001 0.0000

输入参数

全部折叠

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

“UseVectorized”选择是真正的,写有趣的接受流行——- - - - - -据nvar矩阵,流行是当前人口规模。在这种情况下,有趣的返回一个向量长度一样流行包含适应度函数值。确保有趣的不承担任何特定的大小流行,因为遗传算法可以通过一个单一的人口即使在矢量化计算。

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

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

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

例子:4

数据类型:

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

一个编码线性不等式

A * x < =,

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

例如,指定

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

给这些约束:

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

例子:指定的控制变量和1或更少,给约束一个= 1 (1,N)b = 1

数据类型:

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

b编码线性不等式

A * x < =,

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

例如,指定

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

给这些约束:

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

例子:指定的控制变量和1或更少,给约束一个= 1 (1,N)b = 1

数据类型:

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

Aeq编码线性等式

Aeq * x =说真的,

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

例如,指定

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

给这些约束:

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

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

数据类型:

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

说真的编码线性等式

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

数据类型:

下界,指定为一个真正的向量或数组的双打。代表了下界element-wisex乌兰巴托

在内部,遗传算法将一个数组的向量磅(:)

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

数据类型:

上界,指定为一个真正的向量或数组的双打。乌兰巴托代表了上界element-wisex乌兰巴托

在内部,遗传算法将一个数组乌兰巴托的向量乌兰巴托(:)

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

数据类型:

非线性约束条件,指定为一个函数处理或函数名。nonlcon是一个函数,它接受一个向量或数组x并返回两个数组,c (x)量表(x)

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

    c (x) < = 0

    所有条目的c

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

    量表(x) = 0

    所有条目的量表信

例如,

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

在哪里myconMATLAB是一种®等功能

功能测查[c] = mycon c (x) =…%计算非线性不等式测查x =…在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时,算法停止的几何平均的相对变化值在蔓延options.MaxStallGenerations代小于options.FunctionTolerance,最终小于平均传播蔓延过去options.MaxStallGenerations一代又一代。看到gamultiobj算法

选择结构,使用TolFun

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

HybridFcn

我*函数,继续优化遗传算法终止。指定一个名称或一个函数处理。

另外,一个细胞数组指定混合函数和它的选项。看到ga混合函数

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

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

看到当使用混合功能

函数名或处理|“fminsearch”|“patternsearch”|“fminunc”|“fmincon”| {[]}

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

InitialPenalty

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

积极的标量|{10}

InitialPopulationMatrix

用于种子遗传算法初始种群。有PopulationSize行和N列,N是变量的数量。你可以通过部分人口,这就意味着不到PopulationSize行。在这种情况下,遗传算法的用途CreationFcn生成其余人口成员。看到人口的选择

选择结构,使用InitialPopulation

矩阵|{[]}

InitialPopulationRange

矩阵或向量指定初始种群个体的范围。适用于gacreationuniform创建函数。遗传算法变化和尺度默认初始范围匹配任何有限的范围。

选择结构,使用PopInitRange

矩阵或向量|{(-10;10)}对于无限的组件,{[1 e4 + 1; 1 e4 + 1]}为无限组件integer-constrained问题,{(磅;乌兰巴托)}为有界的组件,使用默认范围修改为片面的范围相匹配

InitialScoresMatrix

初始值用于确定健康。有PopulationSize行和Nf列,Nf是健身的数量函数(1遗传算法,大于1gamultiobj)。你可以通过部分得分矩阵,意义与不足PopulationSize行。在这种情况下,解算器时填写分数评估健身功能。

选择结构,使用InitialScores

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

MaxGenerations

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

选择结构,使用一代又一代

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

MaxStallGenerations

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

gamultiobj时,算法停止的几何平均的相对变化值在蔓延options.MaxStallGenerations代小于options.FunctionTolerance,最终小于平均传播蔓延过去options.MaxStallGenerations一代又一代。看到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”|“gaplotstopping”| |“gaplotmaxconstr”自定义绘制函数

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

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

并行计算健身和非线性约束函数。看到Vectorize和并行选项(用户函数评价)如何使用并行处理在全球优化工具箱

真正的|{假}

UseVectorized

指定是否矢量化功能。看到Vectorize和并行选项(用户函数评价)Vectorize健身功能

选择结构,使用矢量化的值“上”“关闭”

真正的|{假}

例子: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”

  • rngstate——MATLAB随机数发生器的状态,只是在算法开始之前。您可以使用的值rngstate复制的输出遗传算法。看到复制的结果

  • 一代又一代——代计算的数量。

  • funccount——数量的适应度函数的评估。

  • 消息-原因算法终止。

  • maxconstraint——最大约束违反。

  • hybridflag——退出旗混合功能。关系到HybridFcn选项。不适合gamultiobj

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

最后的成绩,作为一个列向量返回。

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

  • 对于整数问题,最后分数的惩罚健身人口成员的值。看到整数ga算法

更多关于

全部折叠

互补措施

增广拉格朗日函数非线性约束求解的互补措施的标准向量元素是谁的cλ,在那里c非线性不等式约束违反,λ是对应的拉格朗日乘子。看到增广拉格朗日遗传算法

提示

  • 写一个函数与其他参数的独立变量可以被称为遗传算法,请参阅传递额外的参数

  • 使用人口类型的问题双矢量(默认),遗传算法不接受函数的输入类型复杂的。解决问题涉及复杂的数据,编写函数,使他们接受真正的向量,通过分离的实部和虚部。

算法

遗传算法的描述,请参阅遗传算法是如何运作的吗

混合整数规划算法的描述,看看整数ga算法

非线性约束算法的描述,请参阅非线性约束求解算法

选择功能

应用程序

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

兼容性的考虑

全部展开

行为改变R2019b

引用

[1]Goldberg大卫·E。遗传算法在搜索、优化和机器学习,addison - wesley, 1989。

[2]a . r .康涅狄格州n i m·古尔德和博士l . Toint。”一个全局收敛的增广拉格朗日优化算法与一般的约束和简单的界限”,暹罗在数值分析》杂志上第二,体积28日,545 - 572页,1991年。

[3]a . r .康涅狄格州n i m·古尔德和博士l . Toint。”一个全局收敛的增广拉格朗日障碍优化算法与一般不等式约束和简单的界限”,数学的计算,体积66,217号,261 - 288页,1997年。

扩展功能

之前介绍过的R2006a