メインコンテンツ

このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。

gaoptimset

(非推奨)遺伝的アルゴリズムのオプション構造を作成する

gaoptimset は推奨されません。代わりに optimoptions を使用してください。詳細については、バージョン履歴を参照してください。

説明

入力引数または出力引数のない gaoptimset は、有効な値を含むオプションの完全なリストを表示します。通常、デフォルト値は括弧 {} 内に表示されます。

メモ

示されたデフォルト値は、すべての問題タイプにおけるデフォルト値ではありません。更新されたリストについては、optimoptions('ga') または optimoptions('gamultiobj') を評価してください。

options = gaoptimset(Name,Value)options という名前の構造体を作成し、'Name1' の値を Value1 に、'Name2' の値を Value2 に設定するなどします。gaoptimset は指定されていないオプションを [] に設定し、ソルバーがデフォルトのオプション値を使用することを意味します。オプション名は、名前を一意に定義するのに十分な先頭の文字のみを使用して指定できます。gaoptimset はオプション名の大文字と小文字を区別しません。たとえば、'Display''display''Disp' は同等のオプション名です。

options = gaoptimset (入力引数なし) は、遺伝的アルゴリズムのオプションを含む options という名前の構造体を作成します。この場合、gaoptimset はすべてのオプション値を [] に設定し、デフォルト値を使用することを示します。

options = gaoptimset(@ga) または options = gaoptimset(@gamultiobj) は、それぞれ ga または gamultiobj ソルバーの明示的なデフォルト値を持つオプションを含む options 構造を作成します。

options = gaoptimset(oldopts,Name,Value) は、指定されたオプションを指定された値に変更して、oldopts のコピーを作成します。

options = gaoptimset(oldopts,newopts) は、既存のオプション構造 oldopts と新しいオプション構造 newopts を組み合わせます。空でない値を持つ newopts のオプションは、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.

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

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

遺伝的アルゴリズムのオプション セット oldoptsnewopts を 2 つ作成します。反復表示と、oldoptsgaplotbestf プロット関数を指定します。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) は線形制約に関して実現可能性を決定します。

オプション構造の場合は、TolCon を使用します。

非負のスカラー | {1e-3}

CreationFcn

初期母集団を作成する関数。組み込み作成関数または関数ハンドルの名前として指定します。母集団オプションを参照してください。

{'gacreationuniform'} | {'gacreationlinearfeasible'}* | 'gacreationnonlinearfeasible' | {'gacreationuniformint'}I* for ga | {'gacreationsobol'}I* for gamultiobj | カスタム作成機能

CrossoverFcn

アルゴリズムが交叉子を作成するために使用する関数。組み込み交叉関数または関数ハンドルの名前として指定します。交叉オプションを参照してください。

{'crossoverscattered'}ga{'crossoverintermediate'}*gamultiobj です | {'crossoverlaplace'}I* | 'crossoverheuristic' | 'crossoversinglepoint' | 'crossovertwopoint' | 'crossoverarithmetic' | カスタム交叉機能

CrossoverFraction

交叉関数によって生成される、エリートの子供を含まない世代の母集団の割合。

非負のスカラー | {0.8}

Display

表示レベル。

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

DistanceMeasureFcn

個体の距離を計算する関数。組み込みの距離測定関数または関数ハンドルの名前として指定します。値は、決定変数または設計空間 (遺伝子型) または機能空間 (表現型) に適用されます。デフォルトの 'distancecrowding' は関数空間 (表現型) にあります。gamultiobj のみ。多目的オプションを参照してください。

オプション構造体の場合は、名前ではなく関数ハンドルを使用します。

{'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 アルゴリズムを参照してください。

オプション構造の場合は、TolFun を使用します。

非負のスカラー | ga の場合は {1e-6}gamultiobj の場合は {1e-4}

HybridFcn

I* ga が終了した後も最適化を継続する関数。名前または関数ハンドルとして指定します。

または、ハイブリッド関数とそのオプションを指定するセル配列。gaハイブリッド関数を参照してください。

gamultiobj の場合、唯一のハイブリッド関数は @fgoalattain です。gamultiobjハイブリッド関数を参照してください。

問題に整数制約がある場合は、ハイブリッド関数は使用できません。

ハイブリッド関数を使用する場合を参照してください。

関数名またはハンドル | 'fminsearch' | 'patternsearch' | 'fminunc' | 'fmincon' | {[]}

または

1行2列のセル配列 | {@solver, hybridoptions}solver = fminsearchpatternsearchfminunc、またはfmincon {[]}

InitialPenalty

NM I* ペナルティパラメーターの初期値

正のスカラー | {10}

InitialPopulationMatrix

遺伝的アルゴリズムのシードに使用される初期母集団。最大 PopulationSize 行、N 列です。ここで、N は変数の数です。部分的な母集団、つまり PopulationSize 行未満の母集団を渡すことができます。その場合、遺伝的アルゴリズムは CreationFcn を使用して残りの母集団メンバーを生成します。母集団オプションを参照してください。

オプション構造の場合は、InitialPopulation を使用します。

行列 | {[]}

InitialPopulationRange

初期母集団内の個体の範囲を指定する行列またはベクトル。gacreationuniform 作成関数に適用されます。ga は、デフォルトの初期範囲をシフトおよびスケーリングして、有限の境界に一致させます。

オプション構造の場合は、PopInitRange を使用します。

行列またはベクトル | {[-10;10]} は非有界成分、{[-1e4+1;1e4+1]} は整数制約問題の非有界成分、{[lb;ub]} は有界成分、デフォルトの範囲は片側境界に合わせて変更されます

InitialScoresMatrix

適応度を決定するために使用される初期スコア。最大 PopulationSize 行、Nf 列があります。ここで、Nf は適応度関数の数です (ga の場合は 1gamultiobj の場合は 1 より大きくなります)。部分スコア 行列 (つまり、PopulationSize 行未満の行列) を渡すことができます。その場合、ソルバーは適応度関数を評価するときにスコアを入力します。

オプション構造の場合は、InitialScores を使用します。

単一目的の列ベクトル | 多目的の行列 | {[]}

MaxGenerations

アルゴリズムが停止するまでの最大反復回数。

オプション構造の場合は、Generations を使用します。

非負整数 |ga の場合は {100*numberOfVariables}gamultiobj の場合は {200*numberOfVariables}

MaxStallGenerations

MaxStallGenerations世代にわたる最良の適応度関数値の平均相対変化が FunctionTolerance 以下になった場合、アルゴリズムは停止します。StallTest'geometricWeighted' の場合、加重平均相対変化が FunctionTolerance 以下であればアルゴリズムは停止します。

gamultiobj の場合、options.MaxStallGenerations世代にわたる広がり値の相対的変化の幾何平均が options.FunctionTolerance より小さくなり、最終的な広がりが過去の options.MaxStallGenerations世代にわたる平均広がりより小さくなったときにアルゴリズムは停止します。gamultiobj アルゴリズムを参照してください。

オプション構造の場合は、StallGenLimit を使用します。

非負の整数 | ga の場合は {50}gamultiobj の場合は {100}

MaxStallTime

NM tictoc で測定された MaxStallTime 秒間に目的関数の改善が見られない場合、アルゴリズムは停止します。

オプション構造の場合は、StallTimeLimit を使用します。

正のスカラー | {Inf}

MaxTime

アルゴリズムは、tictoc で測定された MaxTime 秒間実行された後に停止します。この制限は各反復の後に適用されるため、反復にかなりの時間がかかる場合は ga が制限を超える可能性があります。

オプション構造の場合は、TimeLimit を使用します。

非負のスカラー | {Inf}

MigrationDirection

移行の方向。移行オプションを参照してください。

'both' | {'forward'}

MigrationFraction

各サブ集団内で別のサブ集団に移動する個体の割合を指定する 0 から 1 までのスカラー。移行オプションを参照してください。

スカラー | {0.2}

MigrationInterval

個体がサブポピュレーション間で移動する間に発生する世代数を指定する正の整数。移行オプションを参照してください。

正の整数 | {20}

MutationFcn

突然変異の子を生成する関数。組み込みの突然変異関数または関数ハンドルの名前として指定します。突然変異オプションを参照してください。

制約なしの ga{'mutationgaussian'} | 制約ありの gamultiobj および ga{'mutationadaptfeasible'}* | {'mutationpower'}I* | 'mutationpositivebasis' | 'mutationuniform' | カスタム突然変異関数

NonlinearConstraintAlgorithm

非線形制約アルゴリズム。遺伝的アルゴリズムのための非線形制約ソルバーアルゴリズムを参照してください。gamultiobj ではオプションは変更できません。

オプション構造の場合は、NonlinConAlgorithm を使用します。

ga では {'auglag'}gamultiobj では {'penalty'}

OutputFcn

ga が各反復で呼び出す関数。関数ハンドルまたは関数ハンドルのセル配列として指定します。出力関数のオプションを参照してください。

オプション構造の場合は、OutputFcns を使用します。

関数ハンドルまたは関数ハンドルのセル配列 | {[]}

ParetoFraction

gamultiobj の場合のみ、ソルバーがより高いフロントから個体を選択している間、最初のパレート フロントに保持する個体の割合を指定する 0 から 1 までのスカラー。多目的オプションを参照してください。

スカラー | {0.35}

PenaltyFactor

NM I* ペナルティ更新パラメーター。

正のスカラー | {100}

PlotFcn

アルゴリズムによって計算されたデータをプロットする関数。組み込みプロット関数の名前、関数ハンドル、または組み込みの名前または関数ハンドルのセル配列として指定します。プロット オプションを参照してください。

オプション構造の場合は、PlotFcns を使用します。

ga または gamultiobj:{[]} | '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

関数がベクトル化されるかどうかを指定します。ベクトル化と並列化オプション(ユーザー関数評価)適応度関数をベクトル化するを参照してください。

オプション構造の場合は、値 'on' または 'off' とともに Vectorized を使用します。

true | {false}

出力引数

すべて折りたたむ

最適化オプション。構造体として返されます。

バージョン履歴

R2006a より前に導入

すべて折りたたむ