发布问题的原因:我的编程经验介于业余和中等之间(但我现在已经很生疏了)。我可能会使用C++,但我也愿意转换到Python。我有一些基本排序/搜索算法的经验,如二进制、M、A*等。我听说A*可以是一个相当有效的搜索算法,但是当开始需要多个搜索目标时,在A*中会出现一些效率上的大损失,与其他算法相比。我正在研究一个多搜索/优化问题,它具有多维问题空间,因此效率真的开始变得重要。
我看到的大多数多搜索算法都被称为字符串搜索算法。我想询问这些算法在其他类型的问题上工作得如何,或者可能提供其他更有效的算法建议,以适应我提供的情况。我承认我需要做更多的研究来理解优化和多搜索算法之间的区别,但我目前的想法似乎与多搜索算法很好地配合。我正在研究潜在能量表面,并找到局部极小值的粗略近似。
想象一下像山丘一样的东西。现在让我们用一个三维图形来描述物体在任何x和y位置的势能,作为两个位置坐标的函数。我有兴趣在这个表面的定义边界内找到所有局部极小值。我需要算法允许我以一定的分辨率对表面进行采样,然后开始搜索最低点的局部极小值。本质上,我想创建一个低分辨率网格,并使用某种约束广度优先搜索,然后使用另一个智能算法来增加低价值点处的网格分辨率。理想情况下,算法将被多线程使用,但它们需要支持任意维度的PES。我有一个提供潜在能量的黑盒评估函数。以下是2+1维插图。
设想红线是初始采样网格中的1个维度,并且实际上正在靠近局部极小值。然后算法将开始在山谷周围增加网格分辨率几步,然后选择该区域最低点的值。然后它将移动到另一个低点。