メインコンテンツ

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

paretosearch

パレート セット内の点の検出

説明

x = paretosearch(fun,nvars) は、多目的関数 fun の非劣点を見つけます。nvars 引数は最適化問題の次元 (決定変数の数) です。

x = paretosearch(fun,nvars,A,b) は、線形不等式 A*xb に従う非劣点を求めます。線形不等式制約を参照してください。

x = paretosearch(fun,nvars,A,b,Aeq,beq) は、線形制約 Aeq*x = beq および A*xb に従って非劣点を検索します。線形不等式が存在しない場合は、A = []b = [] を設定します。

x = paretosearch(fun,nvars,A,b,Aeq,beq,lb,ub)x の設計変数の下限と上限のセットを定義し、x は常に lb x ub の範囲内になります。線形等式が存在しない場合は、Aeq = []beq = [] を設定します。x(i) に下限がない場合は、lb(i) = -Inf を設定します。x(i) に上限がない場合は、ub(i) = Inf を設定します。

x = paretosearch(fun,nvars,A,b,Aeq,beq,lb,ub,nonlcon) は、nonlcon で定義された非線形不等式 c(x) を適用します。paretosearch 関数は、c(x) ≤ 0 となる非優越点を見つけます。境界が存在しない場合は、lb = []ub = []、またはその両方を設定します。

メモ

現在、paretosearch は非線形等式制約 ceq(x) = 0 をサポートしていません。

x = paretosearch(fun,nvars,A,b,Aeq,beq,lb,ub,nonlcon,options) は、options で指定された最適化オプションを使用して非優越点を見つけます。optimoptions を使用してこれらのオプションを設定してください。非線形不等式制約または非線形等式制約がない場合は nonlcon = [] を設定します。

x = paretosearch(problem)problem の非優越点を見つけます。ここで、problemproblem で記述された構造です。

[x,fval] = paretosearch(___) は、任意の入力変数に対して、x のすべてのソリューション (行) に対する fun のすべての目的関数の値である行列 fval を返します。出力 fval には nf 列があり、nf は目的の数で、x と同じ行数になります。

[x,fval,exitflag,output] = paretosearch(___) は、アルゴリズムが停止した理由を識別する整数である exitflag と、解決プロセスに関する情報を含む構造体である output も返します。

[x,fval,exitflag,output,residuals] = paretosearch(___) は、解点 x における制約値を含む構造体である residuals も返します。

すべて折りたたむ

2 次元変数の 2 つの目的関数のパレート フロント上の点を見つけます。

fun = @(x)[norm(x-[1,2])^2;norm(x+[2,1])^2];
rng default % For reproducibility
x = paretosearch(fun,2);
Pareto set found that satisfies the constraints. 

Optimization completed because the relative change in the volume of the Pareto set 
is less than 'options.ParetoSetChangeTolerance' and constraints are satisfied to within 
'options.ConstraintTolerance'.

解を散布図としてプロットします。

plot(x(:,1),x(:,2),'m*')
xlabel('x(1)')
ylabel('x(2)')

Figure contains an axes object. The axes object with xlabel x(1), ylabel x(2) contains a line object which displays its values using only markers.

理論的には、この問題の解は [-2,-1] から [1,2] への直線です。paretosearch は、この直線に近い等間隔の点を返します。

線形制約 x(1) + x(2) <= 1 に従う 2 次元の 2 目的問題のパレート フロントを作成します。

fun = @(x)[norm(x-[1,2])^2;norm(x+[2,1])^2];
A = [1,1];
b = 1;
rng default % For reproducibility
x = paretosearch(fun,2,A,b);
Pareto set found that satisfies the constraints. 

Optimization completed because the relative change in the volume of the Pareto set 
is less than 'options.ParetoSetChangeTolerance' and constraints are satisfied to within 
'options.ConstraintTolerance'.

解を散布図としてプロットします。

plot(x(:,1),x(:,2),'m*')
xlabel('x(1)')
ylabel('x(2)')

Figure contains an axes object. The axes object with xlabel x(1), ylabel x(2) contains a line object which displays its values using only markers.

理論的には、この問題の解は [-2,-1] から [0,1] への直線です。paretosearch は、この直線に近い等間隔の点を返します。

境界 x(1) >= 0 および x(2) <= 1 に従って、2 次元の 2 つの目的の問題のパレート フロントを作成します。

fun = @(x)[norm(x-[1,2])^2;norm(x+[2,1])^2];
lb = [0,-Inf]; % x(1) >= 0
ub = [Inf,1]; % x(2) <= 1
rng default % For reproducibility
x = paretosearch(fun,2,[],[],[],[],lb,ub);
Pareto set found that satisfies the constraints. 

Optimization completed because the relative change in the volume of the Pareto set 
is less than 'options.ParetoSetChangeTolerance' and constraints are satisfied to within 
'options.ConstraintTolerance'.

解を散布図としてプロットします。

plot(x(:,1),x(:,2),'m*')
xlabel('x(1)')
ylabel('x(2)')

Figure contains an axes object. The axes object with xlabel x(1), ylabel x(2) contains a line object which displays its values using only markers.

すべての解点は制約境界 x(1) = 0 または x(2) = 1 上にあります。

境界 -1.1 <= x(i) <= 1.1 と非線形制約 norm(x)^2 <= 1.2 に従う 2 次元の 2 目的問題のパレート フロントを作成します。非線形制約関数はこの例の最後に表示され、この例をライブ スクリプトとして実行すると機能します。それ以外の場合この例を実行するには、非線形制約関数を MATLAB ® パス上のファイルとして含めます。

非線形制約の効果をよりよく確認するには、大きなパレート セット サイズを使用するようにオプションを設定します。

rng default % For reproducibility
fun = @(x)[norm(x-[1,2])^2;norm(x+[2,1])^2];
lb = [-1.1,-1.1];
ub = [1.1,1.1];
options = optimoptions('paretosearch','ParetoSetSize',200);
x = paretosearch(fun,2,[],[],[],[],lb,ub,@circlecons,options);
Pareto set found that satisfies the constraints. 

Optimization completed because the relative change in the volume of the Pareto set 
is less than 'options.ParetoSetChangeTolerance' and constraints are satisfied to within 
'options.ConstraintTolerance'.

解を散布図としてプロットします。円形制約境界のプロットを含めます。

figure
plot(x(:,1),x(:,2),'k*')
xlabel('x(1)')
ylabel('x(2)')
hold on
rectangle('Position',[-1.2 -1.2 2.4 2.4],'Curvature',1,'EdgeColor','r')
xlim([-1.2,0.5])
ylim([-0.5,1.2])
axis square
hold off

Figure contains an axes object. The axes object with xlabel x(1), ylabel x(2) contains 2 objects of type line, rectangle. One or more of the lines displays its values using only markers

正の x(1) 値または負の x(2) 値を持つ解点は、非線形制約境界に近くなります。

function [c,ceq] = circlecons(x)
ceq = [];
c = norm(x)^2 - 1.2;
end

paretosearch の進行状況を監視するには、'psplotparetof' プロット関数を指定します。

fun = @(x)[norm(x-[1,2])^2;norm(x+[2,1])^2];
options = optimoptions('paretosearch','PlotFcn','psplotparetof');
lb = [-4,-4];
ub = -lb;
x = paretosearch(fun,2,[],[],[],[],lb,ub,[],options);
Pareto set found that satisfies the constraints. 

Optimization completed because the relative change in the volume of the Pareto set 
is less than 'options.ParetoSetChangeTolerance' and constraints are satisfied to within 
'options.ConstraintTolerance'.

Figure paretosearch contains an axes object. The axes object with title Pareto Front, xlabel Objective 1, ylabel Objective 2 contains an object of type scatter.

解は半径 18 の 1/4 円弧のように見え、解析解であることが示されます。

xfval の両方の出力を使用して paretosearch を呼び出すことにより、関数空間とパラメーター空間の両方でパレート フロントを取得します。関数空間とパラメーター空間の両方でパレート集合をプロットするためのオプションを設定します。

fun = @(x)[norm(x-[1,2])^2;norm(x+[2,1])^2];
lb = [-4,-4];
ub = -lb;
options = optimoptions('paretosearch','PlotFcn',{'psplotparetof' 'psplotparetox'});
rng default % For reproducibility
[x,fval] = paretosearch(fun,2,[],[],[],[],lb,ub,[],options);
Pareto set found that satisfies the constraints. 

Optimization completed because the relative change in the volume of the Pareto set 
is less than 'options.ParetoSetChangeTolerance' and constraints are satisfied to within 
'options.ConstraintTolerance'.

Figure paretosearch contains 2 axes objects. Axes object 1 with title Pareto Front, xlabel Objective 1, ylabel Objective 2 contains an object of type scatter. Axes object 2 with title Parameter Space, xlabel Parameter 1, ylabel Parameter 2 contains an object of type scatter.

目的関数空間における解析解は、半径 18 の 1/4 円弧です。パラメーター空間では、解析解は [-2,-1] から [1,2] までの直線になります。解点は分析曲線に近くなります。

パレート集合の解決プロセスを監視するためのオプションを設定します。また、解決プロセスを理解できるように、paretosearch からさらに多くの出力を取得します。

options = optimoptions('paretosearch','Display','iter',...
    'PlotFcn',{'psplotparetof' 'psplotparetox'});
fun = @(x)[norm(x-[1,2])^2;norm(x+[2,1])^2];
lb = [-4,-4];
ub = -lb;
rng default % For reproducibility
[x,fval,exitflag,output] = paretosearch(fun,2,[],[],[],[],lb,ub,[],options);
Iter   F-count   NumSolutions  Spread       Volume 
   0        60        11          -         3.7872e+02
   1       386        12       7.6126e-01   3.4654e+02
   2       702        27       9.5232e-01   2.9452e+02
   3      1029        27       6.6332e-02   2.9904e+02
   4      1357        36       1.3874e-01   3.0070e+02
   5      1690        37       1.5379e-01   3.0200e+02
   6      2014        50       1.7828e-01   3.0252e+02
   7      2214        59       1.8536e-01   3.0320e+02
   8      2344        60       1.9435e-01   3.0361e+02
   9      2464        60       2.1055e-01   3.0388e+02

Pareto set found that satisfies the constraints. 

Optimization completed because the relative change in the volume of the Pareto set 
is less than 'options.ParetoSetChangeTolerance' and constraints are satisfied to within 
'options.ConstraintTolerance'.

Figure paretosearch contains 2 axes objects. Axes object 1 with title Pareto Front, xlabel Objective 1, ylabel Objective 2 contains an object of type scatter. Axes object 2 with title Parameter Space, xlabel Parameter 1, ylabel Parameter 2 contains an object of type scatter.

追加の出力を調べます。

fprintf('Exit flag %d.\n',exitflag)
Exit flag 1.
disp(output)
         iterations: 10
          funccount: 2464
             volume: 303.6076
    averagedistance: 0.0250
             spread: 0.2105
      maxconstraint: 0
            message: 'Pareto set found that satisfies the constraints. ↵↵Optimization completed because the relative change in the volume of the Pareto set ↵is less than 'options.ParetoSetChangeTolerance' and constraints are satisfied to within ↵'options.ConstraintTolerance'.'
           rngstate: [1×1 struct]

パレート フロント制約残差を取得して調べます。線形不等式制約 sum(x) <= -1/2 と非線形不等式制約 norm(x)^2 <= 1.2 を使用して問題を作成します。精度を上げるには、パレート フロントに 200 個のポイントを使用し、1e-7ParetoSetChangeTolerance を使用し、自然な境界を -1.2 <= x(i) <= 1.2 にします。

非線形制約関数はこの例の最後に表示され、この例をライブ スクリプトとして実行すると機能します。それ以外の場合この例を実行するには、非線形制約関数を MATLAB ® パス上のファイルとして含めます。

fun = @(x)[norm(x-[1,2])^2;norm(x+[2,1])^2];
A = [1,1];
b = -1/2;
lb = [-1.2,-1.2];
ub = -lb;
nonlcon = @circlecons;
rng default % For reproducibility
options = optimoptions('paretosearch','ParetoSetChangeTolerance',1e-7,...
    'PlotFcn',{'psplotparetof' 'psplotparetox'},'ParetoSetSize',200);

すべての出力を使用して paretosearch を呼び出します。

[x,fval,exitflag,output,residuals] = paretosearch(fun,2,A,b,[],[],lb,ub,nonlcon,options);
Pareto set found that satisfies the constraints. 

Optimization completed because the relative change in the volume of the Pareto set 
is less than 'options.ParetoSetChangeTolerance' and constraints are satisfied to within 
'options.ConstraintTolerance'.

Figure paretosearch contains 2 axes objects. Axes object 1 with title Pareto Front, xlabel Objective 1, ylabel Objective 2 contains an object of type scatter. Axes object 2 with title Parameter Space, xlabel Parameter 1, ylabel Parameter 2 contains an object of type scatter.

不等式制約により、制約のない集合と比較してパレート集合のサイズが縮小されます。返された残差を調べます。

fprintf('The maximum linear inequality constraint residual is %f.\n',max(residuals.ineqlin))
The maximum linear inequality constraint residual is 0.000000.
fprintf('The maximum nonlinear inequality constraint residual is %f.\n',max(residuals.ineqnonlin))
The maximum nonlinear inequality constraint residual is -0.000537.

返される残差の最大値は負であり、返されるポイントはすべて実行可能であることを意味します。返される残差の最大値はゼロに近いため、一部のポイントでは各制約がアクティブであることを意味します。

function [c,ceq] = circlecons(x)
ceq = [];
c = norm(x)^2 - 1.2;
end

入力引数

すべて折りたたむ

最適化する目的関数。関数ハンドルまたは関数名として指定します。

fun は、長さ nvars の double 型実数行ベクトル x を受け取り、目的関数値の実数ベクトル F(x) を返す関数です。fun の書き方の詳細については、目的関数を計算する を参照してください。

UseVectorized オプションを true に設定すると、fun はサイズが nnvars 列の行列を受け入れます。ここで、行列は n個体の個体を表します。fun はサイズが nm 列の行列を返します。ここで、m は目的関数の数です。適応度関数をベクトル化するを参照してください。

例: @(x)[sin(x),cos(x)]

データ型: char | function_handle | string

変数の数。正の整数として指定されます。ソルバーは長さが nvars から fun までの行ベクトルを渡します。

例: 4

データ型: double

線形不等式制約。実数行列として指定されます。AMnvars 列の行列で、M は不等式の数です。

AM 個の線形不等式を符号化します。

A*x <= b,

ここで、xnvars 個の変数 x(:) の列ベクトル、bM 個の要素をもつ列ベクトルです。

例えば、

x1 + 2x2 ≤ 10
3x1 + 4x2 ≤ 20
5x1 + 6x2 ≤ 30,

次の制約を与えます:

A = [1,2;3,4;5,6];
b = [10;20;30];

例: 制御変数の合計が 1 以下になるように指定するには、制約 A = ones(1,N)b = 1 を指定します。

データ型: double

実数ベクトルで指定される線形不等式制約です。b は、行列 A に関連する M 要素ベクトルです。b を行ベクトルとして渡す場合、ソルバーは b を列ベクトル b(:) に内部的に変換します。

bM 個の線形不等式を符号化します。

A*x <= b,

ここで、xN 個の変数 x(:) の列ベクトル、AMN 列の行列です。

例えば、

x1 + 2x2 ≤ 10
3x1 + 4x2 ≤ 20
5x1 + 6x2 ≤ 30,

次の制約を与えます:

A = [1,2;3,4;5,6];
b = [10;20;30];

例: 制御変数の合計が 1 以下になるように指定するには、制約 A = ones(1,N)b = 1 を指定します。

データ型: double

線形等式制約。実数行列として指定されます。AeqMenvars 列の行列で、Me は等式の数です。

AeqMe 個の線形等式を符号化します。

Aeq*x = beq,

ここで、xN 個の変数 x(:) の列ベクトル、beqMe 個の要素をもつ列ベクトルです。

例えば、

x1 + 2 x2 + 3 x3 = 10
2 x1 + 4 x2 + x3 = 20,

次の制約を与えます:

Aeq = [1,2,3;2,4,1];
beq = [10;20];

例: 制御変数の合計が 1 になるように指定するには、制約 Aeq = ones(1,N)beq = 1 を指定します。

データ型: double

実数ベクトルで指定される線形等式制約です。beq は、行列 Aeq に関連する Me 要素ベクトルです。beq を行ベクトルとして渡す場合、ソルバーは beq を列ベクトル beq(:) に内部的に変換します。

beqMe 個の線形等式を符号化します。

Aeq*x = beq,

ここで、xN 個の変数 x(:) の列ベクトル、AeqMeqN 列の行列です。

例えば、

x1 + 2 x2 + 3 x3 = 10
2 x1 + 4 x2 + x3 = 20,

次の制約を与えます:

Aeq = [1,2,3;2,4,1];
beq = [10;20];

例: 制御変数の合計が 1 になるように指定するには、制約 Aeq = ones(1,N)beq = 1 を指定します。

データ型: double

下限は、実数ベクトルまたは倍精度浮動小数点配列として指定されます。lb は、lb x ub 内の要素ごとの下限を表します。

paretosearch は配列 lb をベクトル lb(:) に内部的に変換します。

例: lb = [0;-Inf;4]x(1) ≥ 0, x(3) ≥ 4 を意味します。

データ型: double

上限は、実数ベクトルまたは double の配列として指定されます。ub は、lb x ub 内の要素ごとの上限を表します。

paretosearch は配列 ub をベクトル ub(:) に内部的に変換します。

例: ub = [Inf;4;10]x(2) ≤ 4, x(3) ≤ 10 を意味します。

データ型: double

非線形制約。関数ハンドルまたは関数名として指定されます。nonlcon は、行ベクトル x を受け入れ、2 つの行ベクトル c(x)ceq(x) を返す関数です。

  • c(x) は、x における非線形不等式制約の行ベクトルです。paretosearch 関数は、c のすべてのエントリに対して c(x) <= 0 を満たそうとします。

  • ceq(x)[] を返す必要があります。現在、paretosearch は非線形等式制約をサポートしていません。

UseVectorized オプションを true に設定すると、nonlcon はサイズが nnvars 列の行列を受け入れます。ここで、行列は n個体の個体を表します。nonlcon は、最初の引数にサイズが nmc 列の行列を返します。ここで、mc は非線形不等式制約の数です。適応度関数をベクトル化するを参照してください。

たとえば、x = paretosearch(@myfun,nvars,A,b,Aeq,beq,lb,ub,@mycon) の場合、mycon は次の MATLAB® 関数になります。

function [c,ceq] = mycon(x)
c = ...     % Compute nonlinear inequalities at x.
ceq = []    % No nonlinear equalities at x.

詳細については、非線形制約を参照してください。

データ型: char | function_handle | string

最適化オプション。optimoptions の出力または構造体として指定されます。

{} はデフォルト値を示します。オプションの詳細については、パターン探索オプション を参照してください。

paretosearch のオプション

オプション説明

ConstraintTolerance

制約に対する許容度。

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

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

Display

表示レベル。

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

InitialPoints

paretosearchの初期点。次のいずれかのデータ型を使用します。

  • nvars 列の行列。各行は 1 つの初期点を表します。

  • 次のフィールドを含む構造体 (X0 を除くすべてのフィールドはオプションです)。

    • X0nvars 列を持つ行列。各行は 1 つの初期点を表します。

    • FvalsnumObjectives 列を持つ行列。各行は X0 の対応するポイントにおける目的関数の値を表します。

    • CineqnumIneq 列を持つ行列。各行は X0 の対応する点における非線形不等式制約値を表します。

paretosearch は、Fvals フィールドと Cineq フィールドの欠損値を計算します。

nvars 列の行列 | 構造 | {[]}

MaxFunctionEvaluations

目的関数評価の最大数。

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

非負整数 | patternsearchの場合は{'2000*numberOfVariables'}paretosearchの場合は{'3000*(numberOfVariables+numberOfObjectives)'}。ここで、numberOfVariablesは問題変数の数、numberOfObjectivesは目的関数の数です。

MaxIterations

反復最大回数

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

非負整数 | patternsearchの場合は{'100*numberOfVariables'}paretosearchの場合は{'100*(numberOfVariables+numberOfObjectives)'}。ここで、numberOfVariablesは問題変数の数、numberOfObjectivesは目的関数の数です。

MaxTime

最適化に許可される合計時間 (秒単位)。

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

非負のスカラー | {Inf}

MeshTolerance

メッシュ サイズの許容範囲。

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

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

MinPollFraction

ポーリングするパターンの最小部分。

0 から 1 までのスカラー | {0}

OutputFcn

最適化関数が各反復で呼び出す関数。関数ハンドルまたは関数ハンドルのセル配列として指定します。

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

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

ParetoSetChangeTolerance

反復ウィンドウ内の停止測定値の相対的な変化が ParetoSetChangeTolerance 以下になると、ソルバーは停止します。

  • 目標が 3 つ以下の場合、paretosearch はボリュームと広がりの測定を使用します。

  • 4 つ以上の目標の場合、paretosearch は広がりと距離の測定を使用します。

paretosearchアルゴリズムの定義を参照してください。

適用可能な測定値の相対的な変化が ParetoSetChangeTolerance 未満になるか、これらの測定値の時系列の 2 乗フーリエ変換の最大値が比較的小さくなると、ソルバーは停止します。paretosearch アルゴリズムを参照してください。

メモ

ParetoSetChangeTolerance < sqrt(eps) ~ 1.5e-8 の設定は推奨されません。

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

ParetoSetSize

パレート集合内の点の数。

正の整数 | {'max(numberOfObjectives, 60)'}numberOfObjectivesは目的関数の数

PlotFcn

パターン探索からの出力のプロット。組み込みプロット関数の名前、関数ハンドル、または組み込みプロット関数または関数ハンドルの名前のセル配列として指定します。

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

{[]} | 'psplotfuncount' | 'psplotmaxconstr' | カスタムプロット関数

複数の目的がある場合: 'psplotdistance' | 'psplotparetof' | 'psplotparetox' | 'psplotspread' | 'psplotvolume'

目標はただ一つ:'psplotbestf' | 'psplotmeshsize' | 'psplotbestx'

PollMethod

パターン探索で使用されるポーリング戦略。

メモ

問題に線形等式制約がある場合は、MADS ポーリングは使用できません。

{'GPSPositiveBasis2np2'} | 'GPSPositiveBasis2N' | 'GPSPositiveBasisNp1' | 'GSSPositiveBasis2N' | 'GSSPositiveBasisNp1' | 'MADSPositiveBasis2N' | 'MADSPositiveBasisNp1' | 'GSSPositiveBasis2np2'

UseParallel

目的関数と非線形制約関数を並列に計算します。ベクトル化と並列化のオプションGlobal Optimization Toolbox で並列処理を使用する方法を参照してください。

メモ

ベクトル化または並列ポーリングを使用するには、patternsearch に対して UseCompletePolltrue に設定する必要があります。同様に、ベクトル化または並列探索の場合は UseCompleteSearchtrue に設定します。

R2019a 以降、UseParallel オプションを true に設定すると、patternsearch が内部的に UseCompletePoll 設定を true にオーバーライドし、関数が並列にポーリングするようになります。

true | {false}

UseVectorized

関数がベクトル化されるかどうかを指定します。ベクトル化と並列化のオプション目的関数と制約関数をベクトル化するを参照してください。

メモ

ベクトル化または並列ポーリングを使用するには、patternsearch に対して UseCompletePolltrue に設定する必要があります。同様に、ベクトル化または並列探索の場合は UseCompleteSearchtrue に設定します。

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

true | {false}

例: options = optimoptions('paretosearch','Display','none','UseParallel',true)

次のフィールドをもつ構造体として指定される問題構造体です。

  • objective — 目的関数

  • nvars — 変数の数

  • Aineq — 線形不等式制約の行列

  • bineq — 線形不等式制約のベクトル

  • Aeq — 線形等式制約の行列

  • beq — 線形等式制約のベクトル

  • lbx の下限

  • ubx の上限

  • nonlcon — 非線形制約関数

  • solver'paretosearch'

  • optionsoptimoptions で作成されたオプション

  • rngstate — 乱数ジェネレータの状態をリセットするためのオプションフィールド

メモ

problem のすべてのフィールドは必須ですが、rngstate はオプションです。

データ型: struct

出力引数

すべて折りたたむ

パレート ポイントは、mnvars 列の配列として返されます。ここで、m はパレート フロント上のポイントの数です。x の各行は、パレート フロント上の 1 つの点を表します。

パレート フロント上の関数値が、mnf 列の配列として返されます。m はパレート フロント上の点の数、nf は目的関数の数です。fval の各行は、x の 1 つのパレート点における関数値を表します。

paretosearch が停止した理由が、この表の整数値の 1 つとして返されます。

終了フラグ停止条件
1

以下の条件のいずれかが満たされます。

  • すべての暫定解のメッシュ サイズが options.MeshTolerance より小さく、制約 (ある場合) が options.ConstraintTolerance 内で満たされている。

  • パレート セットの広がりの相対変化が options.ParetoSetChangeTolerance より小さく、制約 (ある場合) が options.ConstraintTolerance 内で満たされている。

  • パレート セットの容積の相対変化が options.ParetoSetChangeTolerance より小さく、制約 (ある場合) が options.ConstraintTolerance 内で満たされている。

0反復回数が options.MaxIterations を超過、または関数評価の回数が options.MaxFunctionEvaluations を超過しています。
-1

最適化は出力関数またはプロット関数によって停止されます。

-2すべての制約を満たす点をソルバーが見つけられません。
-5最適化時間が options.MaxTime を超過しています。

最適化プロセスに関する情報。次のフィールドをもつ構造体として返されます。

  • iterations — 反復回数の合計。

  • funccount — 関数評価の合計回数。

  • volume — 関数空間内のパレート点から形成された集合のハイパーボリューム。paretosearchアルゴリズムの定義を参照してください。

  • averagedistance — 関数空間におけるパレート点の平均距離測定。paretosearchアルゴリズムの定義を参照してください。

  • spread — パレート点の平均広がりの尺度。paretosearchアルゴリズムの定義を参照してください。

  • maxconstraint — 最大制約違反(ある場合)。

  • message — アルゴリズムが終了した理由。

  • rngstate — アルゴリズムが開始する直前の MATLAB 乱数ジェネレーターの状態。'MADSPositiveBasis2N' などのランダム ポーリング メソッドを使用する場合、または初期母集団を作成するためのデフォルトの準ランダム メソッドを使用する場合は、rngstate の値を使用して出力を再現できます。ga と同じ手法について説明している 結果を再現する を参照してください。

x での制約残差は、次のフィールドを持つ構造体として返されます (フィールド サイズの用語とエントリの用語集は表の後に続きます)。

フィールド名フィールドサイズエントリ
lowermnvarslbx
uppermnvarsxub
ineqlinmnconA*x - b
eqlinmncon|Aeq*x - b|
ineqnonlinmnconc(x)
  • m —パレート フロント上の返された点の数 x

  • nvars — 制御変数の数

  • ncon — 関連するタイプの制約の数(Aの行数や返された非線形等式の数など)

  • c(x) — 非線形制約関数の数値

詳細

すべて折りたたむ

アルゴリズム

paretosearch はパターン探索を使用して、パレート フロント上の点を探索します。詳細は、paretosearch アルゴリズムを参照してください。

代替機能

アプリ

[最適化] ライブ エディター タスクが paretosearch にビジュアル インターフェイスを提供します。

拡張機能

すべて展開する

バージョン履歴

R2018b で導入