隨機演算法 模擬退火

2021-09-26 08:00:08 字數 2644 閱讀 7641

參考:

參考:爬山演算法

比如我要求乙個函式在區間的最大值,

我開始會在這個區間內隨機選幾個點,然後挑最大的,

接下來在最大的點的附近又開始隨機選幾個點,然後再挑最大的

以此迴圈,最終是可以找到滿足精度要求的

盤山演算法實際上就是貪心,所以它滿足區域性最優解,但不一定滿足全域性最優解

我們想要的最終答案是a

爬山演算法最終可能會得到b

模擬退火

為了解決爬山演算法的不足

模擬退火會以一定概率接受乙個非更優解

假如當前記錄的最優解為b

隨機到的下乙個點為c

爬山演算法會直接否定了這個點,但模擬退火決定以一定概率去接受

這樣得到最終全域性最優解a的概率就大大增加

模擬演算法的描述是這樣的:

若移動後得到更優解,則總是接受該移動

若移動後的解比當前解要差,則以一定的概率接受移動,而且這個概率隨著時間推移逐漸降低。

這裡的一定的概率的計算參考了金屬冶煉的退火過程,這也是模擬退火演算法名稱的由來。

在 溫度

為t的情

況下出現

一次能量

差為δe

的降溫的

概率為在溫度為t的情況下出現一次能量差為δe的降溫的概率為

在溫度為t的

情況下出

現一次能

量差為δ

e的降溫

的概率為

p (d

e)=e

xp(d

e/(k

t))p(de) = exp( de/(kt) )

p(de)=

exp(

de/(

kt))

說白了就是:溫度越高,出現一次能量差為de的降溫的概率就越大;溫度越低,則出現降溫的概率就越小。又由於de總是小於0(否則就不叫退火了),因此de/kt < 0 ,所以p(de)的函式取值範圍是(0,1) 。

隨 著溫

度t的降

低,p(

de)會

逐漸降低

。隨著溫度t的降低,p(de)會逐漸降低。

隨著溫度t的

降低,p

(de)

會逐漸降

低。例題strange fuction

題意:f(x

)=6∗

x7+8

∗x6+

7∗x3

+5∗x

2−y∗

x(0<=x

<

=100

)f(x) = 6 * x^7+8*x^6+7*x^3+5*x^2-y*x (0 <= x <=100)

f(x)=6

∗x7+

8∗x6

+7∗x

3+5∗

x2−y

∗x(0

<=x

<=1

00)給你y

讓你求m

inf(

x)給你y 讓你求min f(x)

給你y讓你求

minf

(x)

ac code

/*

strange fuction

hdu - 2899

題意: f(x) = 6 * x^7+8*x^6+7*x^3+5*x^2-y*x (0 <= x <=100) 給你y求最小值

解法 模擬退火

*/#include

using namespace std;

#define t 100.0

#define delta 0.999

#define eps 1e-8

double y,dx[2]

=;doublef(

double x)

intmain()

printf

("%.4lf\n"

, ans);}

return0;

}

/*

strange fuction

hdu - 2899

題意: f(x) = 6 * x^7+8*x^6+7*x^3+5*x^2-y*x (0 <= x <=100) 給你y,求f(x)最小值

解法: 爬山演算法

*/#include

using namespace std;

#define t 100.0

#define delta 0.999

#define eps 1e-8

double y,dx[2]

=;doublef(

double x)

intmain()

printf

("%.4lf\n",f

(x));}

return0;

}

模擬退火演算法

w 模擬退火演算法的基本思想 將乙個優化問題比擬成乙個金屬物體,將優化問題的目標函式比擬成物體的能量,問題的解比擬成物體的狀態,問題的最優解比擬成能量最低的狀態,然後模擬金屬物體的退火過程,從乙個足夠高的溫度開始,逐漸降低溫度,使物體分子從高能量狀態緩慢的過渡到低能量狀態,直至獲得能量最小的理想狀態...

模擬退火演算法

一些求解極值的問題不能通過函式特性直接求解,只能暴力列舉,但是單純的列舉效率不高,通過模擬退火演算法可以高效的找到答案。學習好博文 最小圓覆蓋 hdu 3007 buried memory 大意 給出一些點,求出能覆蓋他們的最小的圓。輸出圓心和半徑 include include include i...

模擬退火演算法

1.模擬退火演算法認識 爬山演算法也是乙個用來求解最優化問題的演算法,每次都向著當前上公升最快的方向往上爬,但是初始化不同可能 會得到不同的區域性最優值,模擬退火演算法就可能跳出這種區域性最優解的限制。模擬退火演算法是模擬熱力學系統 中的退火過程。在退火過程中是將目標函式作為能量函式。大致過程如下 ...