Some small documentation, hopefully useful
This commit is contained in:
		
							parent
							
								
									85e61f91fb
								
							
						
					
					
						commit
						a7f1a86748
					
				
					 1 changed files with 11 additions and 7 deletions
				
			
		| 
						 | 
					@ -34,7 +34,8 @@ def accept(solution):
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
    return 3
 | 
					    return 3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#TODO: Loop over successors
 | 
					#TODO: Loop over successors. The correct_methods might need to be 
 | 
				
			||||||
 | 
					#changed so the changes are correctly passed on
 | 
				
			||||||
def rectify(solution, idx):
 | 
					def rectify(solution, idx):
 | 
				
			||||||
    """ 
 | 
					    """ 
 | 
				
			||||||
    Transform solution by adapting the begin times and delaying
 | 
					    Transform solution by adapting the begin times and delaying
 | 
				
			||||||
| 
						 | 
					@ -50,14 +51,16 @@ def rectify(solution, idx):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def update_begin(solution, idx):
 | 
					def update_begin(solution, idx):
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
    Update the start time of the given task.
 | 
					    Update the start time of the given task wrt machine and job.
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    global problem
 | 
					    global problem
 | 
				
			||||||
    task = solution[idx]
 | 
					    task = solution[idx]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    #find the next task with condition=true, if exists
 | 
				
			||||||
    machine = ( x for x in solution[idx-1::-1] if problem[x[1]][1] == problem[task[1]][1] )
 | 
					    machine = ( x for x in solution[idx-1::-1] if problem[x[1]][1] == problem[task[1]][1] )
 | 
				
			||||||
    prev_mach = next(machine, None)
 | 
					    prev_mach = next(machine, None) #returns the task or None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    job = ( x for x in solution[idx-1::-1] if task[1][0] == x[1][0] ) 
 | 
					    job = ( x for x in solution[idx-1::-1] if task[1][0] == x[1][0] ) 
 | 
				
			||||||
    prev_job = next( job, None)
 | 
					    prev_job = next( job, None)
 | 
				
			||||||
    end_mach = 0
 | 
					    end_mach = 0
 | 
				
			||||||
| 
						 | 
					@ -66,7 +69,7 @@ def update_begin(solution, idx):
 | 
				
			||||||
        end_mach = problem[prev_mach[1]][0] + prev_mach[0]
 | 
					        end_mach = problem[prev_mach[1]][0] + prev_mach[0]
 | 
				
			||||||
    if prev_job:
 | 
					    if prev_job:
 | 
				
			||||||
        end_job = problem[prev_job[1]][0] + prev_job[0]   
 | 
					        end_job = problem[prev_job[1]][0] + prev_job[0]   
 | 
				
			||||||
    solution[idx][0] = max(end_mach, end_job, task[0])
 | 
					    solution[idx][0] = max(end_mach, end_job, task[0]) 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def correct_indices(solution, idx):
 | 
					def correct_indices(solution, idx):
 | 
				
			||||||
| 
						 | 
					@ -78,10 +81,11 @@ def correct_indices(solution, idx):
 | 
				
			||||||
    if tasks:
 | 
					    if tasks:
 | 
				
			||||||
        solution.remove(task)
 | 
					        solution.remove(task)
 | 
				
			||||||
        solution.insert(idx + len(tasks), task)
 | 
					        solution.insert(idx + len(tasks), task)
 | 
				
			||||||
 | 
					    #[1,3,2] -> idx = 1, len([2])=1
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
def correct_machine(solution, idx):
 | 
					def correct_machine(solution, idx):
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
    Push jobs on machines back if conflicts exist.
 | 
					    Check conflicts on machines and correct if needed.
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
    task = solution[idx]
 | 
					    task = solution[idx]
 | 
				
			||||||
    end = problem[task[1]][0] + task[0]
 | 
					    end = problem[task[1]][0] + task[0]
 | 
				
			||||||
| 
						 | 
					@ -104,12 +108,12 @@ def correct_precedence(solution, idx):
 | 
				
			||||||
        idx = solution.index(conflict)
 | 
					        idx = solution.index(conflict)
 | 
				
			||||||
        solution[idx][0] = end
 | 
					        solution[idx][0] = end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def generate(solution, steps):
 | 
					def generate(old_solution, steps):
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
    Generate a new solution from an existing solution with a 
 | 
					    Generate a new solution from an existing solution with a 
 | 
				
			||||||
    specified number of max steps.
 | 
					    specified number of max steps.
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
    solution = solution[:]
 | 
					    solution = old_solution[:]
 | 
				
			||||||
    options = [pull_fwd, accept]
 | 
					    options = [pull_fwd, accept]
 | 
				
			||||||
    option = random.choice(options)
 | 
					    option = random.choice(options)
 | 
				
			||||||
    return option(solution)
 | 
					    return option(solution)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue