• 大小: 45.01MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-07-24
  • 语言: C/C++
  • 标签: NSGA  I  

资源简介

NSGA II代码实现集合包含实例、讲解及 网络模型与多目标遗传算法书记(python、C、C++、matlab) 应用数学译丛 网络模型与多目标遗传算法_(日)玄光男,林林著;梁承姬,于歆杰译_北京:清华大学出版社_2017.03_248_14182156

资源截图

代码片段和文件信息

/*
程序功能:实现nsga2算法,测试函数为ZDT1ZDT2ZDT3ZDT4ZDT6DTLZ1DTLZ2
说明:遗传算子为二进制竞赛选择,模拟二进制交叉和多项式变异
作者:(晓风)
email: 18821709267@163.com 
参考论文:
A fast and Elitist Multiobjective Genetic Algorithm:NSGA-Ⅱ
Kalyanmoy DebAssociate Member IEEE Amrit Pratap Sameer Agarwal and T.Meyarivan
IEEE TRANSACTIONS ON EVOLUTIONARY COMPUTATION
最初建立时间:2018.10.12 
最近修改时间:2018.10.19 
*/
/*
算法使用说明:
1.本算法为NSGA2,实验采用的测试函数为ZDT1ZDT2ZDT3ZDT4ZDT6DTLZ1DTLZ2,要选择哪个函数请修改第123行。
2.文件输出路径请修改中127行的a数组,格式必须与a保持相同,第125行设置路径中的实验次数(做几次实验就设到几,比如设置十次实验就1-10,最大实验次数为10,增加最大实验次数还需修改213行之后,增加与上述相同的随机种子选项即可)。
3.采用新的测试函数请修改input.h(13行开始是函数的约束条件)和func.h(41行开始是函数编写的部分)两个文件。
4.本算法默认采用实数编码,但迭代过程中进行了二进制编码,二进制编码采用了两种交叉类型,单点交叉和均匀交叉,选择那个修改input.h的11行。如果要使用二进制编码,请将func.h中的33-38行注释变成代码,29-32行加上注释,即得到二进制编码的结果。
5.本实验可修改的参数(input.h中)有popsize(种群大小),gener(迭代次数),pcross(交叉概率),di(SBX交叉参数),dim(多项式变异参数),pmut_r(实数编码的变异概率),pmut_b(二进制编码的变异概率)
6.实验的最大种群数为500,最大染色体长度为300,最大变量数目为30,最大函数数目为10,pi定义为3.1415926
7.实验输出结果有三个文件:1)output.txt 包含参数设置,每代的自变量值(实数编码,二进制编码),函数值,等级和拥挤度。2)fun.txt包含最后一代输出的函数值 3)time.txt包含程序运行时间
8.本实验没有实现约束问题,得再次算法的基础上进行修改。
*/
#include
#include
#include
#include
#include 

#define square(x) ((x)*(x))
#define maxpop 500//最大种群数
#define maxchrom 300/*最大染色体长度*/
#define maxvar 30 //最大变量数目
#define maxfun 10 //最大函数数目
#define PI 3.1415926

int gener//迭代数目
    nvarnchrom//变量数目,染色体数目(二进制)
    vlen[maxvar]//储存每个变量的位的个数的数组(二进制)
    optype//交叉类型:1为单点交叉和2为均匀交叉(二进制)
    nfunc//函数数目
    nmut//变异的个数
    ncross;//交叉的次数

float seed//随机种子
      pcross//交叉概率
      pmut_bpmut_r//变异概率
      lim_b[maxvar][2]lim_r[maxvar][2]//数组中变量的限制
      di//交叉的分布指数
      dim;//变异的分布指数

static int popsize//种群数目
           chrom;//染色体总长度

double coef[maxvar];//解码使用的变量

/*个体*/
typedef struct
{
    int genes[maxchrom]//二进制染色体
        rank           //个体等级
        flag;           //等级标志
    float xreal[maxvar]//实变量的集合
          xbin[maxvar];//染色体解码之后的集合
    float fitness[maxfun]//适应度函数
          crowd;          //拥挤距离      
}individual;

/*种群*/
typedef struct
{
    int maxrank;//当前种群的最大等级
    int rankno[maxpop];//个体的等级
    individual ind[maxpop]//个体的集合
               *ind_str;
}population;

#include “input.h“        /*输入条件*/

#include “random.h“       /*随机数量的算子*/

#include “realinit.h“     /*随机初始化种群*/

#include “init.h“         /*随机初始化种群*/

#include “decode.h“       /*解码二进制串*/

#include “ranking.h“      /*产生pareto前端*/

#include “func.h“     /*函数设置*/

#include “select.h“       /*二进制锦标赛*/

#include “bincross.h“    /*二进制交叉*/

#include “uniformxr.h“    /*均匀交叉*/

#include “realcross.h“   /*实数交叉*/

#include “binmut.h“          /*二进制变异*/

#include “realmut.h“     /*实数变异*/

#include “keepaliven.h“   /*精英选择和共享机制*/

#include “report.h“       /*打印输出报告*/

population old_pop
   new_pop
   mate_pop
   *old_pop_ptr
   *new_pop_ptr
   *mate_pop_ptr;
//定义种群结构

//计算程序运行时间
clock_t st

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

     文件       9288  2019-03-22 22:13  NSGA II\nsga2 C++版\NSGA2算法源代码C++.txt

     文件        251  2019-03-22 22:18  NSGA II\nsga2 C++版\算法说明.txt

     文件       1753  2018-10-17 16:09  NSGA II\nsga2 C语言版\bincross.h

     文件        676  2018-10-17 09:52  NSGA II\nsga2 C语言版\binmut.h

     文件        853  2018-10-15 11:58  NSGA II\nsga2 C语言版\decode.h

     文件       3378  2018-10-19 20:52  NSGA II\nsga2 C语言版\func.h

     文件        512  2018-10-15 11:57  NSGA II\nsga2 C语言版\init.h

     文件       4844  2018-10-19 20:52  NSGA II\nsga2 C语言版\input.h

     文件      10579  2018-10-18 12:34  NSGA II\nsga2 C语言版\keepaliven.h

     文件      11692  2018-10-23 16:31  NSGA II\nsga2 C语言版\nsga2.cpp

     文件     199694  2018-10-19 20:48  NSGA II\nsga2 C语言版\nsga2.exe

     文件       1519  2018-10-15 11:00  NSGA II\nsga2 C语言版\random.h

     文件       4378  2018-10-15 21:25  NSGA II\nsga2 C语言版\ranking.h

     文件       3919  2018-10-17 09:29  NSGA II\nsga2 C语言版\realcross.h

     文件        370  2018-10-15 11:57  NSGA II\nsga2 C语言版\realinit.h

     文件       1650  2018-10-17 15:42  NSGA II\nsga2 C语言版\realmut.h

     文件       2826  2018-10-18 19:46  NSGA II\nsga2 C语言版\report.h

     文件       3309  2018-10-16 20:18  NSGA II\nsga2 C语言版\select.h

     文件       1383  2018-10-19 20:45  NSGA II\nsga2 C语言版\uniformxr.h

     文件        121  2019-03-22 22:01  NSGA II\nsga2 C语言版\算法说明.txt

     文件       1273  2017-05-27 17:03  NSGA II\nsga2 matlab\crowding_distance.m

     文件        970  2017-05-27 17:03  NSGA II\nsga2 matlab\evaluate_objective.m

     文件       3509  2017-05-27 17:03  NSGA II\nsga2 matlab\genetic_operator.m

     文件       5128  2017-05-27 17:03  NSGA II\nsga2 matlab\html\crowding_distance.html

     文件      10289  2017-05-27 17:03  NSGA II\nsga2 matlab\html\genetic_operator.html

     文件       4434  2017-05-27 17:03  NSGA II\nsga2 matlab\html\initialize_variables.html

     文件      11714  2017-05-27 17:03  NSGA II\nsga2 matlab\html\non_domination_sort_mod.html

     文件      13753  2017-05-27 17:03  NSGA II\nsga2 matlab\html\nsga_2.html

     文件       6346  2017-05-27 17:03  NSGA II\nsga2 matlab\html\replace_chromosome.html

     文件       6186  2017-05-27 17:03  NSGA II\nsga2 matlab\html\tournament_selection.html

............此处省略39个文件信息

评论

共有 条评论