主要内容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 mGydF4y2Ba 在高度GydF4y2Ba HGydF4y2Ba 是GydF4y2Ba mGydF4y2Ba GGydF4y2Ba HGydF4y2Ba , 在哪里GydF4y2Ba GGydF4y2Ba 是地球上的引力常数。另外,带有弹簧常数的理想线性弹簧的势能GydF4y2Ba kGydF4y2Ba 伸展到长度GydF4y2Ba 问GydF4y2Ba 是GydF4y2Ba kGydF4y2Ba 问GydF4y2Ba 2GydF4y2Ba /GydF4y2Ba 2GydF4y2Ba 。当前模型是弹簧不是理想的,但具有非零的静息长度GydF4y2Ba lGydF4y2Ba 。GydF4y2Ba

此示例的数学基础来自Lobo,Vandenberg,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 mGydF4y2Ba ((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作为质量位置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 mGydF4y2Ba ((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 mGydF4y2Ba ((GydF4y2Ba 一世GydF4y2Ba )GydF4y2Ba eGydF4y2Ba tGydF4y2Ba XGydF4y2Ba ((GydF4y2Ba 一世GydF4y2Ba )GydF4y2Ba +GydF4y2Ba yGydF4y2Ba )GydF4y2Ba (4)GydF4y2Ba

受锥体约束的约束GydF4y2Ba XGydF4y2Ba ((GydF4y2Ba 一世GydF4y2Ba )GydF4y2Ba 和GydF4y2Ba tGydF4y2Ba ((GydF4y2Ba 一世GydF4y2Ba )GydF4y2Ba 在(2)和其他锥体约束(3)中列出。锥约束(3)确保GydF4y2Ba ”GydF4y2Ba tGydF4y2Ba ”GydF4y2Ba 2GydF4y2Ba ≤GydF4y2Ba yGydF4y2Ba 。因此,问题(4)等效于问题(1)。GydF4y2Ba

问题(4)中的目标函数和锥体约束适用于解决方案GydF4y2BaConeprogGydF4y2Ba。GydF4y2Ba

MATLAB®公式GydF4y2Ba

定义六个弹簧常数GydF4y2Ba kGydF4y2Ba ,六个长度常数GydF4y2Ba lGydF4y2Ba 和五个群众GydF4y2Ba mGydF4y2Ba 。GydF4y2Ba

k = 40*(1:6);l = [1 1/2 1 2 1 1/2];m = [2 1 3 2 1];GydF4y2Ba

定义地球上的近似重力常数GydF4y2Ba GGydF4y2Ba 。GydF4y2Ba

G = 9.807;GydF4y2Ba

优化的变量是GydF4y2Ba XGydF4y2Ba 向量,六个组成部分GydF4y2Ba tGydF4y2Ba 向量,以及GydF4y2Ba yGydF4y2Ba 多变的。让GydF4y2BavGydF4y2Ba是包含所有这些变量的向量。GydF4y2Ba

  • [v(1),v(2)]GydF4y2Ba对应于2-D变量GydF4y2Ba XGydF4y2Ba ((GydF4y2Ba 1GydF4y2Ba )GydF4y2Ba 。GydF4y2Ba

  • [V(3),V(4)]GydF4y2Ba对应于2-D变量GydF4y2Ba XGydF4y2Ba ((GydF4y2Ba 2GydF4y2Ba )GydF4y2Ba 。GydF4y2Ba

  • [v(5),v(6)]GydF4y2Ba对应于2-D变量GydF4y2Ba XGydF4y2Ba ((GydF4y2Ba 3GydF4y2Ba )GydF4y2Ba 。GydF4y2Ba

  • [V(7),V(8)]GydF4y2Ba对应于2-D变量GydF4y2Ba XGydF4y2Ba ((GydF4y2Ba 4GydF4y2Ba )GydF4y2Ba 。GydF4y2Ba

  • [V(9),V(10)]GydF4y2Ba对应于2-D变量GydF4y2Ba XGydF4y2Ba ((GydF4y2Ba 5GydF4y2Ba )GydF4y2Ba 。GydF4y2Ba

  • [V(11):V(16)]GydF4y2Ba对应于6-D矢量GydF4y2Ba tGydF4y2Ba 。GydF4y2Ba

  • V(17)GydF4y2Ba对应于标量变量GydF4y2Ba yGydF4y2Ba 。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 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

这GydF4y2BaConeprogGydF4y2Ba求解器对可变矢量使用锥体约束GydF4y2Ba vGydF4y2Ba 以形式GydF4y2Ba

”GydF4y2Ba 一个GydF4y2Ba sGydF4y2Ba CGydF4y2Ba ÅGydF4y2Ba vGydF4y2Ba -GydF4y2Ba bGydF4y2Ba sGydF4y2Ba CGydF4y2Ba ”GydF4y2Ba ≤GydF4y2Ba dGydF4y2Ba sGydF4y2Ba CGydF4y2Ba tGydF4y2Ba vGydF4y2Ba -GydF4y2Ba γGydF4y2Ba 。GydF4y2Ba

在以下代码中,GydF4y2BaASCGydF4y2Ba矩阵代表术语GydF4y2Ba ”GydF4y2Ba XGydF4y2Ba ((GydF4y2Ba 一世GydF4y2Ba )GydF4y2Ba -GydF4y2Ba XGydF4y2Ba ((GydF4y2Ba 一世GydF4y2Ba -GydF4y2Ba 1GydF4y2Ba )GydF4y2Ba ”GydF4y2Ba , 和GydF4y2Ba理学士GydF4y2Ba=GydF4y2Ba[0; 0]GydF4y2Ba。锥变量GydF4y2BaDSCGydF4y2Ba=GydF4y2Ba 2GydF4y2Ba /GydF4y2Ba kGydF4y2Ba ((GydF4y2Ba 一世GydF4y2Ba )GydF4y2Ba 和相应的GydF4y2Ba伽玛GydF4y2Ba=GydF4y2Ba -GydF4y2Ba lGydF4y2Ba ((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 yGydF4y2Ba 多变的GydF4y2Ba

”GydF4y2Ba [[GydF4y2Ba 2GydF4y2Ba tGydF4y2Ba 1GydF4y2Ba -GydF4y2Ba yGydF4y2Ba 这是给予的GydF4y2Ba ”GydF4y2Ba ≤GydF4y2Ba 1GydF4y2Ba +GydF4y2Ba yGydF4y2Ba

通过创建矩阵GydF4y2BaASCGydF4y2Ba当乘以GydF4y2BavGydF4y2Ba向量,给出向量GydF4y2Ba [[GydF4y2Ba 2GydF4y2Ba tGydF4y2Ba -GydF4y2Ba yGydF4y2Ba 这是给予的GydF4y2Ba 。这GydF4y2Ba理学士GydF4y2Ba向量对应于期限中的常数1GydF4y2Ba 1GydF4y2Ba -GydF4y2Ba yGydF4y2Ba 。这GydF4y2BaDSCGydF4y2Ba向量,当乘以GydF4y2BavGydF4y2Ba,返回GydF4y2Ba yGydF4y2Ba 。和GydF4y2Ba伽玛GydF4y2Ba=GydF4y2Ba -GydF4y2Ba 1GydF4y2Ba 。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 tGydF4y2Ba 和GydF4y2Ba yGydF4y2Ba 变量。GydF4y2Ba

lb = -inf(size(f));lb(dbase+1:end)= 0;GydF4y2Ba

解决问题和情节解决方案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

图包含一个轴对象。轴对象包含3个类型行的对象。这些对象代表计算的点,锚点,弹簧。GydF4y2Ba

您可以更改参数的值GydF4y2BamGydF4y2Ba,,,,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

相关话题GydF4y2Ba