このページは機械翻訳を使用して翻訳されました。元の英語を参照するには、ここをクリックします。
createOptimProblem
最適化問題構造を作成する
説明
は、problem
= createOptimProblem(solverName
)solverName
ソルバー用の空の最適化問題構造を作成します。
は、1 つ以上の名前と値の引数を使用して追加のオプションを指定します。problem
= createOptimProblem(solverName
,Name,Value
)
例
fmincon
問題構造の作成と実行
次の仕様で問題構造を作成します。
fmincon
ソルバー"interior-point"
アルゴリズムランダム 2 次元初期点
x0
ローゼンブロックの目的としての機能
–2の下限
2の上限
2 次元変数 に対する Rosenbrock 関数は です (詳細については、[最適化] ライブ エディター タスクまたはソルバーを使用した制約付き非線形問題 を参照してください)。「interior-point"
アルゴリズムを指定するには、optimoptions
を使用してオプションを作成します。
anonrosen = @(x)(100*(x(2) - x(1)^2)^2 + (1-x(1))^2); opts = optimoptions(@fmincon,Algorithm="interior-point"); rng default % For reproducibility problem = createOptimProblem("fmincon",... x0=randn(2,1),... objective=anonrosen,... lb=[-2;-2],... ub=[2;2],... options=opts);
problem.x0
から始めて fmincon
を呼び出して問題を解決します。
[x,fval] = fmincon(problem)
Local minimum possible. Constraints satisfied. fmincon stopped because the size of the current step is less than the value of the step size tolerance and constraints are satisfied to within the value of the constraint tolerance.
x = 2×1
1.0000
1.0000
fval = 2.0603e-11
GlobalSearch
を呼び出して、より良い解決策を探してください。
gs = GlobalSearch; [x2,fval2] = run(gs,problem)
GlobalSearch stopped because it analyzed all the trial points. All 16 local solver runs converged with a positive local solver exit flag.
x2 = 2×1
1.0000
1.0000
fval2 = 2.1093e-11
この場合、fmincon
と GlobalSearch
は両方とも同じ解に到達します。
入力引数
solverName
— 最適化ソルバー
"fmincon"
| @fmincon
| "fminunc"
| @fminunc
| "lsqnonlin"
| @lsqnonlin
| "lsqcurvefit"
| @lsqcurvefit
最適化ソルバー。次のいずれかとして指定します。
GlobalSearch
には、"fmincon"
または@fmincon
を指定します。MultiStart
の場合は、"fmincon"
または@fmincon
、"fminunc"
または@fminunc
、"lsqnonlin"
または@lsqnonlin
、または"lsqcurvefit"
または@lsqcurvefit
を指定します。
例: "fmincon"
データ型: char
| string
| function_handle
名前と値の引数
引数のオプションのペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで Name
は引数名で、Value
は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は重要ではありません。
R2021a より前では、コンマを使用してそれぞれの名前と値を区切り、Name
を引用符で囲みます。
例: createOptimProblem("fmincon","x0",x0,"objective",fun,"lb",zeros(size(x0)))
Aeq
— 線形等式制約
実数行列
線形等式制約。実数行列として指定されます。Aeq
は Me
行 nvars
列の行列で、Me
は等式の数です。
Aeq
は Me
個の線形等式を符号化します。
Aeq*x = beq
,
ここで、x
は N
個の変数 x(:)
の列ベクトル、beq
は Me
個の要素をもつ列ベクトルです。
例えば、
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
Aineq
— 線形不等式制約
実数行列
線形不等式制約。実数行列として指定されます。Aineq
は M
行 nvars
列の行列で、M
は不等式の数です。
Aineq
は M
個の線形不等式を符号化します。
Aineq*x <= bineq
,
ここで、x
は nvars
個の変数 x(:)
の列ベクトル、bineq
は M
個の要素をもつ列ベクトルです。
例えば、
x1 + 2x2 ≤ 10
3x1 + 4x2 ≤ 20
5x1 + 6x2 ≤ 30,
次の制約を与えます:
Aineq = [1,2;3,4;5,6]; bineq = [10;20;30];
例: 制御変数の合計が 1 以下になるように指定するには、制約 Aineq = ones(1,N)
と bineq = 1
を指定します。
データ型: double
beq
— 線形等式制約
実数ベクトル
実数ベクトルで指定される線形等式制約です。beq
は、行列 Aeq
に関連する Me
要素ベクトルです。beq
を行ベクトルとして渡す場合、ソルバーは beq
を列ベクトル beq(:)
に内部的に変換します。
beq
は Me
個の線形等式を符号化します。
Aeq*x = beq
,
ここで、x
は N
個の変数 x(:)
の列ベクトル、Aeq
は Meq
行 N
列の行列です。
例えば、
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
bineq
— 線形不等式制約
実数ベクトル
実数ベクトルで指定される線形不等式制約です。bineq
は、行列 Aineq
に関連する M
要素ベクトルです。bineq
を行ベクトルとして渡す場合、ソルバーは bineq
を列ベクトル bineq(:)
に内部的に変換します。
bineq
は M
個の線形不等式を符号化します。
Aineq*x <= bineq
,
ここで、x
は N
個の変数 x(:)
の列ベクトル、Aineq
は M
行 N
列の行列です。
例えば、
x1 + 2x2 ≤ 10
3x1 + 4x2 ≤ 20
5x1 + 6x2 ≤ 30,
次の制約を与えます:
Aineq = [1,2;3,4;5,6]; bineq = [10;20;30];
例: 制御変数の合計が 1 以下になるように指定するには、制約 Aineq = ones(1,N)
と bineq = 1
を指定します。
データ型: double
lb
— 下限
[]
(既定値) | 実数ベクトルまたは配列
下限。実数ベクトルまたは倍精度浮動小数点配列として指定します。lb
は、 lb
≤ x
≤ ub
内の要素ごとの下限を表します。
createOptimProblem
は配列 lb
をベクトル lb(:)
に内部的に変換します。
例: lb = [0;-Inf;4]
は x(1) ≥ 0
, x(3) ≥ 4
を意味します。
データ型: double
nonlcon
— 非線形制約
関数ハンドル | 関数名
非線形制約。関数ハンドルまたは関数名として指定されます。nonlcon
は、配列 x
を受け入れ、2 つの配列 c(x)
と ceq(x)
を返す関数です。
c(x)
は、x
における非線形不等式制約の配列です。ソルバーは、c
のすべてのエントリに対してc(x) <= 0
を満たそうとします。ceq(x)
は、x
における非線形等式制約の配列です。ソルバーは、ceq
のすべてのエントリに対してceq(x) = 0
を満たそうとします。
たとえば、nonlcon
は次のような MATLAB® 関数です。
function [c,ceq] = nonlcon(x) c = ... % Compute nonlinear inequalities at x. ceq = ... % Compute nonlinear equalities at x.
詳細については、非線形制約を参照してください。
データ型: char
| string
| function_handle
objective
— 目的関数
関数ハンドル | 関数名
関数ハンドルまたは関数名として指定される目的関数。
lsqnonlin
とlsqcurvefit
を除くすべてのソルバーの場合、目的関数は配列x
を受け入れ、スカラーを返す必要があります。SpecifyObjectiveGradient
オプションがtrue
の場合、目的関数は 2 番目の出力、つまり目的の勾配を表すベクトルを返す必要があります。詳細については、fun
を参照してください。lsqnonlin
の場合、目的関数はベクトルx
を受け入れ、ベクトルを返す必要があります。SpecifyObjectiveGradient
オプションがtrue
の場合、目的関数は 2 番目の出力、つまり目的のヤコビアンを表す行列を返す必要があります。詳細については、fun
を参照してください。lsqcurvefit
の場合、目的関数は 2 つの入力x
とxdata
を受け入れ、ベクトルを返す必要があります。SpecifyObjectiveGradient
オプションがtrue
の場合、目的関数は 2 番目の出力、つまり目的のヤコビアンを表す行列を返す必要があります。詳細については、fun
を参照してください。
例: @sin
例: "sin"
データ型: char
| string
| function_handle
options
— 最適化オプション
optimoptions
の出力
最適化オプション。optimoptions
の出力として指定されます。
例: optimoptions("fmincon","SpecifyObjectiveGradient",true)
ub
— 上限
[]
(既定値) | 実数ベクトルまたは配列
上限は、実数ベクトルまたは倍精度浮動小数点数の配列として指定されます。ub
は、 lb
≤ x
≤ ub
内の要素ごとの上限を表します。
createOptimProblem
は配列 ub
をベクトル ub(:)
に内部的に変換します。
例: ub = [Inf;4;10]
は x(2) ≤ 4
, x(3) ≤ 10
を意味します。
データ型: double
x0
— 初期点
実数ベクトル | 実数配列
初期点。実数ベクトルまたは実数配列として指定されます。ソルバーは、x0
の要素数および x0
のサイズを使用して、fun
が受け入れる変数の数およびサイズを決定します。
例: x0 = [1,2,3,4]
データ型: double
xdata
— モデルの入力データ
実数ベクトル | 実数配列
実数ベクトルまたは実数配列として指定されたモデルの入力データ。モデルは次のとおりです。
ydata = fun(x,xdata)
,
ここで、xdata
および ydata
は固定配列、x
は二乗和の最小値の探索のために lsqcurvefit
によって変更されるパラメーターの配列です。
例: xdata = [1,2,3,4]
データ型: double
ydata
— モデルの応答データ
実数ベクトル | 実数配列
モデルの応答データ。実数ベクトルまたは実数配列として指定されます。モデルは次のとおりです。
ydata = fun(x,xdata)
,
ここで、xdata
および ydata
は固定配列、x
は二乗和の最小値の探索のために lsqcurvefit
によって変更されるパラメーターの配列です。
ydata
配列のサイズおよび形状は、配列 fun(x0,xdata)
と同じでなければなりません。
例: ydata = [1,2,3,4]
データ型: double
出力引数
バージョン履歴
R2010a で導入
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)