开发无网格轮廓算法

计算科学 pde 可视化 图论 非结构化网格 无网格方法
2021-12-01 05:52:37

我想找到一个标量函数的轮廓,它可以作为一组离散的函数值在分散的点集 . 在我的例子中,分散数据来自使用 RBF 有限差分法对 PDE 的数值解,但是任何类型的分散数据的插值同样相关。u(x,y)ui=u(xi,yi)(xi,yi),i=1,...,N

在一个相关线程中,建议首先对分散的点进行三角剖分,然后使用常见的轮廓算法,例如2D 中的行进三角形虽然这是一种经过测试的方法,但构建三角剖分破坏了 RBF-FD 方法的主要优势之一,这正是它可以避免多边形网格的事实。该线程中的一个答案表明 RBF 方法可以更好地工作。

除了点坐标和函数值之外,假设我还有大小为的 RBF-FD 模板的邻接图,以及 RBF-FD 微分权重swi

L(u(x))|xc=x1j=1swjuj

它们以某种方式构造,它们可以为各种(线性)空间微分算子x,y,...提供近似值。


回到最初的问题,寻找轮廓水平h可以重铸为寻找隐函​​数的水平集(零轮廓),

ϕ(x,y)=u(x,y)h=0,
可以看作是一个带符号的类距离函数(除了它并没有真正返回距离的事实)。

给定轮廓附近点的一些初始猜测p=(px,py)Δp使得

ϕ(p+Δp)=0,Δp||ϕ(p+Δp),

其中投影与投影点处的梯度正交。Per-Olof Persson论文(第 47-48 页)中,使用拉格朗日乘数和截断的泰勒展开式找到了投影的一阶近似。近似投影公式为

Δp=ϕ|ϕ|2ϕ.

下图显示了一个近似投影结果的示例。首先,我通过寻找模板来识别轮廓附近的散点,其中的符号发生了变化。使用 RBF-FD 空间算子构造梯度,我可以将附近的点投影到目标轮廓:ϕ=(x,y)

近似投影

我现在缺少的是一种将投影点连接到单个轮廓的可靠方法。他们是否可以使用一些图形方法(构建最短路径)?

鉴于行进方阵算法,我也预计在鞍点附近寻路将有消歧困难。他们有什么方法可以检测到这样的鞍区,如果是的话,如何使寻路变得稳健?

鞍座附近的近似值

1个回答

也许这不是您问题的完整答案。但是,我目前正在开发自己的非结构化网格生成器,发现这个工具箱非常有用。也许有一些算法可以帮助你。

MatlabGithub

TPS 问题遗传算法的简短(不完整)概述:

  • 解决经典的旅行商问题 (TSP)
  • 解决没有开始/结束约束的 TSP 的开放式变体
  • 解决具有固定开始和结束约束的 TSP 的开放式变体
  • 求解仅具有固定起始约束的 TSP 的开放变体
  • 求解使总距离最大化的 TSP 变体
  • TSP 的最近邻 (NN) 解决方案
  • TSP 开放变体的最近邻 (NN) 解决方案(无开始/结束约束)
  • TSP 的最远邻居 (FN) 解决方案
  • TSP 的随机搜索 (RS) 解决方案(提供有趣的性能比较)
  • 通过使用交叉算子的 GA 变体求解 TSP
  • 使用混合运算符集的 GA 变体求解 TSP
  • TSP 的变化,以通过点簇找到最短路径
  • 使用 GA 的变体解决 TSP,这会增加最佳路线上的突变率
  • 解决具有 GA 变体的 Open TSP,该变体增加了最佳路线上的突变率
  • 将 tsp_ga 性能与使用 NN 解决方案播种算法的方法进行比较的脚本
  • 将 tsp_ga_turbo 性能与使用 NN 解决方案播种算法的方法进行比较的脚本
  • 解决经典的多次旅行推销员问题 (M-TSP)
  • M-TSP 的随机搜索 (RS) 解决方案(提供有趣的性能比较)
  • 解决了 M-TSP 的一个变体,其中所有推销员都在第一个城市开始和结束
  • ...