AI Water Quality Monitoring in Aquaculture

We design and deploy artificial intelligence systems: from prototype to production-ready solutions. Our team combines expertise in machine learning, data engineering and MLOps to make AI work not in the lab, but in real business.
Showing 1 of 1 servicesAll 1566 services
AI Water Quality Monitoring in Aquaculture
Medium
~2-4 weeks
FAQ
AI Development Areas
AI Solution Development Stages
Latest works
  • image_web-applications_feedme_466_0.webp
    Development of a web application for FEEDME
    1161
  • image_ecommerce_furnoro_435_0.webp
    Development of an online store for the company FURNORO
    1041
  • image_logo-advance_0.png
    B2B Advance company logo design
    561
  • image_crm_enviok_479_0.webp
    Development of a web application for Enviok
    823
  • image_logo-aider_0.jpg
    AIDER company logo development
    762
  • image_crm_chasseurs_493_0.webp
    CRM development for Chasseurs
    848

AI-мониторинг качества воды в аквакультуре

Качество воды — основополагающий параметр продуктивности и здоровья рыбы. Отклонения от оптимального диапазона по растворённому кислороду, pH, температуре или концентрации аммиака приводят к стрессу, замедлению роста и гибели поголовья. ML-система обеспечивает непрерывный мониторинг, раннее предупреждение и прогнозирование деградации качества воды.

Ключевые параметры качества воды

water_quality_parameters = {
    # Критические (немедленное воздействие)
    'dissolved_oxygen_mg_L': {'optimal': (7, 12), 'critical_low': 5, 'units': 'mg/L'},
    'temperature_c': {'optimal': (8, 22), 'species': 'salmo_salar', 'units': '°C'},
    'ammonia_unionized_mg_L': {'critical': 0.02, 'toxic': 0.05, 'units': 'mg/L NH3-N'},

    # Важные (среднесрочное воздействие)
    'ph': {'optimal': (6.5, 8.5), 'critical_low': 6.0, 'critical_high': 9.0},
    'co2_mg_L': {'optimal': (0, 10), 'problematic': 20, 'units': 'mg/L'},
    'salinity_ppt': {'optimal': (28, 35), 'species': 'atlantic_salmon'},
    'turbidity_ntu': {'threshold': 50, 'units': 'NTU'},

    # Мониторинговые
    'nitrite_mg_L': {'critical': 0.1, 'units': 'mg/L NO2-N'},
    'nitrate_mg_L': {'threshold': 100, 'units': 'mg/L NO3-N'},
    'alkalinity_mg_L': {'optimal': (100, 200), 'units': 'mg/L CaCO3'}
}

Химические взаимосвязи:

  • Токсичность аммиака зависит от pH и температуры: NH4⁺ ↔ NH3 — только NH3 токсичен
  • CO₂ снижает pH: CO₂ + H₂O → H₂CO₃ → снижение аппетита, интерференция с O₂ транспортом

IoT-инфраструктура мониторинга

Мультипараметрический зонд:

water_sensor_config = {
    # Оборудование: YSI, In-Situ, Hach, Aanderaa
    'do_sensor': {'type': 'optical_luminescent', 'accuracy': '±0.1 mg/L'},
    'ph_sensor': {'type': 'glass_electrode', 'calibration': 'weekly'},
    'temperature': {'type': 'thermistor', 'accuracy': '±0.1°C'},
    'conductivity_salinity': {'type': '4-electrode', 'accuracy': '±1 ppt'},
    'turbidity': {'type': 'optical_back_scatter', 'units': 'NTU'},
    'co2': {'type': 'membrane_electrode_or_IR', 'response_time': '60s'},

    # Частота измерений
    'sampling_interval': '5 minutes',
    'transmission': 'MQTT over 4G/LoRaWAN'
}

Пространственное распределение: В большом садке (50-100м диаметр, 10-15м глубина) параметры неоднородны. Стратегия размещения:

  • Поверхностный зонд: DO, температура, pH
  • Средний горизонт (5м): основная зона обитания рыбы
  • Придонный (10м): O₂ дефицит, аккумуляция отходов

ML-прогнозирование качества воды

Прогноз DO на 2-6 часов:

import pandas as pd
from sklearn.ensemble import GradientBoostingRegressor

def build_do_forecast_model(historical_data, forecast_horizon_hours=4):
    """
    Прогноз DO: важен для профилактического аэрирования
    Ночное снижение: фотосинтез останавливается, дыхание продолжается
    """
    features = {
        'do_lag_1h': historical_data['do'].shift(1),
        'do_lag_2h': historical_data['do'].shift(2),
        'do_trend_3h': historical_data['do'].diff(3),
        'temperature': historical_data['temperature'],
        'hour_sin': np.sin(2 * np.pi * historical_data.index.hour / 24),
        'hour_cos': np.cos(2 * np.pi * historical_data.index.hour / 24),
        'feeding_load': historical_data['feed_kg_last_2h'],  # потребление O₂ после кормления
        'biomass_density': historical_data['estimated_biomass'] / cage_volume,
        'water_inflow_rate': historical_data['inlet_flow_m3h'],
        'cloud_cover': weather_forecast['cloud_cover']  # облачность → меньше фотосинтеза
    }
    return GradientBoostingRegressor().fit(features, historical_data['do'].shift(-forecast_horizon_hours))

Прогноз pH и CO₂: После кормления → активное дыхание рыбы → рост CO₂ → снижение pH. LSTM на окне 2-4 часа предсказывает пиковые значения для включения аэрации заблаговременно.

Algal Bloom Prediction: Пресноводные и морские хозяйства уязвимы для цветения водорослей:

bloom_risk_features = {
    'temperature_trend_7d': temp_7day_trend,
    'nutrient_load': estimated_nitrogen_phosphorus,  # из кормления и метаболизма
    'light_intensity': solar_radiation_daily,
    'wind_speed': wind_mixing_effect,
    'chlorophyll_a': satellite_or_inline_sensor,  # ранний признак
    'historical_bloom_dates': bloom_seasonality_factor
}
algal_bloom_risk = random_forest_bloom.predict_proba([bloom_risk_features])[0][1]

При высоком риске → превентивные меры: усиление обменного тока воды, профилактическое снижение кормления.

Автоматизированный контроль качества

Управление аэрацией:

def aeration_control_loop(current_do, predicted_do_2h, biomass_kg, max_stocking_density):
    """
    Пропорциональный контроль: включение аэратора при падении DO
    Упреждающее управление: включение ДО падения на основе прогноза
    """
    critical_threshold = 5.0  # mg/L

    if current_do < critical_threshold:
        # Экстренное: полная мощность аэрации
        return 'max_aeration', 'emergency'
    elif predicted_do_2h < critical_threshold + 1.0:
        # Профилактическое: частичная аэрация
        aeration_power = (critical_threshold + 2.0 - predicted_do_2h) / 3.0
        return f'{aeration_power*100:.0f}%', 'preventive'
    return 'off', 'normal'

Управление водообменом: В RAS (Recirculating Aquaculture Systems): прогноз накопления аммиака → регулировка скорости биофильтрации и водообмена.

def predict_ammonia_accumulation(feeding_rate_kg, fish_biomass_kg, water_volume_m3,
                                  biofiltration_rate, water_exchange_rate):
    """
    Аммиак = 3% от потреблённого белка
    Protein_consumed = feed × protein_content × digestibility
    NH3_production = protein × 0.16 (N content) × degradation_factor
    """
    protein_consumed = feeding_rate_kg * 0.45 * 0.85  # 45% белок, 85% усвояемость
    nh3_production = protein_consumed * 0.16 * 3.0  # г N/час

    nh3_removal = (biofiltration_rate + water_exchange_rate) * current_nh3_concentration
    delta_nh3 = (nh3_production - nh3_removal) / water_volume_m3  # мг/л/час

    return delta_nh3

Интеграция и данные

Remote Monitoring Platform: AquaCloud, Aquabyte, Pentair Intellivibe — облачные платформы со стандартными API. Кастомная ML-модель: интеграция через API или self-hosted.

Satellites для открытых хозяйств:

  • Sentinel-2, Planet Labs: хлорофилл-а, мутность, цветение водорослей для открытых морских хозяйств
  • Частота: 5-10 дней для конкретного участка

Дашборд:

  • Онлайн статус всех параметров по каждому садку
  • Trend charts за 7/30 дней
  • Алерты с приоритетами (критический/предупредительный/информационный)
  • Прогноз качества на 6/12/24 часа

Сроки: мультисенсорный коннектор, базовые алерты, DO прогноз — 3-4 недели. Algal bloom prediction, аммиак-прогноз, автоматическое управление аэрацией, интеграция с FMS — 2-3 месяца.