Advertisement
Guest User

Untitled

a guest
Dec 14th, 2019
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.28 KB | None | 0 0
  1. import numpy as np
  2.  
  3. factory_struct = {
  4.     "pipe": [],
  5.     "input": [],
  6.     "pump": [],
  7.     "tank": [5, 6, 7, 8],
  8.     "pipe_c": [],
  9.     "tank_g": [9, 10, 11, 12],
  10.     "stock": [13, 14]
  11. }
  12.  
  13. L = [(1, 5), (2, 6), (3, 7), (4, 8), (5, 9), (5, 10), (6, 10), (6, 11), (7, 9), (7, 11), (8, 12), (9, 13), (10, 13), (11, 14), (12, 14)]
  14.  
  15.  
  16. D = []
  17.  
  18. for i in range(len(L)):
  19.     if L[i][0] in factory_struct["tank"] or L[i][0] in factory_struct["tank_g"] or L[i][0] in factory_struct["stock"]:
  20.         for j in range(i, len(L)):
  21.             if L[i][1] == L[j][0]:
  22.                 D.append((i, j))
  23.  
  24. for item in D:
  25.     print(item)
  26.  
  27. # Количество связей в L
  28. N_lines = len(L)
  29.  
  30. # Количество всех объеков, являющихся резервуарами
  31. N_all_tanks = 10
  32.  
  33. # Все объекты, являющиеся резервуарами
  34. All_tanks = factory_struct["tank"] + factory_struct["tank_g"] + factory_struct["stock"]
  35.  
  36. # Период, на которое составляется расписание в часах
  37. Range = 24
  38.  
  39. # Количество временных интервалов
  40. N_times = 24
  41.  
  42. # Шаг дискретизации диспетчерского расписания
  43. delta_t = Range / N_times
  44.  
  45. # Максимальная скорость потока между объектами
  46. f_max = np.zeros((N_lines, N_times))
  47.  
  48. # Доля скорости потока от максимально возможной
  49. x = np.zeros((N_lines, N_times))
  50.  
  51. # Скорость потока между объектами
  52. f = np.zeros((N_lines, N_times))
  53.  
  54. # Поэлементное умножение
  55. for i in range(N_lines):
  56.     for j in range(N_times):
  57.         f[i][j] = f_max[i][j] * x[i][j]
  58.  
  59. # Матрица остатков на конец t-го интервала времени в i-ом резервуаре
  60. M = np.zeros((N_all_tanks, N_times))
  61.  
  62. for i in All_tanks:
  63.     for t in range(1, N_times):
  64.         total = 0
  65.         for item in D:
  66.             # Номер объекта на технологической схеме
  67.             obj = L[item[0]][1]
  68.             if obj == i:
  69.                 total += ((f[item[0]][t] - f[item[1]][t]) * delta_t)
  70.         M[All_tanks.index(i)][t] = total + M[All_tanks.index(i)][t - 1]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement