I need to refactor all my code; there are many bugs in it
 bug in the crowded_compare_to function fixed
 and more comments are added to the file.
a code is written for testing dominatation relation which is in the
MOP abstract class
Here i found out that i need to implement a copy constructor for chromosome class

a file logger function is added to the NSGA2 class

Signed-off-by: Shahab Abbasi Rad <darkoob12@gmail.com>
in this version of source files the problem of copying an object is solved
and i need to check results next.

Signed-off-by: Shahab Abbasi Rad <darkoob12@gmail.com>
a memory leak in deep_copy() function is fixed.
This is version 2.0 of class DTLZ1
this version is coded exactly the same is original paper.
there are some bugs ,
the class would not work corectly when dimension of decision variable is equal to or less than dimension of objective space.
functions from last version is not deleted yet.

Signed-off-by: Shahab Abbasi Rad <darkoob12@gmail.com>
in this commit i added an abstract base class for collection of problems
Named ZDT* and created appropriate implementation for ZDT1.


some commnets are added to DTLZ function.
a bug fixed in the zdt1 fitness function.
adding a matrix for saving known true pareto optimal solutions to the
problem class and count of such solutions

a static function is added to the ustility class for calculating
euclidean distance between two real vectors

a variable is added for counting number of fitness evaluations and some
that was written for debugging the fast_nondominated_sort function is
omitted.

number of non-dominated solutions after termination of the algorithm in the
last population is calculated and printed to the console.

Signed-off-by: Shahab Abbasi Rad <darkoob12@gmail.com>
after termination of the algorithm gamma measure is calculated and printed
to the console.

a function for calculating gamma measure is added to the base MOProblem
class.

clalculation of non-dominated solutions in the last generation is moved
to a seprate function wich is called just before termination of the main
loop.
a seprate function, reset_dom_count is added for calculating domination
count for each member of the population.


refactoring initialization to be more efficient.
domination relation works fine.
integerated the domination relation in the chromosome class

tournament selection works fine and i need to check other mating parts
simulated binary cross over tested
A bug in the variation operators is found and partially fixed.
solutions with out-of-bound values where generated using mutation and crossover.

distribution index for SBX and polynomial mutation is added to the base class as two member
variables.

in ZDT1 instead of summing the elements we are now using their average.
debuging code added to the compute_gamma funtion where i found that in some
cases all the solutions are on the real pareto optimal front;

and all of them are the same;
the code prints the number of non-dominated solutions and number of real
pareto optimal solutions to the console and if a zero error occurs prints
the whole non-dominated solutions

in some of the situations diversity of the population becomes zero.

Signed-off-by: Shahab Abbasi Rad <darkoob12@gmail.com>
some code added for checking influence of the crowded_compare operator

min and max value is considered in computing the crowding distance of
solutions in a set.

Signed-off-by: Shahab Abbasi Rad <darkoob12@gmail.com>
non-domination rank and crowding distance is added for the random initial
population

calculation of crowding distance for last front was missing so i added that

after that last front the loop for filling the next population will break

default maximum number of generations is changed from 500 to 250

a function is added for running an algorithm multiple times.

Signed-off-by: Shahab Abbasi Rad <darkoob12@gmail.com>
A set for saving vectors with no duplicates, actually this code is written
to count number of different solutions in the last population

cmp_vector: a vector for comparing to vector is added to utility class too

num_diff_chrom - this function count the number of different chromosomes in
the current population

compare_gense- compare a given chromosome's genes to the current objects
compare_fitness - compares the given chromosome's genes to ....


Signed-off-by: Shahab Abbasi Rad <darkoob12@gmail.com>