예제 #1
0
def average_n_runs(simulation, n, generations):
    simulation['stop'].update({'fitness': None, 'generation': generations})
    datasets = [run_simulation(simulation, log=False) for _ in range(n)]

    sum_dataset = {
        'average_fitnesses': [0 for _ in range(generations)],
        'sigmas': [0 for _ in range(generations)],
        'best_fitnesses': [0 for _ in range(generations)]
    }

    for i in range(generations):
        for dataset in datasets:
            for key in sum_dataset.keys():
                sum_dataset[key][i] += dataset[key][i]

    avg_func = lambda x: float(x) / n

    avg_dataset = {
        'generation_number': generations,
        'simulation': simulation,
        'average_fitnesses': list(map(avg_func, sum_dataset['average_fitnesses'])),
        'sigmas': list(map(avg_func, sum_dataset['sigmas'])),
        'best_fitnesses': list(map(avg_func, sum_dataset['best_fitnesses']))
    }

    return avg_dataset
예제 #2
0
def average_n_runs(simulation, n, generations):
    simulation['stop'].update({'fitness': None, 'generation': generations})
    datasets = [run_simulation(simulation, log=False) for _ in range(n)]

    sum_dataset = {
        'average_fitnesses': [0 for _ in range(generations)],
        'sigmas': [0 for _ in range(generations)],
        'best_fitnesses': [0 for _ in range(generations)]
    }

    for i in range(generations):
        for dataset in datasets:
            for key in sum_dataset.keys():
                sum_dataset[key][i] += dataset[key][i]

    avg_func = lambda x: float(x) / n

    avg_dataset = {
        'generation_number': generations,
        'simulation': simulation,
        'average_fitnesses':
        list(map(avg_func, sum_dataset['average_fitnesses'])),
        'sigmas': list(map(avg_func, sum_dataset['sigmas'])),
        'best_fitnesses': list(map(avg_func, sum_dataset['best_fitnesses']))
    }

    return avg_dataset
예제 #3
0
def simulate_n_times(simulation, n):
    results = [run_simulation(simulation, log=False) for _ in range(n)]

    print(simulation['problem_parameters']['population_size'],
          sum(r['generation_number'] < 100 for r in results))

    return {
        'data': list((r['generation_number'] for r in results)),
        'label': simulation['problem_parameters']['population_size']
    }
예제 #4
0
파일: N_times.py 프로젝트: babingto/IT3708
def simulate_n_times(simulation, n):
    results = [run_simulation(simulation, log=False) for _ in range(n)]

    print(
        simulation['problem_parameters']['population_size'],
        sum(r['generation_number'] < 100 for r in results)
    )

    return {
        'data': list((r['generation_number'] for r in results)),
        'label': simulation['problem_parameters']['population_size']
    }
예제 #5
0
파일: demo.py 프로젝트: mathiasose/IT3708
    },
    'adult_selection_method': over_production,
    'mate_selection_method': sigma_scaled,
    'crossover_method': splice,
    'crossover_rate': 0.9,
    'mutation_method': mutate_string_genome,
    'mutation_rate': 0.01,
    'stop': {
        'fitness': 1.0,
        'generation': 1000
    },
}

STOP_GENERATION = 1000
while True:
    L = max(int(1.1 * L), L + 1)
    simulation['problem_parameters'].update({'genome_size': L})
    r = run_simulation(simulation, log=False)
    if r['generation_number'] < STOP_GENERATION:
        best = "found in {} generations".format(r['generation_number'])
        best += '\n'
        best += str(
            surprising_sequences.phenotype_representation(
                r['final_best_individual']['phenotype'],
                char_set_size=S,
                genome_size=L))
        best += '\n'
        print(best)
    else:
        break
예제 #6
0
파일: table.py 프로젝트: babingto/IT3708
}

S = 37
LOCAL = False
print('LOCAL={}'.format(LOCAL))
print("S={}".format(S))

L = 84
stops = 0
while True:
    s['problem_parameters'].update({
        'char_set_size': S,
        'genome_size': L,
        'local': LOCAL
    })
    r = run_simulation(s, log=False)
    if r['generation_number'] < 1000:
        print(r['generation_number'], '\t', surprising_sequences.phenotype_representation(
            r['final_best_individual']['phenotype'],
            char_set_size=S,
            genome_size=L)
        )
        L = max(int(L * 1.1), L + 1)
        # L += 1
        stops = 0
    else:
        stops += 1
        print('1000 stop')
        if stops == 3:
            break
예제 #7
0
    'adult_selection_method': full_generational_replacement,

    'mate_selection_method': ranked,

    'crossover_method': splice,
    'crossover_rate': 0.25,

    'mutation_method': mutate_string_genome,
    'mutation_rate': 0.01,

    'stop': {
        'fitness': 1.0,
        'generation': None
    },

    'plot_sigmas': False
}

SIMULATIONS = [
    ONE_MAX,
    LOLZ,
    LOCALLY_SURPRISING,
    GLOBALLY_SURPRISING
]

if __name__ == "__main__":
    for simulation in SIMULATIONS:
        results = run_simulation(simulation)
        plot_simulation_results(results)