Example #1
0
    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
Example #2
0
    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
Example #3
0
    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)
Example #4
0
    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)
Example #5
0
    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)