2014-09-04 66 views
2

發佈問題的原因:我的編程經驗介於業餘和中等之間(但在這一點上我非常生疏)。我可能會使用C++,但我願意切換到Python。我有一些基本的排序/搜索算法的經驗,如二進制,M,A *等。我聽說A *可以是一個非常有效的搜索算法,但是當多個搜索目標開始希望有一些大的損失與其他算法相比,A *效率更高。我正在研究具有多維問題空間的多重搜索/優化問題,所以效率真的很重要。有效的多搜索算法

我見過的大多數多搜索算法都被稱爲字符串搜索算法。我想詢問這些算法對其他類型的問題有多好,或者可能爲我提供的場景提供其他更有效算法的建議。我確實承認我需要做更多的研究來理解優化和多搜索算法之間的差異,但目前的想法似乎適用於多搜索算法。我正在研究潛在的能量曲面並發現局部最小值的粗略近似值。

想象一個像丘陵表面的東西。現在,讓我們將任意x和y位置處物體的勢能的三維圖表作爲兩個位置座標的函數。我有興趣在這個表面的界定範圍內找到所有局部最小值。我需要算法來允許我以某種分辨率對曲面進行採樣,然後開始搜索局部最小值的最低點。實質上,我正在考慮創建一個低分辨率網格,其中包含一些受約束的廣度優先搜索,然後使用另一種智能算法來提高網點在較低值點處的分辨率。理想情況下,這些算法將用於多線程,但它們需要能夠支持任意維度的PES。我有一個提供潛在能量的黑盒評估函數。下面是一個2 + 1的尺寸圖。

enter image description here

的Envision紅線爲初始採樣網格的尺寸的1,和它實際上交叉附近的局部最小值。然後,算法將開始增加谷底周圍的網格分辨率,然後在該區域選擇最低值。然後它將轉向另一個低點。

+0

我建議使用術語「多維搜索」。如果曲面是凸的,那麼將會有一個單一的全局最優值,您可以使用簡單的爬山方法來找到它,但看起來情況並非如此。如果平穩,那麼牛頓的方法會快速找到*和*最優;您可以嘗試多次重新啓動以增加查找總體最小值的機會。你總是可以嘗試像Nelder-Mead這樣的通用搜索方法,但它不能保證最優性。 – 2014-09-05 17:31:53

回答

2

您試圖解決全局優化問題。

http://en.wikipedia.org/wiki/Global_optimization是一個很好的參考,有很多鏈接來解決這個問題的方法。我之前成功地使用過模擬退火,但解決方案適合您的問題將真正降低問題空間的大小和複雜性。