def upper_bound(self) -> np.ndarray: upper_bounds = [ list(benchmark.upper_bound) for benchmark in self.benchmarks ] upper_bound = list(itertools.chain(*upper_bounds)) upper_bound = np.array(upper_bound) if self.USE_SHUFFLE: upper_bound = shuffle(upper_bound, self.gene_order) return upper_bound
def lower_bound(self) -> np.ndarray: lower_bounds = [ list(benchmark.lower_bound) for benchmark in self.benchmarks ] lower_bound = list(itertools.chain(*lower_bounds)) lower_bound = np.array(lower_bound) if self.USE_SHUFFLE: lower_bound = shuffle(lower_bound, self.gene_order) return lower_bound
def random_solutions(self, population_size: int) -> List[Solution]: populations = [] for benchmark in self.benchmarks: population = benchmark.initialize_population(population_size) populations.append(population.as_ndarray) genomes = np.concatenate(populations, axis=1) if self.USE_SHUFFLE: genomes = shuffle(genomes, self.gene_order) return list(Solution(genome) for genome in genomes)
def random_solutions(self, population_size: int) -> List[Solution]: genomes = self.random_state.uniform(low=0, high=1, size=(population_size, self.genome_size)) genomes *= self.bound_range genomes += self.lower_bound if self.USE_SHUFFLE: genomes = shuffle(genomes, self.gene_order) return list(Solution(genome) for genome in genomes)
def random_solutions(self, population_size: int) -> List[Solution]: target_nodes_idx = [node.id for node in self.config.target_nodes] max_id = max(target_nodes_idx) n = len(target_nodes_idx) depots = range(max_id + 1, max_id + self.genome_size - n + 1) nodes_idx = target_nodes_idx + list(depots) genomes = [] for _ in range(population_size): genome = self.random_state.permutation(nodes_idx) genomes.append(genome) genomes = np.array(genomes) if self.USE_SHUFFLE: genomes = shuffle(genomes, self.gene_order) return list(Solution(genome) for genome in genomes)