。
この例では,二二次最最适问题解いて,サーカスのテントの形状を决定を说明します。テントテント,弾性のある素材ででさており,制约さており,制约の下でエネルギーが小に问题问题を离散にする,问题制约付きすると,范囲范囲制约付きの二次次问题になり
この例のソルバーベースのバージョンについてについては,範囲制約付きの二次計画法,ソルバーベースを参照してください。
正方形のにののを建筑する考え考えますますますますますますありますますますますますます。位置P.におけるテントの高さX(P.)として形状をモデル化ます。
高さXまで持ち上げた重い素材素材位置エネルギーは,素材の重さに比例比例幂Cに対してCX.です。このこの问题でC= 1/3000を选択し。
素材の一分の弾性位置エネルギー は,素材の高さのしした値にほぼ比例し2たはは有しします近似点有有有有近似でき有仮定します)。 は1番目の座标方向における1単位のシフトを, は2番目の座标方向における1単位のシフトを表すととし。
テントの自然な形状では,総位置エネルギーが最小になります。問題を離散化することにより,最小化対象の総位置エネルギーは, +CX.(P.)のすべての位置P.の合計であることがわかります。
この位置エネルギーは,参数X
による二次式です。
端におけるテント高さゼロゼロであると境界条件を指定しますはテントのの面积ははははサイズ単位でありであり断面积のサイズサイズサイズサイズははははははははは高は高高高高高高高高高高高サイズサイズ高指定します。正方形の区画のとテントの柱ををますししし
高度=零(33);高度(6:7,6:7)= 0.3;高度(26:27,26:27)= 0.3;高度(6:7,26:27)= 0.3;高度(26:27,6:7)= 0.3;高度(16:17,16:17)= 0.5;Colormap(灰色);SURFL(高度)轴紧的视图([-20,30]);标题('帐篷杆和地区覆盖')
素材の高さを表す化学数X
を作物成し。
x = Optimvar('X',尺寸(高度));
正方形の领域の境界でX
をゼロに設定します。
边界=假(大小(高度));边界([1,33],:) =真;边界(:,[1,33])=真;X.LowerBound(边界)= 0;x.upperbound(边界)= 0;
はじめに,领域のます位置をは,解は,解は,解は,有有有有有有有有有ありませありありありませませことはでしませを计算ししを计算计算しはじめ计算计算しし计算计算计算しし计算计算し计算し计算计算にににしし计算计算にににににににににににl
l =尺寸(高度,1);Pertretch = Optimexpr(L,L);%这将PERTRETCH初始化为零(L,L)内部= 2:(L-1);Pertetch(内部,内部)=(-1 *(x(内部 - 1,内部)+ x(内部+ 1,室内)......+ x(内部,内部 - 1)+ x(内部,内部+ 1))+ 4 * x(内部,内部))......。* x(内部,内部);
领域の端ではが0に制约される,残りの项を含める必要ませません。X
のの数が含まれており,端におけるX
はゼロです。以下は,异なる异なる条件を使する,位置位置エネルギーをコメントアウトしためたバージョンバージョンバージョンバージョンバージョン
%Pertrach(1,内部)=(-1 *(x(1,内部 - 1)+ x(1,内部+ 1)+ x(2,内部))...%+ 4 * x(1,内部))。* x(1,内部);%Pertrach(l,内部)=(-1 *(x(l,内部 - 1)+ x(l,内部+ 1)+ x(l-1,内部))...%+ 4 * x(l,内部))。* x(l,内部);%Pertrch(内部,1)=(-1 *(x(内部 - 1,1)+ x(内部+ 1,1)+ x(内部,2))...%+ 4 * x(内部,1))。* x(内部,1);% peStretch(内部,L) = (1 * (x(室内- 1,L) + x(内部+ 1,L) +(内部,L - 1))…%+ 4 * x(内部,l))。* x(内部,l);%perthetch(1,1)=(-1 *(x(2,1)+ x(1,2))+ 4 * x(1,1))。* x(1,1);%pertrach(1,l)=(-1 *(x(2,l)+ x(1,l-1))+ 4 * x(1,l))。* x(1,l);%pertretch(l,1)=(-1 *(x(l,2)+ x(l-1,1))+ 4 * x(l,1))。* x(l,1);%perthetch(l,l)=(-1 *(x(l-1,l)+ x(l,l-1))+ 4 * x(l,l))。* x(l,l);
素材の高さによるによる位置を定义ししこれを定义定义ししX / 3000.
です。
peheight = x / 3000;
帐篷问题
作者王莹,骁勇善战,という,关键词,所以これは,銇銈銈銈銈銈銈銈銈銈銈銈銈銈銈銈銈銈銈銈銈銈銈銈銈第4万页
TentProblus = OptimProblem('客观的',总和(总和(PERTRECH + PEHEIGHT)));
解が行高度
。
htcons = x> =高度;tentproblex.constraints.htcons = htcons;
問題を解きます。出力される”ヘッシアンが対称ではありません。“という文は無視します。問題形式から二次行列への内部変換では行列が対称であることは確実ではないので,解决
はこの文をををします。
索尔=解决(tentproblem);
使用Quadprog解决问题。你的黑森州不对称。重置H =(H + H')/ 2。最低发现满足约束。优化完成,因为目标函数在可行的方向上不降低,到在最优性公差的值内,并且对约束公差的值满足约束。
最適化ソルバーで求めた解をプロットします。
SURFL(SOL.X);轴紧的;查看([ - 20,30]);