主要内容

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

2.次制約から 2.次錐制約への変換

この例では、2.次制約を 2.次錐制約形式に変換する方法を示します。2.次制約の形式は次のとおりです。

x T Q x + 2. Q T x + C 0 .

2.次錐計画法の制約の形式は次のとおりです。

A. s C ( ) x - B s C ( ) D s C ( ) x - γ ( ) .

2.次制約を変換するためには、行列 Q が対称かつ半正定値でなければなりません。 s Q = s * s = s T * s を意味する Q の平方根とします。矩阵平方根を使用して、 s を計算します。方程式 s T B = Q の解 B が存在するものとします。この解は、 Q が正定値であれば常に真です。b=-S\qを使用して、 B を計算します。

x T Q x + 2. Q T x + C = x T s T s x - 2. ( s T B ) T x + C = ( s x - B ) T ( s x - B ) - B T B + C = s x - B 2. + C - B T B .

そのため、 B T B > C の場合は、2.次制約が以下による 2.次錐制約と等しくなります。

  • A. s C = s

  • B s C = B

  • D s C = 0

  • γ = - B T B - C

数値の例

目的関数 F T x を表す 5.要素ベクトルFを指定します。

f=[1;-2;3;-4;5];

2.次制約行列Qを 5 x 5のランダム正定値行列として設定します。Qをランダム 5.要素ベクトルとして設定し、付加定数 C = - 1. をとります。

rng违约%为了再现性Q=randn(5)+3*眼(5);Q=(Q+Q')/2;%使Q对称q=randn(5,1);c=-1;

coneprogの入力を作成するために、行列sQの平方根として作成します。

S=sqrtm(Q);

この例の最初の部分で指定したように、2.次錐制約の残りの入力を作成します。

b=-S\q;d=零(尺寸(b));伽马=-sqrt(b'*b-c);sc=二阶锥(S、b、d、γ);

coneprogを呼び出してこの問題を解きます。

[x,fval]=coneprog(f,sc)
找到了最优解。
x=5×1-0.7194 0.2669 -0.6309 0.2543 -0.0904
fval=-4.6148

この結果を、铁铬镍铁合金を使用して同じ問題を解くことによって得られる結果と比較します。非線形制約の無名関数で説明されているように、2.次制約を記述します。

x0=randn(5,1);%fmincon的起始点nlc=@(x)x'*Q*x+2*Q'*x+c;nlcon=@(x)交易(nlc(x),[]);[xfmc,fvalfmc]=fmincon(@(x)f'*x,x0,[]、[]、[]、[]、[]、[]、[]、[]、nlcon)
找到满足约束的局部最小值。优化完成是因为目标函数在可行方向上不递减,在最优性公差值范围内,且约束满足在约束公差值范围内。
xfmc=5×1-0.7196 0.2672 -0.6312 0.2541 -0.0902
fvalfmc=-4.6148

2.つの解はほぼ同じです。

参考

||

関連するトピック