Merge branch 'output' of PSSAI_Team/JobShopScheduling into devel
This commit is contained in:
		
						commit
						dd18b64203
					
				
					 4 changed files with 42 additions and 7 deletions
				
			
		| 
						 | 
				
			
			@ -1,2 +1,3 @@
 | 
			
		|||
mypy
 | 
			
		||||
Arpeggio
 | 
			
		||||
matplotlib
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -38,7 +38,8 @@ def accept(solution):
 | 
			
		|||
    Maybe skip this during the first step to generate a more
 | 
			
		||||
    random solution.
 | 
			
		||||
    """
 | 
			
		||||
    return tighten(solution)
 | 
			
		||||
    #return tighten(solution)
 | 
			
		||||
    return solution
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def tighten(solution):
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										30
									
								
								src/Output/output.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								src/Output/output.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,30 @@
 | 
			
		|||
import matplotlib.pyplot as plt
 | 
			
		||||
from matplotlib import colors
 | 
			
		||||
from matplotlib import patches
 | 
			
		||||
import numpy as np
 | 
			
		||||
from SchedulingAlgorithms.simanneal import rate
 | 
			
		||||
import random
 | 
			
		||||
 | 
			
		||||
def create_plot(problem, solution):
 | 
			
		||||
    
 | 
			
		||||
    end = rate(solution)
 | 
			
		||||
 | 
			
		||||
    with plt.xkcd():
 | 
			
		||||
        fig,ax = plt.subplots()
 | 
			
		||||
        colorlist = list(colors.XKCD_COLORS.values())
 | 
			
		||||
        random.shuffle(colorlist)
 | 
			
		||||
        for m in range(0, problem.machines):
 | 
			
		||||
            mach_ops = [ x for x in solution if problem.problem_data[x[1][0]][x[1][1]][1] == m ]
 | 
			
		||||
            xranges = [ (x[0], problem.problem_data[x[1][0]][x[1][1]][0]) for x in mach_ops ]
 | 
			
		||||
            ax.broken_barh(xranges, ((problem.machines - m)*10, 9), 
 | 
			
		||||
                    facecolors=[colorlist[x[1][0]] for x in mach_ops])
 | 
			
		||||
        ax.set_ylim(5, 5 + (problem.machines+1)*10)
 | 
			
		||||
        ax.set_xlim(0, 1.25 * end)
 | 
			
		||||
        ax.set_yticks([15 + m * 10 for m in range(0, problem.machines)])
 | 
			
		||||
        ax.set_yticklabels([ problem.machines - 1 - m for m in range(0, problem.machines)] )
 | 
			
		||||
        handlecolors = colorlist[0:problem.jobs]
 | 
			
		||||
        handles = [ patches.Patch(color = handlecolors[j], label = "Job "+str(j)) for j in range(0,problem.jobs) ]
 | 
			
		||||
        labels = ["Job "+str(j) for j in range(0,problem.jobs)]
 | 
			
		||||
        ax.legend(handles, labels)
 | 
			
		||||
 | 
			
		||||
    plt.show()
 | 
			
		||||
| 
						 | 
				
			
			@ -1,7 +1,10 @@
 | 
			
		|||
INSTANCES = [(5, 5)]
 | 
			
		||||
TASKS = [[(1, 21), (0, 53), (4, 95), (3, 55), (2, 35)],
 | 
			
		||||
         [(0, 21), (3, 52), (4, 16), (2, 26), (1, 71)],
 | 
			
		||||
         [(3, 39), (4, 98), (1, 42), (2, 31), (0, 12)],
 | 
			
		||||
         [(1, 77), (0, 55), (4, 79), (2, 66), (3, 77)],
 | 
			
		||||
         [(0, 83), (3, 34), (2, 64), (1, 19), (4, 37)]]
 | 
			
		||||
#import Parser.js1_style as p
 | 
			
		||||
import Parser.js2_style as p
 | 
			
		||||
from SchedulingAlgorithms import simanneal as sim
 | 
			
		||||
from Output import output as o
 | 
			
		||||
 | 
			
		||||
#problem = p.parse_file("../inputdata/jobshop1.txt")[0]
 | 
			
		||||
problem = p.parse_file("../inputdata/sample")
 | 
			
		||||
sim.init(problem)
 | 
			
		||||
solution = sim.anneal()
 | 
			
		||||
o.create_plot(problem, solution)
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue