존슨법(python)
존슨법
각 제품이 각각 2개의 공정을 거쳐 완성될 때, 작업기간이 최적이 되는 스케줄을 요구하는 수법.
위의 이미지의 예라면, 국수를 삶는 순서를 어떻게하면 최적인지를 구한다.
참고
걸어봐
test.py
# -*- coding: utf-8 -*-
#ジョンソン法
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] #一番最初の前工程を足して終了
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("所要時間 : " + str(sum_time))
#"https://studying.jp/shindanshi/past-exam/exam20unei.html 第18問"
johnsonMethod([[5,5],[6,4],[4,3],[2,8],[5,7]])
Reference
이 문제에 관하여(존슨법(python)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/meuzi/items/e9fff184e872a667c824텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)