Ошибка команды компоновщика Xcode

Моя задача — кодировать генетический алгоритм, используя класс GenAlg.
У меня есть эта ошибка (скриншот), и я не могу понять, что делать …
Я думаю, что проблема где-то в fitness_sort_ind функция.
Работает хорошо, тогда все в main (). Но я хотел бы использовать класс.

GenAlg.cpp

GenAlg::individ fitness_sort_ind(GenAlg::individ a, GenAlg::individ b)
{
if (a.fitness < b.fitness)
return a;
else return b;
}

GenAlg.hpp

class GenAlg
{
private:
int a;
int b;
int N;
int p;
public:
GenAlg();
double target(double x);     // функция
struct individ;
typedef vector<individ> ind_vector;     // вектор популяции
void transToBinary(individ &temp);     // перевод в двоичную СС
void transToDec(individ &temp);     // перевод в десятичную СС
void get_fitness(individ &temp);     // пригодность особи
void get_fitness_vec(ind_vector &temp);     // пригодность каждой особи вектора
individ fitness_sort_ind(individ a, individ b);     // выбор лучшей из двух особей
void print(ind_vector &temp);     // вывод вектора
void print_best(ind_vector &temp,double &best_fitness,int &best_point,int &count);     // вывод лучшей на данной момент особи
void init_population(ind_vector &pop);     // создание популяции
void mutation(individ &temp);     // мутация
void mutation_vect(ind_vector &temp);     // мутация всей популяции
void cross(individ &a, individ &b, ind_vector &buff);     // кроссинговер
void reproduction(ind_vector &population, ind_vector &buff);     // скрещивание
~GenAlg();
};

struct GenAlg::individ
{
int X;     // значение
int D[8] = { 0,0,0,0,0,0,0,0 };     // 8 бит для работы с двоичной СС
double fitness;     // пригодность
};

main.cpp

#include "GenAlg.hpp"#include "GenAlg.cpp"
int main()
{
GenAlg obj;
srand(unsigned(time(NULL)));

GenAlg::ind_vector vec, buff;
int count = 0;

int best_point;
double best_fitness;

obj.init_population(vec);
best_fitness = vec[0].fitness;
best_point = vec[0].X;
obj.print(vec);

for (int i = 0; i < 5000; i++) {
count++;
obj.reproduction(vec, buff);
obj.print_best(vec, best_fitness, best_point, count);
if (count > 30) {
cout << "STOP!\n";
break;
}
}
}

Вот скриншот:

СКРИНШОТ

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]