secondordercone
説明
secondordercone
関数は、不等式
を表す 2 次錐制約を入力行列の A
、b
、d
、および gamma
から作成します。
例
単一の錐制約
1 つの 2 次錐制約を含む問題を設定するには、2 次錐制約オブジェクトを作成します。
A = diag([1,1/2,0]); b = zeros(3,1); d = [0;0;1]; gamma = 0; socConstraints = secondordercone(A,b,d,gamma);
目的関数ベクトルを作成します。
f = [-1,-2,0];
この問題には、線形制約がありません。これらの制約用の空行列を作成します。
Aineq = []; bineq = []; Aeq = []; beq = [];
x(3)
の上限と下限を設定します。
lb = [-Inf,-Inf,0]; ub = [Inf,Inf,2];
coneprog
関数を使用して問題を解きます。
[x,fval] = coneprog(f,socConstraints,Aineq,bineq,Aeq,beq,lb,ub)
Optimal solution found.
x = 3×1
0.4851
3.8806
2.0000
fval = -8.2462
解の要素 x(3)
は上限値です。錐制約は次の解においてアクティブです。
norm(A*x-b) - d'*x % Near 0 when the constraint is active
ans = -2.5677e-08
複数の錐制約
複数の 2 次錐制約を含む問題を設定するには、制約オブジェクトの配列を作成します。時間とメモリを節約するために、最初に、最もインデックスの高い制約を作成します。
A = diag([1,2,0]); b = zeros(3,1); d = [0;0;1]; gamma = -1; socConstraints(3) = secondordercone(A,b,d,gamma); A = diag([3,0,1]); d = [0;1;0]; socConstraints(2) = secondordercone(A,b,d,gamma); A = diag([0;1/2;1/2]); d = [1;0;0]; socConstraints(1) = secondordercone(A,b,d,gamma);
線形目的関数ベクトルを作成します。
f = [-1;-2;-4];
coneprog
関数を使用して問題を解きます。
[x,fval] = coneprog(f,socConstraints)
Optimal solution found.
x = 3×1
0.4238
1.6477
2.3225
fval = -13.0089
入力引数
b
— 円錐の中心
実数ベクトル
d
— 線形範囲
実数ベクトル
gamma
— 範囲
実数スカラー
範囲。実数スカラーとして指定されます。gamma
の値が小さいほど、制約は緩くなります。
例: -1
データ型: double
出力引数
socConstraint
— 2 次錐制約
SecondOrderConeConstraint
オブジェクト
2 次錐制約。SecondOrderConeConstraint
オブジェクトとして返されます。このオブジェクトを coneprog
ソルバーの制約として使用します。錐制約が複数存在する場合は、制約のベクトルを coneprog
に渡します。複数の錐制約を参照してください。
バージョン履歴
R2020b で導入
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)