模擬退火演算法

2021-07-09 21:48:54 字數 1254 閱讀 1745

一些求解極值的問題不能通過函式特性直接求解,只能暴力列舉,但是單純的列舉效率不高,通過模擬退火演算法可以高效的找到答案。

學習好博文:

最小圓覆蓋:

hdu 3007 

buried memory

大意:給出一些點,求出能覆蓋他們的最小的圓。輸出圓心和半徑

#include #include #include #include using namespace std;

const double eps=1e-7,inf=1e99; // t: 初始溫度 delta:下降速率

const double t=10,delta=0.88; //一般地,t=100, delta=0.98

const int n=5e2+10;

struct pointp[n],s;

double dis(point a,point b)

double solve(int n)

}s.x+=(p[k].x-s.x)/d*t;

s.y+=(p[k].y-s.y)/d*t;

r=min(r,d);

t*=delta;

}return r;

}int main()

p[35],s;

double dis(point a,point b)

double solve(int n)

}double d=dis(s,p[k]);

ans=min(ans,d);

s.x+=(p[k].x-s.x)/d*t; //向量

s.y+=(p[k].y-s.y)/d*t;

s.z+=(p[k].z-s.z)/d*t;

t*=delta;

}return ans;

}int main()

int jud(double a,double b)}}

}t=t*delta;

}for(int i=0;i>t;

while(t--)

return 0;}/*

%.4lf\n

2100

-74.4291

200-178.8534

-------------

%lf\n

2100

-74.429122

200-178.853367

*/

本想嘗試做三分題,zoj 3421 

error curves,但是發現不是超時,就是wa。

模擬退火演算法

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

模擬退火演算法

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

模擬退火演算法

題目大意 給出平面上n個點,求到所有點距離和最短的點,輸出該距離和。include include include include include struct posp 101 int n 計算點x到各點距離之和 double dis pos x 模擬退火 double sa return mi ...