您好,我正在尝试使用 C++ 创建遗传算法,并且尝试使用向量作为容器,问题是我不知道如何设置向量的大小,因为向量具有这样的类参数
class population
{
friend class chromosome;
private:
int population_number;
int best_index[2];
vector <chromosome *> chromosome_population;
public:
population(int numberOfPopulation);
population(int numberOfPopulation,int numberOfSynapse);
~population();
int worst_chromosome();
void mating();
void crossover(int parent_1,int parent_2);
};
这是人口类,这是染色体类
class chromosome
{
friend class population;
private:
int chromosome_id;
float fitness;
vector <gen *> gen_chromosome;
public:
chromosome();
~chromosome();
void fitness_function();
void mutation_translocation();
int get_chromosome_size();
};
如何在人口类构造函数中设置向量长度?我尝试使用 vector.pushback 和 vector.resize 但两者都会给我错误,因为参数不匹配。实际上我明白它为什么会出错但我不知道如何匹配向量推回中的参数这是我的人口构造函数
population::population(int numberOfPopulation)
{
srand (time(NULL));
population_number = numberOfPopulation;
for(int a=0;a<population_number;a++)
{
chromosome_population.push_back();
}
cout<<chromosome_population.size();
for(int i=0;i<population_number;i++)
{
chromosome_population[i]->chromosome_id = i;
int chromosome_length = rand() % 10 + 1;
for(int j=0;j<chromosome_length;j++)
{
chromosome_population[i]->gen_chromosome[j]->basa_biner = rand()%1;
chromosome_population[i]->fitness = (rand()%99)+1;
}
}
}
如果您还需要任何其他信息,您可以在评论中告诉我,我会添加您需要的信息。之前谢谢。