Solver-Based Bound-Constrained二次规划
这个例子展示了如何确定一个马戏团帐篷的形状通过求解一个二次优化问题。帐篷是由重,弹性材料,落定在一个最小势能的形状受到约束。的离散化问题导致bound-constrained二次规划问题。
具体问题具体分析版本的这个例子中,看到的Bound-Constrained二次规划,具体问题具体分析。
问题定义
考虑建立一个马戏团帐篷覆盖一个正方形。帐篷有五个波兰人覆盖着一个沉重的,弹性材料。问题是要找到自然形状的帐篷。模型形状的高度x(p)帐篷的位置p。
重型材料提升高度的势能x是残雪为一个常数c这是材料的重量成正比。对于这个问题,选择c= 1/3000。
材料的弹性势能的一块 大约是与材料的二阶导数的高度成比例,乘以高度。你可以近似的二阶导数潜油电泵有限差分近似(假设的有限差分步骤大小1)。让 代表1的坐标方向,转变 代表1在第二个坐标方向转变。
的自然形状的帐篷最小化总势能。通过离散化问题,您发现总势能最小化所有职位p的 +残雪(p)。
势能是一个二次表达式中的变量x
。
指定的边界条件的帐篷边的高度为零。帐篷波兰人有截面1×1单位,和帐篷33-by-33单位的总大小。指定每个杆的高度和位置。情节广场许多地区和帐篷波兰人。
身高= 0 (33);高度(者者)= 0.3;高度(二六27,二六27)= 0.3;高度(者,二六27)= 0.3;高度(二六27,者)= 0.3;高度(16:17,16:17)= 0.5;colormap(灰色);surfl(高度)轴紧视图([-20,30]);标题(“帐篷波兰人和地区覆盖”)
创建边界条件
的高度
矩阵定义了下界的解决方案x
。限制的解决方案为零的边界,设置上限乌兰巴托
为零的边界。
边界= false(大小(高度));边界([1,33]:)= true;边界(:,(1,33))= true;乌兰巴托=正(大小(边界));%没有上限的大部分地区乌兰巴托(边界)= 0;
创建目标函数矩阵
的quadprog
问题公式化是最小化
。
在这种情况下,线性项 对应材料的势能高度。因此,指定f为每个组件= 1/3000x。
f =(大小(高度))/ 3000;
创建有限差分矩阵表示
通过使用delsq
函数。的delsq
函数返回一个稀疏矩阵的条目4和1对应的条目4和1的公式
。返回的矩阵乘以2quadprog
解决二次程序给定的能量函数
。
H = delsq (numgrid (“年代”,33 + 2)* 2;
视图的结构矩阵H
。矩阵操作x (:)
,这意味着矩阵x
转化为一个向量通过线性索引。
间谍(H);标题(“海赛矩阵的稀疏结构”);
运行优化解算器
通过调用解决问题quadprog
。
x = quadprog (H f[]、[][],[],高度,乌兰巴托);
最低发现满足约束。优化完成,因为目标函数中引入可行的方向,在最优值的宽容,和约束满足约束的值公差内。
策划解决方案
改造解决方案x
一个矩阵年代
。然后画出解决方案。
S =重塑(x,大小(高度));surfl(年代);轴紧;视图([-20,30]);