Разработка AI-системы управления микрогенерацией

Проектируем и внедряем системы искусственного интеллекта: от прототипа до production-ready решения. Наша команда объединяет экспертизу в машинном обучении, дата-инжиниринге и MLOps, чтобы AI работал не в лаборатории, а в реальном бизнесе.
Показано 1 из 1 услугВсе 1566 услуг
Разработка AI-системы управления микрогенерацией
Средняя
~1-2 недели
Часто задаваемые вопросы
Направления AI-разработки
Этапы разработки AI-решения
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1218
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1161
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    853
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1047
  • image_logo-advance_0.png
    Разработка логотипа компании B2B Advance
    561
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    825

Разработка AI-системы управления микрогенерацией

Микрогенерация — солнечные панели, малые ветроустановки, мини-ТЭЦ на стороне потребителя. В России разрешена с 2021 года (ФЗ-471): излишки можно продавать в сеть. AI оптимизирует использование собственной генерации и управляет точкой подключения к сети.

Прогноз генерации и потребления

Задача микрогенератора:

Каждые 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)
        })

Оптимизация BESS (Battery Energy Storage)

Стратегия заряда/разряда:

Задача стохастической оптимизации с горизонтом 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] × 24ч
    """
    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

Управление точкой нулевого экспорта

Zero-Export Control:

Если тариф продажи в сеть невыгоден или отсутствует — предотвратить подачу в сеть:

  • Прогноз излишков → увеличить нагрузку управляемой (водонагреватель, насос, зарядка EV)
  • При невозможности поглотить → снизить мощность инверторов СЭС (curtailment)
  • Быстрый контроль (100ms цикл): измерение тока в точке подключения → ПИД-управление выходной мощностью инверторов

Агрегация для программ Demand Response

VPP-агрегатор:

Сотни частных микрогенераторов → агрегатор объединяет в Virtual Power Plant:

  • Прогноз суммарного экспорта агрегированного ресурса
  • Участие в балансирующем рынке (ФСК ЕЭС, АО «СО ЕЭС»)
  • Распределение платежей между участниками по вкладу (Shapley Values)

Мониторинг и диагностика

Оценка деградации панелей:

  • Мониторинг Performance Ratio (PR): ожидаемая vs. фактическая выработка
  • Снижение PR на 0.5%/год — норма; >1.5%/год — деградация или загрязнение
  • IV-кривая анализ: идентификация теневого затенения, обрыва диода байпаса

Срок разработки: 2–4 месяца для системы управления микрогенерацией с прогнозом, BESS-оптимизацией и Zero-Export контролем.