日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

powell法-鲍威尔法详解-附案例matlab代码

發布時間:2024/8/1 循环神经网络 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 powell法-鲍威尔法详解-附案例matlab代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

powell法-鮑威爾法詳解-附案例matlab代碼

  • powell法(共軛方向法、方向加速法)
    • 基本思想
    • 共軛方向的定義
    • 共軛方向的性質
    • 步驟
    • 說明
    • 方法評價
    • 算例
    • matlab求解
    • 所得結果
    • 附注

powell法(共軛方向法、方向加速法)

基本思想

若沿連接相鄰兩輪搜索末端的向量 S 方向搜索,收斂速度加快。

因為兩條平行線 S1與同心橢圓族相切,兩個切點的連線 S 直指中心。稱 S1與 S2 為共軛方向。

目的:以共軛方向打破振蕩,加速收斂。

共軛方向的定義

共軛方向的性質

步驟




說明

1)若是正定二次函數,n 輪迭代后收斂于最優點 x* 。
2)若是非正定二次函數,則迭代次數增加。
3)若是 n 維問題,步驟相同。
搜索方向:第一輪迭代,沿初始方向組 Si(1) (i=1,2,…,n) 的 n 個方向和共軛方向 S(1),搜索 n+1 次得極值點 xn+1(1) ;第二輪迭代,沿方向組 Si(2) ( i=1,2,…,n;i≠m ) 的 n-1 個方向和共軛方向 S(1),構筑共軛方向 S(2) 搜索 n+1次得極值點 xn+1(2) 。其中,為保證搜索方向的線性無關,去除了 Sm(2) 方向 。
在第 k 輪迭代中,為避免產生線性相關或近似線性相關,需要去除前一輪中的某個方向 Sm(k)。

方法評價

1.計算步驟復雜;
2.是二次收斂方法,收斂快。對非正定函數,也很有效;
3.是比較穩定的方法。

算例

用Powell法求解:

初始點x0=[1,1],精度e=0.0001.

matlab求解

clear all clch0=0.1;x0=[1,1];e=[1,0;0,1];n=2; for k=1:50 for i=1:n x01=x0(1);x02=x0(2);d=e(i,:); F0=ff(x0(1),x0(2));opt_step=goldsection(x01,x02,d,h0);x(i,:)=x0+opt_step*d; F(i)=ff(x(i,1),x(i,2));D(i)=F(i)-F0;endfor i=2:n x01=x(i-1,1);x02=x(i-1,2);d=e(i,:);opt_step=goldsection(x01,x02,d,h0);x(i,:)=x(i-1,:)+opt_step*d; F(i)=ff(x(i,1),x(i,2));D(i)=F(i-1)-F(i);endif abs(x(n,:)-x0)<1e-4%收斂條件break;endd=x(n,:)-x0;x(n+1,:)=2*x(n,:)-x0;[D_m,j]=max(D);F2=F(n);F3=ff(x(n+1,1),x(n+1,2));if F3<F0 && (F0-2*F2+F3)*(F0-F2-D_m)^2>=D_m/2*(0-F3)^2x01=x(n,1);x02=x(n,2);opt_step=goldsection(x01,x02,d,h0); opt_step;x(n+1,:)=x(n,:)+opt_step*d;e(j,:)=[];e(n,:)=d;x0=x(n+1,:);else if F2<F3x0=x(n,:);elsex0=x(n+1,:);end endend disp('最優化結果 x0') disp(x0) F_x0 = ff(x0(1),x(2)); disp('最優化結果最小函數值F_x0') disp(F_x0)

目標函數:

function y=ff(x1,x2) y = 60-10*x1-4*x2+x1^2+x2^2-x1*x2;

區間搜索:

function [a,b]=search2(x01,x02,d,h0) a1=0; y1=ff(x01+d(1)*a1,x02+d(2)*a1); h=h0; a2=h; y2=ff(x01+d(1)*a2,x02+d(2)*a2); if y2>y1 h=-h;a3=a1;y3=y1;a1=a2;y1=y2;a2=a3;y2=y3; end a3=a2+h;y3=ff(x01+d(1)*a3,x02+d(2)*a3);while y3<y2h=2*h;a1=a2;y1=y2;a2=a3;y2=y3;a3=a2+h; y3=ff(x01+d(1)*a3,x02+d(2)*a3); endif h>0a=a1;b=a3; elsea=a3;b=a1; end

所得結果

本優化問題的精確解為x0=(8,6)

附注

黃金分割鏈接

總結

以上是生活随笔為你收集整理的powell法-鲍威尔法详解-附案例matlab代码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。