亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

??

?? 這個程序是關(guān)于基本遺傳算法的C語言例程
??
?? 第 1 頁 / 共 2 頁
字號:
/******************************************************************/
/* 基于基本遺傳算法的函數(shù)最優(yōu)化 SGA.C */
/* A Function Optimizer using Simple Genetic Algorithm */
/* developed from the Pascal SGA code presented by David E.Goldberg */
//******************************************************************/
#include <stdio.h>
#include<graphics.h>
#include <math.h>
#include "graph.c"
/* 全局變量 */
struct individual /* 個體*/
{
unsigned *chrom; /* 染色體 */
double fitness; /* 個體適應(yīng)度*/
double varible; /* 個體對應(yīng)的變量值*/ 
int xsite; /* 交叉位置 */
int parent[2]; /* 父個體 */
int *utility; /* 特定數(shù)據(jù)指針變量 */
};
struct bestever /* 最佳個體*/
{
unsigned *chrom; /* 最佳個體染色體*/
double fitness; /* 最佳個體適應(yīng)度 */
double varible; /* 最佳個體對應(yīng)的變量值 */
int generation; /* 最佳個體生成代 */
};
struct individual *oldpop; /* 當(dāng)前代種群 */
struct individual *newpop; /* 新一代種群 */
struct bestever bestfit; /* 最佳個體 */
double sumfitness; /* 種群中個體適應(yīng)度累計 */
double max; /* 種群中個體最大適應(yīng)度 */
double avg; /* 種群中個體平均適應(yīng)度 */
double min; /* 種群中個體最小適應(yīng)度 */
float pcross; /* 交叉概率 */
float pmutation; /* 變異概率 */
int popsize; /* 種群大小 */
int lchrom; /* 染色體長度*/
int chromsize; /* 存儲一染色體所需字節(jié)數(shù) */
int gen; /* 當(dāng)前世代數(shù) */
int maxgen; /* 最大世代數(shù) */
int run; /* 當(dāng)前運行次數(shù) */
int maxruns; /* 總運行次數(shù) */
int printstrings; /* 輸出染色體編碼的判斷,0 -- 不輸出, 1 -- 輸出 */
int nmutation; /* 當(dāng)前代變異發(fā)生次數(shù) */
int ncross; /* 當(dāng)前代交叉發(fā)生次數(shù) */

/* 隨機數(shù)發(fā)生器使用的靜態(tài)變量 */
static double oldrand[55];
static int jrand;
static double rndx2;
static int rndcalcflag;
/* 輸出文件指針 */
FILE *outfp ;
/* 函數(shù)定義 */
void advance_random();
int flip(float);rnd(int, int);
void randomize();
double randomnormaldeviate();
float randomperc(),rndreal(float,float);
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() /* 遺傳算法初始化 */
{
/* 鍵盤輸入遺傳算法參數(shù) */
initdata();
/* 確定染色體的字節(jié)長度 */
chromsize = (lchrom/(8*sizeof(unsigned)));
if(lchrom%(8*sizeof(unsigned))) chromsize++;
/*分配給全局?jǐn)?shù)據(jù)結(jié)構(gòu)空間 */
initmalloc();
/* 初始化隨機數(shù)發(fā)生器 */
randomize();
/* 初始化全局計數(shù)變量和一些數(shù)值*/
nmutation = 0;
ncross = 0;
bestfit.fitness = 0.0;
bestfit.generation = 0;
/* 初始化種群,并統(tǒng)計計算結(jié)果 */
initpop();
statistics(oldpop);
initreport();
}

void initdata() /* 遺傳算法參數(shù)輸入 */
{
char answer[2];
setcolor(9);
disp_hz16("種群大小(20-100):",100,150,20);
gscanf(320,150,9,15,4,"%d", &popsize);
if((popsize%2) != 0)
{
  fprintf(outfp, "種群大小已設(shè)置為偶數(shù)\n");
  popsize++;
};
setcolor(9);
disp_hz16("染色體長度(8-40):",100,180,20);
gscanf(320,180,9,15,4,"%d", &lchrom);
setcolor(9);
disp_hz16("是否輸出染色體編碼(y/n):",100,210,20);
printstrings=1;
gscanf(320,210,9,15,4,"%s", answer);
if(strncmp(answer,"n",1) == 0) printstrings = 0;
setcolor(9);
disp_hz16("最大世代數(shù)(100-300):",100,240,20);
gscanf(320,240,9,15,4,"%d", &maxgen);
setcolor(9);
disp_hz16("交叉率(0.2-0.9):",100,270,20);
gscanf(320,270,9,15,5,"%f", &pcross);
setcolor(9);
disp_hz16("變異率(0.01-0.1):",100,300,20);
gscanf(320,300,9,15,5,"%f", &pmutation);
}

void initpop() /* 隨機初始化種群 */
{
int j, j1, k, stop;
unsigned mask = 1;
for(j = 0; j < popsize; j++)
{
for(k = 0; k < chromsize; k++)
{
oldpop[j].chrom[k] = 0;
if(k == (chromsize-1))
stop = lchrom - (k*(8*sizeof(unsigned)));
else
stop =8*sizeof(unsigned);
for(j1 = 1; j1 <= stop; j1++)
{
oldpop[j].chrom[k] = oldpop[j].chrom[k]<<1;
if(flip(0.5))
oldpop[j].chrom[k] = oldpop[j].chrom[k]|mask;
}
}
oldpop[j].parent[0] = 0; /* 初始父個體信息 */
oldpop[j].parent[1] = 0;
oldpop[j].xsite = 0;
objfunc(&(oldpop[j])); /* 計算初始適應(yīng)度*/
}
}

void initreport() /* 初始參數(shù)輸出 */
{
void skip();
skip(outfp,1);
fprintf(outfp," 基本遺傳算法參數(shù)\n");
fprintf(outfp," -------------------------------------------------\n");
fprintf(outfp," 種群大小(popsize) = %d\n",popsize);
fprintf(outfp," 染色體長度(lchrom) = %d\n",lchrom);
fprintf(outfp," 最大進(jìn)化代數(shù)(maxgen) = %d\n",maxgen);
fprintf(outfp," 交叉概率(pcross) = %f\n", pcross);
fprintf(outfp," 變異概率(pmutation) = %f\n", pmutation);
fprintf(outfp," -------------------------------------------------\n");
skip(outfp,1);
fflush(outfp);
}

void generation()
{
int mate1, mate2, jcross, j = 0;
/* 每代運算前進(jìn)行預(yù)選 */
preselect();
/* 選擇, 交叉, 變異 */
do
{
/* 挑選交叉配對 */
mate1 = select();
mate2 = select();
/* 交叉和變異 */
jcross = crossover(oldpop[mate1].chrom, oldpop[mate2].chrom, newpop[j].chrom, newpop[j+1].chrom);
mutation(newpop[j].chrom);
mutation(newpop[j+1].chrom);
/* 解碼, 計算適應(yīng)度 */
objfunc(&(newpop[j]));
/*記錄親子關(guān)系和交叉位置 */
newpop[j].parent[0] = mate1+1;
newpop[j].xsite = jcross;
newpop[j].parent[1] = mate2+1;
objfunc(&(newpop[j+1]));
newpop[j+1].parent[0] = mate1+1;
newpop[j+1].xsite = jcross;
newpop[j+1].parent[1] = mate2+1;
j = j + 2;
}
while(j < (popsize-1));

}

void initmalloc() /*為全局?jǐn)?shù)據(jù)變量分配空間 */
{
unsigned nbytes;
char *malloc();
int j;
/* 分配給當(dāng)前代和新一代種群內(nèi)存空間 */
nbytes = popsize*sizeof(struct individual);
if((oldpop = (struct individual *) malloc(nbytes)) == NULL)
nomemory("oldpop");
if((newpop = (struct individual *) malloc(nbytes)) == NULL)
nomemory("newpop");
/* 分配給染色體內(nèi)存空間 */
nbytes = chromsize*sizeof(unsigned);
for(j = 0; j < popsize; j++)
{
if((oldpop[j].chrom = (unsigned *) malloc(nbytes)) == NULL)
  nomemory("oldpop chromosomes");
if((newpop[j].chrom = (unsigned *) malloc(nbytes)) == NULL)
  nomemory("newpop chromosomes");
}
if((bestfit.chrom = (unsigned *) malloc(nbytes)) == NULL)
nomemory("bestfit chromosome");

}

void freeall() /* 釋放內(nèi)存空間 */
{
int i;
for(i = 0; i < popsize; i++)
{
free(oldpop[i].chrom);
free(newpop[i].chrom);
}
free(oldpop);
free(newpop);
free(bestfit.chrom);
}

void nomemory(string) /* 內(nèi)存不足,退出*/
char *string;
{
fprintf(outfp,"malloc: out of memory making %s!!\n",string);
exit(-1);
}

void report() /* 輸出種群統(tǒng)計結(jié)果 */
{
void repchar(), skip();
void writepop(), writestats();
repchar(outfp,"-",80);
skip(outfp,1); 
if(printstrings == 1)
{
repchar(outfp," ",((80-17)/2));
fprintf(outfp,"模擬計算統(tǒng)計報告 \n");
fprintf(outfp, "世代數(shù) %3d", gen);
repchar(outfp," ",(80-28));
fprintf(outfp, "世代數(shù) %3d\n", (gen+1));
fprintf(outfp,"個體 染色體編碼");
repchar(outfp," ",lchrom-5);
fprintf(outfp,"適應(yīng)度 父個體 交叉位置 ");
fprintf(outfp,"染色體編碼 ");
repchar(outfp," ",lchrom-5);
fprintf(outfp,"適應(yīng)度\n");
repchar(outfp,"-",80);
skip(outfp,1);
writepop(outfp);
repchar(outfp,"-",80);
skip(outfp,1);
}
fprintf(outfp,"第 %d 代統(tǒng)計: \n",gen);
fprintf(outfp,"總交叉操作次數(shù) = %d, 總變異操作數(shù) = %d\n",ncross,nmutation);
fprintf(outfp," 最小適應(yīng)度:%f 最大適應(yīng)度:%f 平均適應(yīng)度 %f\n", min,max,avg);
fprintf(outfp," 迄今發(fā)現(xiàn)最佳個體 => 所在代數(shù): %d ", bestfit.generation);
fprintf(outfp," 適應(yīng)度:%f 染色體:", bestfit.fitness);
writechrom((&bestfit)->chrom);
fprintf(outfp," 對應(yīng)的變量值: %f", bestfit.varible);
skip(outfp,1);
repchar(outfp,"-",80);
skip(outfp,1); 
}

void writepop()
{
struct individual *pind;
int j;
for(j=0; j<popsize; j++)
{
fprintf(outfp,"%3d) ",j+1);
/* 當(dāng)前代個體 */
pind = &(oldpop[j]);
writechrom(pind->chrom);
fprintf(outfp," %8f | ", pind->fitness);
/* 新一代個體 */
pind = &(newpop[j]);
fprintf(outfp,"(%2d,%2d) %2d ",
pind->parent[0], pind->parent[1], pind->xsite);
writechrom(pind->chrom);
fprintf(outfp," %8f\n", pind->fitness);
}
}

void writechrom(chrom) /* 輸出染色體編碼 */
unsigned *chrom;
{
int j, k, stop;
unsigned mask = 1, tmp;
for(k = 0; k < chromsize; k++)
{
tmp = chrom[k];
if(k == (chromsize-1))
stop = lchrom - (k*(8*sizeof(unsigned)));
else
stop =8*sizeof(unsigned);
for(j = 0; j < stop; j++)
{
if(tmp&mask)
fprintf(outfp,"1");
else
fprintf(outfp,"0");
tmp = tmp>>1;
}
}
}

void preselect()

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品乱码久久久久久黑人| 亚洲国产日日夜夜| 7777精品伊人久久久大香线蕉经典版下载 | 国产日产精品一区| 欧美成人性福生活免费看| 欧美精品九九99久久| 欧美日韩免费一区二区三区视频| 色呦呦国产精品| 一本色道久久加勒比精品| 一本到不卡免费一区二区| www.日韩在线| 色噜噜久久综合| 色综合一个色综合亚洲| 欧美中文字幕一区二区三区| 国产欧美日韩综合精品一区二区 | 日本亚洲免费观看| 亚洲一区二区三区精品在线| 亚洲欧美日韩国产手机在线| 亚洲一区在线观看免费 | 欧美三级在线播放| 欧美精品一级二级| 欧美日韩国产大片| 日韩精品一区二区三区在线| 日韩亚洲欧美在线观看| 久久女同精品一区二区| 国产精品网站在线播放| 亚洲与欧洲av电影| 久久精品国产99久久6| 精品一区二区三区久久久| 国产精品18久久久久久久网站| 成人的网站免费观看| 欧美视频一区二区| 精品国产凹凸成av人网站| 久久综合九色综合久久久精品综合 | 91黄视频在线| 国产精品影视天天线| 色综合久久中文字幕综合网| 欧美日韩一区小说| 26uuu精品一区二区在线观看| 国产精品免费人成网站| 亚洲国产精品自拍| 国产激情精品久久久第一区二区| 成人app下载| 欧美一区二区在线播放| 中文字幕五月欧美| 麻豆高清免费国产一区| 99精品1区2区| 精品成人在线观看| 亚洲高清免费在线| 国产白丝精品91爽爽久久| 欧美日韩免费电影| 亚洲天堂成人在线观看| 久久成人免费电影| 欧美三级蜜桃2在线观看| 亚洲国产精品黑人久久久| 亚洲一区二区视频在线观看| 丁香五精品蜜臀久久久久99网站| 91精品国产综合久久蜜臀 | 99久久综合精品| 亚洲精品一区二区三区精华液| 一区二区三区精品久久久| 福利一区福利二区| 久久精品亚洲国产奇米99| 奇米影视在线99精品| 欧美私模裸体表演在线观看| 国产精品不卡在线| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 石原莉奈在线亚洲三区| 日日骚欧美日韩| 亚洲日本免费电影| 国产精品1区2区| 精品国产制服丝袜高跟| 免费在线欧美视频| 91精品国产91久久久久久最新毛片| 樱桃国产成人精品视频| 99九九99九九九视频精品| 国产精品久久久久一区二区三区| 韩日av一区二区| 精品成人在线观看| 韩国一区二区视频| 久久久亚洲综合| 国产美女一区二区| 久久精品水蜜桃av综合天堂| 国产乱码字幕精品高清av| 久久亚洲免费视频| 国产成人免费在线观看| 国产精品福利一区二区| 欧美日韩在线直播| 亚洲国产va精品久久久不卡综合| 在线一区二区三区四区| 一区二区三区精品在线| 欧美视频你懂的| 秋霞成人午夜伦在线观看| 日韩一区二区三区视频| 国产美女精品一区二区三区| 国产欧美精品一区二区色综合| 成人午夜伦理影院| 一区二区三区资源| 欧美精品tushy高清| 久久超碰97中文字幕| 久久久久久久综合狠狠综合| 成人h动漫精品| 一区二区高清视频在线观看| 日韩一区二区三区高清免费看看| 久久国产人妖系列| 国产精品人人做人人爽人人添| 色综合天天综合在线视频| 亚洲福中文字幕伊人影院| 欧美哺乳videos| av资源站一区| 奇米综合一区二区三区精品视频| 久久久精品日韩欧美| 日本精品一级二级| 美国三级日本三级久久99| 国产精品久久久久桃色tv| 欧美日本视频在线| 粉嫩av一区二区三区在线播放 | 国产成人精品网址| 有坂深雪av一区二区精品| 欧美一级片在线看| 91蜜桃在线观看| 精品在线播放免费| 亚洲福利视频三区| 国产午夜精品一区二区三区视频| 日韩一区二区不卡| 色94色欧美sute亚洲线路一ni| 久久99精品久久久久婷婷| 一区二区三区四区高清精品免费观看 | 成人国产精品免费| 蜜臀av性久久久久蜜臀aⅴ四虎 | 一区二区三区波多野结衣在线观看| 精品女同一区二区| 免费视频最近日韩| 亚洲精品va在线观看| 久久亚洲私人国产精品va媚药| 欧美日韩国产小视频| 成人激情免费电影网址| 精品制服美女久久| 日本伊人色综合网| 一区二区高清在线| 亚洲免费高清视频在线| 国产午夜精品美女毛片视频| 日韩一区二区在线播放| 欧美色欧美亚洲另类二区| 91丨九色丨国产丨porny| 国产精一区二区三区| 久久99精品国产91久久来源| 日韩电影在线一区二区| 性做久久久久久免费观看欧美| 亚洲色图另类专区| 日韩毛片一二三区| 中文字幕一区二区三| 中文字幕制服丝袜一区二区三区| 国产日韩影视精品| 国产一区日韩二区欧美三区| 亚洲一二三四在线观看| 91麻豆福利精品推荐| 轻轻草成人在线| 青青国产91久久久久久| 舔着乳尖日韩一区| 日韩高清不卡一区二区| 日韩av一级电影| 日本三级韩国三级欧美三级| 日本aⅴ亚洲精品中文乱码| 国产精品一区在线观看乱码| 久久电影国产免费久久电影 | 亚洲一区二区视频在线观看| 亚洲一区精品在线| 婷婷综合五月天| 久热成人在线视频| 韩国精品主播一区二区在线观看| 国精产品一区一区三区mba桃花| 国产一区二区不卡老阿姨| 国产精品 欧美精品| 成人ar影院免费观看视频| 欧美在线观看视频一区二区三区| 欧美美女bb生活片| 日韩美女视频一区二区| av在线综合网| 久久疯狂做爰流白浆xx| 丰满白嫩尤物一区二区| 色综合天天性综合| 69堂精品视频| 日本一区二区三区电影| 亚洲六月丁香色婷婷综合久久| 一二三四社区欧美黄| 日韩精品一二三四| 国产精品亚洲一区二区三区在线| av在线播放成人| 91精品国产日韩91久久久久久| 久久男人中文字幕资源站| 亚洲人成网站精品片在线观看 | 天天操天天干天天综合网| 日本在线播放一区二区三区| 国产成人av自拍| 欧美午夜视频网站| 中文字幕精品三区| 性欧美疯狂xxxxbbbb| 丁香六月综合激情| 日韩一二三四区|