class LeastUnitCostMethod:
def __init__(self):
pass
def run(self, dict_in, demand):
# Füllen der Variablen aus Start_Dictionary
dem = demand
kf = dict_in["fixedCost"]
kv = dict_in["varCost"]
pp = len(dem)
p = 0
kpj = 0
kppj = 0
orders = [0 for i in range(pp)]
total_c = 0
# testen ob "Null-Perioden am Anfang vorliegen
while dem[p] == 0:
orders[p] = 0
p = p + 1
if p == pp:
p = p - 1
break
while p < pp:
j = p
lg1 = 0
lg2 = 0
kppj = (kf + (kv * dem[j] * (j - p))) / dem[j]
while j < pp:
last_c = kpj * lg2
lg1 += dem[j] * (j - p) # Aufsummierung der Nachfrage, in Abhängigkeit der Verzinsung
lg2 += dem[j] # Aufsummierung der Nachfrage
kpj = (kf + kv * lg1) / lg2
if kpj > kppj:
orders[p] = lg2 - dem[j]
total_c += last_c
break
j += 1
kppj = kpj
temp = p
p = j
total_c += kpj * lg2
orders[temp] = lg2
# print("Total Cost: " + str(total_c))
# print(sum(orders))
return np.array(orders)