childPopulace = []

    for j in range(1, len(rankedFronts) + 1):
        singularFront = []
        singularFront = rankedFronts[j]

        usableSpace = config.populationSize - len(childPopulace)

        if singularFront != [] and usableSpace > 0:
            if usableSpace >= len(singularFront):
                for chromosome in singularFront:
                    childPopulace.append(chromosome)
            else:
                latestFront = []
                latestFront = service.crowd_comparison_sort(
                    service.crowding_distance_assignment(singularFront))

                for k in range(0, usableSpace):
                    childPopulace.append(latestFront[k].chromosome)
        else:
            break
    nextChildPopulation.populace = childPopulace

    if i < config.generations:
        parent = child
        child = synthesis.create_child_population(nextChildPopulation)

end_time = time()
m = (end_time - start_time) // 60
s = (end_time - start_time) % 60
print('took {} minutes {} seconds'.format(m, s))