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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ga.cpp

?? C語言實現的遺傳算法
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
void preselect()
{
    int j;
    sumfitness = 0;
    for(j = 0; j < popsize; j++) sumfitness += oldpop[j].fitness;
}

int select()  /* 輪盤賭選擇*/
{
    extern float randomperc();
    float sum, pick;
    int i;
    pick = randomperc();
    sum = 0;
    if(sumfitness != 0)
    {
        for(i = 0; (sum < pick) && (i < popsize); i++)
            sum += (float)(oldpop[i].fitness/sumfitness);
    }
    else
        i = rnd(1,popsize);
    return(i-1);
}

void statistics(struct individual *pop)  /* 計算種群統計數據 */
{
    int i, j;
    sumfitness = 0.0;
    min = pop[0].fitness;
    max = pop[0].fitness;
    /* 計算最大、最小和累計適應度 */
    for(j = 0; j < popsize; j++)
    {
        sumfitness = sumfitness + pop[j].fitness;            
        if(pop[j].fitness > max) max = pop[j].fitness;        
        if(pop[j].fitness < min) min = pop[j].fitness;         
        /* new global best-fit individual */
        if(pop[j].fitness > bestfit.fitness)
	  {
	   for(i = 0; i < chromsize; i++)
	    bestfit.chrom[i]      = pop[j].chrom[i];
            bestfit.fitness    = pop[j].fitness;
            bestfit.varible   = pop[j].varible;
            bestfit.generation = gen;
	  }
      }
    /* 計算平均適應度 */
    avg = sumfitness/popsize;
}

void title()
{
  
  printf("SGA Optimizer");
  
  printf("基本遺傳算法");
}

void repchar (FILE *outfp,char *ch,int repcount)
{
    int j;
    for (j = 1; j <= repcount; j++) printf("%s", ch);
}

void skip(FILE *outfp,int skipcount)
{
    int j;
    for (j = 1; j <= skipcount; j++) printf("\n");
}

void objfunc(struct individual *critter)  /* 計算適應度函數值 */
{
    unsigned mask=1;
    unsigned bitpos;
    unsigned tp;
    double  bitpow ;
    int j, k, stop;
    critter->varible = 0.0;
    for(k = 0; k < chromsize; k++)
    {
        if(k == (chromsize-1))
            stop = lchrom-(k*(8*sizeof(unsigned)));
        else
            stop =8*sizeof(unsigned);
        tp = critter->chrom[k];
        for(j = 0; j < stop; j++)
        {
            bitpos = j + (8*sizeof(unsigned))*k;
            if((tp&mask) == 1)
            {
                bitpow = pow(2.0,(double) bitpos);
                critter->varible = critter->varible + bitpow;
            }
            tp = tp>>1;
        }
    }
    critter->varible =-1+critter->varible*3/(pow(2.0,(double)lchrom)-1);
    critter->fitness =critter->varible*sin(critter->varible*10*atan(1)*4)+2.0;
}

void  mutation(unsigned *child)   /*變異操作*/
{
    int j, k, stop;
    unsigned mask, temp = 1;
    for(k = 0; k < chromsize; k++)
    {
        mask = 0;
        if(k == (chromsize-1))
            stop = lchrom - (k*(8*sizeof(unsigned)));
        else
            stop = 8*sizeof(unsigned);
        for(j = 0; j < stop; j++)
        {
            if(flip(pmutation))
            {
                mask = mask|(temp<<j);
                nmutation++;
            }
        }
        child[k] = child[k]^mask;
    }
}

int crossover (unsigned *parent1, unsigned *parent2, unsigned *child1, unsigned *child2)
/* 由兩個父個體交叉產生兩個子個體 */
{
    int j, jcross, k;
    unsigned mask, temp;
    if(flip(pcross))
    {
        jcross = rnd(1 ,(lchrom - 1));/* Cross between 1 and l-1 */
        ncross++;
        for(k = 1; k <= chromsize; k++)
        {
            if(jcross >= (k*32))
            {
                child1[k-1] = parent1[k-1];
                child2[k-1] = parent2[k-1];
            }
            else if((jcross < (k*32)) && (jcross > ((k-1)*32)))
            {
                mask = 1;
                for(j = 1; j <= (jcross-1-((k-1)*32)); j++)
                {
                    temp = 1;
                    mask = mask<<1;
                    mask = mask|temp;
                }
                child1[k-1] = (parent1[k-1]&mask)|(parent2[k-1]&(~mask));
                child2[k-1] = (parent1[k-1]&(~mask))|(parent2[k-1]&mask);
            }
            else
            {
                child1[k-1] = parent2[k-1];
                child2[k-1] = parent1[k-1];
            }
        }
    }
    else
    {
        for(k = 0; k < chromsize; k++)
        {
            child1[k] = parent1[k];
            child2[k] = parent2[k];
        }
        jcross = 0;
    }
    return(jcross);
}

void advance_random()  /* 產生55個隨機數 */
{
    int j1;
    double new_random;
    for(j1 = 0; j1 < 24; j1++)
    {
        new_random = oldrand[j1] - oldrand[j1+31];
        if(new_random < 0.0) new_random = new_random + 1.0;
        oldrand[j1] = new_random;
    }
    for(j1 = 24; j1 < 55; j1++)
    {
        new_random = oldrand [j1] - oldrand [j1-24];
        if(new_random < 0.0) new_random = new_random + 1.0;
        oldrand[j1] = new_random;
    }
}

int flip(float prob) /* 以一定概率產生0或1 */
{
    float randomperc();
    if(randomperc() <= prob)
        return(1);
    else
        return(0);
}

void randomize()  /* 設定隨機數種子并初始化隨機數發生器 */
{
    float randomseed;
    int j1;
    for(j1=0; j1<=54; j1++)
      oldrand[j1] = 0.0;
    jrand=0;
      do
        {
            
             printf("隨機數種子[0-1]:");
              scanf("%f", &randomseed);
         }
        while((randomseed < 0.0) || (randomseed > 1.0));
    warmup_random(randomseed);
}

double randomnormaldeviate() /* 產生隨機標準差 */
{
    //double sqrt(), log(), sin(), cos();
    float randomperc();
    double t, rndx1;
    if(rndcalcflag)
    {   rndx1 = sqrt(- 2.0*log((double) randomperc()));
        t = 6.2831853072 * (double) randomperc();
        rndx2 = rndx1 * sin(t);
        rndcalcflag = 0;
        return(rndx1 * cos(t));
    }
    else
    {
        rndcalcflag = 1;
        return(rndx2);
    }
}

float randomperc() /*與庫函數random()作用相同, 產生[0,1]之間一個隨機數 */
{
    jrand++;
    if(jrand >= 55)
    {
        jrand = 1;
        advance_random();
    }
    return((float) oldrand[jrand]);
}

int rnd(int low, int high) /*在整數low和high之間產生一個隨機整數*/
{
    int i;
    float randomperc();
    if(low >= high)
        i = low;
    else
    {
        i =(int)((randomperc() * (high - low + 1)) + low);
        if(i > high) i = high;
    }
    return(i);
}


void warmup_random(float random_seed)  /* 初始化隨機數發生器*/
{
    int j1, ii;
    double new_random, prev_random;

    oldrand[54] = random_seed;
    new_random = 0.000000001;
    prev_random = random_seed;
    for(j1 = 1 ; j1 <= 54; j1++)
    {
        ii = (21*j1)%54;
        oldrand[ii] = new_random;
        new_random = prev_random-new_random;
        if(new_random<0.0) new_random = new_random + 1.0;
        prev_random = oldrand[ii];
    }
    advance_random();
    advance_random();
    advance_random();
    jrand = 0;
}


void main(int argc,char *argv[])    /*  主程序  */

{
    struct individual *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();
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区视频免费在线观看| 26uuu欧美| 欧洲亚洲国产日韩| 日本二三区不卡| 欧美日韩国产美女| 91精品国产综合久久久久久| 欧美剧情片在线观看| 欧美一区二区三区视频| 欧美岛国在线观看| 国产精品久久久久影院老司| 国产精品久久久久国产精品日日| 国产精品久久精品日日| 一二三区精品视频| 韩国v欧美v日本v亚洲v| 精品一区二区三区在线观看| 99在线热播精品免费| 欧美日韩在线免费视频| 国产亚洲综合在线| 五月综合激情日本mⅴ| 日产国产高清一区二区三区| 日本久久精品电影| 久久久久久夜精品精品免费| 午夜精品一区二区三区三上悠亚| 久久精品国产在热久久| 一本一道波多野结衣一区二区| 久久精品国产亚洲高清剧情介绍| 成人高清视频在线| 色香蕉久久蜜桃| 欧美精品一区二区三区高清aⅴ| 91精品午夜视频| 亚洲人成精品久久久久| 亚洲一区在线播放| 日韩av一区二区三区| 国产成人精品亚洲日本在线桃色| 日韩av在线发布| 欧美性色黄大片| 日韩亚洲欧美在线观看| 亚洲一区二区三区视频在线| 91精品婷婷国产综合久久| 舔着乳尖日韩一区| 毛片av一区二区| 亚洲不卡av一区二区三区| 在线欧美日韩国产| 亚洲成a人v欧美综合天堂下载| 天堂一区二区在线| 国产69精品久久777的优势| 国产日产精品1区| 91丨porny丨首页| 自拍偷拍亚洲激情| 秋霞午夜av一区二区三区| 国产日韩欧美精品电影三级在线| 亚洲视频网在线直播| 成人午夜在线视频| 色妞www精品视频| 亚欧色一区w666天堂| 99久久综合国产精品| 亚洲免费观看高清完整版在线观看熊 | 欧美a一区二区| 欧美白人最猛性xxxxx69交| 国产伦精品一区二区三区在线观看| 国产性色一区二区| 91精品福利视频| 激情久久久久久久久久久久久久久久| 精品国产免费久久| 狂野欧美性猛交blacked| 国产精品888| 亚洲成av人影院| 中文字幕精品一区二区精品绿巨人| 91农村精品一区二区在线| 欧美一区二视频| 国产69精品一区二区亚洲孕妇| 亚洲第一狼人社区| 中文字幕在线观看不卡| 欧美一级日韩不卡播放免费| 99久久精品99国产精品| 黄色小说综合网站| 日韩av不卡一区二区| 亚洲国产一区二区视频| 一区二区在线电影| 最近中文字幕一区二区三区| 国产色综合一区| 国产亚洲婷婷免费| wwwwww.欧美系列| 欧美电影免费观看高清完整版| 午夜欧美在线一二页| 亚洲国产乱码最新视频| 亚洲色欲色欲www| 成人手机在线视频| 国产成人在线视频网站| 26uuu亚洲综合色欧美| 亚洲国产三级在线| 中文字幕在线不卡一区二区三区| 国产精品区一区二区三| 亚洲欧洲日产国产综合网| 亚洲欧美综合另类在线卡通| 一区二区三区四区精品在线视频| 亚洲丝袜精品丝袜在线| 亚洲永久精品国产| 精品制服美女丁香| www.亚洲精品| 911精品国产一区二区在线| 日韩精品中午字幕| 亚洲欧美一区二区三区孕妇| 日韩精品一卡二卡三卡四卡无卡| 精品一区免费av| 欧洲视频一区二区| 国产精品久久夜| 美女在线视频一区| 色激情天天射综合网| 久久伊人蜜桃av一区二区| 久久久久久久久久久久电影| 欧美区一区二区三区| 在线播放亚洲一区| 在线免费观看视频一区| 日韩一区二区三区电影| 欧洲一区在线电影| 精品久久久久久无| 亚洲欧美一区二区三区孕妇| 亚欧色一区w666天堂| 日本高清不卡视频| 亚洲人成精品久久久久久| 久久国产精品色| 88在线观看91蜜桃国自产| 偷拍亚洲欧洲综合| 欧美无砖专区一中文字| 亚洲精品中文在线影院| 国产成人亚洲综合色影视| 欧美精品一区二区在线播放| 卡一卡二国产精品| 国产亚洲精品中文字幕| 国产高清成人在线| 国产欧美精品在线观看| 9i在线看片成人免费| 亚洲精品中文字幕在线观看| 日本少妇一区二区| 欧美一级高清片在线观看| 精品中文字幕一区二区| 欧美激情在线一区二区| 99这里都是精品| 一区二区三区四区国产精品| 在线免费一区三区| 蜜桃一区二区三区在线观看| 2023国产精品自拍| 午夜精品久久久久影视| 欧美一卡二卡三卡| 国产成人一区二区精品非洲| 亚洲一区日韩精品中文字幕| 日韩精品一区二区三区蜜臀| 成人中文字幕电影| 亚洲一区二区av电影| 久久久久久久av麻豆果冻| 91麻豆福利精品推荐| 蜜乳av一区二区| 伊人夜夜躁av伊人久久| 91精品国产品国语在线不卡| 粉嫩嫩av羞羞动漫久久久 | 国产日韩在线不卡| 欧美在线观看禁18| 国内成人自拍视频| 亚洲精品一二三| 亚洲欧美日韩国产综合| 日韩一区二区三区在线视频| 国产成人精品三级| 久久丁香综合五月国产三级网站 | 亚洲女爱视频在线| 久久久青草青青国产亚洲免观| 日本韩国一区二区三区视频| 国产精品中文字幕日韩精品 | 成av人片一区二区| 极品美女销魂一区二区三区免费| 亚洲一线二线三线久久久| 国产农村妇女毛片精品久久麻豆| 欧美日韩国产首页在线观看| 国产不卡免费视频| 麻豆成人91精品二区三区| 日日夜夜精品视频天天综合网| 亚洲激情图片一区| 亚洲精品老司机| 亚洲视频香蕉人妖| 亚洲欧洲日韩综合一区二区| 一色屋精品亚洲香蕉网站| 一区二区三区免费看视频| 一区二区三区中文字幕| 亚洲国产欧美日韩另类综合| 亚洲成人一区二区| 日韩成人精品在线| 日韩av网站免费在线| 亚洲成人激情综合网| 免费在线看成人av| 蜜桃久久久久久| 精品一区二区免费在线观看| 国产伦精品一区二区三区视频青涩| 国产精品69毛片高清亚洲| 成人高清伦理免费影院在线观看| 色综合婷婷久久| 欧美视频日韩视频| 日韩一级欧美一级| 国产精品福利电影一区二区三区四区| 亚洲色图一区二区三区| 免费一级欧美片在线观看|