コード例 #1
0
    def build_random_brunches(len, first_number=1, second_number=2):
        drop_len_func = lambda len: int(len/4)
        brunch_prob = 0.5
        brunch_list = list()

        for k in range(len-1):
            SystemBuilder.scheme.add_edge(first_number, second_number, weight=1)
            SystemBuilder.scheme[first_number][second_number][SystemBuilder.ATTRIBUTE_TIME_IN_WAY] = RandomFunctions.time_distance_func()
            if random() < brunch_prob:
                brunch_list.append(first_number)
            first_number = second_number
            second_number += 1

        try:
            if SystemBuilder.build_random_brunches.max < second_number:
                SystemBuilder.build_random_brunches.max = second_number
        except AttributeError:
            SystemBuilder.build_random_brunches.max = second_number

        for number in brunch_list:
            SystemBuilder.build_random_brunches(
                drop_len_func(len), first_number=number, second_number=SystemBuilder.build_random_brunches.max)

        attr_name = SystemBuilder.ATTRIBUTE_GROWTH_LIST
        nx.set_node_attributes(SystemBuilder.scheme, attr_name, None)
        for num in SystemBuilder.scheme.nodes():
            SystemBuilder.scheme.node[num][attr_name] = list()