这个例子展示了如何使用基于问题的方法来找到悬挂在两个锚定点上的质量-弹簧系统的平衡位置。弹簧具有分段线性张力。该系统包括GYDF4y2Ba 两个维度的群众。大量的GYDF4y2Ba 它与弹簧相连GYDF4y2Ba 和GYDF4y2Ba .泉水GYDF4y2Ba 和GYDF4y2Ba 也连接到单独的锚点。在这种情况下,弹簧的零力长度GYDF4y2Ba 是一个正长度GYDF4y2Ba ,弹簧产生力GYDF4y2Ba 拉伸到长度GYDF4y2Ba .问题是找到质量的最小势能配置,其中潜在的能量来自重力和拉伸非线性弹簧。均衡发生在最小能量配置处。GYDF4y2Ba
此图显示了悬挂在两个锚定点上的五个弹簧和四个质量块。GYDF4y2Ba
质量的势能GYDF4y2Ba 在高处GYDF4y2Ba 是GYDF4y2Ba 哪里GYDF4y2Ba 是地球上的引力常数,也是理想线性弹簧的势能GYDF4y2Ba 拉长GYDF4y2Ba 是GYDF4y2Ba .在当前模型中,弹簧并不理想,但其静止长度非零GYDF4y2Ba .GYDF4y2Ba
这个例子的数学依据来自Lobo,Vandenberghe,Boyd和LebetGYDF4y2Ba[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
根据需要,目标函数尚未在其变量中线性GYDF4y2BaConeprog.GYDF4y2Ba
. 引入一个新的标量变量GYDF4y2Ba
.请注意,不平等GYDF4y2Ba
这相当于不平等GYDF4y2Ba
. (3)GYDF4y2Ba
现在的问题是最小化GYDF4y2Ba
(4)GYDF4y2Ba
受锥限制的影响GYDF4y2Ba 和GYDF4y2Ba (2)中列出的,以及附加的圆锥体约束(3)。圆锥体约束(3)确保GYDF4y2Ba 因此,问题(4)等同于问题(1)。GYDF4y2Ba
问题(4)的目标函数和锥形约束适用于解决方案GYDF4y2BaConeprog.GYDF4y2Ba
.GYDF4y2Ba
定义六个春季常量GYDF4y2Ba ,六个长常数GYDF4y2Ba 和五个群众GYDF4y2Ba .GYDF4y2Ba
K = 40 *(1:6);l = [1 1/2 1 2 1 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:(端-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
anchor0=[05];anchorn=[54];anchorcons=optimeq(2,2);anchorcons(1,:)=x(1,:)==anchor0;anchorcons(2,:)=x(end,:)==anchorn;prob.Constraints.anchorcons=anchorcons;GYDF4y2Ba
创建与表达式(3)相对应的圆锥体约束。GYDF4y2Ba
YCONE = NARM([2 * T;(1-Y)])<= 1 + y;prob.constraints.ycone = Ycone;GYDF4y2Ba
问题公式已完成。请致电解决问题GYDF4y2Ba解决GYDF4y2Ba
.GYDF4y2Ba
[SOL,FVAL,EFLAG,输出] =求解(prob);GYDF4y2Ba
使用coneprog解决问题。找到了最优解。GYDF4y2Ba
绘制解决方案点和锚点。GYDF4y2Ba
绘图(sol.x(2:(nmass-1),1),sol.x(2:(nmass-1),2),GYDF4y2Ba“罗”GYDF4y2Ba) 抓住GYDF4y2Ba在GYDF4y2Ba绘图(ΦX(1,1),Sol.x(终端,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'springs'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