matlab中提供的傳統優化工具可以實現局部優化,但要實現全局優化,就要使用全局優化工具,主要包括:
GlobalSearch全局搜索和MultiStart多起點方法生成壹些起點,然後它們使用局部求解器在起點吸引盆處尋找最佳點。
Ga遺傳算法使用壹組起始點(稱為群體)通過叠代從群體中產生更好的點。只要初始種群覆蓋幾個鍋,GA就可以檢查幾個鍋。
模擬退火完成隨機搜索。通常模擬退火算法接受壹個點,只要比前壹個好,偶爾也會接受壹個更差的點,以便轉向不同的流域。
Patternsearch模式搜索算法在接受壹個點之前應該查看附近的壹組點。如果附近的壹些點屬於不同的盆地,模式搜索算法實質上是同時搜索幾個盆地。
下面我將用壹些具體的例子來說明各種優化方法:
可以看出,初始值x0不同,結果完全不同,說明這個求解器可以找到局部最優,但不壹定是全局最優,在起點為8時得到全局最優。
讓我們改變求解器:fminbound,它不需要給初始值。
因此,全局優化方法可以獲得全局最優。
結果:最小二乘擬合結果誤差較大。
可以看出,全局優化結果較好,誤差較小。
這個算法的運行時間:經過的時間是6.139324秒。
使用並行計算解決問題
結果:100次本地求解程序運行中的14次轉換帶有正的本地求解程序退出標誌。
經過的時間是4.358762秒。向所有實驗室發送停止信號...停了。可以看出運行時間減少,效率提高。
這種方法只能找到局部最優。
現在使用全局優化算法: