资源简介

Rosenbrock函数的最大值实验报告源程序

资源截图

代码片段和文件信息

#include 
#include 
#include 

/* 常量定义 */

#define        POPSIZE        500            //群体大小
#define        MAXIMIZATION    1        //最大标志,寻找最大解
#define        MINIMIZATION    2        //最小标志,寻找最小解

/* 数据定义 (对于不同的问题,可能会有少许差别) */

#define Cmax        100                //确定的最大值
#define Cmin        0                //确定的最小值
#define    LENGTH1        10                //第一个染色体长度 
#define LENGTH2        10                //第二个染色体长度
#define CHROMLENGTH LENGTH1+LENGTH2    //染色体总长度

int FunctionMode    =    MAXIMIZATION;    //求解最优值类型:最大?最小
int PopSize            =    80;                //群体规模M
int MaxGeneration    =    200;            //最大代数
double Pc            =    0.6;            //交叉概率
double Pm            =    0.001;            //变异概率

/* 数据结构定义 */
struct individual                        //个体数据结构
{
    char    chrom[CHROMLENGTH+1];        //个体的基因型,用字符串表示
    double    value;                        //个体的目标值
    double  fitness;                    //个体的适应度
};

/* 全局变量定义 */

int        generation;                        //代数
int        best_index;                        //最优个体的索引
int        worst_index;                    //最坏个体的索引
struct    individual    bestindividual;        //当代最优个体
struct    individual    worstindividual;    //当代最坏个体
struct    individual    currentbest;        //迄今为止,最好的个体
struct    individual    population[POPSIZE];//群体

/* 函数原型声明 */

void GenerateInitialPopulation(void);
void GenerateNextPopulation(void);
void EvaluatePopulation(void);
long DecodeChromosome(char *intint);
void CalculateFitnessValue(void);
void CalculateobjectValue(void);
void FindBestAndWorstIndividual(void);
void PerformEvolution(void);
void SelectionOperator(void);
void CrossoverOperator(void);
void MutationOperator(void);
void OutputTextReport(void);

/*主程序 */

void main(void)
{
    generation =0;
    GenerateInitialPopulation();
    EvaluatePopulation();
    while(generation    {
        generation++;
        GenerateNextPopulation();
        EvaluatePopulation();
        PerformEvolution();
        OutputTextReport();
    }
}

/* 函数:产生第一代个体      参数:void */
void GenerateInitialPopulation(void)
{
    int ij;

    srand(time(NULL));
    for(i=0;i    {
        for(j=0;j        {
            population[i].chrom[j]=(rand()%10<5)?‘0‘:‘1‘;
        }
        population[i].chrom[CHROMLENGTH]=0;
    }
}

/*函数:初始化第一代个体     参数:void*/
void GenerateNextPopulation(void)
{
    SelectionOperator();
    CrossoverOperator();
    MutationOperator();
}

/*函数:通过特定的方程式评估群体     
参数:void*/
void EvaluatePopulation(void)
{
    CalculateobjectValue();        
    CalculateFitnessValue();
    FindBestAndWorstIndividual();
}

/*
函数:将染色体的基因型解码成表现型
参数:void
备注:返回值可能是正、或负。对于不同的解码方法,这个值也可能是“unsigned int”
*/
long    DecodeChromosome(char *stringint pointint length)
{
    int i;
    long decimal=0L

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     618496  2009-08-31 20:17  用遗传算法求解Rosenbrock函数的最大值(实验报告+vc源程序)\实验报告(用遗传算法求解Rosenbrock函数的最大值).doc

     文件       8501  2009-06-22 16:34  用遗传算法求解Rosenbrock函数的最大值(实验报告+vc源程序)\实验报告(用遗传算法求解Rosenbrock函数的最大值) (1)\rosenbrock.c

     文件       3447  2009-06-22 15:02  用遗传算法求解Rosenbrock函数的最大值(实验报告+vc源程序)\实验报告(用遗传算法求解Rosenbrock函数的最大值) (1)\rosenbrock.dsp

     文件        545  2009-06-22 16:38  用遗传算法求解Rosenbrock函数的最大值(实验报告+vc源程序)\实验报告(用遗传算法求解Rosenbrock函数的最大值) (1)\rosenbrock.dsw

     文件      33792  2009-06-22 16:38  用遗传算法求解Rosenbrock函数的最大值(实验报告+vc源程序)\实验报告(用遗传算法求解Rosenbrock函数的最大值) (1)\rosenbrock.ncb

     文件      48640  2009-06-22 16:38  用遗传算法求解Rosenbrock函数的最大值(实验报告+vc源程序)\实验报告(用遗传算法求解Rosenbrock函数的最大值) (1)\rosenbrock.opt

     文件        768  2009-06-22 16:35  用遗传算法求解Rosenbrock函数的最大值(实验报告+vc源程序)\实验报告(用遗传算法求解Rosenbrock函数的最大值) (1)\rosenbrock.plg

     文件     208970  2009-06-22 16:35  用遗传算法求解Rosenbrock函数的最大值(实验报告+vc源程序)\实验报告(用遗传算法求解Rosenbrock函数的最大值) (1)\Debug\rosenbrock.exe

     文件     215324  2009-06-22 16:35  用遗传算法求解Rosenbrock函数的最大值(实验报告+vc源程序)\实验报告(用遗传算法求解Rosenbrock函数的最大值) (1)\Debug\rosenbrock.ilk

     文件      15779  2009-06-22 16:35  用遗传算法求解Rosenbrock函数的最大值(实验报告+vc源程序)\实验报告(用遗传算法求解Rosenbrock函数的最大值) (1)\Debug\rosenbrock.obj

     文件     188068  2009-06-22 15:02  用遗传算法求解Rosenbrock函数的最大值(实验报告+vc源程序)\实验报告(用遗传算法求解Rosenbrock函数的最大值) (1)\Debug\rosenbrock.pch

     文件     492544  2009-06-22 16:35  用遗传算法求解Rosenbrock函数的最大值(实验报告+vc源程序)\实验报告(用遗传算法求解Rosenbrock函数的最大值) (1)\Debug\rosenbrock.pdb

     文件      33792  2009-06-22 16:35  用遗传算法求解Rosenbrock函数的最大值(实验报告+vc源程序)\实验报告(用遗传算法求解Rosenbrock函数的最大值) (1)\Debug\vc60.idb

     文件      53248  2009-06-22 16:35  用遗传算法求解Rosenbrock函数的最大值(实验报告+vc源程序)\实验报告(用遗传算法求解Rosenbrock函数的最大值) (1)\Debug\vc60.pdb

     目录          0  2009-08-31 20:18  用遗传算法求解Rosenbrock函数的最大值(实验报告+vc源程序)\实验报告(用遗传算法求解Rosenbrock函数的最大值) (1)\Debug

     目录          0  2009-08-31 20:18  用遗传算法求解Rosenbrock函数的最大值(实验报告+vc源程序)\实验报告(用遗传算法求解Rosenbrock函数的最大值) (1)

     目录          0  2009-08-31 20:18  用遗传算法求解Rosenbrock函数的最大值(实验报告+vc源程序)

----------- ---------  ---------- -----  ----

              1921914                    17


评论

共有 条评论