主要内容

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

範囲制約付きの二次計画法,ソルバーベース

この例では,二次最適化問題を解いて,サーカスのテントの形状を決定する方法を説明します。テントは,弾性のある重い素材で形成されており,制約の下で位置エネルギーが最小になる形状になります。問題を離散化すると,範囲制約付きの二次計画法問題になります。

この例の問題ベースのバージョンについては,範囲制約付き二次計画法,問題ベースを参照してください。

問題の定義

正方形の区画にサーカスのテントを建築することを考えます。このテントには5本の柱があり,弾力性がある重い素材で覆われます。問題は,テントの自然な形状を求めることです。位置pにおけるテントの高さxp)として形状をモデル化します。

高さxまで持ち上げた重い素材の位置エネルギーは,素材の重さに比例する定数cに対して残雪です。この問題ではc= 1/3000を選択します。

素材の一部分の弾性位置エネルギー E 年代 t r e t c h は,素材の高さの2階微分に高さを乗算した値にほぼ比例します。2階微分は、5 つの点の有限差分近似によって近似できます (有限差分ステップのサイズは 1 であると仮定します)。 Δ x は1番目の座標方向における1単位のシフトを, Δ y は2番目の座標方向における1単位のシフトを表すとします。

E 年代 t r e t c h p - 1 x p + Δ x + x p - Δ x + x p + Δ y + x p - Δ y + 4 x p x p

テントの自然な形状では,総位置エネルギーが最小になります。問題を離散化することにより,最小化対象の総位置エネルギーは, E 年代 t r e t c h p +残雪p)のすべての位置pの合計であることがわかります。

この位置エネルギーは,変数xによる二次式です。

端におけるテントの高さがゼロであるという境界条件を指定します。テントの柱の断面積は1 x 1単位であり,テント全体のサイズは33 x 33単位です。各柱の高さと位置を指定します。正方形の区画の領域とテントの柱をプロットします。

身高= 0 (33);高度(者者)= 0.3;高度(二六27,二六27)= 0.3;高度(者,二六27)= 0.3;高度(二六27,者)= 0.3;高度(16:17,16:17)= 0.5;colormap(灰色);surfl(高度)轴视图([-20,30]);标题(“帐篷杆和需要覆盖的地区”

图中包含一个坐标轴。标题为帐篷杆和覆盖区域的轴包含一个类型为surface的对象。

境界条件の作成

行列高度は,解xの下限を定義します。境界で解をゼロに制限するため,境界で上限乌兰巴托をゼロに設定します。

边界= false(大小(高度));边界([1,33]:)= true;边界(:,(1,33))= true;乌兰巴托=正(大小(边界));%在大多数区域上没有上限乌兰巴托(边界)= 0;

目的関数行列の作成

quadprogの問題定式化は,次を最小化することです。

1 2 x T H x + f T x

このケースでは,線形項 f T x は素材の高さの位置エネルギーに対応します。したがって,xの各成分についてf= 1/3000を指定します。

f =(大小(高度))/ 3000;

関数delsqを使用して, E 年代 t r e t c h を表す有限差分行列を作成します。関数delsqの返すスパース行列には, E 年代 t r e t c h p の式の4および1というエントリに対応する,4および1のエントリが含まれています。返された行列に2を乗算し, E 年代 t r e t c h によって与えられるエネルギー関数を使用してquadprogで二次計画法を解きます。

H = delsq (numgrid (“年代”, 33 + 2) * 2;

行列Hの構造を表示します。この行列はx (:)に作用します。これは,行列xが線形インデックスによりベクトルに変換されることを意味します。

间谍(H);标题(“Hessian矩阵的稀疏性结构”);

图中包含一个坐标轴。以Hessian矩阵稀疏结构为标题的轴包含一个线型对象。

最適化ソルバーの実行

quadprogを呼び出して問題を解きます。

x = quadprog (H f ,[],[],[],[], 高度,乌兰巴托);
找到满足约束条件的最小值。优化完成是因为目标函数在可行方向上不减小到最优性公差的值内,约束条件满足到约束公差的值内。

解のプロット

xを行列年代に形状変更します。次に,解をプロットします。

S =重塑(x,大小(高度));surfl(年代);轴;视图([-20,30]);

图中包含一个坐标轴。轴包含一个类型为曲面的对象。

関連するトピック