[GO] Johnson-Methode (Python)

Johnson-Methode

Eine Methode zum Finden eines Zeitplans, der den Arbeitszeitraum optimiert, wenn jedes Produkt in zwei Schritten fertiggestellt wird. スクリーンショット 2020-10-04 19-50-56.png

Finden Sie im Beispiel des obigen Bildes die optimale Reihenfolge zum Kochen der Nudeln. Referenz

Versuche zu schreiben

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

Johnson-Methode (Python)
[Python] Semi-Lagrange-Methode
Kernel-Methode mit Python
Python-Installationsmethode Windows
Simplex-Methode (Einzelmethode) in Python
Python
[Python] Berechnungsmethode mit numpy
Python Design Pattern - Template-Methode
Implementierte Methode zur Weitergabe von Etiketten in Python
Simulieren Sie die Monte-Carlo-Methode in Python
Hash-Methode (Open-Address-Methode) in Python
[Python] -1 Bedeutung der Umformungsmethode von Numpy
Lassen Sie uns eine probabilistische Ausbreitungsmethode (Python) erstellen.
Python-Grundlagen ⑤
Python-Zusammenfassung
Eingebaute Python
Python-Einschlussnotation
Python-Technik
Python studieren
Python 2.7 Countdown
Python-Memorandum
Python FlowFishMaster
Python-Dienst
Python-Tipps
Methode zum Erstellen einer Python-Umgebung in Xcode 6
[Einführung in die Udemy Python3 + -Anwendung] 25. Wörterbuchmethode
Python-Funktion ①
Python-Grundlagen
Ufo-> Python (3)
[Einführung in die Udemy Python3 + -Anwendung] 13. Zeichenmethode
Python + Selen Zusammenfassung der häufig verwendeten Operationsmethoden
Python-Einschlussnotation
[Python] [scikit-learn] k-Einführung in das Memo der Methode des nächsten Nachbarn
Installieren Sie Python
Python Singleton
Python-Memo
Automatische Update-Methode von Python Pyinstaller exe
Python Jinja2
atCoder 173 Python
[Python] -Funktion
Python-Installation
Elektronenmikroskopsimulation in Python: Mehrschichtmethode (1)
Binäre Methode
Python installieren 3.4.3.
Versuchen Sie Python
Python-Memo
Python-Algorithmus