Main Content

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

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.

x = 1×2

    0.0227    0.0656

fval = 0.9442

gaoptimset を使用して、値をデフォルトに設定して ga のオプション構造を作成します。

options = gaoptimset(@ga)
options = struct with fields:
        PopulationType: 'doubleVector'
          PopInitRange: []
        PopulationSize: '50 when numberOfVariables <= 5, else 200'
            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} | 混合整数問題の場合は {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 より前に導入

すべて折りたたむ

R2018b: gaoptimset は非推奨

オプションを設定する場合、gaoptimsetpsoptimset、および saoptimset 関数は推奨されません。代わりに optimoptions を使用してください。

optimoptions と他の関数を使用する場合の主な違いは、 optimoptions の最初の引数としてソルバー名を含めることです。たとえば、ga で反復表示を設定するには、次のようにします。

options = optimoptions('ga','Display','iter');
% instead of
options = gaoptimset('Display','iter');

その他の違いは、一部のオプション名が変更されたことです。optimoptions では古い名前を引き続き使用できます。詳細については、R2016a のオプションの変更 を参照してください。

optimoptions は他の関数に比べて次のような利点があります:

  • optimoptions は、特にライブ エディターで、より優れた自動コード提案と補完を提供します。

  • さまざまな関数の代わりに、単一のオプション設定関数を使用できます。

現時点では、gaoptimsetpsoptimsetsaoptimset を削除する予定はありません。