コード例 #1
0
def reproduce(order1, order2, constraints):
    """
    Returns a new organism with mutation
    For asexual, pass None for order2
    Constraints - a frozen set of tuples representing guidelines (UNIT, COUNT)
    """
    if order2 == None:
        child = Order(events_list = copy.deepcopy(order1.events), race = order1.race, calc = False)
        mutate(child, constraints)
    else:
        while True:
            events_list = []
            for index in xrange(max(len(order1.events),len(order2.events))):
                options = []
                if index < len(order1.events):
                    options.append(order1.events[index])
                if index < len(order2.events):
                    options.append(order2.events[index])
                events_list.append(random.choice(options))
            child = Order(race = order1.race,events_list = events_list)
            if child.sanity_check(): # not a monster
                break
        mutate(child,constraints)
    return child