def first_population(sensors, mi, d): population = [] done = False for i in range(mi): genes = [] gene_part = '' for _ in range(sensors): while True: gene_part = '' for _ in range((math.ceil(math.log2(dekoder.n())) + math.ceil(math.log2(dekoder.m())) + 2)): rand = random.randint(0, 1) gene_part += str(rand) if not done: tp = afunction.j_for_one(dekoder.decode(gene_part)[0][0], dekoder.decode(gene_part)[1][0], d) else: tp = [0, 0] if not tp[1]: break genes.append(gene_part) new_gene = '' while genes: new_gene += genes.pop() s = SJ(d) power = s.simple_J(new_gene) print(i + 1, "/", mi, " genotypes created (power: ", power, ")") if power >= 0.9: done = True population.append(new_gene) print("first population created") return population
def J_return_forbidden(x, y, alpha, dep): table = readFile.getArray() no_0 = seen_counter_for_0(table) n = dekoder.n() # szerokosc x m = dekoder.m() # szerokosc y is_forbidden = False for k in range(len(x)): # print(alpha[k]) # print(m) table = angel_change(alpha[k], table) temp_x = x[k] x[k] = change_x(alpha[k], x[k], y[k], n, m) y[k] = change_y(alpha[k], temp_x, y[k], n, m) # print(x[k]) # print(y[k]) temp = j_for_one(x[k], y[k], dep, table) table = temp[0] if temp[1]: is_forbidden = True table = angel_change_back(alpha[k], table) # print_matrix(table) if is_forbidden: return None else: return round((seen_counter(table) / no_0), 4)