此示例显示了如何找到从两个锚点悬挂的质量弹簧系统的平衡位置。弹簧具有分段线性拉伸力。该系统包括GydF4y2Ba 质量二维。大量的GydF4y2Ba 连接到弹簧GydF4y2Ba 和GydF4y2Ba 。弹簧GydF4y2Ba 和GydF4y2Ba 也连接到单独的锚点。在这种情况下,弹簧的零力长度GydF4y2Ba 是正长的GydF4y2Ba ,春天产生力GydF4y2Ba 拉伸到长度GydF4y2Ba 。问题是要找到质量的最小势能构型,其中势能来自重力的力和非线性弹簧的拉伸。平衡发生在最小能量配置。GydF4y2Ba
该插图显示了从两个锚点悬挂的五个弹簧和四个群体。GydF4y2Ba
质量的势能GydF4y2Ba 在高度GydF4y2Ba 是GydF4y2Ba , 在哪里GydF4y2Ba 是地球上的引力常数。另外,带有弹簧常数的理想线性弹簧的势能GydF4y2Ba 伸展到长度GydF4y2Ba 是GydF4y2Ba 。当前模型是弹簧不是理想的,但具有非零的静息长度GydF4y2Ba 。GydF4y2Ba
此示例的数学基础来自Lobo,Vandenberg,Boyd和LebretGydF4y2Ba[1]GydF4y2Ba。对于此示例的基于问题的版本,请参阅GydF4y2Ba使用锥体编程,基于问题GydF4y2Ba。GydF4y2Ba
质量的位置GydF4y2Ba 是GydF4y2Ba ,水平坐标GydF4y2Ba 和垂直坐标GydF4y2Ba 。大量的GydF4y2Ba 由于重力而具有势能GydF4y2Ba 。春季的势能GydF4y2Ba 是GydF4y2Ba , 在哪里GydF4y2Ba 是质量之间的弹簧的长度GydF4y2Ba 和质量GydF4y2Ba 。将锚点1作为质量0的位置,而锚点2作为质量位置GydF4y2Ba 。先前的能量计算表明弹簧的势能GydF4y2Ba 是GydF4y2Ba
。GydF4y2Ba
如Lobo中所述GydF4y2Ba[1]GydF4y2Ba。创建变量GydF4y2Ba 等于术语的平方根GydF4y2Ba 。GydF4y2Ba
让GydF4y2Ba 成为单元柱向量GydF4y2Ba 。然后GydF4y2Ba 。问题变成了GydF4y2Ba
(1)GydF4y2Ba
现在考虑GydF4y2Ba 作为自由向量变量,未由先前方程式给出GydF4y2Ba 。结合关系GydF4y2Ba 和GydF4y2Ba 在新的锥体约束中GydF4y2Ba
(2)GydF4y2Ba
目标函数的变量尚未线性,如GydF4y2BaConeprogGydF4y2Ba
。引入一个新的标量变量GydF4y2Ba
。注意不平等GydF4y2Ba
等同于不平等GydF4y2Ba
。(3)GydF4y2Ba
现在问题是最小化GydF4y2Ba
(4)GydF4y2Ba
受锥体约束的约束GydF4y2Ba 和GydF4y2Ba 在(2)和其他锥体约束(3)中列出。锥约束(3)确保GydF4y2Ba 。因此,问题(4)等效于问题(1)。GydF4y2Ba
问题(4)中的目标函数和锥体约束适用于解决方案GydF4y2BaConeprogGydF4y2Ba
。GydF4y2Ba
定义六个弹簧常数GydF4y2Ba ,六个长度常数GydF4y2Ba 和五个群众GydF4y2Ba 。GydF4y2Ba
k = 40*(1:6);l = [1 1/2 1 2 1 1/2];m = [2 1 3 2 1];GydF4y2Ba
定义地球上的近似重力常数GydF4y2Ba 。GydF4y2Ba
G = 9.807;GydF4y2Ba
优化的变量是GydF4y2Ba
向量,六个组成部分GydF4y2Ba
向量,以及GydF4y2Ba
多变的。让GydF4y2BavGydF4y2Ba
是包含所有这些变量的向量。GydF4y2Ba
[v(1),v(2)]GydF4y2Ba
对应于2-D变量GydF4y2Ba
。GydF4y2Ba
[V(3),V(4)]GydF4y2Ba
对应于2-D变量GydF4y2Ba
。GydF4y2Ba
[v(5),v(6)]GydF4y2Ba
对应于2-D变量GydF4y2Ba
。GydF4y2Ba
[V(7),V(8)]GydF4y2Ba
对应于2-D变量GydF4y2Ba
。GydF4y2Ba
[V(9),V(10)]GydF4y2Ba
对应于2-D变量GydF4y2Ba
。GydF4y2Ba
[V(11):V(16)]GydF4y2Ba
对应于6-D矢量GydF4y2Ba
。GydF4y2Ba
V(17)GydF4y2Ba
对应于标量变量GydF4y2Ba
。GydF4y2Ba
使用这些变量,创建相应的目标函数向量GydF4y2BaFGydF4y2Ba
。GydF4y2Ba
f =零(size(m));f = [f; g*m];f = f(:);f = [f; zeros(length(k)+1,1)];f(end)= 1;GydF4y2Ba
创建与质量之间弹簧相对应的锥体约束(2)GydF4y2Ba
。GydF4y2Ba
这GydF4y2BaConeprogGydF4y2Ba
求解器对可变矢量使用锥体约束GydF4y2Ba
以形式GydF4y2Ba
。GydF4y2Ba
在以下代码中,GydF4y2BaASCGydF4y2Ba
矩阵代表术语GydF4y2Ba
, 和GydF4y2Ba理学士GydF4y2Ba
=GydF4y2Ba[0; 0]GydF4y2Ba
。锥变量GydF4y2BaDSCGydF4y2Ba
=GydF4y2Ba
和相应的GydF4y2Ba伽玛GydF4y2Ba
=GydF4y2Ba
d =零(1,长度(f));ASC = D;ASC([1 3])= [1 -1];a2 =圆形(ASC,1);ASC = [ASC; A2];ml =长度(m);dbase = 2*ml;BSC = [0; 0];GydF4y2Ba为了GydF4y2Bai = 2:ml伽马= -l(i);dsc = d;dsc(dbase + i)= sqrt(2/k(i));分子(i)= secondorderCone(ASC,BSC,DSC,伽马);ASC =旋转(ASC,2,2);GydF4y2Ba结尾GydF4y2Ba
如前面的代码中,创建与末端质量和锚点之间弹簧相对应的锥体约束。GydF4y2Ba
x0 = [0; 5];xn = [5; 4];ASC =零(size(asc));ASC(1,(DBASE-1))= 1;ASC(2,dbase)= 1;bsc = xn;伽马= -l(ml);dsc = d;dsc(dbase + ml)= sqrt(2/k(ml));分子(ML + 1)= secondorderCone(ASC,BSC,DSC,Gamma); Asc = zeros(size(Asc)); Asc(1,1) = 1; Asc(2,2) = 1; bsc = x0; gamma = -l(1); dsc = d; dsc(dbase + 1) = sqrt(2/k(1)); conecons(1) = secondordercone(Asc,bsc,dsc,gamma);
创建对应于GydF4y2Ba 多变的GydF4y2Ba
通过创建矩阵GydF4y2BaASCGydF4y2Ba
当乘以GydF4y2BavGydF4y2Ba
向量,给出向量GydF4y2Ba
。这GydF4y2Ba理学士GydF4y2Ba
向量对应于期限中的常数1GydF4y2Ba
。这GydF4y2BaDSCGydF4y2Ba
向量,当乘以GydF4y2BavGydF4y2Ba
,返回GydF4y2Ba
。和GydF4y2Ba伽玛GydF4y2Ba
=GydF4y2Ba
。GydF4y2Ba
ASC = 2*眼(长度(F));ASC(1:dbase,:) = [];ASC(END,END)= -1;BSC =零(size(ASC,1),1);bsc(end)= -1;dsc = d;dsc(end)= 1;伽马= -1;分子(ML+2)= secondorderCone(ASC,BSC,DSC,Gamma);GydF4y2Ba
最后,创建对应于GydF4y2Ba 和GydF4y2Ba 变量。GydF4y2Ba
lb = -inf(size(f));lb(dbase+1:end)= 0;GydF4y2Ba
问题配方完成。通过打电话解决问题GydF4y2BaConeprogGydF4y2Ba
。GydF4y2Ba
[V,FVAL,EXITFLAG,输出] = ConeProg(F,F,Conecons,[],[],[],[],[],[],LB);GydF4y2Ba
找到最佳解决方案。GydF4y2Ba
绘制解决方案点和锚点。GydF4y2Ba
pp = v(1:2*ml);pp = reshape(pp,2,[]);pp = pp';情节(pp(:,1),pp(:,2),,GydF4y2Ba'ro'GydF4y2Ba) 抓住GydF4y2Ba上GydF4y2Baxx = [x0,xn]';绘图(xx(:,1),xx(:,2),,GydF4y2Ba'KS'GydF4y2Ba)xlim([x0(1)-0.5,xn(1)+0.5])ylim([min(pp(pp(:,2)) - 0.5,max(x0(x0(2),xn(2),xn(2))+0.5])xxx = [x0'; pp; xn'];绘图(xxx(:,1),xxx(:,2),,GydF4y2Ba'B--'GydF4y2Ba) 传奇(GydF4y2Ba“计算点”GydF4y2Ba,,,,GydF4y2Ba“锚点”GydF4y2Ba,,,,GydF4y2Ba“弹簧”GydF4y2Ba,,,,GydF4y2Ba'地点'GydF4y2Ba,,,,GydF4y2Ba“最好的”GydF4y2Ba) 抓住GydF4y2Ba离开GydF4y2Ba
您可以更改参数的值GydF4y2BamGydF4y2Ba
,,,,GydF4y2BalGydF4y2Ba
, 和GydF4y2BakGydF4y2Ba
查看它们如何影响解决方案。您也可以更改质量的数量;该代码从您提供的数据中获取质量数量。GydF4y2Ba
[1] Lobo,Miguel Sousa,Lieven Vandenberghe,Stephen Boyd和HervéLebret。“二阶锥体编程的应用。”GydF4y2Ba线性代数及其应用GydF4y2Ba284,不。1-3(1998年11月):193–228。GydF4y2Bahttps://doi.org/10.1016/s0024-3795(98)10032-0GydF4y2Ba
。GydF4y2Ba
ConeprogGydF4y2Ba
|GydF4y2Ba第二阶酮GydF4y2Ba