Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def binary_to_float(self, chromosome):
- float_representation = []
- dg = self.range[0]
- gg = self.range[1]
- for binary in chromosome:
- b = 0
- for i in range(self.numOfBits):
- b += binary[i] * math.pow(2,i)
- x = dg + (float) (b / (math.pow(2 ,self.numOfBits) - 1))*(gg-dg)
- float_representation.append(x)
- return np.array(float_representation)
- def binary_crossover(self,p1, p2):
- new = []
- for a,b in zip(p1,p2):
- r = np.random.randint(2, size=self.numOfBits)
- x = np.bitwise_or(np.bitwise_and(a,b), np.bitwise_and(r,np.bitwise_xor(a,b)))
- new.append(x)
- return new
- def binary_mutation(self, chromosome):
- mutated = []
- for bin_vec in chromosome:
- mutated_bin_vec = len(bin_vec) * [0]
- for i in range(len(bin_vec)):
- if random.random() < self.p:
- mutated_bin_vec[i] = 1 if bin_vec[i] == 0 else 0
- else:
- mutated_bin_vec[i] = bin_vec[i]
- mutated.append(np.array(mutated_bin_vec))
- return mutated
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement