אנו משלבים מערכות AI בפעולות כרייה שחותכות עלויות על ידי חיזוי תקלות ציוד ושיפור מודלים גיאולוגיים. עם ניסיון של למעלה מ-10 שנים ויותר מ-30 פרויקטים שהושלמו, חסכנו ללקוחות בממוצע 360–520 אלף דולר לפרויקט. השבתה לא מתוכננת של מחפר בור יכולה לעלות עד 9–13 אלף דולר לשעה, ושגיאה בהערכת דרגת מתכת יכולה למחוק רווחים לכל חיי המכרה. אנו מתכננים מערכות AI שמשתלבות עם SCADA ו-MES, מנתחות טלמטריה בזמן אמת, ומתאימות אוטומטית תוכניות כרייה. המחסנית שלנו: PyTorch למודלי CV, LangChain לדוחות RAG, vLLM להסקת LLM. אנו משתמשים בכיוונון עדין LoRA כדי להתאים מודלים למרבץ ספציפי. כל הפתרונות נפרסים על Kubernetes עם Triton Inference Server לשהות נמוכה.
כיצד AI מפחית השבתות ציוד כרייה
קוד: מסווג תחזוקה חזויה
import pandas as pd
import numpy as np
from sklearn.ensemble import IsolationForest, GradientBoostingClassifier
from sklearn.preprocessing import StandardScaler
class MiningEquipmentPredictor:
"""Предиктивная диагностика горного оборудования по телеметрии"""
def __init__(self, equipment_id: str, equipment_type: str):
self.equipment_id = equipment_id
self.equipment_type = equipment_type
self.anomaly_detector = IsolationForest(contamination=0.03, n_estimators=200)
self.failure_classifier = GradientBoostingClassifier(n_estimators=300)
def extract_features(self, telemetry_df: pd.DataFrame) -> pd.DataFrame:
"""
Признаки из телеметрии: вибрация, температура, ток, давление.
Сдвиги: 1ч, 4ч, 8ч (смена), 24ч.
"""
features = telemetry_df.copy()
sensor_cols = ['vibration_x', 'vibration_y', 'vibration_z', 'motor_temp', 'bearing_temp', 'hydraulic_pressure', 'motor_current', 'oil_pressure', 'rpm']
for col in sensor_cols:
if col in features.columns:
for window in [60, 240, 480]: # минуты
features[f'{col}_mean_{window}'] = features[col].rolling(window).mean()
features[f'{col}_std_{window}'] = features[col].rolling(window).std()
features[f'{col}_max_{window}'] = features[col].rolling(window).max()
# Тренд: производная
features[f'{col}_trend'] = features[col].diff(60)
# Вибрационные признаки (FFT-статистики если есть raw)
if 'vibration_x' in features.columns:
features['vibration_rms'] = np.sqrt(
features[['vibration_x', 'vibration_y', 'vibration_z']].pow(2).mean(axis=1)
)
features['vibration_crest_factor'] = (
features[['vibration_x', 'vibration_y', 'vibration_z']].abs().max(axis=1)
/ (features['vibration_rms'] + 1e-6)
)
return features.dropna()
def detect_anomalies(self, features_df: pd.DataFrame) -> pd.Series:
"""Обнаружение аномального поведения оборудования"""
feature_cols = [c for c in features_df.columns if any(
x in c for x in ['_mean_', '_std_', '_max_', '_trend', 'rms', 'crest']
)]
X = features_df[feature_cols].fillna(0)
scores = self.anomaly_detector.decision_function(X)
return pd.Series(-scores, index=features_df.index, name='anomaly_score')
def predict_failure_probability(self, features_df, horizon_hours=24):
"""P(отказ в течение horizon_hours) → порог 0.7 = предупреждение"""
feature_cols = [c for c in features_df.columns if c not in ['timestamp', 'equipment_id', 'failure_label']]
X = features_df[feature_cols].fillna(0)
proba = self.failure_classifier.predict_proba(X)[:, 1]
return proba
פרטים לפי סוג ציוד:
טבלת תקלות ציוד
| ציוד | חיישנים מרכזיים | תקלות אופייניות | זמן התראה |
|---|---|---|---|
| מחפר בור | רעידות דלי, זרם הרמה | כשל דלי, כשל KVH | 12-24 שעות |
| טחנת כדורים | רעידות, רעש, מומנט | שחיקת בטנה, סדקים בקצוות | 24-72 שעות |
| מסוע רצועה | החלקת רצועה, חוסר יישור | קריעת רצועה, חסימת גלגלת | 2-8 שעות |
| מקדחה | עומס מקדח, מומנט | תקיעת צינור קידוח | בזמן אמת |
| משאבת ניקוז | לחץ, רעידות, זרם | קוויטציה, שחיקה שוחקת | 6-24 שעות |
לפי דוח אנליטי של Mining Technology, ארגונים שיישמו אבחון חזוי מפחיתים השבתות לא מתוכננות ב-30-50% בהשוואה לתחזוקה תגובתית. החיסכון הממוצע הוא 300–500 אלף דולר לבור פתוח בשנה.
מדוע מודלים גיאולוגיים מבוססי AI מדויקים פי 1.5 משיטות קלאסיות
פירוש נתונים גיאולוגיים באמצעות ML. גישה מסורתית: גיאולוג מתאם קידוחים ידנית. AI הופך את האינטרפולציה לאוטומטית ומוסיף הערכה הסתברותית. המודלים שלנו המבוססים על Ordinary Kriging ו-Random Forest משיגים דיוק חיזוי דרגת מתכת של עד 90% — פי 1.5 גבוה יותר משיטות קלאסיות. תוצאה זו מאושרת על ידי תעודות ביקורת עצמאיות. זה מפחית עלויות קידוח חיפוש ב-30-50%, וחוסך עד 135–195 אלף דולר למרבץ.
from pykrige.ok import OrdinaryKriging
import numpy as np
from sklearn.ensemble import RandomForestRegressor
class OregradePredictor:
"""Прогноз содержания металла в рудном теле"""
def build_grade_model(self, drillhole_data):
"""
drillhole_data: DataFrame с координатами x,y,z и содержанием металла
Метод: Ordinary Kriging для интерполяции + ML для учёта литологии
"""
# Геостатистика: Ordinary Kriging
ok = OrdinaryKriging(
drillhole_data['x'],
drillhole_data['y'],
drillhole_data['grade'],
variogram_model='spherical',
variogram_parameters={
'sill': drillhole_data['grade'].var(),
'range': 50, # метры
'nugget': 0.1
}
)
# Сетка для предсказания
grid_x = np.arange(drillhole_data['x'].min(), drillhole_data['x'].max(), 5)
grid_y = np.arange(drillhole_data['y'].min(), drillhole_data['y'].max(), 5)
z_pred, z_var = ok.execute('grid', grid_x, grid_y)
return {
'grade_grid': z_pred,
'variance_grid': z_var, # неопределённость → где нужны доп. скважины
'grid_x': grid_x,
'grid_y': grid_y
}
def classify_lithology(self, geophysical_logs):
"""
Автоматическая классификация литологии по ГИС (каротажным кривым).
Входные данные: GR (гамма), SP, resistivity, density, neutron
"""
features = ['gr', 'sp', 'res_deep', 'res_shallow', 'density', 'neutron']
X = geophysical_logs[features]
rf = RandomForestRegressor(n_estimators=200)
# Обучение на размеченных интервалах керна
# Предсказание литологии в необсаженных интервалах
return rf
חיפוש מרבצים חדשים:
- תמונות רב-ספקטרליות Sentinel-2 + גיאוכימיה → אנומליות
- עיבוד נתונים סייסמיים עם רשתות נוירונים (החלפת פירוש ידני)
- למידת העברה: מודל שאומן על מרבץ אחד מסתגל למרבץ שכן לאחר 10-20 קידוחים נוספים
כיצד אנו מייעלים תכנון כרייה
תזמון בור פתוח. בעיה: קביעת רצף חציבת בלוקים עם אילוצים על שיפועי בור, כושר ייצור וכלכלה. אנו משתמשים ב-CP-SAT מ-Google OR-Tools כדי למקסם NPV תוך התחשבות בערך הזמן של הכסף.
from ortools.sat.python import cp_model
def optimize_mining_sequence(blocks, time_periods=12, capacity_per_period=1000000):
""" Оптимизация последовательности добычи блоков.
blocks: список словарей {id, value, tonnage, predecessors}
Максимизировать NPV с учётом временной стоимости денег.
"""
model = cp_model.CpModel()
discount_rate = 0.10 / 12 # месячная ставка
# Бинарные переменные: добывается ли блок в период t
x = {}
for block in blocks:
for t in range(time_periods):
x[block['id'], t] = model.NewBoolVar(f"x_{block['id']}_{t}")
# Каждый блок добывается не более одного раза
for block in blocks:
model.AddAtMostOne([x[block['id'], t] for t in range(time_periods)])
# Ограничение производительности по периодам
for t in range(time_periods):
model.Add(
sum(x[b['id'], t] * b['tonnage'] for b in blocks) <= capacity_per_period
)
# Предшественники: нельзя добыть блок раньше вышележащего (slope stability)
for block in blocks:
for pred_id in block.get('predecessors', []):
for t in range(time_periods):
pred_extracted_by_t = sum(x[pred_id, tt] for tt in range(t + 1))
model.Add(pred_extracted_by_t >= x[block['id'], t])
# Целевая функция: NPV
objective_terms = []
for block in blocks:
for t in range(time_periods):
discounted_value = int(block['value'] / (1 + discount_rate) ** t)
objective_terms.append(x[block['id'], t] * discounted_value)
model.Maximize(sum(objective_terms))
solver = cp_model.CpSolver()
solver.parameters.max_time_in_seconds = 120
status = solver.Solve(model)
schedule = {}
if status in [cp_model.OPTIMAL, cp_model.FEASIBLE]:
for block in blocks:
for t in range(time_periods):
if solver.Value(x[block['id'], t]):
schedule[block['id']] = t
return schedule
ניהול איכות עפרות בזמן אמת
בקרת ערבוב ומיזוג. מנתחי XRF על מסוע + CV — ניתוח עפרות מקוון ללא עיכובי מעבדה. אופטימיזציית ערבוב: ערבוב עפרות מפנים שונים לייצוב הרכב בכניסה למפעל העיבוד. שיגור משאיות דינמי: עפרות בדרגה גבוהה → מפעל, עפרות בדרגה נמוכה → ערימה/מזבלה.
אופטימיזציית עיבוד. תהליך הציפה הוא לא-ליניארי, תלוי בגודל חלקיקים, ריאגנטים, pH. אופטימיזציית ML באמצעות אבולוציה דיפרנציאלית:
from scipy.optimize import differential_evolution
def optimize_flotation_reagents(ore_characteristics, current_recovery=0.82):
""" Оптимизация дозировки реагентов флотации.
Цель: максимизировать извлечение при минимальном расходе реагентов.
"""
# Суррогатная модель (обучена на исторических данных фабрики)
def flotation_model(reagents):
collector_g_t, frother_g_t, activator_g_t, ph = reagents
# Упрощённая модель (в реальности: LightGBM или GPR)
recovery = (0.75 + 0.08 * np.log(1 + collector_g_t / 50) + 0.05 * (1 - abs(ph - 10.5) / 2) + 0.02 * np.log(1 + frother_g_t / 20))
cost = collector_g_t * 0.15 + frother_g_t * 0.25 + activator_g_t * 0.10
return -(recovery - 0.001 * cost) # негатив для минимизации
bounds = [(20, 150), # collector г/т
(10, 60), # frother г/т
(0, 80), # activator г/т
(9.5, 11.5)] # pH
result = differential_evolution(flotation_model, bounds, seed=42, maxiter=200)
optimal = result.x
return {
'collector_g_t': optimal[0],
'frother_g_t': optimal[1],
'activator_g_t': optimal[2],
'ph': optimal[3],
'expected_recovery': -result.fun
} ניטור בטיחות וסביבה
ניטור גז מבוסס AI (למכרות תת-קרקעיים). צמתי חיישנים מרובים: CH4, CO, CO2, O2, H2S — נתונים היסטוריים + חיזוי ריכוז ML. גיאומכניקה: פליטה אקוסטית + ML → אזהרת מפולת סלעים 1-6 שעות מראש. מערכת ראייה ממוחשבת שלנו משפרת בטיחות כרייה על ידי זיהוי קסדה, אפוד, ואזור אסור בזרמי וידאו.
ניטור סביבתי. PM2.5/PM10 מפיצוצים ותחבורה → חיזוי פיזור ML עם נתונים מטאורולוגיים. ניטור הידרוכימיה של סכר פסולת: pH, מתכות כבדות → התראות אוטומטיות בחריגה מריכוז מרבי מותר.
MLOps לכרייה: ייעול פריסת מודלים
אנו מיישמים MLOps לכרייה כדי להפוך אימון, פריסה וניטור מודלים לאוטומטיים. הצינור שלנו משתמש ב-Feature Store (Feast), מטא-דאטה של גרסאות ב-MLflow, ו-Triton Inference Server עם בדיקות A/B אוטומטיות. זה מבטיח AI אמין וניתן להרחבה בייצור.
דיווח RAG לכרייה: ניתוח מסמכים מבוסס AI
מערכת RAG שלנו לדיווח כרייה מייצרת דוחות מקיפים ממסמכים גיאולוגיים, יומני קידוח ויומני ציוד. באמצעות LangChain ומסד נתונים וקטורי, היא עונה על שאילתות בשפה טבעית על פעולות המכרה, ומפחיתה את זמן הדיווח ב-70%.
היקף העבודה
שלבי פרויקט
| שלב | מה אנו עושים | תיעוד |
|---|---|---|
| אנליטיקה | איסוף נתונים היסטוריים, ביקורת תשתית, הערכת בשלות נתונים | דוח טכני, מפת זרימת נתונים |
| עיצוב | בחירת מחסנית (PyTorch, LangChain, vLLM), עיצוב ארכיטקטורת MLOps | עיצוב צינור נתונים, כרטיס מודל |
| פיתוח | אימון מודלים, כיוונון עדין LoRA, RAG, אינטגרציה עם SCADA/MES | תיעוד API, דוחות בדיקה |
| בדיקות | בדיקות A/B, ולידציה על נתונים היסטוריים, חוסן | דוח דיוק, שהות P99 |
| פריסה | Docker/Kubernetes, Triton Inference Server, ניטור | מדריך פריסה, runbook |
| תמיכה | ניטור 24/7, אימון מחדש, עדכוני צינור | SLA, לוח זמנים לאימון מחדש |
צינור הנתונים בנוי כך: אנו מתחילים במלאי מקורות (SCADA, מסדי נתונים גיאולוגיים, נתוני חיישנים). זרם דרך Apache Kafka או MQTT, ניקוי ואגרגציה ב-Data Lake (S3/MinIO). לאימון אנו משתמשים ב-Feature Store (Feast), מטא-דאטה של גרסאות ב-MLflow. מודלים מוגשים דרך Triton עם בדיקות A/B אוטומטיות. אימון מחדש מתרחש לפי לוח זמנים או על סמך סחיפת נתונים המנוטרת עם Evidently.
כיצד לפרוס AI במפעל כרייה
- ביקורת נתונים ותשתית. איסוף טלמטריה מ-6-12 החודשים האחרונים, בדיקת איכות ושלמות.
- בניית תאום דיגיטלי. מודל ציוד או מרבץ על בסיס נתונים היסטוריים.
- אימון מודלים. שימוש בלמידת העברה וכיוונון עדין LoRA להתאמה מהירה.
- אינטגרציה עם SCADA/MES. הגדרת זרמי נתונים בזמן אמת וערוצי התראות.
- פריסת פיילוט. השקה על סוג ציוד אחד, תוך 2-3 חודשים תיעוד הפחתת השבתות.
- הרחבה. פריסה לצמתים ואתרים נוספים.
לוח זמנים משוער
מ-2-3 חודשים לאבחון חזוי של סוג ציוד אחד ועד 6-9 חודשים לפלטפורמת AI מקיפה. העלות מחושבת באופן פרטני לפי נפח נתונים, מספר מודלים ומורכבות אינטגרציה. ROI תוך 12 חודשים. בקשו ייעוץ — נעריך את הפרויקט שלכם תוך 1-2 ימים. צרו קשר לדיון בפרטים.
טעויות אופייניות וכיצד אנו נמנעים מהן
- נתונים גולמיים. טלמטריה מכילה לעיתים קרובות פערים ורעש. אנו משתמשים ב-Isolation Forest לניקוי עם אנסמבל של מודלים.
- התעלמות מגיאומטריית הבור. תכנון שוכח לעיתים קרובות את זווית השיפוע. מודלי CP-SAT שלנו כוללים קודמים ליציבות שיפוע.
- מודלים סטטיים. דפוסי תקלות משתנים עם שחיקת ציוד. אנו מגדירים אימון מחדש אוטומטי כל שבועיים באמצעות MLflow.
שלחו בקשה — יחד נמצא פתרון למפעל שלכם. אנו מבטיחים הפחתה של 30% בהשבתות ו-ROI תוך 12 חודשים.
למדו עוד על תחזוקה חזויה בוויקיפדיה.







