def task1():

    functions = ['rastrigin', 'rosenbrock', 'eggholder', 'ackley']
    topologies = ['ring', 'star']

    print('task1:')
    total_time = time.time()

    for F, T in itertools.product(functions, topologies):
        print(F, T, 'time: ', end='')
        t = time.time()
        pso = PSO(function=F, topology=T, seed=19520624)
        pso.optimize()
        pso.print_log()
        print(time.time() - t)

    print('Total time: ', time.time() - total_time)
def _task2(F, T, N):
    a = np.zeros((10, ))

    for i in range(10):
        t = time.time()
        pso = PSO(num_var=10,
                  population_size=N,
                  max_generation=10**9 + 7,
                  function=F,
                  topology=T,
                  seed=19520624 + i)
        fitness = pso.optimize()[1]
        pso.print_log()
        del pso
        gc.collect()
        a[i] = fitness
        print('\t', i, F, T, N, 'time: ', time.time() - t)

    return (F, T, N), np.mean(a), np.std(a)