这个例子展示了如何使用基于问题的方法来找到悬挂在两个锚定点上的质量-弹簧系统的平衡位置。弹簧具有分段线性张力。该系统包括GYDF4y2Ba 二维质量,质量GYDF4y2Ba 它与弹簧相连GYDF4y2Ba 和GYDF4y2Ba .斯普林斯GYDF4y2Ba 和GYDF4y2Ba 也连接到单独的锚定点。在这种情况下,弹簧的零力长度GYDF4y2Ba 是一个正长度GYDF4y2Ba ,弹簧产生力GYDF4y2Ba 当伸展到一定长度时GYDF4y2Ba . 问题是找到质量的最小势能结构,其中势能来自重力和拉伸非线性弹簧。平衡发生在最小能量配置下。GYDF4y2Ba
此图显示了悬挂在两个锚定点上的五个弹簧和四个质量块。GYDF4y2Ba
质量的势能GYDF4y2Ba 在高处GYDF4y2Ba 是GYDF4y2Ba 哪里GYDF4y2Ba 是地球上的引力常数,也是理想线性弹簧的势能GYDF4y2Ba 拉长GYDF4y2Ba 是GYDF4y2Ba .在当前模型中,弹簧并不理想,但其静止长度非零GYDF4y2Ba .GYDF4y2Ba
这个例子的数学基础来自Lobo、Vandenberghe、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];m=[2 1 3 2 1];g=9.807;GYDF4y2Ba
定义与数学问题变量对应的优化变量。为简单起见,请将锚点设置为两个虚拟质量点GYDF4y2Bax(1,:)GYDF4y2Ba
和GYDF4y2Ba十(完:)GYDF4y2Ba
.此公式允许每个弹簧在两个质量之间拉伸。GYDF4y2Ba
nmass=长度(m)+2;GYDF4y2Ba%k和l有nmass-1元素GYDF4y2Ba%m有nmass-2元素GYDF4y2Bax=optimvar(GYDF4y2Ba“x”GYDF4y2Ba,[nmass,2]);t=optimvar(GYDF4y2Ba“不”GYDF4y2Ba,nmass-1,GYDF4y2Ba“LowerBound”GYDF4y2Ba,0);y=optimvar(GYDF4y2Ba“是的”GYDF4y2Ba,GYDF4y2Ba“LowerBound”GYDF4y2Ba,0);GYDF4y2Ba
创建一个优化问题,并将目标函数设置为(4)中的表达式。GYDF4y2Ba
prob=optimproblem;obj=dot(x(2:(end-1),2),m)*g+y;prob.Objective=obj;GYDF4y2Ba
创建与表达式(2)相对应的圆锥体约束。GYDF4y2Ba
conecons=optimineq(nmass-1);GYDF4y2Ba对于GYDF4y2Baii=1:(nmass-1)conecons(ii)=范数(x(ii+1,:)-x(ii,:)-l(ii)<=sqrt(2/k(ii))*t(ii);GYDF4y2Ba结束GYDF4y2Baprob.Constraints.conecons=conecons;GYDF4y2Ba
指定定位点GYDF4y2Ba主播GYDF4y2Ba
和GYDF4y2Ba主播GYDF4y2Ba
.创建相等约束,指定两个虚拟端质量位于定位点处。GYDF4y2Ba
主播0=[05];主播=[5 4];锚链=最优等式(2,2);主播(1,:)=x(1,:)=0;锚点(2,:)=x(结束,:)==锚点;prob.Constraints.anchorcons=锚点;GYDF4y2Ba
创建与表达式(3)相对应的圆锥体约束。GYDF4y2Ba
ycone=norm([2*t;(1-y)])<=1+y;prob.Constraints.ycone=ycone;GYDF4y2Ba
问题公式已完成。请致电解决问题GYDF4y2Ba解决GYDF4y2Ba
.GYDF4y2Ba
[sol,fval,eflag,output]=求解(prob);GYDF4y2Ba
使用coneprog解决问题。找到了最优解。GYDF4y2Ba
绘制解决方案点和定位点。GYDF4y2Ba
绘图(sol.x(2:(nmass-1),1),sol.x(2:(nmass-1),2),GYDF4y2Ba“罗”GYDF4y2Ba)持有GYDF4y2Ba在…上GYDF4y2Ba图([sol.x(1,1),sol.x(end,1)],[sol.x(1,2),sol.x(end,2)],GYDF4y2Ba“ks”GYDF4y2Ba)图(sol.x(:,1),sol.x(:,2),GYDF4y2Ba“b——”GYDF4y2Ba)传奇(GYDF4y2Ba“计算点”GYDF4y2Ba,GYDF4y2Ba“锚定点”GYDF4y2Ba,GYDF4y2Ba“春天”GYDF4y2Ba,GYDF4y2Ba“位置”GYDF4y2Ba,GYDF4y2Ba“最好的”GYDF4y2Ba)xlim([sol.x(1,1)-0.5,sol.x(end,1)+0.5])ylim([min(sol.x(:,2))-0.5,max(sol.x(:,2))+0.5])保持GYDF4y2Ba关GYDF4y2Ba
您可以更改参数的值GYDF4y2BaMGYDF4y2Ba
,GYDF4y2BaLGYDF4y2Ba
,及GYDF4y2BaKGYDF4y2Ba
查看它们对解决方案的影响。您还可以更改质量数;代码从您提供的数据中获取质量数。GYDF4y2Ba
[1] 二阶锥规划的应用GYDF4y2Ba线性代数及其应用GYDF4y2Ba284,第1-3号(1998年11月):193-228。GYDF4y2Bahttps://doi.org/10.1016/S0024-3795(98)10032-0GYDF4y2Ba
.GYDF4y2Ba