Merge branch 'output' of PSSAI_Team/JobShopScheduling into devel

merge
maxschlosser 2017-07-12 17:54:24 +02:00 committed by Gitea
commit dd18b64203
4 changed files with 42 additions and 7 deletions

View File

@ -1,2 +1,3 @@
mypy
Arpeggio
matplotlib

View File

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

View File

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