my @parents = @population[40 .. 49];
shuffle @parents;
my @children;
push @children, crossover( pop @parents, pop @parents )
while @parents;
@population[0 .. 4] = map { mutate($_) } @children;
####
sub mutate{
my @string = @{$_[0]};
for my $i (0.. $#string){
my $aref = $string[$i];
#print "\n";
if (rand() < $mutation_rate){
my $position1 = int(rand($#{$aref}));
my $position2 = int(rand($#{$aref}));
if ($position1 ne $position2){
my $temp = $string[$i][$position1];
$string[$i][$position1] = $string[$i][$position2];
$string[$i][$position2] = $temp;
}
}
}
return \@string;
}
####
my $temp = $string[$i][$position1];
$string[$i][$position1] = $string[$i][$position2];
$string[$i][$position2] = $temp;