Advertisement
Nevada228

warehouse

Dec 27th, 2019
579
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.12 KB | None | 0 0
  1. import random
  2. import numpy as np
  3.  
  4. N = 100
  5. T = 30
  6.  
  7. def work(C1, C2, C3, Nmin, Q, Q0, T):
  8.     """
  9.    :param C1: удельные затраты на хранение
  10.    :param C2: удельные затраты, связанные с дефицитом
  11.    :param C3: удельные затраты, связанные с поставками
  12.    :param Nmin: минимальное количество продукции на складе, если N < Nmin, то заказываем еще
  13.    :param Q:  объем партии продукции
  14.    :param Q0: объем нулевой партии
  15.    """
  16.     j = k = 0
  17.     N = Nmin
  18.     demand = np.zeros(T) # потребление
  19.     for f in range(T):
  20.         demand[f] = random.randrange(5, 10, 1)
  21.     lead_time = np.zeros(100)
  22.     cost = deficit = storage_cost = delivery = 0
  23.     N = N + Q0
  24.     t = 1
  25.     while t <= T-1:
  26.         if t == k:
  27.             N = N + Q
  28.         N = N - demand[t]
  29.         if N < 0:
  30.             deficit = deficit - C2*N
  31.             N = 0
  32.         storage_cost = storage_cost + C1*N
  33.         if N <= Nmin:
  34.             if t >= k:
  35.                 #дозаказ
  36.                 delivery = delivery + C3*Q
  37.                 j = j+1
  38.                 lead_time[j] = random.randrange(5, 10, 1)
  39.                 k = t + lead_time[j]
  40.         t = t+1
  41.     cost = deficit + storage_cost + delivery
  42.     return (cost)
  43.  
  44. def test(N, C1, C2, C3, Nmin, Q, Q0, T):
  45.     result = np.zeros(N)
  46.     mean = 0
  47.     dispersion = 0
  48.     for k in range(N):
  49.         result[k] = work(C1, C2, C3, Nmin, Q, Q0, T)
  50.         mean = mean + result[k]
  51.     mean = mean / N
  52.     for k in range(N):
  53.         dispersion = dispersion + (result[k] - mean)**2
  54.     standart_deviation = np.sqrt(dispersion)
  55.     return mean, dispersion, standart_deviation
  56.  
  57.  
  58. print("""Введите: C1: удельные затраты на хранение,
  59.    C2: удельные затраты, связанные с дефицитом,
  60.    C3: удельные затраты, связанные с поставками,
  61.    Nmin: минимальное количество продукции на складе,
  62.    Q:  объем партии продукции,
  63.    Q0: объем нулевой партии""", end='\n')
  64. C1 = input()
  65. C2 = input()
  66. C3 = input()
  67. Nmin = input()
  68. Q = input()
  69. Q0 = input()
  70.  
  71. #work(int(C1), int(C2), int(C3), int(Nmin), int(Q), int(Q0), T)
  72. print("Издержки:", work(int(C1), int(C2), int(C3), int(Nmin), int(Q), int(Q0), T))
  73. mean, dispersion, standart_deviation = test(10, int(C1), int(C2), int(C3), int(Nmin), int(Q), int(Q0), T)
  74. print("Дисперсия: ", round(dispersion, 4))
  75. print("Среднее: ", round(mean, 4))
  76. print("Среднеквадратичное отклонение: ", round(standart_deviation, 4))
  77.  
  78. print("Издержки:", work(1, 1, 1, 50, 120, 70, 30))
  79. mean, dispersion, standart_deviation = test(10, 1, 1, 1, 50, 120, 70, 30)
  80. print("Дисперсия: ", round(dispersion, 4))
  81. print("Среднее: ", round(mean, 4))
  82. print("Среднеквадратичное отклонение: ", round(standart_deviation, 4))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement