こんにちは私は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;
}
}
}
他に必要な情報があれば、コメントで教えてください。必要な情報を追加します。前に感謝します。