Розробка системи ШІ для управління мікрогенерацією
Мікрогенерація — це сонячні панелі, малі вітроустановки та мініатюрні теплоелектроцентралі на території споживача. У Росії це дозволено з 2021 року (ФЗ-471): залишки можна продавати в мережу. ШІ оптимізує використання власної генерації та управляє точкою підключення до мережі.
Прогнозування генерації та споживання
Завдання мікрогератора:
Кожні 15 хвилин система повинна вирішити: продати залишки в мережу або зарядити BESS; купити з мережі або розрядити BESS. Рішення залежить від прогнозу:
- Власної генерації на наступні години (сонце/вітер)
- Споживання об'єкту на наступні години
- Тарифної кривої (диференційований тариф: ніч/день/пік)
import numpy as np
import pandas as pd
from prophet import Prophet
class MicrogenerationForecaster:
"""Прогнозування генерації та споживання для об'єкту з мікрогенерацією"""
def fit_solar_model(self, historical_generation, capacity_kw):
"""Прогноз сонячної генерації через Prophet"""
df = historical_generation.reset_index()
df.columns = ['ds', 'y']
df['y'] = df['y'] / capacity_kw # нормалізувати до потужності → capacity factor
model = Prophet(
changepoint_prior_scale=0.05,
seasonality_mode='multiplicative',
yearly_seasonality=10,
daily_seasonality=True,
weekly_seasonality=False # сонце не залежить від дня тижня
)
model.fit(df)
return model
def predict_next_day(self, solar_model, load_model, weather_forecast):
"""Об'єднаний прогноз на наступні 24 години"""
future = solar_model.make_future_dataframe(periods=96, freq='15min')
# Додати регресор погоди
future = future.merge(weather_forecast[['ds', 'ghi', 'temperature']],
on='ds', how='left')
solar_forecast = solar_model.predict(future)
load_forecast = load_model.predict(future)
return pd.DataFrame({
'timestamp': future['ds'],
'solar_kw': solar_forecast['yhat'].clip(0) * self.capacity_kw,
'load_kw': load_forecast['yhat'].clip(0),
'net_kw': (solar_forecast['yhat'] - load_forecast['yhat']).clip(-self.max_load)
})
Оптимізація накопичувачів енергії
Стратегія заряджання/розряджання:
Задача стохастичної оптимізації з горизонтом 24–48 годин:
from scipy.optimize import linprog
import numpy as np
def optimize_bess_schedule(
solar_forecast, # кВт за годинами
load_forecast, # кВт за годинами
tariff_grid_buy, # руб/кВтч за годинами (покупка з мережі)
tariff_grid_sell, # руб/кВтч за годинами (продаж в мережу)
bess_capacity_kwh=10,
bess_max_power_kw=5,
bess_soc_init=0.5,
bess_soc_min=0.1,
bess_soc_max=0.9,
bess_efficiency=0.9
):
"""
Оптимізація розпису BESS.
Змінні: [p_charge_t, p_discharge_t, p_grid_buy_t, p_grid_sell_t] × 24h
"""
T = len(solar_forecast)
# Лінійне програмування (LP)
# Спрощення: не враховуємо бінарні обмеження одночасного заряджання/розряджання
# Змінні: [charge[0..T], discharge[0..T], buy[0..T], sell[0..T], soc[0..T]]
n_vars = T * 4 + T # charge, discharge, buy, sell, SoC
c = np.zeros(n_vars)
# Мінімізувати вартість: вартість покупки - дохід від продажу
for t in range(T):
c[2*T + t] = tariff_grid_buy[t] # покупка — витрати
c[3*T + t] = -tariff_grid_sell[t] # продаж — дохід (від'ємне)
# Обмеження (спрощено)
# SoC баланс, обмеження потужності, межи SoC
result = linprog(c, method='highs') # HiGHS solver
return result
Управління точкою нульового експорту
Контроль нульового експорту:
Якщо тариф продажу в мережу невигідний або відсутній — запобігти подачі в мережу:
- Прогноз залишків → збільшити кероване навантаження (водонагрівач, насос, зарядка EV)
- При неможливості поглинути → зменшити потужність інверторів (curtailment)
- Швидкий контроль (100мс цикл): вимірювання струму в точці підключення → ПІД-управління потужністю інверторів
Агрегація для програм Demand Response
Агрегатор ВЕС:
Сотні приватних мікрогенераторів → агрегатор об'єднує у Virtual Power Plant:
- Прогноз сумарного експорту агрегованого ресурсу
- Участь у балансуючому ринку
- Розподіл платежів між учасниками по внеску (Shapley Values)
Моніторинг та діагностика
Оцінка деградації панелей:
- Моніторинг Performance Ratio (PR): очікувана vs. фактична генерація
- Зниження PR на 0,5%/рік — норма; >1,5%/рік — деградація або забруднення
- Аналіз I-V кривої: виявлення затінення, відмови діода байпасу
Термін розробки: 2–4 місяці для системи управління мікрогенерацією з прогнозом, оптимізацією BESS та контролем нульового експорту.







