gt22 icon

Турбины

gt22 | PRO | 11/22/18 06:36:13 PM UTC | 0 ⭐ | 599 👁️ | Never ⏰ | []
Python |

2.04 KB

|

None

|

0 👍

/

0 👎

import numpy as np
from math import pi, ceil
 
# коэффициенты
μ = 0.592
ρ = 1.2466
π8 = pi / 8
dsq = 20 ** 2
 
 
# Формула мощности
def p(u):
    ucb = u ** 3
    return μ * ρ * π8 * dsq * ucb
 
 
# Скользящяя сумма, тоесть сумма от 1го до n-го элемента, от 2го до n+1го итд
def rolling_sum(a, n):
    ret = np.cumsum(a, dtype=float)
    ret[n:] = ret[n:] - ret[:-n]
    return ret[n - 1:]
 
 
# Считываем данные, и транспонируем что-бы было на 2 строки и 239 столбцов, а 239 строк и 2 столбца (Удобнее потом работать)
data = np.array(eval(input())).T
# Считаем сколько в каждый час генерирует одна турбина, для этого в функцию генерации отправляем весь второй столбец (1 - ибо индекс с нуля)
gen_per_turbine = p(data[:, 1])
# Считаем сколько турбин надо что-бы удовлетворить первое условие, для этого вычитаем 500 кВт которые мы можем оставить и делим на то сколько генерит одна турбина
# Из этого всего выбираем максимум, и округляем вверх
turbines_needed = ceil(((data[:, 0] - 5e5) / gen_per_turbine).max())
 
# Считаем скользящую сумму дефецита энергии по 24 часа что-бы проверить на второе условие
# Пока хоть-одна из них (А точнее максимальная) превыщает 1МВт, прибавляем одну турбину
while rolling_sum(np.clip(data[:, 0] - (gen_per_turbine * turbines_needed), 0, None), 24).max() > 1e6:
    turbines_needed += 1
 
# Выводим сколько турбин нам надо
print(turbines_needed)
 
Шутка на тему:
https://xkcd.com/1378/

Comments