弹性带快速松弛算法

时间:2011-08-19 12:36:38

标签: algorithm optimization

我正在寻找一种希望存在的算法,但也许我找不到合适的搜索条件......

我在3d空间中有一种“松紧带”,乐队固定在起点和终点。对于空间中的每个点,我都可以计算出作用在波段上的“外力”。 “内力”就像弹簧(切向方向的力)。我正在寻找内部(收缩)力和外力(分散注意力)之间的平衡条件。问题是外部力量不能以封闭的形式出现(但它们是稳定的)。

目前,我已经通过对带有一些等距点的带的初始猜测进行采样,计算每个采样点的力,在所产生的力的方向上移动点并重复直到不再发生实质性运动来解决问题。

但是,我想知道是否有更有效的解决方案呢?搜索有关该主题的出版物可能是一个好词吗?

感谢任何提示!

2 个答案:

答案 0 :(得分:2)

最简单的方法是完全通用,是使用集总质量模型的有限元模型。

将橡皮筋分散为节点。内力是重量和每个相邻节点之间的弹力。你已经知道了外力。

用非线性求解器求解静态平衡方程。这比动力学更难,因为没有惯性来帮助收敛。

如果你需要解决动态问题,最简单的方法是显式整合,只是天真的前进欧拉。

我的业务实际上是基于一个模拟这个确切问题的软件代码。如果你想了解更多,一般来说,搜索动态有限元悬链线求解器。

答案 1 :(得分:1)

关于起点的想法:

  • 您可能需要考虑multigrid行的多尺度算法。粗略的想法是“粗粒度”弹性带可以快速放松,然后用作更准确的近似解决方案。当然还有更多细节。

  • 如果弹性带中链节之间的弹簧在位移上具有线性力,则几乎可以将问题设置为机械平衡(零力)的矩阵方程:(Coupling matrix) * (Displacement vector) = 0。位移矢量中的元素i表示节点i和i + 1之间的位移。当您在弹性带的起点和终点上添加约束时,它会变得更加复杂。考虑在约束限制的向量搜索空间上使用conjugate gradient method。另一种可能性是研究linear programming文献。

  • 如果弹簧是非线性的,那么共轭梯度等方法仍然适用,但可能也不行。

相关问题