diff --git a/src/main.odin b/src/main.odin index 0d551a1..cfb579d 100644 --- a/src/main.odin +++ b/src/main.odin @@ -181,6 +181,17 @@ bit_flip_mutation :: proc(chrom: ^Chromosome, mutation_rate: f32 = 0.01) { } } +swap_mutation :: proc(chrom: ^Chromosome) { + idx1 := rand.int_max(NUMBER_OF_ITEMS) + idx2 := rand.int_max(NUMBER_OF_ITEMS) + + bit1 := bit_array.get(chrom, idx1) + bit2 := bit_array.get(chrom, idx2) + + bit_array.set(chrom, idx1, bit2) + bit_array.set(chrom, idx2, bit1) +} + main :: proc() { items, ok := read_data(DATA_FILE) if !ok {