遺傳演算法模擬流體
1. 模擬退火和遺傳演算法都可以解決什麼問題啊
模擬退火演算法和遺傳演算法,包括禁忌搜索演算法,蟻群演算法等都可以用來版求解優化問題。權這些演算法的一個特點是雖然對於一些復雜問題,比如說DP難題,可能不好找到最優解(理論上找到最優解是可以的),但是可以以較高的效率找到滿意解。
查看原帖>>
2. 什麼叫遺傳演算法,遺傳演算法有什麼用希望通俗一點兒
首先有個很神奇的現象:人類以及動物的進化都是朝著好的方向發展,雖然有的往壞的方向發展了,但是總體肯定是往好的方向發展。這看似不奇怪,但是我們知道,人類的基因組合是隨機的,沒有上帝約束。這種隨機過程的結果卻是一致的!!!!!我們的遺傳演算法就是從這里得到啟發!比如我要求y=x1+x2的最大值,兩個變數,我不用傳統的數學方法,就用幼兒園的方法,把所有可能取值帶進去算,然後找出最大的就行了!但是,有時候取值是連續的,沒關系!使其離散化,就像把模擬信號化成數字信號一樣!還有個問題,如果取值太多咋辦?這就是遺傳演算法的精髓!
首先,我不用取所有可能取值,我只取幾十個或者幾百個(自己定),然後進行處理,怎樣處理呢?讓我們回到剛開始的人類進化問題,雖然沒有上帝的幫忙,但是我們知道,自然界遵循優勝劣汰的發賊,遵循交叉變異的法則,雖然不能數字化,但是這是個趨勢!我們就是把這種法則數學化!所取的幾十個值我要剩下哪些?要拋棄哪些?要處理哪些?這都要我們自己選擇,肯定是選擇最合適的取值留下,經過一系列的處理,就生成了新的群體,然後再處理,自己約定處理到第幾次就可以了,取出現過的最大值
不用擔心取到的是不是最大值,因為數學上已經有了證明,這種方法是收斂的,概率是1,所以盡管放心的做,具體的做法要參考相關書籍,不難的。
遺傳演算法的最大用處就是解決數學理論不能解決的問題!比如路徑規劃,調度問題……
3. 遺傳演算法的模擬 數據結構題目
這里有你要的資料:
C#實現遺傳演算法 模擬花朵的進化
http://hi..com/kkkkyue/blog/item/b2eef12451d334378644f921.html
遺傳演算法程序
http://hi..com/tkboy/blog/item/fb1aa31e5274b91e4034175e.html
int main(int argc,char *argv[]) /* 主程序 */
{
struct indivial *temp;
// FILE *fopen();
void title();
char *malloc();
/* if((outfp = fopen(argv[1],"w")) == NULL)
{
printf("Cannot open output file %s\n",argv[1]);
exit(-1);
}*/
title();
printf("輸入遺傳演算法執行次數(1-5):");
scanf("%d",&maxruns);
for(run=1; run<=maxruns; run++)
{
initialize();
for(gen=0; gen<maxgen; gen++)
{
printf("\n第 %d / %d 次運行: 當前代為 %d, 共 %d 代\n", run,maxruns,gen,maxgen);
/* 產生新一代 */
generation();
/* 計算新一代種群的適應度統計數據 */
statistics(newpop);
/* 輸出新一代統計數據 */
report();
temp = oldpop;
oldpop = newpop;
newpop = temp;
}
freeall();
}
}
4. Java 編程模擬遺傳演算法(Genetic Algorithm, GA):通過交叉變換得出孩子的染色體
大哥你確定5分能搞到java模擬遺傳演算法?
你搞到了別忘了給我來一份 [email protected] 膜拜。
5. 請問一下遺傳演算法,模擬退火演算法和遺傳模擬退火演算法的區別,最好能有根據同一個數學問題的matalb程序源代
遺傳演算法全局優化能力較強,模擬退火演算法局部優化能力較強,這是兩者的最大區別。遺傳模擬退火演算法是兩者的混合演算法,綜合了兩者的優點。參考資料中是改進遺傳演算法解決TSP問題的matlab代碼。
一時半會應該是搞不清楚的,你可以買一本智能優化演算法的書來看,詳細了解一下遺傳演算法和模擬退火演算法的原理。
6. 遺傳演算法、數值演算法、爬山演算法、模擬退火 各自的優缺點
遺傳演算法:其優點是能很好地處理約束,跳出局部最優,最終得到全局最優解。缺點是收斂速度慢,局部搜索能力弱,運行時間長,容易受到參數的影響。
模擬退火:具有局部搜索能力強、運行時間短的優點。缺點是全局搜索能力差,容易受到參數的影響。
爬山演算法:顯然爬山演算法簡單、效率高,但在處理多約束大規模問題時,往往不能得到較好的解決方案。
數值演算法:這個數值演算法的含義太寬泛了,指的是哪種數值演算法,陣列演算法與爬山演算法一樣,各有優缺點。
(6)遺傳演算法模擬流體擴展閱讀:
注意事項:
遺傳演算法的機制比較復雜,在Matlab中已經用工具箱中的命令進行了打包,通過調用可以非常方便的使用遺傳演算法。
函數GA:[x,Fval,reason]=GA(@fitnessfun,Nvars,options)x為最優解,Fval為最優值,@Fitnessness為目標函數,Nvars為自變數個數,options為其他屬性設置。系統的默認值是最小值,所以函數文檔中應該加上一個減號。
要設置選項,您需要以下函數:options=GaOptimset('PropertyName1','PropertyValue1','PropertyName2','PropertyName3','PropertyValue3'…)通過該函數,可以確定一些遺傳演算法的參數。
7. 比較模擬退火演算法和遺傳演算法相同點和不同點
模擬退火的話進化是由參數問題t控制的,然後通過一定的操作產生新的解,根據當前解的優劣和溫度參數t確定是否接受當前的新解。
遺傳演算法主要由選擇,交叉,變異等操作組成,通過種群進行進化。
主要不同點是模擬退火是採用單個個體進行進化,遺傳演算法是採用種群進行進化。模擬退火一般新解優於當前解才接受新解,並且還需要通過溫度參數t進行選擇,並通過變異操作產生新個體。而遺傳演算法新解是通過選擇操作進行選擇個體,並通過交叉和變異產生新個體。
相同點是都採用進化控制優化的過程。
8. 遺傳演算法和模擬退火演算法結合神經網路,進行故障診斷和數據預測,這種思路的Matlab程序,高分求助
可以用GA來優化BP網路的初始權值,再用SA來訓練網路。也可直接將兩種演算法融合。具體看你想怎麼做。附件是一個基於Matlab的SA/GA融合程序,和你的要求不同,但是可以參考。
模擬退火演算法來源於固體退火原理,將固體加溫至充分高,再讓其徐徐冷卻,加溫時,固體內部粒子隨溫升變為無序狀,內能增大,而徐徐冷卻時粒子漸趨有序,在每個溫度都達到平衡態,最後在常溫時達到基態,內能減為最小。
9. 遺傳演算法、粒子群、模擬退火相比於普通的蒙特卡洛演算法有什麼優勢他們相互的優缺點都是什麼
他們有類似之處,但差別也不小。
蒙特卡洛演算法是數值計算方法,原理是利用隨機數來解決計算問題。與它對應的是確定性演算法。也就是說該種演算法屬於隨機演算法,得到的解是近似解。
而遺傳演算法、粒子群、模擬退火雖然也是隨機近似演算法,但這三種都是仿生智能演算法,且比蒙特卡洛演算法要復雜,應用的領域也不太相同。
顯然,蒙特卡洛演算法很輕巧,求解問題更快速。