predictive-maintenance

German Version

Beschreibung der Funktion predict_time_to_failure V6

Die Funktion predict_time_to_failure ist ein integraler Bestandteil eines Predictive-Maintenance-Systems, das die Zeit und den Kilometerstand bis zum nächsten Defekt basierend auf Anomalien in Sensordaten vorhersagt. Sie liefert Vorhersagen sowohl für einzelne Sensortypen als auch über alle Sensortypen hinweg, wobei die Gesamtvorhersage als verschachteltes Element in der Ergebnisstruktur enthalten ist.


Zweck

Die Funktion hat zwei Hauptziele:

  1. Vorhersage auf Sensortyp-Ebene:
    • Erkennung von Zeit- und Kilometerstandsmustern basierend auf Anomalien für jeden einzelnen Sensortyp.
  2. Gesamtvorhersage:
    • Kombinierte Analyse der Zeit- und Kilometerdifferenzen aller Anomalien über alle Sensortypen hinweg.

Parameter

  1. sensor_df (Pandas DataFrame):
    • Enthält die Sensordaten eines Fahrzeugs.
    • Erforderliche Spalten:
      • sensorType: Typ des Sensors (z. B. Temperatur, Druck).
      • timestamp: Zeitpunkt der Messung.
      • anomaly: Markierung, ob die Messung eine Anomalie darstellt (1 für Anomalie, 0 für normal).
      • mileage: Kilometerstand zum Zeitpunkt der Messung.

Rückgabewerte

Ein Dictionary, das folgende Schlüssel enthält:


Funktionsweise: Schritt-für-Schritt

1. Datenüberprüfung

Die Funktion überprüft, ob alle erforderlichen Spalten im DataFrame vorhanden sind:

required_columns = ["sensorType", "timestamp", "anomaly", "mileage"]
for col in required_columns:
    if col not in sensor_df.columns:
        raise ValueError(f"Die Spalte '{col}' fehlt im DataFrame.")

2. Zeitstempel-Konvertierung

Die timestamp-Spalte wird in numerische Werte (Sekunden seit der Unix-Epoche) umgewandelt, um Zeitdifferenzen berechnen zu können:

sensor_df['timestamp_numeric'] = pd.to_datetime(sensor_df['timestamp']).astype(int) // 10**9

3. Iteration durch Sensortypen

Für jeden sensorType im DataFrame:

  1. Filterung der Anomalien:
    • Es werden nur die Datensätze mit anomaly == 1 berücksichtigt.
  2. Zeit- und Kilometerstandsdifferenzen berechnen:
    • Differenzen zwischen den timestamp_numeric- und mileage-Werten werden berechnet:
      anomalies["time_diff"] = anomalies["timestamp_numeric"].diff().fillna(0)
      anomalies["mileage_diff"] = anomalies["mileage"].diff().fillna(0)
      
  3. Lineare Modelle erstellen:
    • Zwei separate Modelle für Zeit- und Kilometerdifferenzen:
      time_model = LinearRegression()
      mileage_model = LinearRegression()
      time_model.fit(X, time_y)
      mileage_model.fit(X, mileage_y)
      
    • Vorhersage der nächsten Zeit- und Kilometerstandsdifferenz:
      time_prediction = time_model.predict([[len(anomalies)]])[0]
      mileage_prediction = mileage_model.predict([[len(anomalies)]])[0]
      
  4. Ergebnisse speichern:
    • Ergebnisse werden in einer Liste gespeichert:
      results["time_to_failure"].append({
          "sensor_type": sensor_type,
          "vehicle_id": self.vehicle_id,
          "prediction": {
              "time_to_next_failure": f"{time_prediction:.2f} Sekunden bis zur nächsten Anomalie",
              "mileage_to_next_failure": f"{mileage_prediction:.2f} km bis zur nächsten Anomalie"
          }
      })
      

4. Gesamtanalyse

Für alle Anomalien über alle Sensortypen hinweg:

  1. Zeit- und Kilometerdifferenzen berechnen:
    • Sortierung und Berechnung der Differenzen:
      time_differences = np.diff(all_anomaly_timestamps)
      mileage_differences = np.diff(all_anomaly_mileages)
      
  2. Lineare Modelle erstellen:
    • Ähnlich wie bei den Sensortypen, aber für alle Anomalien kombiniert.
  3. Gesamtvorhersage speichern:
    • Die Gesamtvorhersage wird als verschachteltes Element hinzugefügt:
      results["time_to_failure"].append({
          "sensor_type": "overall_prediction",
          "vehicle_id": self.vehicle_id,
          "prediction": {
              "time_to_next_failure": f"{overall_time_prediction:.2f} Sekunden bis zur nächsten Anomalie",
              "mileage_to_next_failure": f"{overall_mileage_prediction:.2f} km bis zur nächsten Anomalie"
          }
      })
      

Beispiel

Input: Sensordaten

| sensorType | timestamp | value | mileage | anomaly | |————-|———————|——-|———|———| | temperature | 2024-01-01 12:00:00 | 150 | 12000 | 1 | | temperature | 2024-01-01 12:10:00 | 160 | 12050 | 1 | | pressure | 2024-01-01 12:05:00 | 300 | 12030 | 1 | | temperature | 2024-01-01 12:20:00 | 170 | 12100 | 1 |

Output

{
    "time_to_failure": [
        {
            "sensor_type": "temperature",
            "vehicle_id": "V001",
            "prediction": {
                "time_to_next_failure": "600.00 Sekunden bis zur nächsten Anomalie",
                "mileage_to_next_failure": "50.00 km bis zur nächsten Anomalie"
            }
        },
        {
            "sensor_type": "pressure",
            "vehicle_id": "V001",
            "prediction": {
                "time_to_next_failure": "Nicht genug Daten, um die Zeit bis zum nächsten Defekt vorherzusagen.",
                "mileage_to_next_failure": "Nicht genug Daten, um den Kilometerstand bis zum nächsten Defekt vorherzusagen."
            }
        },
        {
            "sensor_type": "overall_prediction",
            "vehicle_id": "V001",
            "prediction": {
                "time_to_next_failure": "450.00 Sekunden bis zur nächsten Anomalie (über alle Sensortypen)",
                "mileage_to_next_failure": "40.00 km bis zur nächsten Anomalie (über alle Sensortypen)"
            }
        }
    ]
}

Stärken der Funktion

  1. Flexibilität:
    • Vorhersagen sind auf Sensortyp-Ebene und übergreifend verfügbar.
  2. Integration von Zeit und Kilometerstand:
    • Liefert umfassende Informationen für die Wartungsplanung.
  3. Strukturierte Ergebnisse:
    • Alle Vorhersagen werden konsistent und leicht zugänglich bereitgestellt.

Verbesserungsvorschläge

  1. Robustheit bei wenigen Daten:
    • Erweiterung um alternative Methoden, falls nicht genügend Anomalien vorhanden sind.
  2. Dynamische Modellwahl:
    • Automatische Auswahl des besten Modells (z. B. nicht-lineare Modelle) basierend auf den Daten.
  3. Visualisierung:
    • Hinzufügen von Diagrammen zur besseren Darstellung der Vorhersagen.

Lizenz

Autor: Jörg Harzmann

Dieser Inhalt ist unter einer CC BY-NC Lizenz veröffentlicht. Jeglicher Quellcode ist urheberrechtlich geschützt!