Eine Methode zum Finden eines Zeitplans, der den Arbeitszeitraum optimiert, wenn jedes Produkt in zwei Schritten fertiggestellt wird.
Finden Sie im Beispiel des obigen Bildes die optimale Reihenfolge zum Kochen der Nudeln. Referenz
test.py
# -*- coding: utf-8 -*-
#Johnson-Methode
def johnsonMethod(job_pair):
front = []
back = []
process_1 = []
process_2 = []
sum_time = 0
while True:
min_jobs = [min(jobs) for jobs in job_pair]
min_job = min(min_jobs)
if min_job == 9999:
sum_time += process_1[0] #Fügen Sie den ersten Vorprozess hinzu und beenden Sie den Vorgang
break
job_pair_index = min_jobs.index(min_job)
job_index = job_pair[job_pair_index].index(min_job)
if job_index == 0:
front.append(job_pair_index)
else:
back.append(job_pair_index)
process_1.append(job_pair[job_pair_index][0])
process_2.append(job_pair[job_pair_index][1])
if sum(process_1) > sum(process_2):
sum_time += job_pair[job_pair_index][0]
else:
sum_time += job_pair[job_pair_index][1]
job_pair[job_pair_index] = [9999, 9999]
front.extend(list(reversed(back)))
order = ["J" + str(x + 1) for x in front]
print(order)
print("Benötigte Zeit: " + str(sum_time))
#"https://studying.jp/shindanshi/past-exam/exam20unei.html Frage 18"
johnsonMethod([[5,5],[6,4],[4,3],[2,8],[5,7]])
Recommended Posts