2017-02-22 2 views
0

Ich versuche, das Ergebnis der Formel zu verwenden, um das nächste Ergebnis zu berechnen und dann das nächste Ergebnis und so weiter und so weiter.Wie verwende ich das Ergebnis, um das nächste Ergebnis und dann das nächste Ergebnis zu berechnen?

def waiting(element, start_waiting_time=0, service_time=1.2, interarrival=1, default=0): 
    if element == 1: 
     return max((start_waiting_time + service_time - interarrival, 0)) 
    elif element == 0: 
     return default 

def waiting_time(elements, start_time=0): 
    next_patient_waits = start_time 
    for i in elements: 
     next_patient_waits += waiting(i) 
     print("{:.1f}".format(next_patient_waits)) 

elements = [1, 1, 1] 
waiting_time(elements) 

Dieser Code gibt Ausgang:

# 0.2, 0.4, 0.6 

Ich erwartete es Ausgabe zurück:

#0, 0.2, 0.4 

ich die erste waiting_time auf 0 gesetzt werden soll, weil die start_waiting_time Null ist. Ich war der Computer hoffen würde berechnen:

#For 1st item in elements: waiting_time = 0 
#For 2nd item in elements: waiting_time = (waiting time 1st element) + service_time - interarrival = 0 + 1.2 -1 = 0.2 
#For 3rd item in elements: waiting_time = (waiting time 2nd element) + service_time - interarrival = 0.2 + 1.2 -1 = 0.4 
+0

Streng genommen 'waiting_time' ist kein (mathematische) Formel. Kein großes Problem, aber ein strukturierter Ansatz für Ihren Algorithmus könnte von einer Änderung zu einer echten Formel (die eine "Rückkehr" hat) profitieren. Dein "Warten" ist was ich meine, weil es eine Rückkehr hat. – Elmex80s

Antwort

2

Sie einfach die next_patient_waits es vor steigenden gedruckt werden soll:

def waiting_time(elements, start_time=0): 
    next_patient_waits = start_time 
    for i in elements: 
     print("{:.1f}".format(next_patient_waits)) 
     next_patient_waits += waiting(i) 
Verwandte Themen