From cb3050889e4eb67970a253cea500062035cc7f83 Mon Sep 17 00:00:00 2001 From: AngryCracker Date: Tue, 30 Jan 2018 21:13:23 +0530 Subject: [PATCH] added function to implement uniform crossover --- search.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/search.py b/search.py index 726001dd1..1e32d5b8c 100644 --- a/search.py +++ b/search.py @@ -860,6 +860,19 @@ def recombine(x, y): return x[:c] + y[c:] +def recombine_uniform(x, y): + n = len(x) + result = [0] * n; + indexes = random.sample(range(n), n) + for i in range(n): + ix = indexes[i] + result[ix] = x[ix] if i < n / 2 else y[ix] + try: + return ''.join(result) + except: + return result + + def mutate(x, gene_pool, pmut): if random.uniform(0, 1) >= pmut: return x