Example #1
0
def mutate(ind):
    os = ind.ordering
    ordering_default_mutate({'env': Env(wf=_wf, rm=rm, estimator=estimator)},
                            os)
    child = ParticleIndividual(ind.entity)
    child.ordering = os
    return child,
Example #2
0
def run_dcga(wf, estimator, rm, heft_mapping, heft_ordering, **params):

    cxpb = params["cxpb"]  #0.9
    mutpb = params["mutpb"]  #0.9
    ngen = params["ngen"]  #100
    pop_size = params["pop_size"]  #100

    ctx = {'env': Env(wf, rm, estimator)}

    toolbox = Toolbox()
    toolbox.register("select", tools.selTournament, tournsize=2)
    toolbox.register("mate", _mate, ctx)
    toolbox.register("mutate", _mutate, ctx)
    toolbox.register(
        "evaluate", lambda x: [
            fitness_mapping_and_ordering(ctx, {
                MAPPING_SPECIE: x[0],
                ORDERING_SPECIE: x[1]
            })
        ])

    # heft_mapping = extract_mapping_from_ga_file("../../temp/heft_etalon_full_tr100_m100.json", rm)

    pop_mapping = mapping_heft_based_initialize(ctx, pop_size, heft_mapping, 3)
    pop_ordering = ordering_heft_based_initialize(ctx, pop_size, heft_ordering,
                                                  3)
    pop = [ListBasedIndividual(el) for el in zip(pop_mapping, pop_ordering)]
    for p in pop:
        p.fitness = Fitness(0)

    stat = tools.Statistics(key=lambda x: x.fitness)
    stat.register("solsstat", lambda pop: [{"best": numpy.max(pop).values[0]}])

    final_pop, logbook = deap.algorithms.eaSimple(pop, toolbox, cxpb, mutpb,
                                                  ngen, stat)
    best = max(final_pop, key=lambda x: x.fitness)
    return best.fitness.values[0], logbook
Example #3
0
def default_config(wf, rm, estimator):
    selector = lambda env, pop: tools.selTournament(pop, len(pop), 4)
    return {
        "interact_individuals_count":
        22,
        "generations":
        5,
        "env":
        Env(wf, rm, estimator),
        "species": [
            Specie(name=MAPPING_SPECIE,
                   pop_size=10,
                   cxb=0.8,
                   mb=0.5,
                   mate=lambda env, child1, child2: tools.cxOnePoint(
                       child1, child2),
                   mutate=mapping_default_mutate,
                   select=selector,
                   initialize=mapping_default_initialize),
            Specie(
                name=ORDERING_SPECIE,
                pop_size=10,
                cxb=0.8,
                mb=0.5,
                mate=ordering_default_crossover,
                mutate=ordering_default_mutate,
                select=selector,
                initialize=ordering_default_initialize,
            )
        ],
        "operators": {
            # "choose": default_choose,
            "build_solutions": default_build_solutions,
            "fitness": fitness_mapping_and_ordering,
            "assign_credits": default_assign_credits
        }
    }
Example #4
0
 def setUp(self):
     wf_name = "Montage_25"
     self.wf = WF(wf_name)
     self.env = Env(self.wf, None, None)
Example #5
0
ms_ideal_ind = heft_mapping
os_ideal_ind = heft_ordering

ms_str_repr = [{k: v} for k, v in ms_ideal_ind]

mapping_mut_reg = MutRegulator()

config = {
    "hall_of_fame_size":
    0,
    "interact_individuals_count":
    50,
    "generations":
    10,
    "env":
    Env(_wf, rm, estimator),
    "species": [
        Specie(
            name=MAPPING_SPECIE,
            pop_size=50,
            cxb=0.9,
            mb=0.9,
            mate=lambda env, child1, child2: tools.cxOnePoint(child1, child2),
            # mutate=mapping_all_mutate,
            # mutate=mapping_all_mutate_variable,
            mutate=mapping_mut_reg(mapping_all_mutate_configurable),
            # mutate=mapping_all_mutate_variable2,
            # mutate=mapping_improving_mutation,
            # mutate=mapping_default_mutate,
            # mutate=MappingArchiveMutate(),
            select=mapping_selector,
Example #6
0
from heft.core.environment import ResourceGenerator as rg
from heft.core.environment.Utility import wf
from heft.experiments.cga.mobjective.utility import fitness_makespan_and_cost_map_ord, SimpleTimeCostEstimator
from heft.experiments.cga.utilities.common import extract_ordering_from_ga_file, extract_mapping_from_ga_file
from heft.experiments.cga.utilities.double_chromosome_ga import _mate, _mutate

_wf = wf("Montage_100")
# rm = ExperimentResourceManager(VMResGen.r([10, 15, 25, 30], 4))
rm = ExperimentResourceManager(rg.r([10, 15, 25, 30]))
# estimator = ExperimentEstimator(None, ideal_flops=20, transfer_time=100)
estimator = SimpleTimeCostEstimator(comp_time_cost=10,
                                    transf_time_cost=2,
                                    transferMx=None,
                                    ideal_flops=20,
                                    transfer_time=100)
env = Env(_wf, rm, estimator)

pop_size = 200
NGEN = 300
MU = 40
CXPB = 0.9

heft_mapping = extract_mapping_from_ga_file(
    "../../../temp/heft_etalon_full_tr100_m100.json", rm)
heft_ordering = extract_ordering_from_ga_file(
    "../../../temp/heft_etalon_full_tr100_m100.json")

creator.create("FitnessMin", base.Fitness, weights=(-1.0, -1.0))
creator.create("Individual",
               ListBasedIndividual,
               typecode='d',
Example #7
0
# heft_mapping = extract_mapping_from_ga_file("../../temp/heft_etalon_full_tr100_m25.json", rm)
# heft_ordering = extract_ordering_from_ga_file("../../temp/heft_etalon_full_tr100_m25.json")

ms_ideal_ind = heft_mapping
os_ideal_ind = heft_ordering

ms_str_repr = [{k: v} for k, v in ms_ideal_ind]

mapping_mut_reg = MutRegulator()


config = {
        "hall_of_fame_size": 0,
        "interact_individuals_count": 50,
        "generations": 100,
        "env": Env(_wf, rm, estimator),
        "species": [Specie(name=MAPPING_SPECIE, pop_size=50,
                           cxb=0.9, mb=0.9,
                           mate=lambda env, child1, child2: tools.cxOnePoint(child1, child2),
                           mutate=mapping_all_mutate,
                           # mutate=mapping_all_mutate_variable,
                           # mutate=mapping_mut_reg(mapping_all_mutate_configurable),
                           # mutate=mapping_all_mutate_variable2,
                           # mutate=mapping_improving_mutation,
                           # mutate=mapping_default_mutate,
                           # mutate=MappingArchiveMutate(),
                           select=mapping_selector,
                           # initialize=mapping_default_initialize,
                           initialize=lambda ctx, pop: mapping_heft_based_initialize(ctx, pop, heft_mapping, 3),
                           stat=lambda pop: {"hamming_distances": hamming_distances([to_seq(p) for p in pop], to_seq(ms_ideal_ind)),
                                             "unique_inds_count": unique_individuals(pop),
Example #8
0
def do_exp():
    config = {
        "interact_individuals_count":
        100,
        "generations":
        300,
        "env":
        Env(_wf, rm, estimator),
        "species": [
            Specie(
                name=MAPPING_SPECIE,
                pop_size=50,
                cxb=0.9,
                mb=0.9,
                mate=lambda env, child1, child2: tools.cxOnePoint(
                    child1, child2),
                # mutate=mapping_default_mutate,
                # mutate=lambda ctx, mutant: mapping_k_mutate(ctx, 3, mutant)
                mutate=mapping_all_mutate,
                # mutate=OnlyUniqueMutant()(mapping_all_mutate),
                select=selector,
                # initialize=mapping_default_initialize,
                initialize=lambda ctx, pop: mapping_heft_based_initialize(
                    ctx, pop, heft_mapping, 3),
                stat=lambda pop: {
                    "hamming_distances":
                    hamming_distances([to_seq(p)
                                       for p in pop], to_seq(ms_ideal_ind)),
                    "unique_inds_count":
                    unique_individuals(pop),
                    "pcm":
                    pcm(pop),
                    "gdm":
                    gdm(pop)
                }),
            Specie(name=ORDERING_SPECIE,
                   fixed=True,
                   representative_individual=ListBasedIndividual(
                       os_representative))
        ],
        "solstat":
        lambda sols: {
            "best_components":
            hamming_for_best_components(sols, ms_ideal_ind, os_ideal_ind),
            "best_components_itself":
            best_components_itself(sols),
            "best":
            -1 * Utility.makespan(
                build_schedule(_wf, estimator, rm,
                               max(sols, key=lambda x: x.fitness)))
        },
        "operators": {
            # "choose": default_choose,
            "build_solutions": default_build_solutions,
            "fitness": fitness_mapping_and_ordering,
            # "fitness": overhead_fitness_mapping_and_ordering,
            # "assign_credits": default_assign_credits
            # "assign_credits": max_assign_credits
            "assign_credits": assign_from_transfer_overhead
        }
    }
    return do_experiment(saver, config, _wf, rm, estimator)