主要内容

本页采用了机器翻译。点击此处可查看英文原文。

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 = gaoptimset(没有输入参量)创建一个名为 options 的结构体,其中包含遗传算法的选项。在这种情况下,gaoptimset 将所有选项值设置为 [],表示使用默认值。

options = gaoptimset(@ga)options = gaoptimset(@gamultiobj) 创建一个 options 结构体,其中包含分别针对 gagamultiobj 求解器的明确默认值的选项。

示例

options = gaoptimset(oldopts,Name,Value) 创建 oldopts 的副本,并使用指定的值修改指定的选项。

示例

options = gaoptimset(oldopts,newopts) 将现有的 options 结构体 oldopts 与新的 options 结构体 newopts 结合起来。newopts 中任何具有非空值的选项都会覆盖 oldopts 中相应的选项。

示例

示例

全部折叠

要查看选项结构体中 gagamultiobj 的所有可用选项,请运行不带输入或输出参量的 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.

Figure Genetic Algorithm contains an axes object. The axes object with title Best: 0.944224 Mean: 52.1272, xlabel Generation, ylabel Fitness value contains 2 objects of type scatter. These objects represent Best fitness, Mean fitness.

x = 1×2

    0.0227    0.0656

fval = 
0.9442

使用 gaoptimsetga 创建一个选项结构体,并将其值设置为默认值。

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: []

创建两组遗传算法选项,oldoptsnewopts。为 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 隐藏的选项

适用于 gagamultiobj 的选项

选项描述
ConstraintTolerance

确定在非线性约束下的可行性。另外,max(sqrt(eps),ConstraintTolerance) 确定在线性约束下的可行性。默认值:1e-3

对于 options 结构体,使用 TolCon

非负标量

CreationFcn

创建初始种群的函数。指定为内置创建函数的名称或函数句柄。请参阅种群选项

默认值:

选择以下任意一项:

"gacreationuniform" | "gacreationlinearfeasible" | "gacreationnonlinearfeasible" | "gacreationuniformint" | "gacreationsobol" | 自定义创建函数

ga 带约束条件:

整数:"gacreationuniformint"

否则,对于非线性情况,当 NonlinearConstraintAlgorithm="penalty" 时:"gacreationnonlinearfeasible"

否则,对于线性情况:"gacreationlinearfeasible"

其他情况:"gacreationuniform"

gamultiobj 带约束条件:

整数:"gacreationsobol"

否则,对于线性情况:"gacreationlinearfeasible"

其他情况:"gacreationuniform"

CrossoverFcn

算法用于创建交叉子代的函数。指定为内置交叉函数的名称或函数句柄。请参阅交叉选项

默认值:

选择以下任意一项:

"crossoverscattered" | "crossoverintermediate" | "crossoverlaplace" | "crossoverheuristic" | "crossoversinglepoint" | "crossovertwopoint" | "crossoverarithmetic" | 自定义交叉函数

ga 带约束条件:

整数:"crossoverlaplace"

否则,对于线性情况:"crossoverintermediate"

其他情况:"crossoverscattered"

gamultiobj 带约束条件:

整数或线性情况:"crossoverintermediate"

其他情况:"crossoverscattered"

CrossoverFraction

交叉函数创建的下一代种群的比例,不包括精英子代。默认值:0.8

非负标量

Display

显示级别。默认值:"final"

"off" | "iter" | "diagnose" | "final"

DistanceMeasureFcn

用于计算个体距离测度的函数。指定为内置距离测度函数的名称或函数句柄。该值适用于决策变量或设计空间(基因型)或函数空间(表型)。默认 "distancecrowding" 在函数空间中(表型)。仅适用于 gamultiobj。请参阅 多目标选项

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

"distancecrowding" 等效于 @distancecrowding,"phenotype" | @distancecrowding,"genotype" | 自定义距离函数

EliteCount

正整数,指定当前代中有多少个体能保证存活至下一代。gamultiobj 中未使用。默认值:ceil(0.05*PopulationSize)

非负整数

FitnessLimit

若适应度函数达到值 FitnessLimit,则算法停止。gamultiobj 中未使用。默认值:-Inf

标量

FitnessScalingFcn

用于缩放适应度函数值的函数。指定为内置缩放函数的名称或函数句柄。gamultiobj 中未使用。

"fitscalingrank" | "fitscalingshiftlinear" | "fitscalingprop" | "fitscalingtop" | 自定义适应适应度缩放函数

FunctionTolerance

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

对于 gamultiobj,如果 options.MaxStallGenerations 代内间距值相对变化的几何平均值小于 options.FunctionTolerance,且最终间距小于过去 options.MaxStallGenerations 代内的均值间距,则算法停止。请参阅 gamultiobj 算法

对于 options 结构体,使用 TolFun

非负标量 | 1e-6 对应 ga1e-4 对应 gamultiobj

HybridFcn

ga 终止后继续优化的函数。指定为名称或函数句柄。

或者,是指定混合函数及其选项的元胞数组。请参阅 ga 混合函数

对于 gamultiobj,唯一的混合函数是 @fgoalattain。请参阅 gamultiobj 混合函数

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

请参阅何时使用混合函数

函数名称或句柄 | "fminsearch" | "patternsearch" | "fminunc" | "fmincon" | []

1×2 元胞数组 | @solver, hybridoptions,其中 solver = fminsearchpatternsearchfminuncfmincon []

InitialPenalty

惩罚参数的初始值。gamultiobj 中未使用。默认值:10

正标量

InitialPopulationMatrix

用于为遗传算法提供种子的初始种群。最多包含 PopulationSize 行和 N 列,其中 N 是变量的数目。您可以传递部分种群,即行数少于 PopulationSize 的种群。在这种情况下,遗传算法使用 CreationFcn 生成其余的种群成员。请参阅种群选项。默认值:[]

对于 options 结构体,使用 InitialPopulation

矩阵

InitialPopulationRange

用于指定初始种群中个体范围的矩阵或向量。适用于 gacreationuniform 创建函数。ga 对默认初始范围进行移位和缩放以匹配任何有限边界。默认值:[-10;10] 用于无界分量,[-1e4+1;1e4+1] 用于整数约束问题的无界分量,[lb;ub] 用于有界分量,其默认范围已修改以匹配单侧界限。

对于 options 结构体,使用 PopInitRange

矩阵或向量

InitialScoresMatrix

用于确定适应度的初始分数。最多包含 PopulationSize 行和 Nf 列,其中 Nf 是适应度函数的数目(对于 ga1,对于 gamultiobj 则大于 1)。您可以传递部分分数矩阵,即行数少于 PopulationSize 的分数矩阵。在这种情况下,求解器在计算适应度函数时会填充分数。默认值:[]

对于 options 结构体,使用 InitialScores

列向量(单目标)| 矩阵(多目标)

MaxGenerations

算法停止前的最大迭代次数。默认值:100*numberOfVariables(对于 ga),200*numberOfVariables(对于 gamultiobj)。

对于 options 结构体,使用 Generations

非负整数

MaxStallGenerations

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

对于 gamultiobj,如果 options.MaxStallGenerations 代内间距值相对变化的几何平均值小于 options.FunctionTolerance,且最终间距小于过去 options.MaxStallGenerations 代内的均值间距,则算法停止。请参阅gamultiobj 算法。默认值:50(对于 ga),100(对于 gamultiobj)。

对于 options 结构体,使用 StallGenLimit

非负整数

MaxStallTime

若目标函数在 MaxStallTime 秒内未见改善(由 tictoc 测量),则算法会停止。gamultiobj 中未使用。默认值:Inf

对于 options 结构体,使用 StallTimeLimit

正标量

MaxTime

算法在运行 MaxTime 秒(根据 tictoc 的测量)后停止。该限制在每次迭代后强制执行,因此当某次迭代耗时较长时,求解器可能会超过该限制。默认值:Inf

对于 options 结构体,使用 TimeLimit

非负标量

MigrationDirection

迁移方向。默认值:"forward"。请参阅迁移选项

"both" | "forward"

MigrationFraction

从 0 到 1 的标量,指定每个子种群中迁移到不同子种群的个体比例。默认值:0.2。请参阅迁移选项

标量

MigrationInterval

正整数,指定个体在子种群之间迁移时发生的代数。默认值:20。请参阅迁移选项

正整数

MutationFcn

产生变异子代的函数。指定为内置变异函数的名称或函数句柄。请参阅变异选项

默认值:

选择以下任意一项:

"mutationgaussian" | "mutationadaptfeasible" | "mutationpower" | "mutationpositivebasis" | "mutationuniform" | 自定义变异函数

ga 带约束条件:

整数:"mutationpower"

否则,对于线性或边界情况:"mutationadaptfeasible"

其他情况:"mutationgaussian"

gamultiobj 带约束条件:

整数:"mutationpositivebasis"

否则,对于线性或边界情况:"mutationadaptfeasible"

其他情况:"mutationgaussian"

NonlinearConstraintAlgorithm

非线性约束算法。请参阅 遗传算法算法的非线性约束求解算法gamultiobj 的选项不可改变。默认值:"auglag"

对于 options 结构体,使用 NonlinConAlgorithm

"auglag" | "penalty"

OutputFcn

求解器在每次迭代中调用的函数。指定为函数句柄或函数句柄元胞数组。默认值:[]。请参阅输出函数选项

对于 options 结构体,使用 OutputFcns

函数句柄或函数句柄元胞数组

ParetoFraction

从 0 到 1 的标量,指定当求解器从更高的前沿选择个体时,要保留在第一个帕累托前沿的个体的比例(仅适用于 gamultiobj)。默认值:0.35。请参阅多目标选项

标量 |

PenaltyFactor

惩罚更新参数。gamultiobj 中未使用。默认值:100

正标量

PlotFcn

绘制由算法计算的数据的函数。指定为内置绘图函数的名称、函数句柄,或者为由内置名称或函数句柄组成的元胞数组。请参阅 绘图选项

对于 options 结构体,使用 PlotFcns

gagamultiobj[] | "gaplotdistance" | "gaplotgenealogy" | "gaplotselection" | "gaplotscorediversity" |"gaplotscores" | "gaplotstopping" | "gaplotmaxconstr" | 自定义绘图函数

仅限 ga"gaplotbestf" | "gaplotbestindiv" | "gaplotexpectation" | "gaplotrange"

仅限 gamultiobj"gaplotpareto" | "gaplotparetodistance" | "gaplotrankhist" | "gaplotspread"

PlotInterval

正整数,指定对绘图函数的连续调用之间的代数。默认值:1

正整数

PopulationSize

种群大小。默认值:当 numberOfVariables <= 5 时为 50,否则为 200。仅在混合整数问题时,ga 的默认值为 min(max(10*nvars,40),100)

正整数

PopulationType

种群的数据类型。对于混合整数问题,必须为 "doubleVector"。默认值:"doubleVector"

PopulationType 设置为 "bitString""custom" 时,ga 忽略所有约束。请参阅种群选项

"bitstring" | "custom" | "doubleVector"

SelectionFcn

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

默认值:

对于 ga,请选择以下任意一项:

"selectionstochunif" | "selectiontournament" | "selectionremainder" | "selectionuniform" | "selectionroulette" | 自定义选择函数

ga 带约束条件:

对于整数或非线性惩罚情况:"selectiontournament"

其他情况:"selectionstochunif"

gamultiobj 仅使用 "selectiontournament" 或自定义选择函数

StallTest

停止测试类型。gamultiobj 中未使用。默认值:"averageChange"

"geometricWeighted" | "averageChange"

UseParallel

并行计算适应度函数和非线性约束函数。默认值:false。请参阅向量化和并行选项(用户函数评估)如何在 Global Optimization Toolbox 中使用并行处理

true | false

UseVectorized

指定函数是否向量化。默认值:false。请参阅向量化和并行选项(用户函数评估)向量化适应度函数

对于 options 结构体,使用 Vectorized 和值 "on""off"

true | false

输出参量

全部折叠

优化选项,以结构体形式返回。

版本历史记录

在 R2006a 之前推出

全部折叠