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()
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()
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
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()
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
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
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
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)
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()
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