使用三角形上的成本函数优化顶点

计算科学 优化
2021-12-04 08:19:56

我想优化网格中的顶点位置,并在相关三角形上使用给定的成本函数。论文给出了一个成本函数,它通过对网格中的三角形求和来评估为实数,这些三角形将顶点连接到一个有效的单纯复形。他们建议使用 L-BFGS 求解器,我想使用 PETSc 进行计算。

PETSc 中的 L-BFGS(和一些其他算法)的求解器接口获取具有当前值的向量,并具有指向残差值的输出向量的指针,具有相同的基数。

如何根据成本函数设计成本函数和残差向量,以根据生成的三角形评估顶点位置的成本?

我像这样填充 f 向量:[v1x,v1y,v1z,,vNx,vNy,vNz].

它在返回的向量中放入了什么以获得好的解决方案?我试过了 ...

  • 全都一样:cost(v)costR v( VecSet(r, cost).)
  • cost(vix)=cost(viy)=cost(viz)=tT,vitcost(t) i=1NT作为所有三角形的集合和关系vt什么时候v是三角形的一个顶点t.

两者都没有得到好的解决方案。此外,我猜想残差可能需要在 x、y、z 上有所不同,才能获得用于移动顶点的有用梯度。

1个回答

如果我没记错的话,PETSc 中的 SNES 接口只处理非线性方程,而不是优化问题。所以你可能在这里使用了错误的软件。请记住,您的成本函数只产生一个标量值,因此您不希望有一个向量值的成本函数。

如果您想继续使用 PETSc,TAO 工具包似乎是您正在寻找的:

http://www.mcs.anl.gov/research/projects/tao/