目錄**分割法
進退法 ( 二次插值法 )
拋物線插值法
三次插值法
初始點 \(x^0\)
按照某種規則 \(a\) 產生下乙個迭代點 \(x^=a(x^k)\)
點列 \(\) 收斂於最優解 \(x^*\)
初始點 \(x^0\)
按照某種規則 \(a\) 產生下乙個迭代點 \(x^=a(x^k)\)
\(f(x^0)>f(x^1)>...>f(x^k)>...\)
下降迭代演算法步驟:
給出初始點 \(x^0\),令 \(k=0\)
按照某種規則確定下降搜尋方向 \(d^k\)
按照某種規則確定搜尋步長 \(\lambda_k\),使得
\[f\left(x^+\lambda_ d^\right)
令 \(x^=x^+\lambda_ d^\)
判斷 \(x^k\) 是否滿足停止條件
\[f\left(x^+\lambda_ d^\right)=\min _ f\left(x^+\lambda d^\right)
\]稱 \(\lambda_k\) 為最優步長,且有
\[\nabla f\left(x^+\lambda_ d^\right)^ d^=0
\]設演算法 \(a\) 所得的點列為 \(\\),如果
\[\left\|x^-x^\right\|0
\]則稱 \(\\) 的收斂階為 \(\alpha\)
思想:不斷試探縮短包含極小點的區間,求得逼近的極小值。
定理:設 \(f(x)\) 是區間 \([a,b]\) 上的一元函式,\(x'\) 是 \(f(x)\) 是區間 \([a,b]\) 上的極小點。任取點 \(c,則有
若 \(f(c)>f(d),x'\in[c,b]\)
若 \(f(c)
**分割法:設 \(f(x)\) 在 \([a_1,b_1]\) 上單峰,極小點 \(x'\in [a_1,b_1]\),假設進行第 \(k\) 次迭代前 \(x'\in [a_k,b_k]\),取 \(\lambda_k,\mu_k \in [a_k,b_k]\),且 \(\lambda_k
若 $f(\lambda_k)>f(\mu_k) $,令 \(a_=\lambda_k,b_=b_k\)
若 $f(\lambda_k)\le f(\mu_k) $,令 \(a_=a_k,b_=\mu_k\)
\(\lambda_k\) 與 \(\mu_k\) 需滿足:
滿足 \(b_k-\lambda_k=\mu_k-a_k\)
每次迭代區間長度縮短比率相同
\[b_-a_=\alpha(b_k-a_k)\quad \alpha>0\]則
\[\begin\lambda_k &=& a_k+(1-\alpha)(b_k-a_k)\\\mu_k &=& a_k+\alpha(b_k-a_k)\end
\]第 \(k\) 次迭代時,假設 $f(\lambda_k)\le f(\mu_k) $,則區間更新為 \([a_,b_]=[a_k,\mu_k]\),在第 \(k+1\) 次迭代時選取 \(\lambda_,\mu_\),有
\[\begin \mu_&=a_+\alpha(b_-a_)\\&= a_k+\alpha^2(b_k-a_k)\end
\]同理可得,若 $f(\lambda_k)> f(\mu_k) $,區間更新為 $ [a_,b_]=[\lambda_k,b_k] $,有
演算法步驟:
給定初始區間 \([a_1,b_1]\),精讀要求 \(\varepsilon>0\)。
令 \(\lambda_1=a_1+0.382(b_1-a_1)\),\(\mu_1=a_1+0.618(b_1-a_1)\),並計算 \(f(\lambda_1)\) 與 \(f(\mu_1)\)
若 \(b_k-a_k < \varepsilon\),演算法結束。結果 \(x'=\frac\)。
否則,若 $f(\lambda_k)> f(\mu_k) $,轉(3)。若 $f(\lambda_k)\le f(\mu_k) $,轉(4)
區間更新為 $ [a_,b_]=[\lambda_k,b_k] $,且 \(\lambda_=\mu_k\) (減少計算,直接賦值),\(\mu_=a_+0.618(b_-a_)\),計算 \(f(\mu_)\) ,\(f(\lambda_)\) 直接由 \(f(\mu_k)\) 得來,轉(2)。
區間更新為 \([a_,b_]=[a_k,\mu_k]\),且 \(\mu_=\lambda_k\) ,\(\lambda_=a_+0.382(b_-a_)\),計算 \(f( \lambda_)\) ,\(f( \mu_)\) 直接由 \(f(\lambda_k)\) 得來,轉(2)。
演算法思路:利用目標函式在不同 3 點的函式值構成乙個與原函式 \(f(x)\) 近似的二次多項式 \(p(x)\),以函式 \(p(x)\) 的極值點作為原函式 \(f(x)\) 的近似極值點。
計算步驟:
給定初始點 \(x_0\),初始步長 \(h_0\),計算 \(f(x_0)\),令 $k=0 $。
令 \(x_=x_+h_k\),計算 \(f(x_)\),若 \(f(x_)\le f(x_)\),轉(3)。否則轉(4)。
加大步長。令 \(h_=2h_k\),\(x=x_k\),\(x_k=x_\),令 \(k:=k+1\)。轉(2)
反向搜尋或輸出。若 \(k=0\),令 \(h_1=h_0\),\(x=x_1\),\(x_1=x_0\),\(k=1\),轉(2),否則停止迭代,令
\[a=min\\},\quad b=max\\}
\]輸出 \([a,b]\)。
思想:在極小點附近,用二次三項式 \(\phi(x)\) 逼近目標函式 \(f(x)\),令 \(\phi(x)\) 與 \(f(x)\) 在三點 \(x_1處有相同的函式值,並假設 \(f(x_1)>f(x_2)>f(x_3)\)。
設 \(\phi(x)=a+bx+cx^2\),代入 \(f(x_1)\) ,\(f(x_2)\), \(f(x_3)\) 三點值求解 \(\phi(x)\) 的係數,再求 \(\phi(x)\) 的極小值點 \(x'\) 作為 \(f(x)\) 極小點的估計值。
演算法步驟:
給定區間 \([x_1,x_3]\),設 \(f(x_1)>f(x_2)\),\(f(x_2)>f(x_3)\),令 \(k:=1,x_0=x_1\)。給定精度 \(\varepsilon\)。
設 \(\phi(x)=a+bx+cx^2\)。令 \(\phi(x_i)=f(x_i),i=1,2,3\)。解出係數 \(a,b,c\)。解出 \(\phi(x)\) 的極小點 \(x'_k\)。若 \(|f(x'_k)-f(x'_)|
從 \(x_1,x_2,x_3\) 和 \(x'_k\) 中選擇 \(f(x)\) 的函式值最小的三個點重新標記為 \(x_1,x_2,x_3\),令 \(k:=k+1\),轉(2)。
思路:已知\(f(x_1)、f(x_2),x_1,且有 \(f'(x_1)<0\),\(f'(x_2)>0\),則區間 \((x_1,x_2)\) 內存在 \(f(x)\) 的極小點。利用 \(f(x_1)、f(x_2)、f'(x_1)、f'(x_2)\) 構造三次多項式 \(\phi(x)\),使得 \(\phi(x)\) 與 \(f(x)\) 在 \(x_1、x_2\) 有相同的函式值與導數。用 \(\phi(x)\) 逼近 \(f(x)\),並用 \(\phi(x)\) 極小點近似 \(f(x)\) 極小點。
最優化 一維搜尋
精確一維搜尋 試探法精確一維搜尋就是通過迭代取減少搜尋區間 對於搜尋區間 a,b 在這個區間中找連個互不相同的試探點p1 p2獲取f p1 f p2 設p1 p2 若f p1 f p2 則丟棄區間 p2,b 若f p1 f p2 則丟棄區間 a,p1 這樣就達到了通過一次迭代減小搜尋區間的目的 當搜...
最優化理論與方法 《數值與最優化方法》(目錄)
對於每乙個方法,都大致按照 問題形式 演算法步驟 和 收斂分析 來進行展開的。而對於科研中常用方法,則講透本質思想。數值與最優化方法 一 包括 一.無約束最優化計算方法1.1 數學基礎 1.1.1 等值線 1.1.2 可微與梯度 1.1.3 方向導數 1.1.4 hesse矩陣 1.1.5 多元函式...
最優化理論與凸優化到底是幹嘛的?
凸優化的定義 1.1 凸優化 1.2 全域性最優化與區域性最優化 least squares and linear programming 最小二乘與線性規劃 2.1 最小二乘 2.2 線性規劃 最優化方法的一般結構 優化理論在機器學習,深度學習中扮演的角色 1.優化的定義 1.1 凸優化 最優化問...