Как я могу решить эту проблему генетического алгоритма (GA)? [Репост]
Привет :) У меня есть домашнее задание по генетическому алгоритму. Я создал массив 20x20 из 0 и 1 и подсчитал, сколько 1 в строке. После этой стадии я не мог прогрессировать. Пожалуйста, помогите мне:)
Я хочу выбрать два случайных ряда и сравнить их. После этого этапа будет выбрано то, что имеет больше 1. Я хочу, чтобы этот шаг повторился дважды.
После этого шага я хочу пересечь две хромосомы и получить новую хромосому.
Это мой код.;
#include <stdio.h> #include <stdlib.h> #include <time.h> #define SIZE 20 int main() { int a[SIZE]; int i, j, x; int counter; srand(time(NULL)); for(x=0; x<SIZE; ++x){ // run code 20 times printf("\n"); for (j = 0; j < SIZE; ++j) { a[j] = rand() % 2;//Random 0 and 1 printf("%2d", a[j]); } printf("\n"); for (i = 0; i < SIZE; ++i) { counter = 0;//Counter is reset in every cycle for (j = 0; j < SIZE; ++j) if (a[j] == 1) ++counter;//Counter increases one's value for every 1 he sees } printf("ChromozomeHaveOnes = %d", counter); printf("\n"); } return 0; }
Что я уже пробовал:
Я попробовал некоторые коды генетического алгоритма, но я не могу решить его. Я хочу выбрать два случайных ряда и сравнить их. После этого этапа будет выбрано то, что имеет больше 1. Я хочу, чтобы этот шаг повторился дважды.
После этого шага я хочу пересечь две хромосомы и получить новую хромосому.