package
Evo::GA::BitGenome;
### genome with 0 or 1 genes
sub
new {
my
(
$class
) =
@_
;
my
$self
=
$class
->SUPER::new;
}
sub
mutate {
my
(
$self
,
$idx
) =
@_
;
if
(
$self
->{genes}[
$idx
] == 0) {
$self
->{genes}[
$idx
] = 1;
}
else
{
$self
->{genes}[
$idx
] = 0;
}
}
sub
crossover {
my
(
$self
,
$idx1
,
$idx2
,
$genome
) =
@_
;
for
(
my
$i
=
$idx1
;
$i
<
$idx2
;
$i
++) {
$self
->{genes}[
$i
] =
$genome
->{genes}[
$i
] |
$self
->{genes}[
$i
];
}
}
1;