主要内容gydF4y2Ba

基于问题的分段线性质量-弹簧系统的锥规划最小化能量gydF4y2Ba

这个例子展示了如何使用基于问题的方法找到悬在两个锚点上的质量-弹簧系统的平衡位置。弹簧具有分段线性拉力。该系统由gydF4y2Ba ngydF4y2Ba 二维的质量。质量gydF4y2Ba 我gydF4y2Ba 与弹簧相连gydF4y2Ba 我gydF4y2Ba 而且gydF4y2Ba 我gydF4y2Ba +gydF4y2Ba 1gydF4y2Ba .弹簧gydF4y2Ba 1gydF4y2Ba 而且gydF4y2Ba ngydF4y2Ba +gydF4y2Ba 1gydF4y2Ba 也连接到单独的锚点。在这种情况下,弹簧的零力长度gydF4y2Ba 我gydF4y2Ba 长度为正gydF4y2Ba lgydF4y2Ba (gydF4y2Ba 我gydF4y2Ba )gydF4y2Ba ,弹簧产生力gydF4y2Ba kgydF4y2Ba (gydF4y2Ba 我gydF4y2Ba )gydF4y2Ba 问gydF4y2Ba 当拉伸到一定长度时gydF4y2Ba 问gydF4y2Ba +gydF4y2Ba lgydF4y2Ba (gydF4y2Ba 我gydF4y2Ba )gydF4y2Ba .问题是找到质量的最小势能配置,其中势能来自重力和非线性弹簧的拉伸。平衡发生在最小能量构型处。gydF4y2Ba

这幅插图显示了悬挂在两个锚点上的五个弹簧和四个物体。gydF4y2Ba

质量的势能gydF4y2Ba 米gydF4y2Ba 在高度gydF4y2Ba hgydF4y2Ba 是gydF4y2Ba 米gydF4y2Ba ggydF4y2Ba hgydF4y2Ba ,在那里gydF4y2Ba ggydF4y2Ba 是地球上的引力常数。同样,具有弹簧常数的理想线性弹簧的势能gydF4y2Ba kgydF4y2Ba 拉伸长度gydF4y2Ba 问gydF4y2Ba 是gydF4y2Ba kgydF4y2Ba 问gydF4y2Ba 2gydF4y2Ba /gydF4y2Ba 2gydF4y2Ba .在现有模型中,弹簧的静息长度并不理想,但它具有非零静息长度gydF4y2Ba lgydF4y2Ba .gydF4y2Ba

这个例子的数学基础来自于Lobo, Vandenberghe, Boyd和LebretgydF4y2Ba[1]gydF4y2Ba.有关此示例的基于求解器的版本,请参见gydF4y2Ba基于求解器的分段线性质量-弹簧系统的锥规划最小化能量gydF4y2Ba.gydF4y2Ba

数学公式gydF4y2Ba

质量的位置gydF4y2Ba 我gydF4y2Ba 是gydF4y2Ba xgydF4y2Ba (gydF4y2Ba 我gydF4y2Ba )gydF4y2Ba ,用横坐标表示gydF4y2Ba xgydF4y2Ba 1gydF4y2Ba (gydF4y2Ba 我gydF4y2Ba )gydF4y2Ba 和垂直坐标gydF4y2Ba xgydF4y2Ba 2gydF4y2Ba (gydF4y2Ba 我gydF4y2Ba )gydF4y2Ba .质量gydF4y2Ba 我gydF4y2Ba 重力产生的势能是多少gydF4y2Ba ggydF4y2Ba 米gydF4y2Ba (gydF4y2Ba 我gydF4y2Ba )gydF4y2Ba xgydF4y2Ba 2gydF4y2Ba (gydF4y2Ba 我gydF4y2Ba )gydF4y2Ba .春天的势能gydF4y2Ba 我gydF4y2Ba 是gydF4y2Ba kgydF4y2Ba (gydF4y2Ba 我gydF4y2Ba )gydF4y2Ba (gydF4y2Ba dgydF4y2Ba (gydF4y2Ba 我gydF4y2Ba )gydF4y2Ba -gydF4y2Ba lgydF4y2Ba (gydF4y2Ba 我gydF4y2Ba )gydF4y2Ba )gydF4y2Ba 2gydF4y2Ba /gydF4y2Ba 2gydF4y2Ba ,在那里gydF4y2Ba dgydF4y2Ba (gydF4y2Ba 我gydF4y2Ba )gydF4y2Ba 是弹簧的长度之间的质量gydF4y2Ba 我gydF4y2Ba 和质量gydF4y2Ba 我gydF4y2Ba -gydF4y2Ba 1gydF4y2Ba .取锚点1为质量0的位置,锚点2为质量0的位置gydF4y2Ba ngydF4y2Ba +gydF4y2Ba 1gydF4y2Ba .前面的能量计算表明,弹簧的势能gydF4y2Ba 我gydF4y2Ba 是gydF4y2Ba

EgydF4y2Ba ngydF4y2Ba egydF4y2Ba rgydF4y2Ba ggydF4y2Ba ygydF4y2Ba (gydF4y2Ba 我gydF4y2Ba )gydF4y2Ba =gydF4y2Ba kgydF4y2Ba (gydF4y2Ba 我gydF4y2Ba )gydF4y2Ba (gydF4y2Ba 为gydF4y2Ba xgydF4y2Ba (gydF4y2Ba 我gydF4y2Ba )gydF4y2Ba -gydF4y2Ba xgydF4y2Ba (gydF4y2Ba 我gydF4y2Ba -gydF4y2Ba 1gydF4y2Ba )gydF4y2Ba 为gydF4y2Ba -gydF4y2Ba lgydF4y2Ba (gydF4y2Ba 我gydF4y2Ba )gydF4y2Ba )gydF4y2Ba 2gydF4y2Ba 2gydF4y2Ba .gydF4y2Ba

将这个势能问题重新表述为二阶锥规划问题需要引入一些新的变量,如Lobo中所述gydF4y2Ba[1]gydF4y2Ba.创建变量gydF4y2Ba tgydF4y2Ba (gydF4y2Ba 我gydF4y2Ba )gydF4y2Ba 等于这项的平方根gydF4y2Ba EgydF4y2Ba ngydF4y2Ba egydF4y2Ba rgydF4y2Ba ggydF4y2Ba ygydF4y2Ba (gydF4y2Ba 我gydF4y2Ba )gydF4y2Ba .gydF4y2Ba

tgydF4y2Ba (gydF4y2Ba 我gydF4y2Ba )gydF4y2Ba =gydF4y2Ba kgydF4y2Ba (gydF4y2Ba 我gydF4y2Ba )gydF4y2Ba (gydF4y2Ba 为gydF4y2Ba xgydF4y2Ba (gydF4y2Ba 我gydF4y2Ba )gydF4y2Ba -gydF4y2Ba xgydF4y2Ba (gydF4y2Ba 我gydF4y2Ba -gydF4y2Ba 1gydF4y2Ba )gydF4y2Ba 为gydF4y2Ba -gydF4y2Ba lgydF4y2Ba (gydF4y2Ba 我gydF4y2Ba )gydF4y2Ba )gydF4y2Ba 2gydF4y2Ba 2gydF4y2Ba .gydF4y2Ba

让gydF4y2Ba egydF4y2Ba 是单位列向量gydF4y2Ba [gydF4y2Ba 0gydF4y2Ba 1gydF4y2Ba ]gydF4y2Ba .然后gydF4y2Ba xgydF4y2Ba 2gydF4y2Ba (gydF4y2Ba 我gydF4y2Ba )gydF4y2Ba =gydF4y2Ba egydF4y2Ba TgydF4y2Ba xgydF4y2Ba (gydF4y2Ba 我gydF4y2Ba )gydF4y2Ba .这个问题变得gydF4y2Ba

最小值gydF4y2Ba xgydF4y2Ba ,gydF4y2Ba tgydF4y2Ba (gydF4y2Ba ∑gydF4y2Ba 我gydF4y2Ba ggydF4y2Ba 米gydF4y2Ba (gydF4y2Ba 我gydF4y2Ba )gydF4y2Ba egydF4y2Ba TgydF4y2Ba xgydF4y2Ba (gydF4y2Ba 我gydF4y2Ba )gydF4y2Ba +gydF4y2Ba 为gydF4y2Ba tgydF4y2Ba 为gydF4y2Ba 2gydF4y2Ba )gydF4y2Ba .gydF4y2Ba (1)gydF4y2Ba

现在考虑gydF4y2Ba tgydF4y2Ba 作为一个自由向量变量,不是由前面的方程给出的gydF4y2Ba tgydF4y2Ba (gydF4y2Ba 我gydF4y2Ba )gydF4y2Ba .结合gydF4y2Ba xgydF4y2Ba (gydF4y2Ba 我gydF4y2Ba )gydF4y2Ba 而且gydF4y2Ba tgydF4y2Ba (gydF4y2Ba 我gydF4y2Ba )gydF4y2Ba 在新的圆锥约束条件下gydF4y2Ba

为gydF4y2Ba xgydF4y2Ba (gydF4y2Ba 我gydF4y2Ba )gydF4y2Ba -gydF4y2Ba xgydF4y2Ba (gydF4y2Ba 我gydF4y2Ba -gydF4y2Ba 1gydF4y2Ba )gydF4y2Ba 为gydF4y2Ba -gydF4y2Ba lgydF4y2Ba (gydF4y2Ba 我gydF4y2Ba )gydF4y2Ba ≤gydF4y2Ba 2gydF4y2Ba kgydF4y2Ba (gydF4y2Ba 我gydF4y2Ba )gydF4y2Ba tgydF4y2Ba (gydF4y2Ba 我gydF4y2Ba )gydF4y2Ba .gydF4y2Ba (2)gydF4y2Ba

目标函数的变量还不是线性的,如所要求的gydF4y2BaconeproggydF4y2Ba.引入一个新的标量变量gydF4y2Ba ygydF4y2Ba .注意这个不等式gydF4y2Ba 为gydF4y2Ba tgydF4y2Ba 为gydF4y2Ba 2gydF4y2Ba ≤gydF4y2Ba ygydF4y2Ba 等于这个不等式吗gydF4y2Ba

为gydF4y2Ba [gydF4y2Ba 2gydF4y2Ba tgydF4y2Ba 1gydF4y2Ba -gydF4y2Ba ygydF4y2Ba ]gydF4y2Ba 为gydF4y2Ba ≤gydF4y2Ba 1gydF4y2Ba +gydF4y2Ba ygydF4y2Ba .(3)gydF4y2Ba

现在的问题是最小化gydF4y2Ba

最小值gydF4y2Ba xgydF4y2Ba ,gydF4y2Ba tgydF4y2Ba ,gydF4y2Ba ygydF4y2Ba (gydF4y2Ba ∑gydF4y2Ba 我gydF4y2Ba ggydF4y2Ba 米gydF4y2Ba (gydF4y2Ba 我gydF4y2Ba )gydF4y2Ba egydF4y2Ba TgydF4y2Ba xgydF4y2Ba (gydF4y2Ba 我gydF4y2Ba )gydF4y2Ba +gydF4y2Ba ygydF4y2Ba )gydF4y2Ba (4)gydF4y2Ba

受锥上的约束gydF4y2Ba xgydF4y2Ba (gydF4y2Ba 我gydF4y2Ba )gydF4y2Ba 而且gydF4y2Ba tgydF4y2Ba (gydF4y2Ba 我gydF4y2Ba )gydF4y2Ba 和附加锥约束(3)。锥约束(3)确保gydF4y2Ba 为gydF4y2Ba tgydF4y2Ba 为gydF4y2Ba 2gydF4y2Ba ≤gydF4y2Ba ygydF4y2Ba .因此,问题(4)等价于问题(1)。gydF4y2Ba

问题(4)中的目标函数和锥约束适合于求解gydF4y2BaconeproggydF4y2Ba.gydF4y2Ba

MATLAB®配方gydF4y2Ba

定义六个弹簧常数gydF4y2Ba kgydF4y2Ba ,六长常数gydF4y2Ba lgydF4y2Ba ,五块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而且gydF4y2Bax(最终,:)gydF4y2Ba.这个公式允许每个弹簧在两个物体之间拉伸。gydF4y2Ba

Nmass =长度(m) + 2;gydF4y2Ba% k和l有nmass-1个元素gydF4y2Ba% m有n质量- 2个元素gydF4y2Bax = optimvar (gydF4y2Ba“x”gydF4y2Ba[nmass 2]);t = optimvar (gydF4y2Ba“t”gydF4y2Banmass-1,gydF4y2Ba下界的gydF4y2Ba, 0);y = optimvar (gydF4y2Ba“y”gydF4y2Ba,gydF4y2Ba下界的gydF4y2Ba, 0);gydF4y2Ba

创建一个优化问题,并将目标函数设置为(4)中的表达式。gydF4y2Ba

概率= optimproblem;Obj = dot(x(2:(end-1),2),m)*g + y;概率。目标= obj;gydF4y2Ba

创建表达式(2)对应的圆锥约束。gydF4y2Ba

Conecons = optimineq(nmass - 1);gydF4y2Ba为gydF4y2Ba2 = 1:(nmass-1) conecons (ii) =规范(x (2 + 1,:) - x (ii,:)) - l (ii) < =√6 (2 / k (ii)) * t (2);gydF4y2Ba结束gydF4y2Baprob.Constraints.conecons = conecons;gydF4y2Ba

指定锚点gydF4y2Baanchor0gydF4y2Ba而且gydF4y2BaanchorngydF4y2Ba.创建相等约束,指定两个虚端质量位于锚点。gydF4y2Ba

Anchor0 = [0 5];Anchorn = [5 4];anchorcons = optimeq (2, 2);锚固(1,:)= x(1,:) ==锚固0;锚固(2,:)= x(end,:) ==锚固;prob.Constraints.anchorcons = anchorcons;gydF4y2Ba

创建表达式(3)对应的圆锥约束。gydF4y2Ba

Ycone = norm([2*t;(1-y)]) <= 1 + y;prob.Constraints.ycone = ycone;gydF4y2Ba

解决问题gydF4y2Ba

问题的表述是完整的。通过打电话来解决问题gydF4y2Ba解决gydF4y2Ba.gydF4y2Ba

[溶胶,fval eflag、输出]=解决(问题);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(, 1)]、[sol.x(1、2),sol.x (, 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(结束,1)+ 0.5])ylim ([min (sol.x(:, 2)) -0.5,马克斯(sol.x (:, 2)) + 0.5])gydF4y2Ba从gydF4y2Ba

图中包含一个axes对象。坐标轴对象包含3个line类型的对象。这些对象表示计算点、锚点、弹簧。gydF4y2Ba

您可以更改参数的值gydF4y2Ba米gydF4y2Ba,gydF4y2BalgydF4y2Ba,gydF4y2BakgydF4y2Ba看看它们如何影响解决方案。你也可以改变质量的数量;代码从你提供的数据中获取质量的数量。gydF4y2Ba

参考文献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

另请参阅gydF4y2Ba

相关的话题gydF4y2Ba

Baidu
map