⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 report.c

📁 GENETIC ALGORITHM BOOKS
💻 C
字号:
/*----------------------------------------------------------------------------*//* report.c - generation report files                                         *//*----------------------------------------------------------------------------*/#include "external.h"report()/* Write the population report */{    void   repchar(), skip();    int    writepop(), writestats();    repchar(outfp,"-",LINELENGTH);     skip(outfp,1);    if(printstrings == 1)    {        repchar(outfp," ",((LINELENGTH-17)/2));        fprintf(outfp,"Population Report\n");        fprintf(outfp, "Generation %3d", gen);        repchar(outfp," ",(LINELENGTH-28));         fprintf(outfp, "Generation %3d\n", (gen+1));        fprintf(outfp,"num   string ");        repchar(outfp," ",lchrom-5);        fprintf(outfp,"fitness    parents xsite  ");        fprintf(outfp,"string ");        repchar(outfp," ",lchrom-5);        fprintf(outfp,"fitness\n");        repchar(outfp,"-",LINELENGTH);        skip(outfp,1);        writepop(outfp);        repchar(outfp,"-",LINELENGTH);         skip(outfp,1);    }    /* write the summary statistics in global mode  */    fprintf(outfp,"Generation %d Accumulated Statistics: \n",            gen);    fprintf(outfp,"Total Crossovers = %d, Total Mutations = %d\n",                   ncross,nmutation);    fprintf(outfp,"min = %f   max = %f   avg = %f   sum = %f\n",                 min,max,avg,sumfitness);    fprintf(outfp,"Global Best Individual so far, Generation %d:\n",                 bestfit.generation);    fprintf(outfp,"Fitness = %f: ", bestfit.fitness);    writechrom((&bestfit)->chrom);    skip(outfp,1);    repchar(outfp,"-",LINELENGTH);    skip(outfp,1);    /* application dependent report */    app_report(); }writepop(){    struct individual *pind;    int j;    for(j=0; j<popsize; j++)    {        fprintf(outfp,"%3d)  ",j+1);           /* Old string */        pind = &(oldpop[j]);        writechrom(pind->chrom);        fprintf(outfp,"  %8f | ", pind->fitness);           /* New string */        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);    }}writechrom(chrom)/* Write a chromosome as a string of ones and zeroes            *//* note that the most significant bit of the chromosome is the  *//* RIGHTMOST bit, not the leftmost bit, as would be expected... */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*UINTSIZE);        else            stop = UINTSIZE;        for(j = 0; j < stop; j++)        {            if(tmp&mask)                fprintf(outfp,"1");            else                fprintf(outfp,"0");            tmp = tmp>>1;        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -