概念
解多變數無約束最最佳化問題的一類方法。有的書上稱直接法或
直接搜尋法,是通過點的直接移動產生的目標值有所改善的點,經過這樣的移動,逐步到達使目標函式最優的點。如果我們把目標函式的幾何圖形看成一個山峰,那么點的直接移動就像人在爬山,選擇方向,逐步向山頂移動。目前有軸向搜尋法、
單純形調優法、Powell法等。軸向搜尋法是以沿坐標軸方向移動為基礎的搜尋方法,在進行每一輪沿坐標軸方向搜尋時,是從一參考點出發,依次沿平行於各個坐標軸方向連續作對應的目標函式值改進的搜尋移動,並以最後獲得的點作為下一輪疊代點。同時,為提高求解的效率.還要採取某些加快收斂的措施。
問題求解的過程就是努力溝通問題的起始狀態和目標狀態之間的聯繫鏈條,由起始狀態出發,逐步向目標推移、逼近的過程。在思維課題的求解活動中,人們幾乎總是一直關注著所要達到的最終目標,試圖不斷地向目標逼近。這就像在登山活動中運動員時刻把頂峰放在心目之中,力圖接近它、占領它一樣。在解決思維課題時,我們經常自覺或不自覺地運用著能夠儘量向目標靠攏的方法。這也就是通常所說的爬山法。
步驟
簡單地說,爬山法就是按照下述原則進行試探的方法。這就是在每一狀態下都選取這樣的步驟進行試探:由這個步驟所達到的終結狀態是所有可容許步驟所能達到的終結狀態中,最接近最終目標的一個。這樣的步驟稱為最優步驟。按照這樣的原則依次選取步驟,順序試探下去,直到最終目標為止。如果達不到最終目標,可以回過頭來,從已經經歷過的某一中間狀態開始,改用直接效果稍差一點的次優步驟,沿著另一條分支途徑再行試探下去。當然,也可以一下子迴轉到整個問題的起始狀態,沿著另一條全新的途徑進行試探。到底應當返回到什麼狀態開始另行試探,這要由解題者根據具體情況作出自己的判斷。
與中途法關係
爬山法與中途點法是彼此接近的方法。中途點法在實質上也就是通過一個個的中途點而向最終目標逼近的方法。同時,在問題求解活動中,這兩種方法也是緊密相聯.可以配合使用的。比如,有一個數學問題,要求決定兩個量v,u之間的關係。我們可以把求出包含v,u的關係式(其中可以含有其他未知量)和求出只包含v,u和已知量的關係式作為兩個中途點,把整個求解過程區分為三個小階段。在每個小階段中又可分別套用爬山法來進行試探。在第一階段中,那些能夠得出同時把v,u包括進去的關係式的步驟將被看做是較優的步驟;而能夠得出既把v,u同時包含在內,又含有最少的其他未知量,並且顯得比較簡單.對其他未知量容易加以分離、代換和消除的關係式的步驟就是最優步驟。在第二階段中,那些能夠消除其他未知量個數最多的步驟將是最優步驟。把爬山法同中途點法結合起來運用,可以更好地發揮它們的作用。
特點
爬山法要求人們在推演的每一步上作出局部性的合理選擇.為進行試探提供了作出衡量、判別的一種原則,使試探工作能具有更明顯的條理性和某種程度上的程式性與可操作性。在問題求解活動中.人們也往往是自覺或不自覺地運用著爬山法的原則。不過,儘管爬山法有著相當廣泛的套用,但卻並非是總能奏效的,因為它也有著明顯的弱點和局限性。
首先,在許多思維課題的求解活動中,我們既無法具體地開列出從某一狀態出發的所有容許推演步驟,更難以判定在這些步驟所得出的各種終結狀態中哪一個同最終目標最為接近。例如,在求證某一幾何命題時,一般情況下,我們並不清楚可以運用哪些幾何定理,能夠作出哪些輔助圖形,更難以從各種推演步驟所可能得出的結果中把最接近於最終目標的結果選取出來。這種狀況的存在,給爬山法的運用帶來了原則性的困難。
其次,解決問題的有效思路大多是迂迴曲折的。“曲徑通幽處。禪房花木深”。對於需要充分發揮思維的創造性功能的問題求解來說.幾乎總是需要歷經曲折才能找到通向目標的路徑。在某些情況下,甚至還需要暫時沿著同目標正相背離的途徑進行一段路程,才能夠達到探隱索幽,揭示事物底蘊,覓得待求結果的目的。與此相反,那些一開始就直接向目標逼近,能夠帶來明顯進展的路徑,卻有可能把我們引入無法達到目標的死胡同之中。對於不少問題來說,甚至完全有可能“在解題過程的末尾困難成堆”。“這就像有許許多多小路,你可以沿著這些小路爬到很接近頂峰的地方,卻只有少數幾條路可以直接通到最高峰。所以爬山法(在解題的意義上)雖然能大大縮小嘗試範圍,卻仍然不是解這類問題的好方法。你能用爬山法走完解這類問題的大半路程,卻往往在最後時刻功虧一簣。”
應當指出,對於爬山法同推演路徑的迂迴曲折不相適應的弱點,我們是可以在一定程度上設法加以補救的。只要把目光放遠一些,不是只看到當前的一步,而是看到接續下去的兩步、三步乃至更多的步數,也就能夠跨越局部存在的迂迴曲折,看清楚在較大範圍內真正能向上攀登的道路。
人們在求解問題時總是要力圖達到目標;但經驗豐富、眼界開闊的人可以看得更遠一點,審度出欲進先退、欲取姑與的曲折關係。雖然在某一步上遠離了目標,但在第二步、第三步上卻可以前進得更多,使先前的損失得到加倍的補償;而不是像沒有經驗的人那樣,只能看到眼前的一步。雖然從所採取的那一步來說是前進了。但接著下去卻會很快地面對絕壁懸崖,陷入走投無路的困境之中。這就如同下象棋一樣.初學的人大多老是盯著對方的棋子,總想多“吃掉”一個,哪怕是“吃掉”一個無足輕重的小卒,也會一陣沾沾自喜.而無力認識這一步著法對以後的著法和整個棋局帶來的不良後果。高明的棋手看到的就不止一步。他會對兩三步、乃至更多步以後的情況作出判斷。如果接下去幾步之後確實能夠把對方置於死地,即使在要著的一步上會引起車的丟失,也是樂意為之的。至於在思維課題的求解活動中怎樣才能看得更遠一點,認清真正取得進展的標誌,卻並不存在普遍有效的標
準與原則,只能主要憑藉自己的經驗和進行洞察與鑑別的能力來作出判斷。
套用
(1)建立一個描述資料庫變化的單
極值函式,且使極值對應目標狀態;
(2)選取使
函式值增長最大的那條規則作用於資料庫;
(3)重複上步,直到沒有規則使函式值繼續增長。