message (1)
message (1)
% Crossover Process
num_parents = size(selected_parents, 1);
if num_parents >= 2
new_offspring = zeros(num_parents, size(selected_parents, 2));
for i = 1:num_parents
parent1 = selected_parents(i, :);
parent2 = selected_parents(mod(i, num_parents) + 1, :);
offspring1 = [parent1(1), parent2(2), parent2(3)];
offspring2 = [parent2(1), parent1(2), parent1(3)];
new_offspring(i, :) = offspring1;
if i < num_parents
new_offspring(i + 1, :) = offspring2;
else
new_offspring(1, :) = offspring2;
end
end
for i = 1:num_parents
if i <= length(parent_indices)
new_population(parent_indices(i), :) = new_offspring(i, :);
end
end
end
% Mutation Process
[num_rows, num_cols] = size(new_population);
for i = 1:length(mutated_tiles)
tile_idx = mutated_tiles(i);
row = floor((tile_idx - 1) / num_cols) + 1;
col = mod(tile_idx - 1, num_cols) + 1;
if row <= num_rows && col <= num_cols
new_population(row, col) = mutated_values(i);
end
end