主要内容

Solver-Based Bound-Constrained二次规划

这个例子展示了如何确定一个马戏团帐篷的形状通过求解一个二次优化问题。帐篷是由重,弹性材料,落定在一个最小势能的形状受到约束。的离散化问题导致bound-constrained二次规划问题。

具体问题具体分析版本的这个例子中,看到的Bound-Constrained二次规划,具体问题具体分析

问题定义

考虑建立一个马戏团帐篷覆盖一个正方形。帐篷有五个波兰人覆盖着一个沉重的,弹性材料。问题是要找到自然形状的帐篷。模型形状的高度x(p)帐篷的位置p

重型材料提升高度的势能x残雪为一个常数c这是材料的重量成正比。对于这个问题,选择c= 1/3000。

材料的弹性势能的一块 E 年代 t r e t c h 大约是与材料的二阶导数的高度成比例,乘以高度。你可以近似的二阶导数潜油电泵有限差分近似(假设的有限差分步骤大小1)。让 Δ x 代表1的坐标方向,转变 Δ y 代表1在第二个坐标方向转变。

E 年代 t r e t c h ( p ) = ( - - - - - - 1 ( x ( p + Δ x ) + x ( p - - - - - - Δ x ) + x ( p + Δ y ) + x ( p - - - - - - Δ y ) ) + 4 x ( p ) ) x ( p )

的自然形状的帐篷最小化总势能。通过离散化问题,您发现总势能最小化所有职位p E 年代 t r e t c h ( 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问题公式化是最小化

1 2 x T H x + f T x

在这种情况下,线性项 f T x 对应材料的势能高度。因此,指定f为每个组件= 1/3000x

f =(大小(高度))/ 3000;

创建有限差分矩阵表示 E 年代 t r e t c h 通过使用delsq函数。的delsq函数返回一个稀疏矩阵的条目4和1对应的条目4和1的公式 E 年代 t r e t c h ( p ) 。返回的矩阵乘以2quadprog解决二次程序给定的能量函数 E 年代 t r e t c h

H = delsq (numgrid (“年代”,33 + 2)* 2;

视图的结构矩阵H。矩阵操作x (:),这意味着矩阵x转化为一个向量通过线性索引。

间谍(H);标题(“海赛矩阵的稀疏结构”);

图包含一个坐标轴对象。坐标轴对象与标题海赛矩阵的稀疏结构,包含新西兰= 5313包含一行对象显示它的值只使用标记。

运行优化解算器

通过调用解决问题quadprog

x = quadprog (H f[]、[][],[],高度,乌兰巴托);
最低发现满足约束。优化完成,因为目标函数中引入可行的方向,在最优值的宽容,和约束满足约束的值公差内。

策划解决方案

改造解决方案x一个矩阵年代。然后画出解决方案。

S =重塑(x,大小(高度));surfl(年代);轴;视图([-20,30]);

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象的表面。

相关的话题