遺傳演算法與直接搜尋工具箱學習筆記 五—–使用GPS演算法尋找一個函數的最小值

來源:互聯網
上載者:User

 本文將使用GPS方法尋找一個函數的最小值,這個例子中使用的目標函數是ps_example,該函數已經包含在遺傳演算法與直接搜尋工具箱中,可以使用edit ps_example來查看該函數的原始碼。

function f = ps_example(x)<br />for i = 1:size(x,1)<br /> if x(i,1) < -5<br /> f(i) = (x(i,1)+5)^2 + abs(x(i,2));<br /> elseif x(i,1) < -3<br /> f(i) = -2*sin(x(i,1)) + abs(x(i,2));<br /> elseif x(i,1) < 0<br /> f(i) = 0.5*x(i,1) + 2 + abs(x(i,2));<br /> elseif x(i,1) >= 0<br /> f(i) = .3*sqrt(x(i,1)) + 5/2 +abs(x(i,2));<br /> end<br />end

從原始碼中可以看出,ps_example是一個分段函數。

下面是這個函數的圖形

開始尋找這個函數的最小值

1.在命令列中輸入optimtool,斷行符號,在solver欄中選擇“Pattern Search”

2.在圖形化介面中的Objective function 欄中輸入@ps_example

3.在Start point 地區, 輸入起始點[2.1 1.7].

在約束地區保持空白

4.點擊“strat”按鈕,開始模式搜尋。

5.在Run solver and view results面板中顯示演算法啟動並執行結果。

 

搜尋一共經曆了60代的搜尋,獲得最小的目標函數值約為-2,獲得該最小值的變數的點是-4.712與0,演算法終止的原因是因為mesh網格的尺寸已經超過了該演算法能夠容忍的最小尺寸。


繪製圖形

在該工具圖形介面右邊的plot functions面板,選中best function value與Mesh size兩項

然後點擊“start”按鈕,開始模式搜尋。得到圖形

在上面的子圖形表示目標函數的最好結果的變化過程,下面的子圖形是網格大小變化的過程。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.