Une méthode de recherche d'un calendrier qui optimise la période de travail lorsque chaque produit est terminé en deux étapes.
Dans l'exemple de l'image ci-dessus, trouvez l'ordre optimal pour faire bouillir les nouilles. Référence
test.py
# -*- coding: utf-8 -*-
#Méthode Johnson
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] #Ajoutez le tout premier pré-processus et finition
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("Temps requis: " + str(sum_time))
#"https://studying.jp/shindanshi/past-exam/exam20unei.html Question 18"
johnsonMethod([[5,5],[6,4],[4,3],[2,8],[5,7]])
Recommended Posts