本節將解釋三個相關的術語:模式、網格、輪詢(Polling)
一、模式(Patterns)
一個模式是向量vj的一組集合{vj}。模式在搜尋演算法中主要是決定在演算法的下一次迭代中要搜尋哪些點。集合{vj}由兩個因素決定,一個就是目標函數中獨立變數的個數N,另一個就是正交基的集合。在模式搜尋演算法中,有兩個經常使用的正交基集合,一個是具有2N個元素個數的最大正交基集合,一個是具有N+1個元素個數的最小正交基集合。
對於GPS方法,形成模式的向量集合是由固定方向的向量組成的。例如,如果在一個最佳化問題中有3個獨立變數。預設的由2N個正交基組成的模式如下:
由N+1個正交基組成的模式如下
對於MADS演算法來說,組成模式的向量集合是由演算法隨機播放產生的。根據輪詢的選擇方法,被選擇的向量個數將是2N或者N+1個。
在GPS中2N個向量分為N個向量以及N個相反的向量,N+1個向量分為N個向量以及與上面的N個向量的和相反的向量。
二、網格(Mesh)
在模式搜尋的每一步中都會搜尋一系列稱為“網格”的點。在這些點中尋找能夠改善目標函數的點。GPS與MADS演算法都是通過下面的方法產生網格的。
1.給模式中的每個向量vj乘以一個標量m,進而得到向量dj的集合{dj}。稱這個標量m為網格尺寸(Mesh size)。
2.增加{di}到當前點中,di是在上一步演算法中找到的最優解。
舉一個例子吧,上面乾巴巴的全是理論了,在GPS演算法中,假設當前點是[1.6 3.4],模式是
當前的網格的尺寸是4.
將模式乘以4,然後加上當前點就得到網格。
三、輪詢(polling)
演算法會逐個計算網格(mesh)中的點,如果在這些點中找到了比當前點的目標函數值還好的點,我們稱這次輪詢是成功的。如果在網格的點中沒有找到比當前點更好的點,稱這次輪詢是失敗的。如果在一次成功的輪詢中,找到了多個比當前點還優秀的點,那麼該把哪個點去替換當前點呢?
在演算法中有一個選項叫“Complete poll”,預設的設定是“off”,在預設情況下,演算法逐個計算網格中的點,如果找到了比“當前點”優秀的點,那麼演算法將停止輪詢,而直接把這個點替換為“當前點”。如果“Complete poll”這個選項設定為“on”,那麼演算法將會逐個輪詢網格中的所有點,在找到的所有比“當前點”優秀的點中,把具有最小目標函數值的點替換“當前點”。
如果某次輪詢是失敗的,那麼演算法將會如何運行呢?輪詢失敗以後,“當前點”不會發生改變呢,但是演算法會把網格尺寸m乘以0.5,產生新的網格,繼續輪詢。如果輪詢成功以後,演算法會把網格尺寸m乘以2,然後演算法繼續運行。所以,演算法就是在網格變大變小的過程中逐步前進的。