Разработка 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-системы предиктивного обслуживания энергосетей

Энергетическое оборудование — трансформаторы, кабели, выключатели — выходит из строя с предшествующими сигналами деградации за недели и месяцы до аварии. Переход от планово-предупредительного ТО к предиктивному снижает затраты на 20-30% и сокращает незапланированные отключения.

Диагностика силовых трансформаторов

DGA (Dissolved Gas Analysis) — главный индикатор:

import numpy as np

# Ключи диагностики: растворённые газы в масле трансформатора
dga_thresholds = {
    'hydrogen_H2': {'warning': 150, 'alarm': 500},       # ppm
    'methane_CH4': {'warning': 75, 'alarm': 200},
    'ethylene_C2H4': {'warning': 60, 'alarm': 150},
    'ethane_C2H6': {'warning': 100, 'alarm': 200},
    'acetylene_C2H2': {'warning': 2, 'alarm': 30},       # ацетилен = дуга!
    'carbon_monoxide_CO': {'warning': 700, 'alarm': 1500},
    'carbon_dioxide_CO2': {'warning': 10000, 'alarm': 15000}
}

def diagnose_transformer_dga(gas_ppm: dict) -> dict:
    """
    Треугольник Дюваля + Rogers ratios для классификации дефекта.
    """
    # Проверка порогов
    alarm_gases = []
    for gas, value in gas_ppm.items():
        if gas in dga_thresholds:
            if value > dga_thresholds[gas]['alarm']:
                alarm_gases.append({'gas': gas, 'value': value, 'level': 'alarm'})
            elif value > dga_thresholds[gas]['warning']:
                alarm_gases.append({'gas': gas, 'value': value, 'level': 'warning'})

    # Rogers ratios (IEEE C57.104)
    ch4_h2 = gas_ppm.get('methane_CH4', 0) / (gas_ppm.get('hydrogen_H2', 1) + 1e-9)
    c2h4_c2h6 = gas_ppm.get('ethylene_C2H4', 0) / (gas_ppm.get('ethane_C2H6', 1) + 1e-9)
    c2h2_c2h4 = gas_ppm.get('acetylene_C2H2', 0) / (gas_ppm.get('ethylene_C2H4', 1) + 1e-9)

    # Диагностика дефекта
    fault_type = 'normal'
    if gas_ppm.get('acetylene_C2H2', 0) > 5:
        fault_type = 'arc_discharge'        # электрическая дуга — КРИТИЧНО
    elif c2h4_c2h6 > 1.0 and ch4_h2 > 0.1:
        fault_type = 'thermal_fault_high'   # перегрев > 700°C
    elif ch4_h2 > 0.1 and c2h4_c2h6 < 1.0:
        fault_type = 'thermal_fault_medium' # перегрев 300-700°C
    elif gas_ppm.get('hydrogen_H2', 0) > 200 and c2h4_c2h6 < 0.1:
        fault_type = 'partial_discharge'    # частичные разряды

    urgency = {
        'arc_discharge': 'immediate_shutdown',
        'thermal_fault_high': 'urgent_inspection',
        'thermal_fault_medium': 'schedule_maintenance',
        'partial_discharge': 'enhanced_monitoring',
        'normal': 'routine'
    }

    return {
        'fault_type': fault_type,
        'urgency': urgency[fault_type],
        'alarm_gases': alarm_gases,
        'rogers_ratios': {
            'CH4/H2': round(ch4_h2, 3),
            'C2H4/C2H6': round(c2h4_c2h6, 3),
            'C2H2/C2H4': round(c2h2_c2h4, 3)
        }
    }

Тренд газов — прогноз деградации:

from sklearn.linear_model import LinearRegression
import pandas as pd

def forecast_gas_trend(dga_history: pd.DataFrame, gas: str,
                        forecast_days: int = 30) -> dict:
    """
    Экспоненциальный рост газов = ускорение дефекта.
    Линейный тренд на log(concentration) для обнаружения ускорения.
    """
    data = dga_history[['days_ago', gas]].dropna()
    data = data[data[gas] > 0]

    if len(data) < 3:
        return {'status': 'insufficient_data'}

    X = data['days_ago'].values.reshape(-1, 1)
    y = np.log(data[gas].values)

    model = LinearRegression()
    model.fit(X, y)

    # Прогноз
    future_x = np.array([[-forecast_days]])  # отрицательный = будущее
    predicted_log = model.predict(future_x)[0]
    predicted_concentration = np.exp(predicted_log)

    doubling_time = np.log(2) / abs(model.coef_[0]) if model.coef_[0] > 0 else None

    return {
        'current': data[gas].iloc[-1],
        f'forecast_{forecast_days}d': round(predicted_concentration, 1),
        'growth_rate_per_day': model.coef_[0],
        'doubling_time_days': round(doubling_time, 0) if doubling_time else None,
        'threshold_breach_days': estimate_days_to_threshold(
            data[gas].iloc[-1], predicted_concentration,
            dga_thresholds.get(gas, {}).get('alarm', float('inf')),
            forecast_days
        )
    }

Мониторинг кабельных линий

Частичные разряды в кабеле:

def analyze_partial_discharge(pd_measurements: dict) -> dict:
    """
    PD-мониторинг высоковольтных кабелей.
    pC (пикокулоны) — величина разряда.
    PDIV (Partial Discharge Inception Voltage) — напряжение начала ПР.
    """
    max_pd_pc = pd_measurements.get('max_pd_magnitude_pc', 0)
    pd_rate_per_minute = pd_measurements.get('pd_pulse_rate', 0)
    pd_location_m = pd_measurements.get('pd_location_tdr_m', None)  # TDR локация

    # Классификация по IEC 60270
    if max_pd_pc > 1000:
        severity = 'critical'
        action = 'immediate_cable_replacement'
    elif max_pd_pc > 300:
        severity = 'major'
        action = 'schedule_replacement_3months'
    elif max_pd_pc > 100:
        severity = 'minor'
        action = 'enhanced_monitoring'
    else:
        severity = 'normal'
        action = 'routine_monitoring'

    return {
        'max_pd_pc': max_pd_pc,
        'pd_rate': pd_rate_per_minute,
        'pd_location_m': pd_location_m,
        'severity': severity,
        'action': action
    }

Предиктивная модель для воздушных линий

Прогнозирование провисания провода:

def calculate_sag_risk(weather_data: dict, line_parameters: dict) -> dict:
    """
    Нагрев провода током + температура → провисание → опасное приближение к земле.
    Допустимый нагрев AAAC провода: до 90°C (аварийный режим).
    """
    I_amps = line_parameters['current_a']
    R_ohm_per_km = line_parameters['resistance_ohm_per_km']
    length_km = line_parameters['length_km']
    ambient_temp = weather_data['temperature_c']
    wind_speed = weather_data['wind_speed_ms']
    solar_radiation = weather_data.get('solar_irradiance_wm2', 0)

    # Упрощённая тепловая модель (IEEE 738)
    joule_heating = I_amps**2 * R_ohm_per_km / 1000  # Вт/м
    convective_cooling = (0.7 + 0.5 * wind_speed) * (80 - ambient_temp)  # Вт/м (упрощение)
    solar_heating = solar_radiation * 0.015  # Вт/м

    conductor_temp = ambient_temp + (joule_heating + solar_heating) / (convective_cooling + 1)

    # Провисание растёт с температурой
    base_sag_m = line_parameters.get('design_sag_m', 5.0)
    thermal_expansion = 0.023e-3 * (conductor_temp - 20) * length_km * 1000
    actual_sag_m = base_sag_m + thermal_expansion * 0.5

    clearance_violation = actual_sag_m > line_parameters.get('max_sag_m', 7.0)

    return {
        'conductor_temp_c': round(conductor_temp, 1),
        'actual_sag_m': round(actual_sag_m, 2),
        'clearance_violation': clearance_violation,
        'thermal_limit_pct': min(100, conductor_temp / 90 * 100)
    }

Планирование ТО

Приоритизация объектов: Риск-матрица: вероятность отказа × последствия (кВт·ч недоотпуска × штрафы × потребители). Объекты ранжируются по ожидаемым потерям от неплановой аварии. Интеграция с SAP PM / Maximo для создания нарядов.

Сроки: DGA мониторинг + базовый алертинг + трансформаторный дашборд — 4-5 недель. Тренды DGA, PD мониторинг кабелей, тепловая модель ЛЭП, оптимизация планирования ТО, SAP PM интеграция — 3-4 месяца.