예제 #1
0
 def iterated_neighborhood(self, graph):
     """iterated_neighborhood."""
     n = self.n_neigh_steps
     if n == 1:
         return pipe(graph, self.neighborhood, self._random_sample)
     else:
         return last(islice(iterate(self.set_neighborhood, [graph]), n + 1))
예제 #2
0
 def optimize(self, reference_graphs):
     """Optimize iteratively."""
     assert (self.grammar.is_fit())
     assert (self.multiobj_est.is_fit())
     seed_graph = self._init_pareto(reference_graphs)
     # iterate
     last(islice(iterate(self._update_pareto_set, seed_graph), self.n_iter))
     graphs = self.pareto_set
     return self._rank(graphs)
예제 #3
0
 def sample(self, reference_graphs):
     """Optimize iteratively."""
     # setup
     #iteration_step_ = curry(self._iteration_step)(
     #    self.grammar, self.cost_estimator, self.max_neighborhood_order)
     iteration_step_ = lambda x: self._iteration_step(
         self.grammar, self.cost_estimator, self.max_neighborhood_order, x)
     state_dict = dict()
     state_dict['visited'] = set()
     n_neigh_steps = 1
     start_graphs = self.grammar.set_neighborhood(reference_graphs)
     costs = self.cost_estimator.compute(start_graphs)
     state_dict['pareto_set'] = get_pareto_set(start_graphs, costs)
     seed_graph = random.choice(state_dict['pareto_set'])
     arg = (seed_graph, state_dict, n_neigh_steps)
     # iterate
     arg = last(islice(iterate(iteration_step_, arg), self.max_n_iter))
     seed_graph, state_dict, n_neigh_steps = arg
     pareto_set_graphs = state_dict['pareto_set']
     return pareto_set_graphs
예제 #4
0
def test_iterate():
    assert list(itertools.islice(iterate(inc, 0), 0, 5)) == [0, 1, 2, 3, 4]
    assert list(take(4, iterate(double, 1))) == [1, 2, 4, 8]
예제 #5
0
def compute_fuel_mass(mass):
    return sum(
        drop(
            1,
            takewhile(lambda x: x > 0, iterate(lambda m: floor(m / 3) - 2,
                                               mass))))
예제 #6
0
def gap_fill_ref(original_ref, new_ref, pileup_positions, offs, off_pos, off):
    raw_missings =  set(xrange(1, len(original_ref)+1)) - set(pileup_positions)
    missings = reduce(drop_gaps_because_insertion_offsets, izip(offs, off_pos), raw_missings)
    gap_filled = reduce(insert_gap, imap(lambda x: x - 1, missings),  new_ref)
    return nth(off, iterate(lambda s: s[:-1] if s[-1] == '-' else s, gap_filled))
예제 #7
0
def generate_map_data(problem, x0, t, params):
    f = problem(params)
    x = take(iterate(f, x0), t + 1)
    x = np.array(x)
    return x[:-1], x[1:]