def _gset_tail_settings(self): """Compute settings relevant to tail selection """ tails_to_anal = [] if self.anal_right: tails_to_anal.append(Tail.right) if self.anal_left: tails_to_anal.append(Tail.left) self.tails_to_anal = tuple(tails_to_anal) if bool(self.tails_to_anal): self.analyze_tails = True nd = NormalDist() self.alpha_qntl = nd.inv_cdf(1 - len(self.tails_to_anal) / 2 * self.alpha_signif) else: self.analyze_tails = False self._enforce_null_tail_analysis_opts()
def one_one(low, high, n, p, f, it, fit): dec = round(mt.pow(1.5, -0.25), 15) np.set_printoptions(precision=p) #initialization values = np.random.uniform(low, high, n) sigma = 0.2 print("Init population") print(values, sigma, '\n') #first aptitude ap = f(values) print("Aptitude of the population") print(values, sigma, ap, '\n') ii = 1 it += 1 while (ii < it): print("*****Iteration ", ii, "*****") print(values, sigma, ap) al_g = np.zeros((n, )) N = NormalDist(0, sigma) for i in range(0, n): al = rdm.uniform(0, 1) al_g[i] = N.inv_cdf(al) print_al(i + 1, al, al_g[i]) new_values = np.copy(values) for i in range(0, n): new_values[i] += al_g[i] if f(new_values) <= f(values): values = np.copy(new_values) sigma *= 1.5 else: sigma *= dec sigma = round(sigma, 30) print(values, sigma, f(values), '\n') ii += 1
def mu_lam(low, high, n, mu, lam, p, f, it, fit): dec = round(mt.pow(1.5, -0.25), 15) det = round(mt.sqrt(2 * mt.sqrt(n)), 15) np.set_printoptions(precision=p) #initialization values = np.random.uniform(low, high, (mu, n)) sigma = np.full((mu, n), 0.2) print("Init population") print_po(values, sigma, mu) #first aptitude ap = calc(values, f, mu) print("Aptitude of the population") print_ap(values, sigma, ap, mu) ii = 1 it += 1 while (ii < it): values_n = np.zeros((lam, n)) sigma_n = np.zeros((lam, n)) f_n = np.zeros((lam, 1)) print("*****Iteration ", ii, "*****") for i in range(0, lam): #Select the parents print("Descendent N", i + 1) print("Cross") mu_ = mu - 1 indx1 = rdm.randint(0, mu_) indx2 = rdm.randint(0, mu_) if f(values[indx1]) < f(values[indx2]): p1 = indx1 else: p1 = indx2 print(indx1, '-', indx2, ' => ', p1, ' => ', values[p1], sigma[p1]) indx1 = rdm.randint(0, mu_) indx2 = rdm.randint(0, mu_) if f(values[indx1]) < f(values[indx2]): p2 = indx1 else: p2 = indx2 print(indx1, '-', indx2, ' => ', p2, ' => ', values[p2], sigma[p2]) child = np.zeros(n) sigma_ = np.zeros(n) for j in range(0, n): child[j] = np.mean([values[p1][j], values[p2][j]]) sigma_[j] = mt.sqrt(sigma[p1][j] * sigma[p2][j]) al_g = np.zeros(n) N1 = NormalDist(0, det) print("Mutation") for j in range(0, n): al = rdm.uniform(0, 1) sigma_[j] *= mt.exp(N1.inv_cdf(al)) N2 = NormalDist(0, sigma_[j]) al = rdm.uniform(0, 1) child[j] += N2.inv_cdf(al) print(child, sigma_, '\n') values_n[i] = child sigma_n[i] = sigma_ f_n[i] = f(child) print("Aptitude of the all population") print_ap(values, sigma, ap, mu) L = np.hstack([values_n, sigma_n, f_n.reshape(1, lam).T]) L = L[L[:, 2 * n].argsort(axis=0)] L = np.delete(L, slice(mu, lam), axis=0) values = np.copy(L[:, [0, n - 1]]) sigma = np.copy(L[:, [n, (2 * n) - 1]]) ap = calc(values, f, mu) print("Aptitude of the new population") print_ap(values, sigma, ap, mu) #print(values,sigma,f(values),'\n') ii += 1