主要内容

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

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) 确定在线性约束下的可行性。

对于 options 结构体,使用 TolCon

非负标量 | {1e-3}

CreationFcn

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

{'gacreationuniform'} | {'gacreationlinearfeasible'}* | 'gacreationnonlinearfeasible' | {'gacreationuniformint'}I*(适用于 ga)| {'gacreationsobol'}I*(适用于 gamultiobj)| 自定义创建函数

CrossoverFcn

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

{'crossoverscattered'}(适用于 ga)、{'crossoverintermediate'}*(适用于 gamultiobj)| {'crossoverlaplace'}I* | 'crossoverheuristic' | 'crossoversinglepoint' | 'crossovertwopoint' | 'crossoverarithmetic' | 自定义交叉函数

CrossoverFraction

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

非负标量 | {0.8}

Display

显示级别。

'off' | 'iter' | 'diagnose' | {'final'}

DistanceMeasureFcn

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

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

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

EliteCount

NM 正整数,指定当前一代中保证存活到下一代的个体数量。gamultiobj 中未使用。

非负整数 | {ceil(0.05*PopulationSize)} | {0.05*(default 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 算法

对于 options 结构体,使用 TolFun

非负标量 | {1e-6} 对应 ga{1e-4} 对应 gamultiobj

HybridFcn

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

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

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

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

请参阅 何时使用混合函数

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

或者

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

InitialPenalty

NM I* 罚参数的初始值

正标量 | {10}

InitialPopulationMatrix

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

对于 options 结构体,使用 InitialPopulation

矩阵 | {[]}

InitialPopulationRange

用于指定初始种群中个体范围的矩阵或向量。适用于 gacreationuniform 创建函数。ga 对默认初始范围进行移位和缩放以匹配任何有限边界。

对于 options 结构体,使用 PopInitRange

矩阵或向量 | {[-10;10]} 适用于无界分量,{[-1e4+1;1e4+1]} 适用于整数约束问题的无界分量,{[lb;ub]} 适用于有界分量,默认范围已修改以匹配单边边界

InitialScoresMatrix

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

对于 options 结构体,使用 InitialScores

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

MaxGenerations

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

对于 options 结构体,使用 Generations

非负整数 | {100*numberOfVariables}(适用于 ga)、{200*numberOfVariables}(适用于 gamultiobj

MaxStallGenerations

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

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

对于 options 结构体,使用 StallGenLimit

非负整数 | {50} 用于 ga{100} 用于 gamultiobj

MaxStallTime

NM 如果目标函数在 MaxStallTime 秒(根据 tictoc 的测量)内没有改进,则算法停止。

对于 options 结构体,使用 StallTimeLimit

正标量 | {Inf}

MaxTime

算法在运行 MaxTime 秒(根据 tictoc 的测量)后停止。此限制在每次迭代后强制执行,因此当迭代花费大量时间时,ga 可能会超出此限制。

对于 options 结构体,使用 TimeLimit

非负标量 | {Inf}

MigrationDirection

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

'both' | {'forward'}

MigrationFraction

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

标量 | {0.2}

MigrationInterval

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

正整数 | {20}

MutationFcn

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

{'mutationgaussian'}(适用于无约束的 ga)| {'mutationadaptfeasible'}*(适用于 gamultiobj 和有约束的 ga)| {'mutationpower'} I * | 'mutationpositivebasis' | 'mutationuniform' | 自定义变异函数

NonlinearConstraintAlgorithm

非线性约束算法。请参阅 遗传算法算法的非线性约束求解算法gamultiobj 的选项不可改变。

对于 options 结构体,使用 NonlinConAlgorithm

{'auglag'}(对于 ga),{'penalty'}(对于 gamultiobj

OutputFcn

ga 在每次迭代中调用的函数。指定为函数句柄或函数句柄元胞数组。请参阅 输出函数选项

对于 options 结构体,使用 OutputFcns

函数句柄或函数句柄元胞数组| {[]}

ParetoFraction

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

标量 | {0.35}

PenaltyFactor

NM I* 罚更新参数。

正标量 | {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'

'bitstring' | 'custom' | {'doubleVector'}

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

SelectionFcn

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

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

{'selectionstochunif'}(适用于 ga)、{'selectiontournament'}(适用于 gamultiobj)| 'selectionremainder' | 'selectionuniform' | 'selectionroulette' | 自定义选择函数

StallTest

NM 停止测试类型。

'geometricWeighted' | {'averageChange'}

UseParallel

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

true | {false}

UseVectorized

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

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

true | {false}

输出参量

全部折叠

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

版本历史记录

在 R2006a 之前推出

全部折叠