AI Herd Disease Prediction System

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 Herd Disease Prediction System
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-прогнозирование болезней стада

Стадные болезни в животноводстве — это одновременные потери продуктивности, ветеринарные расходы и риски для здоровья человека (зоонозы). ML-прогнозирование позволяет перейти от реактивного лечения к превентивным мерам: карантин, вакцинация, изменение кормления — до массового распространения болезни.

Эпидемиология в животноводстве

Стадный иммунитет и R₀: Как в человеческих эпидемиях — R₀ (базовое репродуктивное число) определяет, будет ли вспышка. Для BVD (бычий вирусный диарей) R₀ ≈ 2-4 при отсутствии иммунитета.

Модель SIR для стада:

from scipy.integrate import odeint

def sir_model(y, t, beta, gamma, N):
    """
    S = восприимчивые, I = инфицированные, R = выздоровевшие
    dS/dt = -beta * S * I / N
    dI/dt = beta * S * I / N - gamma * I
    dR/dt = gamma * I
    """
    S, I, R = y
    dS = -beta * S * I / N
    dI = beta * S * I / N - gamma * I
    dR = gamma * I
    return [dS, dI, dR]

# Параметры для конкретной болезни
beta_bvd = 0.3  # скорость передачи
gamma_bvd = 0.1  # скорость выздоровления
N_herd = 200

# Прогноз при занесении 1 инфицированного животного
solution = odeint(sir_model, y0=[N_herd-1, 1, 0],
                  t=np.linspace(0, 90, 90),
                  args=(beta_bvd, gamma_bvd, N_herd))

Ключевые болезни и предикторы

Респираторные заболевания (BRDC): Bovine Respiratory Disease Complex — главная причина потерь в мясном скотоводстве.

brdc_risk_features = {
    # Стресс-факторы
    'transport_hours_last_7d': recent_transport,     # перевозка → стресс
    'commingling_event': new_animals_introduced,     # смешивание стад
    'weather_stress': cold_wet_weather_days,

    # Физиология
    'avg_daily_weight_gain_drop': adg_change_pct,    # замедление роста
    'temperature_spike_count': fever_events_24h,
    'activity_drop_pct': activity_vs_baseline,

    # История
    'previous_brdc_cases': historic_brdc_rate,
    'vaccination_coverage': vaccine_pct,
    'days_on_feed': time_in_current_group
}

Ящур (FMD) — карантинный риск: Особый статус: при подозрении → немедленное уведомление Россельхознадзора. ML-сигнал: внезапное падение подвижности множества животных + хромота + отказ от корма.

Мастит в молочном стаде: Стадный мастит — когда > 5% коров имеют SCC > 200,000 → системная проблема (гигиена доения, дезинфекция).

def herd_mastitis_risk_score(herd_data):
    """
    Стадный риск мастита: агрегированные показатели
    """
    return {
        'bulk_milk_scc': herd_data['bulk_tank_scc'],       # < 200,000 = норма
        'new_infection_rate': herd_data['new_cases_monthly'] / herd_data['herd_size'],
        'cure_rate': herd_data['spontaneous_cures_pct'],
        'chronic_cow_pct': herd_data['recurring_cases_pct'],
        'hygiene_score': herd_data['teat_condition_score']
    }

ML-модели прогнозирования вспышек

Временной ряд инцидентности:

# Недельный уровень заболеваемости как временной ряд
# SARIMA + внешние регрессоры (погода, торговые потоки)
from statsmodels.tsa.statespace.sarimax import SARIMAX

incidence_model = SARIMAX(
    endog=weekly_case_count,
    exog=np.column_stack([temperature, precipitation, new_animals]),
    order=(1, 0, 1),
    seasonal_order=(1, 1, 0, 52)  # годовая сезонность
)

Пространственная модель: Болезни распространяются географически. Соседние фермы имеют коррелированный риск:

# Geospatial features: расстояние до ближайших известных случаев
spatial_features = {
    'distance_to_nearest_case_km': geodist(farm, nearest_case),
    'cases_within_10km_30d': count_recent_cases_nearby(farm, 10, 30),
    'wind_direction_exposure': prevailing_wind_from_cases_direction,
    'shared_water_source': common_water_upstream
}

Random Survival Forest:

from lifelines import WeibullAFTFitter

# Time-to-outbreak: когда следующая вспышка произойдёт на ферме
survival_model = WeibullAFTFitter()
survival_model.fit(
    df=farm_history,
    duration_col='days_to_outbreak',
    event_col='outbreak_occurred',
    ancillary_df=farm_risk_features
)

# Прогноз для конкретной фермы
outbreak_probability = 1 - survival_model.predict_survival_function(current_farm_features)

Ранние предупреждения и протоколы

Уровни тревоги:

def generate_herd_alert(risk_score, risk_components):
    if risk_score > 0.7:
        return {
            'level': 'RED',
            'action': 'immediate_vet_visit',
            'isolation': 'quarantine_suspect_animals',
            'report': 'notify_veterinary_authority_if_notifiable'
        }
    elif risk_score > 0.4:
        return {
            'level': 'YELLOW',
            'action': 'increased_monitoring',
            'frequency': 'twice_daily_temperature_check',
            'review_vaccination': True
        }
    else:
        return {'level': 'GREEN', 'action': 'routine_monitoring'}

Нотифицируемые болезни (ФЗ "О ветеринарии"): Ящур, чума КРС, бруцеллёз → автоматическая интеграция с ФГИС ВетИС (Россельхознадзор) при подозрении.

Vaccination Optimization

Timing и coverage: ML-оптимизация схем вакцинации: когда вакцинировать (до сезонного пика), каких животных приоритизировать (низкий иммунитет по истории болезней).

def optimize_vaccination_schedule(herd, disease_seasonality, vaccine_efficacy, cost_per_dose):
    """
    Минимизация: ожидаемые потери от болезни + стоимость вакцинации
    Ограничение: целевой R_effective < 1 (подавление вспышки)
    """
    optimal_coverage = 1 - 1/(R0 * vaccine_efficacy)  # порог стадного иммунитета
    priority_animals = rank_by_exposure_risk(herd)
    return priority_animals[:int(optimal_coverage * len(herd))]

Сроки: SIR-модель для ключевых нозологий + стадные алерты + ФЗ-нотификация — 4-5 недель. ML-классификаторы вспышек, пространственная модель, vaccination optimizer, ВетИС интеграция — 2-3 месяца.