このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
optimwarmstart
説明
は、ws
= optimwarmstart(x0
,options
)options
で示したソルバーで使用するウォーム スタート オブジェクト ws
を作成します。ウォーム スタート オブジェクトを使用する例は、ウォーム スタート オブジェクトを返すを参照してください。
は、名前と値の引数を使用して、ws
= optimwarmstart(x0
,options
,Name,Value
)ws
にメモリ範囲を組み込みます。メモリ範囲はコードを生成する場合にのみ使用します。
例
ウォーム スタート オブジェクトの作成
quadprog
の既定のウォーム スタート オブジェクトを作成します。
x0 = [1 3 5]; options = optimoptions('quadprog','Algorithm','active-set'); ws = optimwarmstart(x0,options)
ws = QuadprogWarmStart with properties: X: [3×1 double] Options: [1×1 optim.options.Quadprog] Code generation limitations
メモリ制限をもつウォーム スタート オブジェクトの作成
コード生成のためにメモリ制限をもつ lsqlin
ウォーム スタート オブジェクトを作成します。
x0 = [1 3 5]; options = optimoptions('lsqlin','Algorithm','active-set'); ws = optimwarmstart(x0,options,... 'MaxLinearEqualities',30,... 'MaxLinearInequalities',5)
Code generation limitations
リンクをクリックして、メモリ設定を確認します。
MaxLinearEqualities: 30 MaxLinearInequalities: 5
ウォーム スタート オブジェクトを返す
この後の quadprog
の呼び出しを高速化するために、ウォーム スタート オブジェクトを作成します。
options = optimoptions('quadprog','Algorithm','active-set'); x0 = [1 2 3]; ws = optimwarmstart(x0,options);
ws
を使用して二次計画法を解きます。
H = [1,-1,1 -1,2,-2 1,-2,4]; f = [-7;-12;-15]; A = [1,1,1]; b = 3; lb = zeros(3,1); tic [ws,fval,exitflag,output,lambda] = quadprog(H,f,A,b,[],[],lb,[],ws);
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. <stopping criteria details>
toc
Elapsed time is 0.060411 seconds.
目的関数を変更し、再び問題を解きます。
f = [-10;-15;-20]; tic [ws,fval,exitflag,output,lambda] = quadprog(H,f,A,b,[],[],lb,[],ws);
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. <stopping criteria details>
toc
Elapsed time is 0.010756 seconds.
入力引数
x0
— 初期点
実数配列
初期点。実数配列として指定します。この点は ws.X
に保存されます。
例: 10*rand(5,1)
データ型: double
options
— 最適化オプション
optimoptions
の出力
最適化オプション。optimoptions
の出力として指定されます。少なくとも、サポートされているソルバー (lsqlin
または quadprog
) と、Algorithm
に 'active-set'
を指定しなければなりません。たとえば、quadprog
ソルバーを指定する場合は次のコードを入力します。
options = optimoptions('quadprog','Algorithm','active-set');
これらのオプションは ws.Options
に保存されます。
名前と値の引数
引数の任意のペアを Name1=Value1,...,NameN=ValueN
のように指定します。Name
は引数名、Value
は対応する値です。名前と値の引数は、他の引数より後に指定されている必要があります。ただし、各ペアの順序は任意です。
R2021a 以前では、それぞれの名前と値をコンマで区切り、Name
を引用符で囲みます。
例: ws = optimwarmstart(x0,options,'MaxLinearEqualities',30,'MaxLinearInequalities',5)
は、線形等式の最大数として 30 を、線形不等式の最大数として 5 を指定します。
MaxLinearEqualities
— 線形等式制約の最大数
Inf
(既定値) | 正の整数
線形等式制約の最大数。正の整数として指定します。等式制約に十分なメモリを割り当てるには、コードの実行全体における等式制約の最大数を指定します。
この引数は、動的メモリ割り当てを行わないコード生成にのみ使用します。この引数と 'MaxLinearInequalities'
を両方とも使用しなければなりません。
この引数の値は ws.MaxLinearEqualities
に保存されます。
例: 25
データ型: double
MaxLinearInequalities
— 線形不等式制約の最大数
Inf
(既定値) | 正の整数
線形不等式制約の最大数。正の整数として指定します。不等式制約に十分なメモリを割り当てるには、コードの実行全体における不等式制約の最大数を指定します。
この引数は、動的メモリ割り当てを行わないコード生成にのみ使用します。この引数と 'MaxLinearEqualities'
を両方とも使用しなければなりません。
この引数の値は ws.MaxLinearInequalities
に保存されます。
例: 25
データ型: double
出力引数
ws
— ウォーム スタート オブジェクト
LsqlinWarmStart
オブジェクト | QuadprogWarmStart
オブジェクト
ウォーム スタート オブジェクト。LsqlinWarmStart
オブジェクトまたは QuadprogWarmStart
オブジェクトとして返されます。ウォーム スタート オブジェクトを使用する例は、quadprog のウォーム スタートを参照してください。
ws
には次の読み取り専用プロパティがあります。
X
— 初期点Options
— 最適化オプションMaxLinearEqualities
— コード生成における線形等式の最大数MaxLinearInequalities
— コード生成における線形不等式の最大数
ws
のプロパティを変更するには、optimwarmstart
を呼び出してオブジェクトを再作成します。
アルゴリズム
ウォーム スタート オブジェクトは、前回解いた問題のアクティブな制約のリストを維持します。ソルバーは、アクティブな制約情報を可能な限り多く引き継いで、現在の問題を解きます。前回の問題と現在の問題が違いすぎる場合、アクティブ セットの情報は再利用されません。この場合、ソルバーは効率的にコールド スタートを実行して、アクティブな制約のリストを再構築します。
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用上の注意および制限
ウォーム スタートの
options
では'active-set'
アルゴリズムを指定しなければなりません。options = optimoptions('lsqlin','Algorithm','active-set'); % Or options = optimoptions('quadprog','Algorithm','active-set');
ターゲット ハードウェアで静的なメモリ割り当てを使用している場合 (
DynamicMemoryAllocation
オプションが'off'
)、'MaxLinearEqualities'
引数と'MaxLinearInequalities'
引数の両方を指定しなければなりません。MEX ターゲット以外の場合、これらのレベルのいずれかを超えそうになると、ソルバーは終了フラグ –
8
を返します。MEX ターゲットの場合、これらのレベルのいずれかを超えそうになると、ソルバーはエラーをスローし、そのレベルを上げるよう指示します。
ウォーム スタートのコード生成の詳細については、
lsqlin
コード生成 またはquadprog
コード生成 を参照してください。
バージョン履歴
R2021a で導入
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)