資源簡介
將簡單遺傳算法SGA的單點交叉改進為了多點交叉

代碼片段和文件信息
/********************************************************************/
/*????????基于基本遺傳算法的函數最優化任意隨機交叉父體???SGAM.C?????*/
/*?????A?Function?Optimizer?using?Simple?Genetic?Algorithm??????????*/
/*?developed?from?the?Pascal?SGA?code?presented?by?David?E.Goldberg?*/
/********************************************************************/
#include?
#include?
/*?全局變量?*/
struct?individual???????????????????????/*?個體*/
{
????unsigned?*chrom;????????????????????/*?染色體?*/
????double???fitness;???????????????????/*?個體適應度*/
????double???varible;???????????????????/*?個體對應的變量值*/???
????int??????xsite;?????????????????????/*?交叉位置?*/
????int??????parent[2];?????????????????/*?父個體??*/
????int??????*utility;??????????????????/*?特定數據指針變量?*/
};
struct?bestever?????????????????????????/*?最佳個體*/
{
????unsigned?*chrom;????????????????????/*?最佳個體染色體*/
????double???fitness;???????????????????/*?最佳個體適應度?*/
????double???varible;???????????????????/*?最佳個體對應的變量值?*/
????int??????generation;????????????????/*?最佳個體生成代?*/
};
?struct?individual?*oldpop;?????????????/*?當前代種群?*/
?struct?individual?*newpop;?????????????/*?新一代種群?*/
?struct?bestever?bestfit;???????????????/*?最佳個體?*/
?double?sumfitness;?????????????????????/*?種群中個體適應度累計?*/
?double?max;????????????????????????????/*?種群中個體最大適應度?*/
?double?avg;????????????????????????????/*?種群中個體平均適應度?*/
?double?min;????????????????????????????/*?種群中個體最小適應度?*/
?float??pcross;?????????????????????????/*?交叉概率?*/
?float??pmutation;??????????????????????/*?變異概率?*/
?int????popsize;????????????????????????/*?種群大小??*/
?int????lchrom;?????????????????????????/*?染色體長度*/
?int????chromsize;??????????????????????/*?存儲一染色體所需字節數?*/
?int????gen;????????????????????????????/*?當前世代數?*/
?int????maxgen;?????????????????????????/*?最大世代數???*/
?int????run;????????????????????????????/*?當前運行次數?*/
?int????maxruns;????????????????????????/*?總運行次數???*/
?int????printstrings;???????????????????/*?輸出染色體編碼的判斷,0?--?不輸出?1?--?輸出?*/
?int????nmutation;??????????????????????/*?當前代變異發生次數?*/
?int????ncross;?????????????????????????/*?當前代交叉發生次數?*/
/*?隨機數發生器使用的靜態變量?*/
static?double?oldrand[55];
static?int?jrand;
static?double?rndx2;
static?int?rndcalcflag;
/*?輸出文件指針?*/
FILE?*outfp?;
/*?函數定義?*/
void?advance_random();
int?flip(float);rnd(int?int);
void?randomize();
double?randomnormaldeviate();
float?randomperc()rndreal(floatfloat);
void?warmup_random(float);
void?initialize()initdata()initpop();
void?initreport()generation()initmalloc();
void?freeall()nomemory(char?*)report();
void?writepop()writechrom(unsigned?*);
void?preselect();
void?statistics(struct?individual?*);
void?title()repchar?(FILE?*char?*int);
void?skip(FILE?*int);
int?select();
void?objfunc(struct?individual?*);
int?crossover?(unsigned?*?unsigned?*?unsigned?*?unsigned?*);
void?mutation(unsigned?*);
void?initialize()??????/*?遺傳算法初始化?*/
{
????/*?鍵盤輸入遺傳算法參數?*/
????initdata();
????/*?確定染色體的字節長度?*/
????chrom
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????20182??2004-11-04?20:13??遺傳算法多點交叉算法.c
-----------?---------??----------?-----??----
????????????????20182????????????????????1
- 上一篇:非常精美的幾千個LabVIEW按鈕圖標
- 下一篇:labview精美控件
評論
共有 條評論