This is the Readme file for NSGA-II code.

About the Algorithm
--------------------------------------------------------------------------
NSGA-II: Non-dominated Sorting Genetic Algorithm - II

Please refer to the following paper for details about the algorithm:

Authors: Dr. Kalyanmoy Deb, Sameer Agrawal, Amrit Pratap, T Meyarivan
Paper Title: A Fast and Elitist multi-objective Genetic Algorithm: NSGA-II
Journal: IEEE Transactions on Evolutionary Computation (IEEE-TEC)
Year: 2002
Volume: 6
Number: 2
Pages: 182-197
---------------------------------------------------------------------------

How to compile and run the program
---------------------------------------------------------------------------
Makefile has been provided for compiling the program on linux (and unix-like)
systems. Edit the Makefile to suit your need. By default, provided Makefile
attempts to compile and link all the existing source files into one single
executable.

Name of the executable produced is: nsga2r

To run the program type: ./nsga2r random_seed
Here random_seed is a real number in (0,1) which is used as a seed for random
number generator.
You can also store all the input data in a text file and use a redirection
operator to give the inputs to the program in a convenient way.
You may use the following syntax: ./nsga2r random_seed <inp_file.in, where
"inp_file.in" is the file that stores all the input parameters
---------------------------------------------------------------------------

About the output files
---------------------------------------------------------------------------
initial_pop.out: This file contains all the information about initial population.
final_pop.out: This file contains the data of final population.
all_pop.out: This file containts the data of populations at all generations.
best_pop.out: This file contains the best solutions obtained at the end of simulation run.
params.out: This file contains the information about input parameters as read by the program.
---------------------------------------------------------------------------

About the input parameters
---------------------------------------------------------------------------
popsize: This variable stores the population size (a multiple of 4)
ngen: Number of generations
nobj: Number of objectives
ncon: Number of constraints
nreal: Number of real variables
min_realvar[i]: minimum value of i^{th} real variable
max_realvar[i]: maximum value of i^{th} real variable
pcross_real: probability of crossover of real variable
pmut_real: probability of mutation of real variable
eta_c: distribution index for real variable SBX crossover
eta_m: distribution index for real variable polynomial mutation
nbin: number of binary variables
nbits[i]: number of bits for i^{th} binary variable
min_binvar[i]: minimum value of i^{th} binary variable
max_binvar[i]: maximum value of i^{th} binary variable
pcross_bin: probability of crossover for binary variable
pmut_bin: probability of mutation for binary variable
---------------------------------------------------------------------------

Defining the Test Problem
---------------------------------------------------------------------------
Edit the source file problemdef.c to define your test problem. Some sample
problems (24 test problems from Dr. Deb's book - Multi-Objective Optimization
using Evolutionary Algorithms) have been provided as examples to guide you
define your own objective and constraint functions. You can also link other
source files with the code depending on your need.
Following points are to be kept in mind while writing objective and constraint
functions.
1. The code has been written for minimization of objectives (min f_i). If you want to
maximize a function, you may use negetive of the function value as the objective value.
2. A solution is said to be feasible if it does not violate any of the constraints.
Constraint functions should evaluate to a quantity greater than or equal to zero
(g_j >= 0), if the solution has to be feasible. A negetive value of constraint means,
it is being violated.
3. If there are more than one constraints, it is advisable (though not mandatory)
to normalize the constraint values by either reformulating them or dividing them
by a positive non-zero constant.
---------------------------------------------------------------------------

About the files
---------------------------------------------------------------------------
global.h: Header file containing declaration of global variables and functions
rand.h: Header file containing declaration of variables and functions for random
number generator
allocate.c: Memory allocation and deallocation routines
auxiliary.c: auxiliary routines (not part of the algorithm)
crossover.c: Routines for real and binary crossover
crowddist.c: Crowding distance assignment routines
decode.c: Routine to decode binary variables
dominance.c: Routine to perofrm non-domination checking
eval.c: Routine to evaluate constraint violation
fillnds.c: Non-dominated sorting based selection
initialize.c: Routine to perform random initialization to population members
list.c: A custom doubly linked list implementation
merge.c: Routine to merge two population into one larger population
mutation.c: Routines for real and binary mutation
nsga2r.c: Implementation of main function and the NSGA-II framework
problemdef.c: Test problem definitions
rand.c: Random number generator related routines
rank.c: Rank assignment routines
report.c: Routine to write the population information in a file
sort.c: Randomized quick sort implementation
tourselect.c: Tournament selection routine
---------------------------------------------------------------------------

Please feel free to send questions/comments/doubts/suggestions/bugs
etc. to deb@iitk.ac.in

Dr. Kalyanmoy Deb
25th March 2005
http://www.iitk.ac.in/kangal/
---------------------------------------------------------------------------

多目标遗传算法 ------ NSGA-II (部分源码解析)README 算法的部分英文解释的更多相关文章

  1. 多目标遗传算法 ------ NSGA-II (部分源码解析)介绍

    NSGA(非支配排序遗传算法).NSGA-II(带精英策略的快速非支配排序遗传算法),都是基于遗传算法的多目标优化算法,是基于pareto最优解讨论的多目标优化. 在官网: http://www.ii ...

  2. 多目标遗传算法 ------ NSGA-II (部分源码解析) 交叉操作 crossover.c

    遗传算法中的交叉操作是 对NSGA-II  源码分析的  最后一部分, 这一部分也是我 从读该算法源代码和看该算法论文理解偏差最大的  函数模块. 这里,首先提一下,遗传算法的  交叉操作.变异操作都 ...

  3. 多目标遗传算法 ------ NSGA-II (部分源码解析)目标函数 problemdef.c

    /* Test problem definitions */ # include <stdio.h> # include <stdlib.h> # include <ma ...

  4. 多目标遗传算法 ------ NSGA-II (部分源码解析)状态报告 打印 report.c

    /* Routines for storing population data into files */ # include <stdio.h> # include <stdlib ...

  5. 多目标遗传算法 ------ NSGA-II (部分源码解析) 拥挤距离计算 crowddist.c

    /* Crowding distance computation routines */ # include <stdio.h> # include <stdlib.h> # ...

  6. 多目标遗传算法 ------ NSGA-II (部分源码解析) 实数、二进制编码的变异操作 mutation.c

    遗传算法的变异操作 /* Mutation routines */ # include <stdio.h> # include <stdlib.h> # include < ...

  7. 多目标遗传算法 ------ NSGA-II (部分源码解析)两个个体支配判断 dominance.c

    /* Domination checking routines */ # include <stdio.h> # include <stdlib.h> # include &l ...

  8. 多目标遗传算法 ------ NSGA-II (部分源码解析)二元锦标赛选择 tourselect.c

    tourselect.c  文件中共有两个函数: selection (population *old_pop, population *new_pop) individual* tournament ...

  9. 多目标遗传算法 ------ NSGA-II (部分源码解析) 临时种群生成新父代种群 fillnds.c

    /* Nond-domination based selection routines */ # include <stdio.h> # include <stdlib.h> ...

随机推荐

  1. 《Mathematical Olympiad——数论》——整除

    数论这个东西吧,虽说也是高中IMOer玩的数学游戏,颇具美学性的证明比较多.就目前所知,它在算法里是一些加密技术的基础,不多言,开始具体题目的分析. 问题一:已知数列{an},且a0 = 2 , a1 ...

  2. python 解析xml 文件: Element Tree 方式

    环境 python:3.4.4 准备xml文件 首先新建一个xml文件,countries.xml.内容是在python官网上看到的. <?xml version="1.0" ...

  3. 缓存淘汰算法 (http://flychao88.iteye.com/blog/1977653)

    1. LRU1.1. 原理 LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”. ...

  4. WinForm自定义验证控件

    本文转载:http://blog.csdn.net/ziyouli/article/details/7583824 此篇博文不错:http://blog.csdn.net/sony0732/artic ...

  5. Effect of Switchovers, Failovers, and Control File Creation on Backups

    对dataguard 官方文档里面的这句话不理解,是否能给出一个样例说明: 10.2.0.5的版本号 Effect of Switchovers, Failovers, and Control Fil ...

  6. lvchange的available參数

    available參数在man info help中均无此參数,事实上參数为:activate 写此此.值得用的人注意. available 參数实为:  -a, --activate [a|e|l] ...

  7. SmartFoxServer 2x的pythonclient

    最近的研究SmartFoxServer 2x.这是一个对网络游戏的Web开发框架.服务器基于java netty为发展框架,client支持flash,unity, ios, android(java ...

  8. 多版本号并发控制(MVCC)在分布式系统中的应用

    QQ群:289150599 问题 近期项目中遇到了一个分布式系统的并发控制问题.该问题能够抽象为:某分布式系统由一个数据中心D和若干业务处理中心L1,L2 ... Ln组成:D本质上是一个key-va ...

  9. ld: 18 duplicate symbols for architecture i386 .linker command failed with exit code 1 (use -v to see invocation)_

    昨天被linker这个错误卡了一个小时!!!各种办法都试了 是导入第三方的问题 .. 网上说 要把所有的.m文件导入  但是我下载的微博SDK根本不关事..后来 大概知道是导入了多个相同的文件... ...

  10. Linux 下Mysql自动备份脚本

    backdb.sh 文件 #!/bin/bash USER="root" PASSWORD="888888" DATABASE="mydb" ...