Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import numpy as np
- factory_struct = {
- "pipe": [],
- "input": [],
- "pump": [],
- "tank": [5, 6, 7, 8],
- "pipe_c": [],
- "tank_g": [9, 10, 11, 12],
- "stock": [13, 14]
- }
- 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)]
- D = []
- for i in range(len(L)):
- 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"]:
- for j in range(i, len(L)):
- if L[i][1] == L[j][0]:
- D.append((i, j))
- for item in D:
- print(item)
- # Количество связей в L
- N_lines = len(L)
- # Количество всех объеков, являющихся резервуарами
- N_all_tanks = 10
- # Все объекты, являющиеся резервуарами
- All_tanks = factory_struct["tank"] + factory_struct["tank_g"] + factory_struct["stock"]
- # Период, на которое составляется расписание в часах
- Range = 24
- # Количество временных интервалов
- N_times = 24
- # Шаг дискретизации диспетчерского расписания
- delta_t = Range / N_times
- # Максимальная скорость потока между объектами
- f_max = np.zeros((N_lines, N_times))
- # Доля скорости потока от максимально возможной
- x = np.zeros((N_lines, N_times))
- # Скорость потока между объектами
- f = np.zeros((N_lines, N_times))
- # Поэлементное умножение
- for i in range(N_lines):
- for j in range(N_times):
- f[i][j] = f_max[i][j] * x[i][j]
- # Матрица остатков на конец t-го интервала времени в i-ом резервуаре
- M = np.zeros((N_all_tanks, N_times))
- for i in All_tanks:
- for t in range(1, N_times):
- total = 0
- for item in D:
- # Номер объекта на технологической схеме
- obj = L[item[0]][1]
- if obj == i:
- total += ((f[item[0]][t] - f[item[1]][t]) * delta_t)
- M[All_tanks.index(i)][t] = total + M[All_tanks.index(i)][t - 1]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement