gaoptimset
(不推荐)创建遗传算法 options 结构体
不推荐使用 gaoptimset。请改用 optimoptions。有关详细信息,请参阅版本历史记录。
语法
说明
没有输入或输出参量的 gaoptimset 显示带有其有效值的完整选项列表。一般情况下,默认值出现在括号 {} 中。
注意
指示的默认值并不是所有问题类型的默认值。要获得更新的列表,请评估 optimoptions('ga') 或 optimoptions('gamultiobj')。
创建一个名为 options = gaoptimset(Name,Value)options 的结构体,并将 'Name1' 的值设置为 Value1、将 'Name2' 的值设置为 Value2,依此类推。gaoptimset 将任何未指定的选项设置为 [],这意味着求解器使用默认选项值。gaoptimset 可以指定一个选项名称,仅使用足够的前导字符来唯一地定义名称。gaoptimset 会忽略选项名称的大小写。例如,'Display'、'display' 和 'Disp' 是等效的选项名称。
(没有输入参量)创建一个名为 options = gaoptimsetoptions 的结构体,其中包含遗传算法的选项。在这种情况下,gaoptimset 将所有选项值设置为 [],表示使用默认值。
或 options = gaoptimset(@ga) 创建一个 options = gaoptimset(@gamultiobj)options 结构体,其中包含分别针对 ga 或 gamultiobj 求解器的明确默认值的选项。
创建 options = gaoptimset(oldopts,Name,Value)oldopts 的副本,并使用指定的值修改指定的选项。
示例
要查看选项结构体中 ga 和 gamultiobj 的所有可用选项,请运行不带输入或输出参量的 gamultiobj。
gaoptimset
PopulationType: [ 'bitstring' | 'custom' | {'doubleVector'} ]
PopInitRange: [ matrix | {[-10;10]} ]
PopulationSize: [ positive scalar ]
EliteCount: [ positive scalar | {0.05*PopulationSize} ]
CrossoverFraction: [ positive scalar | {0.8} ]
ParetoFraction: [ positive scalar | {0.35} ]
MigrationDirection: [ 'both' | {'forward'} ]
MigrationInterval: [ positive scalar | {20} ]
MigrationFraction: [ positive scalar | {0.2} ]
Generations: [ positive scalar ]
TimeLimit: [ positive scalar | {Inf} ]
FitnessLimit: [ scalar | {-Inf} ]
StallGenLimit: [ positive scalar ]
StallTest: [ 'geometricWeighted' | {'averageChange'} ]
StallTimeLimit: [ positive scalar | {Inf} ]
TolFun: [ positive scalar ]
TolCon: [ positive scalar | {1e-6} ]
InitialPopulation: [ matrix | {[]} ]
InitialScores: [ column vector | {[]} ]
NonlinConAlgorithm: [ 'penalty' | {'auglag'} ]
InitialPenalty: [ positive scalar | {10} ]
PenaltyFactor: [ positive scalar | {100} ]
CreationFcn: [ function_handle | @gacreationuniform | @gacreationlinearfeasible ]
FitnessScalingFcn: [ function_handle | @fitscalingshiftlinear | @fitscalingprop |
@fitscalingtop | {@fitscalingrank} ]
SelectionFcn: [ function_handle | @selectionremainder | @selectionuniform |
@selectionroulette | @selectiontournament | @selectionstochunif ]
CrossoverFcn: [ function_handle | @crossoverheuristic | @crossoverintermediate |
@crossoversinglepoint | @crossovertwopoint | @crossoverarithmetic |
@crossoverscattered ]
MutationFcn: [ function_handle | @mutationuniform | @mutationadaptfeasible |
@mutationgaussian ]
DistanceMeasureFcn: [ function_handle | {@distancecrowding} ]
HybridFcn: [ @fminsearch | @patternsearch | @fminunc | @fmincon | {[]} ]
Display: [ 'off' | 'iter' | 'diagnose' | {'final'} ]
OutputFcns: [ function_handle | {[]} ]
PlotFcns: [ function_handle | @gaplotbestf | @gaplotbestindiv | @gaplotdistance |
@gaplotexpectation | @gaplotgenealogy | @gaplotselection | @gaplotrange |
@gaplotscorediversity | @gaplotscores | @gaplotstopping |
@gaplotmaxconstr | @gaplotrankhist | @gaplotpareto | @gaplotspread |
@gaplotparetodistance |{[]} ]
PlotInterval: [ positive scalar | {1} ]
Vectorized: [ 'on' | {'off'} ]
UseParallel: [ logical scalar | true | {false} ]
设置 ga 的选项,使其具有包含点 [1,1] 的起始种群,并使用 gaplotbestf 绘图函数。
options = gaoptimset('InitialPopulation',[1 1],... 'PlotFcns',@gaplotbestf);
使用指定的选项,找到函数 rastriginsfcn 的局部最小值,该函数在运行此示例时可用。
rng default % For reproducibility nvar = 2; A = []; b = []; Aeq = []; beq = []; lb = []; ub = []; nlconst = []; [x,fval] = ga(@rastriginsfcn,nvar,A,b,Aeq,beq,lb,ub,nlconst,options)
ga stopped because the average change in the fitness value is less than options.FunctionTolerance.

x = 1×2
0.0227 0.0656
fval = 0.9442
使用 gaoptimset 为 ga 创建一个选项结构体,并将其值设置为默认值。
options = gaoptimset(@ga)
options = struct with fields:
PopulationType: 'doubleVector'
PopInitRange: []
PopulationSize: 'auto'
EliteCount: '0.05*PopulationSize'
CrossoverFraction: 0.8000
ParetoFraction: []
MigrationDirection: 'forward'
MigrationInterval: 20
MigrationFraction: 0.2000
Generations: '100*numberOfVariables'
TimeLimit: Inf
FitnessLimit: -Inf
StallGenLimit: 50
StallTest: 'averageChange'
StallTimeLimit: Inf
TolFun: 1.0000e-06
TolCon: 1.0000e-03
InitialPopulation: []
InitialScores: []
NonlinConAlgorithm: 'auglag'
InitialPenalty: 10
PenaltyFactor: 100
PlotInterval: 1
CreationFcn: []
FitnessScalingFcn: @fitscalingrank
SelectionFcn: []
CrossoverFcn: []
MutationFcn: []
DistanceMeasureFcn: []
HybridFcn: []
Display: 'final'
PlotFcns: []
OutputFcns: []
Vectorized: 'off'
IntegerTolerance: 1.0000e-05
UseParallel: 0
创建遗传算法选项以返回迭代显示。
oldopts = gaoptimset('Display','iter');
修改 oldopts 以包含 gaplotbestf 绘图函数和 250 的种群规模。
options = gaoptimset(oldopts,'PlotFcns',@gaplotbestf,... 'PopulationSize',250)
options = struct with fields:
PopulationType: []
PopInitRange: []
PopulationSize: 250
EliteCount: []
CrossoverFraction: []
ParetoFraction: []
MigrationDirection: []
MigrationInterval: []
MigrationFraction: []
Generations: []
TimeLimit: []
FitnessLimit: []
StallGenLimit: []
StallTest: []
StallTimeLimit: []
TolFun: []
TolCon: []
InitialPopulation: []
InitialScores: []
NonlinConAlgorithm: []
InitialPenalty: []
PenaltyFactor: []
PlotInterval: []
CreationFcn: []
FitnessScalingFcn: []
SelectionFcn: []
CrossoverFcn: []
MutationFcn: []
DistanceMeasureFcn: []
HybridFcn: []
Display: 'iter'
PlotFcns: @gaplotbestf
OutputFcns: []
Vectorized: []
IntegerTolerance: []
UseParallel: []
创建两组遗传算法选项,oldopts 和 newopts。为 gaplotbestf 指定迭代显示和 oldopts 绘图函数。为 newopts 指定无显示且种群规模为 300。
oldopts = gaoptimset('Display','iter','PlotFcns',@gaplotbestf); newopts = gaoptimset('Display','off','PopulationSize',300);
将这些选项结合起来,使 newopts 优先。
options = gaoptimset(oldopts,newopts)
options = struct with fields:
PopulationType: []
PopInitRange: []
PopulationSize: 300
EliteCount: []
CrossoverFraction: []
ParetoFraction: []
MigrationDirection: []
MigrationInterval: []
MigrationFraction: []
Generations: []
TimeLimit: []
FitnessLimit: []
StallGenLimit: []
StallTest: []
StallTimeLimit: []
TolFun: []
TolCon: []
InitialPopulation: []
InitialScores: []
NonlinConAlgorithm: []
InitialPenalty: []
PenaltyFactor: []
PlotInterval: []
CreationFcn: []
FitnessScalingFcn: []
SelectionFcn: []
CrossoverFcn: []
MutationFcn: []
DistanceMeasureFcn: []
HybridFcn: []
Display: 'off'
PlotFcns: @gaplotbestf
OutputFcns: []
Vectorized: []
IntegerTolerance: []
UseParallel: []
请注意,Display 选项的值是 newopts 中指定的值。
输入参数
优化选项,指定为结构体,例如 gaoptimset 的输出。
数据类型: struct
优化选项,指定为结构体,例如 gaoptimset 的输出。newopts 中任何具有非空值的选项都会覆盖 oldopts 中相应的选项,语法如下:
options = gaoptimset(oldopts,newopts)
数据类型: struct
名称-值参数
将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但参量对组的顺序无关紧要。
在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name 引起来。
示例: options = gaoptimset('Display','off','PlotFcns',@gaplotbestf)
gaoptimset 创建一个结构体。在下面的选项名称表中,使用位于描述底部短语“对于选项结构体”之后的名称(如果指定)。第一个列出的名称(选项)是 optimoptions 函数,这是设置选项的推荐函数。例如,为了指定 optimoptions 中非线性约束违反的容差,您可以设置 'ConstraintTolerance',但对于 gaoptimset,您可以设置 'TolCon'。
在下表中,
括号
{}中的值表示默认值。{}*表示问题有线性约束时的默认值,而MutationFcn表示问题有边界时的默认值。I* 表示
ga以不同的方式处理整数约束的选项;此表示法不适用于gamultiobj。NM 指示该选项不适用于
gamultiobj。
optimoptions 隐藏以斜体列出的选项;请参阅optimoptions 隐藏的选项。
适用于 ga 和 gamultiobj 的选项
| 选项 | 描述 | 值 |
|---|---|---|
ConstraintTolerance | 确定在非线性约束下的可行性。另外, 对于 options 结构体,使用 | 非负标量 | |
| 创建初始种群的函数。指定为内置创建函数的名称或函数句柄。请参阅 种群选项。 |
|
| 算法用于创建交叉子代的函数。指定为内置交叉函数的名称或函数句柄。请参阅 交叉选项。 |
|
| 交叉函数创建的下一代种群的比例,不包括精英子代。 | 非负标量 | |
| 显示级别。 |
|
| 用于计算个体距离测度的函数。指定为内置距离测度函数的名称或函数句柄。该值适用于决策变量或设计空间(基因型)或函数空间(表型)。默认 对于 options 结构体,使用函数句柄,而不是名称。 |
|
| NM 正整数,指定当前一代中保证存活到下一代的个体数量。 | 非负整数 | |
| NM 如果适应度函数达到 | 标量 | |
| 用于缩放适应度函数值的函数。指定为内置缩放函数的名称或函数句柄。 |
|
FunctionTolerance | 如果 对于 对于 options 结构体,使用 | 非负标量 | |
| I* 在 或者,是指定混合函数及其选项的元胞数组。请参阅 ga 混合函数。 对于 当问题有整数约束时,无法使用混合函数。 请参阅 何时使用混合函数。 | 函数名称或句柄 | 或者 1×2 元胞数组 | |
InitialPenalty | NM I* 罚参数的初始值 | 正标量 | |
| 用于为遗传算法提供种子的初始种群。最多包含 对于 options 结构体,使用 | 矩阵 | |
| 用于指定初始种群中个体范围的矩阵或向量。适用于 对于 options 结构体,使用 | 矩阵或向量 | |
| 用于确定适应度的初始分数。最多包含 对于 options 结构体,使用 | 单目标的列向量 | 多目标的矩阵 | |
| 算法停止前的最大迭代次数。 对于 options 结构体,使用 | 非负整数 | |
| 如果 对于 对于 options 结构体,使用 | 非负整数 | |
| NM 如果目标函数在 对于 options 结构体,使用 | 正标量 |
| 算法在运行 对于 options 结构体,使用 | 非负标量 | |
MigrationDirection | 迁移方向。请参阅 迁移选项。 |
|
MigrationFraction | 从 0 到 1 的标量,指定每个子种群中迁移到不同子种群的个体比例。请参阅 迁移选项。 | 标量 | |
MigrationInterval | 正整数,指定个体在子种群之间迁移时发生的代数。请参阅 迁移选项。 | 正整数 | |
| 产生变异子代的函数。指定为内置变异函数的名称或函数句柄。请参阅 变异选项。 |
|
| 非线性约束算法。请参阅 遗传算法算法的非线性约束求解算法。 对于 options 结构体,使用 |
|
|
对于 options 结构体,使用 | 函数句柄或函数句柄元胞数组| |
| 从 0 到 1 的标量,指定当求解器从更高的前沿选择个体时,要保留在第一个帕累托前沿的个体的比例(仅适用于 | 标量 | |
PenaltyFactor | NM I* 罚更新参数。 | 正标量 | |
| 绘制由算法计算的数据的函数。指定为内置绘图函数的名称、函数句柄,或者为由内置名称或函数句柄组成的元胞数组。请参阅 绘图选项。 对于 options 结构体,使用 |
仅限 仅限 |
PlotInterval | 正整数,指定对绘图函数的连续调用之间的代数。 | 正整数 | |
| 种群大小。 | 正整数 | 当 |
| 种群的数据类型。对于混合整数问题,必须为 |
当 |
| 选择交叉和变异子代的父代的函数。指定为内置选择函数的名称或函数句柄。
|
|
StallTest | NM 停止测试类型。 |
|
UseParallel | 并行计算适应度函数和非线性约束函数。请参阅向量化和并行选项(用户函数评估)和如何在 Global Optimization Toolbox 中使用并行处理。 |
|
| 指定函数是否向量化。请参阅向量化和并行选项(用户函数评估)和向量化适应度函数。 对于 options 结构体,使用 |
|
输出参量
优化选项,以结构体形式返回。
版本历史记录
在 R2006a 之前推出要设置选项,不建议使用 gaoptimset、psoptimset 和 saoptimset 函数。请改用 optimoptions。
使用 optimoptions 与其他函数之间的主要区别在于,您将求解器名称作为 optimoptions 中的第一个参量。例如,在 ga 中设置迭代显示:
options = optimoptions('ga','Display','iter'); % instead of options = gaoptimset('Display','iter');
另一个区别是一些选项名称已经改变。您可以继续使用 optimoptions 中的旧名称。有关详细信息,请参阅R2016a 中的选项变更。
optimoptions 与其他函数相比具有以下优势:
optimoptions提供了更好的自动代码建议和完成功能,尤其是在实时编辑器中。您可以使用单个选项设置函数,而不必使用多种函数。
目前没有计划删除 gaoptimset、psoptimset 和 saoptimset。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)