diff --git a/Animal b/Animal new file mode 100644 index 0000000..e69de29 diff --git a/Animal.cpp b/Animal.cpp new file mode 100644 index 0000000..8b2914b --- /dev/null +++ b/Animal.cpp @@ -0,0 +1,18 @@ +#include "Animal.h" +#include +#include +using namespace std; + +Animal::Animal(float mt,int dim):mutation_rate(mt),fitness(0),dimension(dim){ + //TODO 在这里将个体的位串初始化 +} + +void Animal::variation(){ + +} + +float Animal::get_fitness(){ + +} + + diff --git a/Animal.h b/Animal.h new file mode 100644 index 0000000..9f6cc9d --- /dev/null +++ b/Animal.h @@ -0,0 +1,15 @@ +#ifndef Animal_H_ +#define Animal_H_ +class Animal{ +public: + Animal(float,int); + virtual ~Animal(); + virtual void variation(); + float get_fitness(); +private: + float mutation_rate,fitness; + int individual_code; + int dimension; + +}; +#endif \ No newline at end of file diff --git a/Zoo.h b/Zoo.h new file mode 100644 index 0000000..7153a41 --- /dev/null +++ b/Zoo.h @@ -0,0 +1,27 @@ + +/* +definition of Zoo +*/ +#ifndef ZOO_H_ +#define ZOO_H_ +#include +#include "Animal.h" +class Zoo{ +public: + Zoo(float,float,int,int,float = 0.05); + ~Zoo(); + Animal& choose(); //根据个体适应度选择个体 一次选出一只 + void exchange(Animal&, Animal&); //交换两个个体的基因 + float get_fitness(); //计算整个种群的适应度 + void add_animal(Animal&); + std::vector get_animals(); + void set_zoo_size(int); + int get_zoo_size(); +private: + std::vector animals; + int zoo_size; //种群数量 + float mutation_rate; //变异率 + int animal_dimension; //动物的维度 + float bound_low,bound_up;//搜索域 +}; +#endif \ No newline at end of file