optimoptions
最適化オプションの作成
構文
説明
は options
= optimoptions(SolverName
)SolverName
ソルバーの一連の既定オプションを返します。
は、1 つ以上の名前と値のペアの引数を使用して設定したパラメーターが指定された options
= optimoptions(SolverName
,Name,Value
)options
を返します。
は、名前付きパラメーターを指定値で変更して options
= optimoptions(oldoptions
,Name,Value
)oldoptions
のコピーを返します。
は options
= optimoptions(SolverName
,oldoptions
)SolverName
ソルバーの既定オプションを返し、oldoptions
の該当するオプションを options
にコピーします。
例
既定のオプションの作成
fmincon
ソルバーの既定のオプションを作成します。
options = optimoptions('fmincon')
options = fmincon options: Options used by current Algorithm ('interior-point'): (Other available algorithms: 'active-set', 'sqp', 'sqp-legacy', 'trust-region-reflective') Set properties: No options set. Default properties: Algorithm: 'interior-point' BarrierParamUpdate: 'monotone' CheckGradients: 0 ConstraintTolerance: 1.0000e-06 Display: 'final' EnableFeasibilityMode: 0 FiniteDifferenceStepSize: 'sqrt(eps)' FiniteDifferenceType: 'forward' HessianApproximation: 'bfgs' HessianFcn: [] HessianMultiplyFcn: [] HonorBounds: 1 MaxFunctionEvaluations: 3000 MaxIterations: 1000 ObjectiveLimit: -1.0000e+20 OptimalityTolerance: 1.0000e-06 OutputFcn: [] PlotFcn: [] ScaleProblem: 0 SpecifyConstraintGradient: 0 SpecifyObjectiveGradient: 0 StepTolerance: 1.0000e-10 SubproblemAlgorithm: 'factorization' TypicalX: 'ones(numberOfVariables,1)' UseParallel: 0 Show options not used by current Algorithm ('interior-point')
既定ではないオプションの作成
fmincon
のオプションを、使用するアルゴリズムが sqp
、反復回数が 1,500 回以下になるように設定します。
options = optimoptions(@fmincon,'Algorithm','sqp','MaxIterations',1500)
options = fmincon options: Options used by current Algorithm ('sqp'): (Other available algorithms: 'active-set', 'interior-point', 'sqp-legacy', 'trust-region-reflective') Set properties: Algorithm: 'sqp' MaxIterations: 1500 Default properties: CheckGradients: 0 ConstraintTolerance: 1.0000e-06 Display: 'final' FiniteDifferenceStepSize: 'sqrt(eps)' FiniteDifferenceType: 'forward' MaxFunctionEvaluations: '100*numberOfVariables' ObjectiveLimit: -1.0000e+20 OptimalityTolerance: 1.0000e-06 OutputFcn: [] PlotFcn: [] ScaleProblem: 0 SpecifyConstraintGradient: 0 SpecifyObjectiveGradient: 0 StepTolerance: 1.0000e-06 TypicalX: 'ones(numberOfVariables,1)' UseParallel: 0 Show options not used by current Algorithm ('sqp')
オプションの更新
既存のオプションを新しい値で更新します。
lsqnonlin
ソルバーのオプションを、使用するアルゴリズムが levenberg-marquardt
、関数評価回数が 1,500 回以下になるように設定します。
oldoptions = optimoptions(@lsqnonlin,'Algorithm','levenberg-marquardt',... 'MaxFunctionEvaluations',1500)
oldoptions = lsqnonlin options: Options used by current Algorithm ('levenberg-marquardt'): (Other available algorithms: 'interior-point', 'trust-region-reflective') Set properties: Algorithm: 'levenberg-marquardt' MaxFunctionEvaluations: 1500 Default properties: CheckGradients: 0 Display: 'final' FiniteDifferenceStepSize: 'sqrt(eps)' FiniteDifferenceType: 'forward' FunctionTolerance: 1.0000e-06 MaxIterations: 400 OutputFcn: [] PlotFcn: [] SpecifyObjectiveGradient: 0 StepTolerance: 1.0000e-06 TypicalX: 'ones(numberOfVariables,1)' UseParallel: 0 Show options not used by current Algorithm ('levenberg-marquardt')
MaxFunctionEvaluations
を 2000 に増やします。
options = optimoptions(oldoptions,'MaxFunctionEvaluations',2000)
options = lsqnonlin options: Options used by current Algorithm ('levenberg-marquardt'): (Other available algorithms: 'interior-point', 'trust-region-reflective') Set properties: Algorithm: 'levenberg-marquardt' MaxFunctionEvaluations: 2000 Default properties: CheckGradients: 0 Display: 'final' FiniteDifferenceStepSize: 'sqrt(eps)' FiniteDifferenceType: 'forward' FunctionTolerance: 1.0000e-06 MaxIterations: 400 OutputFcn: [] PlotFcn: [] SpecifyObjectiveGradient: 0 StepTolerance: 1.0000e-06 TypicalX: 'ones(numberOfVariables,1)' UseParallel: 0 Show options not used by current Algorithm ('levenberg-marquardt')
ドット表記を使用したオプションの更新
ドット表記を使用して既存のオプションを新しい値に更新します。
lsqnonlin
ソルバーのオプションを、使用するアルゴリズムが levenberg-marquardt
、関数評価回数が 1,500 回以下になるように設定します。
options = optimoptions(@lsqnonlin,'Algorithm','levenberg-marquardt',... 'MaxFunctionEvaluations',1500)
options = lsqnonlin options: Options used by current Algorithm ('levenberg-marquardt'): (Other available algorithms: 'interior-point', 'trust-region-reflective') Set properties: Algorithm: 'levenberg-marquardt' MaxFunctionEvaluations: 1500 Default properties: CheckGradients: 0 Display: 'final' FiniteDifferenceStepSize: 'sqrt(eps)' FiniteDifferenceType: 'forward' FunctionTolerance: 1.0000e-06 MaxIterations: 400 OutputFcn: [] PlotFcn: [] SpecifyObjectiveGradient: 0 StepTolerance: 1.0000e-06 TypicalX: 'ones(numberOfVariables,1)' UseParallel: 0 Show options not used by current Algorithm ('levenberg-marquardt')
ドット表記を使用して MaxFunctionEvaluations
を 2000 に増加させます。
options.MaxFunctionEvaluations = 2000
options = lsqnonlin options: Options used by current Algorithm ('levenberg-marquardt'): (Other available algorithms: 'interior-point', 'trust-region-reflective') Set properties: Algorithm: 'levenberg-marquardt' MaxFunctionEvaluations: 2000 Default properties: CheckGradients: 0 Display: 'final' FiniteDifferenceStepSize: 'sqrt(eps)' FiniteDifferenceType: 'forward' FunctionTolerance: 1.0000e-06 MaxIterations: 400 OutputFcn: [] PlotFcn: [] SpecifyObjectiveGradient: 0 StepTolerance: 1.0000e-06 TypicalX: 'ones(numberOfVariables,1)' UseParallel: 0 Show options not used by current Algorithm ('levenberg-marquardt')
別のソルバーへのオプションのコピー
fmincon
ソルバーの既定外のオプションを、fminunc
ソルバーのオプションに転送します。
fmincon
のオプションを、使用するアルゴリズムが sqp、反復回数が 1,500 回以下になるように設定します。
oldoptions = optimoptions(@fmincon,'Algorithm','sqp','MaxIterations',1500)
oldoptions = fmincon options: Options used by current Algorithm ('sqp'): (Other available algorithms: 'active-set', 'interior-point', 'sqp-legacy', 'trust-region-reflective') Set properties: Algorithm: 'sqp' MaxIterations: 1500 Default properties: CheckGradients: 0 ConstraintTolerance: 1.0000e-06 Display: 'final' FiniteDifferenceStepSize: 'sqrt(eps)' FiniteDifferenceType: 'forward' MaxFunctionEvaluations: '100*numberOfVariables' ObjectiveLimit: -1.0000e+20 OptimalityTolerance: 1.0000e-06 OutputFcn: [] PlotFcn: [] ScaleProblem: 0 SpecifyConstraintGradient: 0 SpecifyObjectiveGradient: 0 StepTolerance: 1.0000e-06 TypicalX: 'ones(numberOfVariables,1)' UseParallel: 0 Show options not used by current Algorithm ('sqp')
該当するオプションを fminunc
ソルバーに転送します。
options = optimoptions(@fminunc,oldoptions)
options = fminunc options: Options used by current Algorithm ('quasi-newton'): (Other available algorithms: 'trust-region') Set properties: CheckGradients: 0 FiniteDifferenceType: 'forward' MaxIterations: 1500 OptimalityTolerance: 1.0000e-06 PlotFcn: [] SpecifyObjectiveGradient: 0 StepTolerance: 1.0000e-06 Default properties: Algorithm: 'quasi-newton' Display: 'final' FiniteDifferenceStepSize: 'sqrt(eps)' HessianApproximation: 'bfgs' MaxFunctionEvaluations: '100*numberOfVariables' ObjectiveLimit: -1.0000e+20 OutputFcn: [] TypicalX: 'ones(numberOfVariables,1)' UseParallel: 0 Show options not used by current Algorithm ('quasi-newton')
'sqp'
は fminunc
の有効なアルゴリズム オプションではないため、このアルゴリズム オプションは fminunc
に引き継がれません。
最適化問題のソルバーと既定オプションの特定
最適化問題を作成し、既定のソルバーおよびオプションを特定します。
rng default x = optimvar('x',3,'LowerBound',0); expr = x'*(eye(3) + randn(3))*x - randn(1,3)*x; prob = optimproblem('Objective',expr); options = optimoptions(prob)
options = quadprog options: Options used by current Algorithm ('interior-point-convex'): (Other available algorithms: 'active-set', 'trust-region-reflective') Set properties: No options set. Default properties: Algorithm: 'interior-point-convex' ConstraintTolerance: 1.0000e-08 Display: 'final' LinearSolver: 'auto' MaxIterations: 200 OptimalityTolerance: 1.0000e-08 StepTolerance: 1.0000e-12 Show options not used by current Algorithm ('interior-point-convex')
既定のソルバーは quadprog
です。
反復表示を使用するオプションを設定します。解を求めます。
options.Display = 'iter'; sol = solve(prob,'Options',options);
Solving problem using quadprog. Your Hessian is not symmetric. Resetting H=(H+H')/2. Iter Fval Primal Infeas Dual Infeas Complementarity 0 2.018911e+00 0.000000e+00 2.757660e+00 6.535839e-01 1 -2.170204e+00 0.000000e+00 8.881784e-16 2.586177e-01 2 -3.405808e+00 0.000000e+00 8.881784e-16 2.244054e-03 3 -3.438788e+00 0.000000e+00 3.356973e-16 7.261144e-09 Minimum found that satisfies the constraints. Optimization completed because the objective function is non-decreasing in feasible directions, to within the value of the optimality tolerance, and constraints are satisfied to within the value of the constraint tolerance.
sol.x
ans = 3×1
1.6035
0.0000
0.8029
入力引数
SolverName
— ソルバー名
文字ベクトル | string | 関数ハンドル
文字ベクトル、stringまたは関数ハンドルとして指定されるソルバー名です。
例: 'fmincon'
例: @fmincon
データ型: char
| function_handle
| string
oldoptions
— optimoptions
で作成されたオプション
options オブジェクト
関数 optimoptions
で作成した、options オブジェクトとして指定されるオプションです。
例: oldoptions = optimoptions(@fminunc)
prob
— 問題オブジェクト
OptimizationProblem
オブジェクト | EquationProblem
オブジェクト
問題オブジェクト。OptimizationProblem
オブジェクトまたは EquationProblem
オブジェクトとして指定します。問題ベースの最適化ワークフローまたは方程式を解くための問題ベースのワークフローを使用して、prob
を作成します。
prob
を使用する構文では、問題に対する既定ソルバーが何であるかを判断でき、アルゴリズムなどのオプションを変更できます。
例: prob = optimproblem('Objective',myobj)
。myobj
は最適化式です。
名前と値の引数
引数の任意のペアを Name1=Value1,...,NameN=ValueN
のように指定します。Name
は引数名、Value
は対応する値です。名前と値の引数は、他の引数より後に指定されている必要があります。ただし、各ペアの順序は任意です。
R2021a 以前では、それぞれの名前と値をコンマで区切り、Name
を引用符で囲みます。
例: optimoptions(@fmincon,'Display','iter','FunctionTolerance',1e-10)
は fmincon
オプションを、反復表示をもち 1e-10
の FunctionTolerance
をもつように設定します。
関連する名前と値のペアの引数については、ソルバーのオプション表を参照してください。
fgoalattain
options
fmincon
options
fminimax
options
fminunc
options
fseminf
options
fsolve
options
ga
options
(Global Optimization Toolbox)gamultiobj
options
(Global Optimization Toolbox)intlinprog
options
linprog
options
lsqcurvefit
options
lsqlin
options
lsqnonlin
options
paretosearch
options
(Global Optimization Toolbox)particleswarm
options
(Global Optimization Toolbox)patternsearch
options
(Global Optimization Toolbox)quadprog
options
simulannealbnd
options
(Global Optimization Toolbox)surrogateopt
options
(Global Optimization Toolbox)
出力引数
options
— 最適化オプション
options オブジェクト
SolverName
ソルバーの最適化オプション。options オブジェクトとして返されます。
代替機能
ライブ エディター タスク
[最適化] ライブ エディター タスクを使用すれば、オプションを視覚的に設定できます。例については、fmincon ソルバーを使用した最適化ライブ エディター タスクを参照してください。
拡張機能
バージョン履歴
R2013a で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)