之前的一篇中貼出了自己研究生期間c實現的基本粒子群演算法,執行速度顯然要比其他的高階語言快,這也是各個程式語言之間的差別,現在對於曾經輝煌過的差分進化演算法進行c語言實現。變異策略採用de/rand/1,這個是最常見的。有錯誤之處請之處。
/***************differential evolution algorithm*************************/
/** @author: gong xu**/
# include# include# include#include #define nvar 30 // number of variables
#define npop 50 // number of population
#define iter 1000 // maximum number of iterations
struct individual
;struct de
;// sum(x^2)
double function_fitness(double *var)
if (mutate[i].position[j] < de.x_low_bound)}}
//crossover
for (int i = 0; i < npop; i++)
else
// limit of variables of bound
if (cross[i].position[j] > de.x_up_bound)
if (cross[i].position[j] < de.x_low_bound)
}cross[i].fitness = de.function(cross[i].position);
} // select
for (int i = 0; i < npop; i++)}}
// 一次迭代結束
printf("this is %d iteration, globalfitness is %f\n ", it, de.global_fitness);
} printf("the iteration is end, show the soultion and fitness!\n");
printf("global_fitness :%f\n", de.global_fitness);
for (int i = 0; i < nvar; i++) }
void main(void)
差分進化演算法
差分進化演算法在 1997 年日本召開的第一屆國際進化優化計算競賽 iceo 表現突出,已成為進化演算法 ea 的乙個重要分支,很多學者開始研究 de 演算法,並取得了大量成果 2006年 cec 國際會議將其作為專題討論,由此可見 de 演算法已成為學者的研究熱點,具有很大的發展空間.每個個體的優...
差分進化演算法
最近在學習演化演算法 evolutionary algorithm 粒子群演算法和遺傳演算法已經很熟悉了,而差分進化演算法我還沒認真研究過,趁著暑期實訓的機會打算把差分進化演算法做個總結,最後再將這三種演算法做個比較。差分進化演算法是演化演算法的一種,它的思想和遺傳演算法比較像,演算法分為以下幾個流...
差分進化演算法
差分進化演算法是一種全域性最優化的演算法,隨機搜尋,通過引數向量集的隨機擾動實現平行計算,本身輸入遺傳類演算法,借用了一種n m的演算法有點,損失函式有d個引數,他用d 1個頂點的多面體定義目前的搜尋空間,每個頂點 由乙個d維引數向量表示,計算損失函式,區域性最優方法,引入退火的概念,從向量集中獲取...