差分進化演算法 C語言實現

2021-08-28 03:50:14 字數 1243 閱讀 3775

之前的一篇中貼出了自己研究生期間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維引數向量表示,計算損失函式,區域性最優方法,引入退火的概念,從向量集中獲取...