Example #1
0
    def __init__(self, workflow, rel_restraint, lambda_list):
        self.name = "MOHEFT"
        self.workflow = workflow
        self.rel_restraint = rel_restraint

        self.individual = Individual(self, 0, workflow, lambda_list)
        self.pareto_result = list()
Example #2
0
    def __init__(self, workflow, lambda_list):
        # 随机初始化种群
        self.workflow = workflow
        self.name = "MaxRel"

        i = 0
        self.individual = Individual(self, i, workflow, lambda_list)

        self.rel = 0
        for pos in range(0, 15):
            self.individual.individual_task_list = self.init_task_list_order_pos_at(
                pos)
            self.individual.schedule()

            if self.rel < self.individual.calc_rel():
                self.rel = self.individual.calc_rel()
Example #3
0
    def __init__(self, workflow, bw_value):
        # 随机初始化种群
        self.individual_list = list()
        self.workflow = workflow
        self.name = "RANDOM"

        i = 0
        while i < constant.PARETO_RESULT_NUM:
            individual = Individual(self, i, workflow, bw_value)
            individual.schedule()
            self.individual_list.append(individual)
            i += 1

        self.max_id = len(self.individual_list) - 1

        # 初始化pareto解集
        self.pareto_result = self.individual_list
Example #4
0
    def __init__(self, workflow, bw_value):
        self.name = "MOHEFT"
        self.workflow = workflow
        self.bw_value = bw_value

        self.individual = Individual(self, 0, workflow, bw_value)

        self.pareto_result = list()
Example #5
0
class MinRelAlgorithm(object):
    def __init__(self, workflow, lambda_list):
        # 随机初始化种群
        self.workflow = workflow
        self.name = "MinRel"

        i = 0
        self.individual = Individual(self, i, workflow, lambda_list)
        self.rel = None
        for pos in range(0, 15):
            self.individual.individual_task_list = self.init_task_list_order_pos_at(
                pos)
            self.individual.schedule()

            if self.rel is None:
                self.rel = self.individual.calc_rel()

            elif self.rel > self.individual.calc_rel():
                self.rel = self.individual.calc_rel()

    def init_task_list_order_pos(self):
        # 任务排序初始化
        task_list_ordered = self.workflow.task_list

        # 任务位置初始化
        individual_task_list = list()
        for task in task_list_ordered:
            individual_task = IndividualTask()
            individual_task.task = task
            individual_task.exec_pos = 10
            individual_task_list.append(individual_task)
        return individual_task_list

    def init_task_list_order_pos_at(self, pos):
        # 任务排序初始化
        task_list_ordered = self.workflow.task_list

        # 任务位置初始化
        individual_task_list = list()
        for task in task_list_ordered:
            individual_task = IndividualTask()
            individual_task.task = task
            individual_task.exec_pos = pos
            individual_task_list.append(individual_task)
        return individual_task_list
Example #6
0
    def create_individual():
        print("Create Individual...")
        chromosomes = Chromosomes()
        chromosomes.add_gene(Genome('mochila', copy.deepcopy(Factory.DNA_strand), 30))

        individual = Individual(chromosomes)
        Factory.process_backpack(individual.chromosomes.chain.get('mochila'))

        return individual
Example #7
0
    def __init__(self, workflow, rel_restraint, lambda_list):
        # 随机初始化种群
        self.individual_list = list()
        self.workflow = workflow
        self.name = "MOWS"
        self.rel_restraint = rel_restraint

        i = 0
        while i < constant.INDIVIDUAL_NUM:
            individual = Individual(self, i, workflow, lambda_list)
            individual.schedule()
            self.individual_list.append(individual)
            i += 1

        self.max_id = len(self.individual_list) - 1

        # 初始化pareto解集
        self.pareto_result = list()
    def mutation(self, a, b):
        #Helper.display_population(self.population)
        print("> Mutação....")

        ind = []

        while True:
            cadeiaA = copy.deepcopy(a.get('DNA'))
            cadeiaB = copy.deepcopy(b.get('DNA'))

            index_random = random.randint(0, len(cadeiaA) - 1)
            print(index_random)

            print(cadeiaA[index_random].contains)
            print(cadeiaB[index_random].contains)

            #individual = Individual(chromosomes )
            aux = cadeiaA[index_random].contains
            cadeiaA[index_random].contains = cadeiaB[index_random].contains
            cadeiaB[index_random].contains = aux

            chromosomesA = Chromosomes()
            chromosomesB = Chromosomes()
            chromosomesA.add_gene(Genome('mochila', cadeiaA, 30))
            chromosomesB.add_gene(Genome('mochila', cadeiaB, 30))

            individualA = Individual(chromosomesA)
            individualB = Individual(chromosomesB)

            if Evaluator.individual_is_valid(
                    individualA) and Evaluator.individual_is_valid(
                        individualB):
                ind.append(individualA)
                ind.append(individualB)
                break

        return ind

        #print(f"{a.get('DNA')}")
        #print(f"{b.get('DNA')}")

        #print(f"{a.get('index')}")
        #print(f"{b.get('index')}")
        pass
Example #9
0
    def __init__(self, workflow, rel_restraint, lambda_list):
        # 随机初始化种群
        self.individual_list = list()
        self.workflow = workflow
        self.name = "RANDOM"
        self.rel_restraint = rel_restraint

        i = 0
        while i < constant.RANDOM_TIME:
            individual = Individual(self, i, workflow, lambda_list)
            individual.schedule()
            if individual.reliability >= self.rel_restraint:
                self.individual_list.append(individual)
                i += 1

        self.max_id = len(self.individual_list) - 1

        # 初始化pareto解集
        self.pareto_result = ParetoAlgorithm.get_pareto_result(
            self.individual_list)
Example #10
0
    def __init__(self, workflow, bw_value, delta=constant.USR_MAX_DELAY_TOLERANCE):
        # 随机初始化种群
        self.individual_list = list()
        self.workflow = workflow
        self.delta = delta

        if self.delta == 0:
            name = "MOWS_%s" % self.delta
        else:
            name = "MOWS_DTM_%s" % self.delta
        self.name = name

        i = 0
        while i < constant.INDIVIDUAL_NUM:
            individual = Individual(self, i, workflow, bw_value, delta)
            individual.schedule()
            self.individual_list.append(individual)
            i += 1

        self.max_id = len(self.individual_list) - 1

        # 初始化pareto解集
        self.pareto_result = list()
Example #11
0
 def generateIndividual(self, sirStatus):
     sphereLoc = self.generateLocation()
     location = Location(x=sphereLoc[0], y=sphereLoc[1], z=sphereLoc[2])
     individual = Individual(self.curIndex, location, sirStatus)
     self.curIndex += 1
     return individual