report.c

来自「nsga2具体算法代码,用来多目标遗传算法的学习和研究」· C语言 代码 · 共 94 行

C
94
字号
/* Routines for storing population data into files */# include <stdio.h># include <stdlib.h># include <math.h># include "global.h"# include "rand.h"/* Function to print the information of a population in a file */void report_pop (population *pop, FILE *fpt){    int i, j, k;    for (i=0; i<popsize; i++)    {        for (j=0; j<nobj; j++)        {            fprintf(fpt,"%e\t",pop->ind[i].obj[j]);        }        if (ncon!=0)        {            for (j=0; j<ncon; j++)            {                fprintf(fpt,"%e\t",pop->ind[i].constr[j]);            }        }        if (nreal!=0)        {            for (j=0; j<nreal; j++)            {                fprintf(fpt,"%e\t",pop->ind[i].xreal[j]);            }        }        if (nbin!=0)        {            for (j=0; j<nbin; j++)            {                for (k=0; k<nbits[j]; k++)                {                    fprintf(fpt,"%d\t",pop->ind[i].gene[j][k]);                }            }        }        fprintf(fpt,"%e\t",pop->ind[i].constr_violation);        fprintf(fpt,"%d\t",pop->ind[i].rank);        fprintf(fpt,"%e\n",pop->ind[i].crowd_dist);    }    return;}/* Function to print the information of feasible and non-dominated population in a file */void report_feasible (population *pop, FILE *fpt){    int i, j, k;    for (i=0; i<popsize; i++)    {        if (pop->ind[i].constr_violation == 0.0 && pop->ind[i].rank==1)        {            for (j=0; j<nobj; j++)            {                fprintf(fpt,"%e\t",pop->ind[i].obj[j]);            }            if (ncon!=0)            {                for (j=0; j<ncon; j++)                {                    fprintf(fpt,"%e\t",pop->ind[i].constr[j]);                }            }            if (nreal!=0)            {                for (j=0; j<nreal; j++)                {                    fprintf(fpt,"%e\t",pop->ind[i].xreal[j]);                }            }            if (nbin!=0)            {                for (j=0; j<nbin; j++)                {                    for (k=0; k<nbits[j]; k++)                    {                        fprintf(fpt,"%d\t",pop->ind[i].gene[j][k]);                    }                }            }            fprintf(fpt,"%e\t",pop->ind[i].constr_violation);            fprintf(fpt,"%d\t",pop->ind[i].rank);            fprintf(fpt,"%e\n",pop->ind[i].crowd_dist);        }    }    return;}

⌨️ 快捷键说明

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