このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
2次錐計画法ソルバー
coneprog
関数は,以下で指定された問題の最小値を見つける2次錐計画法ソルバーです。
以下の制约にます。
f, x, b,说真的,磅,乌兰巴托はベクトル,一个とAeqは行列です。我ごとに,行列sc(我),ベクトルのdsc(i)とbsc(i),およびスカラーγ(i)が,secondordercone
を使使た2次锥制约に含まれていますますますますます。
錐制約の詳細については,2 次錐制約を参照してください。
は,次のようにエンコードされたx
= coneprog (f
,socConstraints
)socConstraints
内の制約を使用して2次錐計画問題を解きます。
一个sc(i)=socConstraints.A(我)
bsc(i)=socConstraints.b(我)
dsc(i)=socConstraints.d(我)
γ(i)=socConstraints.gamma(我)
1つの2次錐制約を含む問題を設定するには,2次錐制約オブジェクトを作成します。
一个=诊断接头([1,1/2,0]);b = 0 (3,1);d = [0, 0, 1];γ= 0;socConstraints = secondordercone (A, b, d,γ);
目的关键词作物
f = [-1,-2,0];
この問題には,線形制約がありません。これらの制約用の空行列を作成します。
Aineq = [];bineq = [];Aeq = [];beq = [];
x (3)
の上限と设定します。
磅=(负负0);乌兰巴托=(正,正无穷,2);
coneprog
関数を使用して問題を解きます。
[x,fval] = coneprog(f,socconstraints,aineq,bineq,aeq,beq,lb,Ub)
找到最优解。
x =3×10.4851 3.8806 2.0000
fval = -8.2462
解の要素x (3)
は上限値です。錐制約は次の解においてアクティブです。
常态(a * x-b) - d'* x%在约束激活时接近0
ans = -2.5677 e-08
复数の2次锥制约を含む问题设定するには,制约オブジェクトの配列を作用成し。时间とメモリを节约ために,最初に,最もインデックスの高度制约を作物。
一个=诊断接头([1 2 0]);b = 0 (3,1);d = [0, 0, 1];γ= 1;socConstraints (3) = secondordercone (A, b, d,γ);一个=诊断接头([0,1]);d = (0, 1, 0);socConstraints (2) = secondordercone (A, b, d,γ);一个=诊断接头([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)
找到最优解。
x =3×10.4238 1.6477 2.3225
fval = -13.0089
目的関数ベクトルと単一の2次錐制約を指定します。
f =(4、9;2);Asc =诊断接头((1,4,0));b = (0, 0, 0);d = [0, 0, 1];γ= 0;socConstraints = secondordercone (Asc, b, d,γ);
線形不等式制約を指定します。
一个=[1/4、1/9 1];b = 5;
问题を解きます。
[x, fval] = coneprog (f, socConstraints, A, b)
找到最优解。
x =3×13.2304 0.6398 4.1213
fval = -26.9225
coneprog
ソルバーの反復を観察するには,显示
オプションを“通路”
に設定します。
选项= Optimoptions('coneprog','展示',“通路”);
2次錐計画問題を作成し,それを选项
を使用して解きます。
Asc =诊断接头([1,1/2,0]);b = 0 (3,1);d = [0, 0, 1];γ= 0;socConstraints = secondordercone (Asc, b, d,γ);f = (1 2 0);Aineq = [];bineq = [];Aeq = [];说真的= []; lb = [-Inf,-Inf,0]; ub = [Inf,Inf,2]; [x,fval] = coneprog(f,socConstraints,Aineq,bineq,Aeq,beq,lb,ub,options)
Iter Iter Fval Primal infas Dual infas Dual Gap Time 1 0.000000e+00 0.000000e+00 5.714286e-01 1.250000e-01 0.06 2 -7.558066e+00 0.000000e+00 7.151114e-02 1.64306e -02 0.14 3 -7.366973e+00 0.000000e+00 1.075440e-02 2.352525e-03 0.14 4 -8.243432e+00 0.000000e+00 5.191888e -05 1.135724e-05 0.15 5 -8.246067e+00 1.387779e +00 5.714286e-01 5.317403e-07找到了最优解。
x =3×10.4851 3.8806 2.0000
fval = -8.2462
2次錐計画問題の要素を作成します。時間とメモリを節約するために,最初に,最もインデックスの高い制約を作成します。
一个=诊断接头([1 2 0]);b = 0 (3,1);d = [0, 0, 1];γ= 1;socConstraints (3) = secondordercone (A, b, d,γ);一个=诊断接头([0,1]);d = (0, 1, 0);socConstraints (2) = secondordercone (A, b, d,γ);一个=诊断接头([0;1/2;1/2]);d = (1, 0, 0); socConstraints(1) = secondordercone(A,b,d,gamma); f = [-1;-2;-4]; options = optimoptions('coneprog','展示',“通路”);
问题で説明されているように,必須フィールドを含む問題構造体を作成します。
问题=结构(“f”f...'socconstraints'socConstraints,...“Aineq”[],“bineq”[],...'AEQ'[],“说真的”[],...'磅'[],乌兰巴托的[],...“规划求解”,'coneprog',...'选项',选项);
coneprog
を呼び出して问题を解きます。
[x, fval] = coneprog(问题)
ITER FVAL PRIMAL INFEAS双INFEA二元间隙时间1 0.000000E + 00 0.000000E + 00 5.333333E-01 5.555556E-02 0.25 2 -9.696012E + 00 1.850372E-17 7.631901C-02 7.949897E-03 0.28 3 -1.178942E+01 9.251859E-18 1.261803E-02 1.314378E-03 0.28 4 -1.294426E + 01 1.850372C-17 1.683078C-03 1.753206C-04 0.29 5 -1295217E + 01 1.850372C-17 8.994595E-04 9.369370E-05 0.29 6 -1.295331C + 01 1.850372E-17 4.748841C-04 4.748841C-04 4.948841C-05 0.29 7 -1300753E + 01 9.251859E-18 2.799942C-05 2.916606C-05 2.916606E-06 2.916606E-06 0.29 8 -1300671E + 01 9.251859E-18 2.366136e-05 2.464725e-06 0.29 9 -1.300850e+01 1.850372e-17 8.187205e-06 8.528338e-07 0.30 10 -1.300843e+01 4.625929e-18 7.326330e-06 7.631594e-07 0.30 11 -1.300862e+01 9.251859e-18 2.707005e-06 2.819797e-07 0.30 12 -1.300892e+01 0.000000e+00 9.204457e-08 9.587976e-09 0.30 Optimal solution found.
x =3×10.4238 1.6477 2.3225
fval = -13.0089
coneprog
解法プロセスの検証2次錐計画問題を作成します。時間とメモリを節約するために,最初に,最もインデックスの高い制約を作成します。
一个=诊断接头([1 2 0]);b = 0 (3,1);d = [0, 0, 1];γ= 1;socConstraints (3) = secondordercone (A, b, d,γ);一个=诊断接头([0,1]);d = (0, 1, 0);socConstraints (2) = secondordercone (A, b, d,γ);一个=诊断接头([0;1/2;1/2]);d = (1, 0, 0); socConstraints(1) = secondordercone(A,b,d,gamma); f = [-1;-2;-4]; options = optimoptions('coneprog','展示',“通路”);a = [];b = [];Aeq = [];说真的= [];lb = [];UB = [];
解法プロセスに関する情報を要求する問題を解きます。
[x,fval,出口,输出] = coneprog(f,socconstraints,a,b,aeq,beq,lb,Ub,选项)
Iter Fval Primal infas Dual infas Dual Gap Time 1 0.000000e+00 0.000000e+00 5.333333e-01 5.555556e-02 0.07 2 -9.696012e+00 1.850372e-17 7.631901e-02 7.949897e-03 0.07 3 -1.178942e+01 9.251859e-18 1.261803e- 03 1.753206e-04 0.07 5 -1.294426e+01 1.850372e-17 1.994595e -04 9.369370e-050.08 7 -1.300753e+01 9.251859e-18 2.799942e-05 2.916606e-06 0.08 9 -1.300850e+01 1.850372e-17 8.187205e-06 8.528338e-07 0.08 11 - 1.300852 e+01 9.251859e-18 2.79994e -05找到最优解。
x =3×10.4238 1.6477 2.3225
fval = -13.0089
exitflag = 1
输出=结构体字段:迭代:12 primalfeasibility: 0 dualfeasibility: 9.2045e-08 dualitygap: 9.5880e-09 algorithm: 'interior-point' linearsolver: 'augmented' message: 'Optimal solution found.'
反復表示と出力構造体の両方に,coneprog
が12回の反復を使用して解に到達したことが示されます。
終了フラグ値1
とoutput.message
値找到最优解。
は,解が信息できること示します。
输出
構造体には,双対性ギャップと同様に,解法プロセスを通して実行不可能性が減少する傾向にあることが示されます。
fval
出力は,f ' * x
を乗算することによって再現できます。
f ' * x
ans = -13.0089
coneprog
双対変数の取得2次錐計画問題を作成します。時間とメモリを節約するために,最初に,最もインデックスの高い制約を作成します。
一个=诊断接头([1 2 0]);b = 0 (3,1);d = [0, 0, 1];γ= 1;socConstraints (3) = secondordercone (A, b, d,γ);一个=诊断接头([0,1]);d = (0, 1, 0);socConstraints (2) = secondordercone (A, b, d,γ);一个=诊断接头([0;1/2;1/2]);d = (1, 0, 0); socConstraints(1) = secondordercone(A,b,d,gamma); f = [-1;-2;-4];
他のすべてのconeprog
出力とともに解における双対変数を要求する问题を解きます。
[x, fval exitflag、输出λ)= coneprog (f, socConstraints);
找到最优解。
返されたλ
構造体を調査します。唯一の問題制約が錐制約のため,λ
构造体内soc
フィールドだけを調査します。
disp (lambda.soc)
1.0E-05 * 0.0570 0.1946 0.0618
制约には,解において制约が有效であることを示す非ゼロの双対値が含まれています。
f
- - - - - -系数ベクトル係数ベクトル。実数ベクトルまたは実数配列として指定されます。係数ベクトルは、目的関数f ' * x
を表します。表記では,f
が列ベクトルになってますがが,行ベクトルや配列も使でき。coneprog
は配列f
を列ベクトルf (:)
に内部的に変換します。
例:f =(1、3、5、6)
データ型:双
socConstraints
- - - - - -2 次錐制約SecondOrderConeConstraint
オブジェクトのベクトルSecondOrderConeConstraint
オブジェクトのベクトルとして指定された,2次錐制約secondordercone
関数を使用してこれらのオブジェクトを作成します。
socConstraints
が次の制約をエンコードします。
ここで,配列と方程式の対応付けを以下に示します。
一个sc(i)=socConstraints.A(我)
bsc(i)=socConstraints.b(我)
dsc(i)=socConstraints.d(我)
γ(i)=socConstraints.gamma(我)
例:asc = diag([1 1/2 0]);BSC =零(3,1);dsc = [0; 0; 1];γ= 1;socconstraints = termindordercone(ASC,BSC,DSC,伽玛);
データ型:结构体
一个
- - - - - -线形不锈钢実数行列として指定される線形不等式制約です。一个
は米
行N
列の行列で,米
は不等式の数,N
は変数の数(f
の长さ)です。大规模な问题ののは,一个
をスパース行列として渡します。
一个
は米
個の線形不等式を符号化します。
a * x <= b
,
ここで,x
はN
个の数x (:)
の列ベクトル,b
は米
個の要素をもつ列ベクトルです。
たとえば,次の不等式を考えてみましょう。
x1+ 2倍2≤10
3 x1+ 4 x2≤20
5倍1+ 6 x2≤30。
次の制約を入力することによって,不等式を指定します。
= [1, 2, 3, 4, 5, 6);b =(10、20、30);
例:x成分の和が1以下になるように指定するために,一个= 1 (1,N)
とb = 1
をとります。
データ型:双
b
- - - - - -线形不锈钢実数ベクトルで指定される線形不等式制約です。b
は,行列一个
に関連する米
要素ベクトルです。b
を行ベクトルとして渡す場合,ソルバーはb
を列ベクトルb (:)
に内部的に変換します。大規模な問題の場合は,b
をスパースベクトルとして渡します。
b
は米
個の線形不等式を符号化します。
a * x <= b
,
ここで,x
はN
个の数x (:)
の列ベクトル,一个
は米
行N
列の行列です。
たとえば,次の不等式を考えてみましょう。
x1+ 2倍2≤10
3 x1+ 4 x2≤20
5倍1+ 6 x2≤30。
次の制約を入力することによって,不等式を指定します。
= [1, 2, 3, 4, 5, 6);b =(10、20、30);
例:xの成分の和が1以下であることを指定するには,一个= 1 (1,N)
とb = 1
を使使し。
データ型:双
Aeq
- - - - - -線形等式制約実数行列として指定される線形等式制約です。Aeq
は我
行N
列の行列で,我
は等式の数,N
は変数の数(f
の长さ)です。大规模な问题ののは,Aeq
をスパース行列として渡します。
Aeq
は我
個の線形等式を符号化します。
Aeq * x =说真的
,
ここで,x
はN
个の数x (:)
の列ベクトル,说真的
は我
個の要素をもつ列ベクトルです。
たとえば,次次の等式式考えてみましょましょ
x1+ 2倍2+ 3 x3.= 10
2 x1+ 4 x2+ x3.= 20。
次の制約を入力することによって,等式を指定します。
Aeq =[1、2、3、2、4、1];说真的=(10、20);
例:1 x成分の和がになるように指定するために,AEQ =α(1,n)
と说真的= 1
をとります。
データ型:双
说真的
- - - - - -線形等式制約実数ベクトルで指定される线形等式制约です。说真的
は,行列Aeq
に関連する我
要素ベクトルです。说真的
を行ベクトルとして渡す場合,ソルバーは说真的
を列ベクトル说真的(:)
に内部的に変換します。大規模な問題の場合は,说真的
をスパースベクトルとして渡します。
说真的
は我
個の線形等式を符号化します。
Aeq * x =说真的
,
ここで,x
はN
个の数x (:)
の列ベクトル,Aeq
は我
行N
列の行列です。
たとえば,次次の等式式考えてみましょましょ
x1+ 2倍2+ 3 x3.= 10
2 x1+ 4 x2+ x3.= 20。
次の制約を入力することによって,等式を指定します。
Aeq =[1、2、3、2、4、1];说真的=(10、20);
例:xの成分の和1であるがことことを指定するにはにににAEQ =α(1,n)
と说真的= 1
を使使し。
データ型:双
磅
- - - - - -下限单位ベクトルベクトルまたは配列指定されれ。f
の長さが磅
の长さと等しい等しい合,磅
は次を指定します。
x(i)> = lb(i)
(すべての我
について)
元素个数(磅)<元素个数(f)
のの合,磅
は次を指定します。
x(i)> = lb(i)
(1 <= I <= numel(lb)
)
この場合,ソルバーによって警告が発行されます。
例:すべてのx成分が正になるように指定するには,磅= 0(大小(f))
を使使し。
データ型:双
乌兰巴托
- - - - - -上限実数ベクトルまたは実数配列として指定される上限です。f
の長さが乌兰巴托
の长さと等しい等しい合,乌兰巴托
は次を指定します。
x (i) < =乌兰巴托(我)
(すべての我
について)
元素个数(乌兰巴托)<元素个数(f)
のの合,乌兰巴托
は次を指定します。
x (i) < =乌兰巴托(我)
(1 <= i <= numel(UB)
)
この場合,ソルバーによって警告が発行されます。
例:すべてのx成分1
未満になるように指定するには,乌兰巴托= 1(大小(f))
を使使し。
データ型:双
选项
- - - - - -最適化オプションoptimoptions
の出力最適化オプション。optimoptions
の出力として指定されます。
オプション | 説明 |
---|---|
ConstraintTolerance |
制約の実行可能性の許容誤差で |
|
表示レベル(反复表示を参照):
|
LinearSolver |
反復における1ステップを解くためのアルゴリズム:
スパースの例については,Coneprogアルゴリズムアルゴリズムの速度のを参照してください。 |
|
可以な反复の最大数(正の整数)。既定値 |
MaxTime |
アルゴリズムを実行する秒単位の最長時間。正の数値または |
|
双対実行可能性に関する終了許容誤差(正のスカラー)。既定値は |
例:optimoptions(‘coneprog’,‘显示’,‘iter’,‘MaxIterations’,100)
问题
- - - - - -問題構造体次のフィールドをもつ構造体として指定される問題構造体です。
フィールド名 | エントリ |
---|---|
|
線形目的関数ベクトルf |
|
2次錐制約の構造体配列 |
|
線形不等式制約の行列 |
|
线形不成语制约のベクトル |
|
線形等式制約の行列 |
|
線形等式制約のベクトル |
磅 |
下限のベクトル |
乌兰巴托 |
上限のベクトル |
|
'coneprog' |
|
optimoptions で作成されたオプション |
データ型:结构体
fval
——解での目的関数値解での目的関数値。実数として返されます。一般的に、fval
=f ' * x
になります。fval
の出力は,exitflag
の値が -2
、-3.
,または-10
の结合にに空になりなりなり
exitflag
- - - - - -coneprog
の停止理由coneprog
の停止理由。整数として返されます。
値 | 説明 |
---|---|
|
関数が解 |
|
反復回数が |
|
実行可能な点が見つかりません。 |
|
问题が非有界。 |
|
探索方向が小さくなりすぎ,これ以上進むことができないことを示します。 |
|
問題が数値的に不安定です。 |
ヒント
終了フラグ値として0
、-7
,または-10
を取得した場合は,LinearSolver
オプションの値を変えてみてください。
输出
——最適化プロセスに関する情報最適化プロセスに関する情報。次のフィールドをもつ構造体として返されます。
フィールド | 説明 |
---|---|
算法 |
使用される最适化 |
dualfeasibility |
双対制約違反の最大値 |
dualitygap |
双対性ギャップ |
迭代 |
反复数 |
消息 |
終了メッセージ |
primalfeasibility |
制約違反の最大値 |
linearsolver |
使用される内部ステップソルバーアルゴリズム |
输出
のフィールドのdualfeasibility
、dualitygap
,およびprimalfeasibility
は,exitflag
の値が2 3または-10の場合に空になります。
制約の
が2次錐制約と呼ばれる理由3次元空間でx - y平面が楕円形の断面で,直径がz座標に直交している円錐を考えます。y座標のスケールは½で,x座標のスケールは1です。[0,0,0] にある点でこの円錐の内部を定義する不等式は次のとおりです。
coneprog
構文では,この円錐は次の引数をとります。
A = diag([1 1/2 0]);b = (0, 0, 0);d = [0, 0, 1];γ= 0;
円錐の境界をプロットします。
(X, Y) = meshgrid (2:0.1:2);Z =√X。^ 2 + y ^ 2/4);冲浪(X, Y, Z)视图(8,2)包含“x”ylabel“y”zlabel“z”
b
引数とγ
引数によって,円錐が移動します。一个
引数とd
引数によって,円錐が回転し,その形状が変化します。
アルゴリズムは内点法を使用します。詳細は,2次錐計画法アルゴリズムを参照してください。
最最化ライブエディタータスクがconeprog
にビジュアルインターフェイスを提供します。
次のMATLABコマンドに対応するリンクがクリックされました。
コマンドをMATLABコマンドウィンドウに入力して実行してください。WebブラウザーはMATLABコマンドをサポートしていません。
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。