76_SolarForecast - Informationen/Ideen zu Weiterentwicklung und Support

Begonnen von DS_Starter, 11 Februar 2024, 14:11:00

Vorheriges Thema - Nächstes Thema

300P

Anderes Thema -
Versprochener Ergebnisbericht nach download / shutdown / restart / retrain mit der neuen V2.3.1 von gestern Abend

Informationen zum neuronalen Netz der Verbrauchsvorhersage

letztes KI-Training: 11.03.2026 08:59:06 / Laufzeit in Sekunden: 2952
KI Abfragestatus: ok
letzte KI-Ergebnis Generierungsdauer: 76.73 ms
Verbrauchernummer Wärmepumpe: 08

=== Modellparameter ===

Normierungsgrenzen: PV=16071 Wh, Hausverbrauch: Min=0 Wh / Max=7598 Wh
Trainingsdaten: 7944 Datensätze (Training=6355, Validation=1589)
Architektur: Inputs=98, Hidden Layers=80-40, Outputs=1
Hyperparameter: Learning Rate=0.001, Momentum=0.6, BitFail-Limit=0.18
Aktivierungen: Hidden=GAUSSIAN_SYMMETRIC, Steepness=1.0, Output=LINEAR
Trainingsalgorithmus: INCREMENTAL, Registry Version=v1_heatpump_active_pv
Zufallsgenerator: Mode=1, Period=20

=== Trainingsmetriken ===

bestes Modell bei Epoche: 208 (max. 15000)
Training MSE: 0.003919
Validation MSE: 0.003589
Validation MSE Average: 0.007856
Validation MSE Standard Deviation: 0.000391
Validation Bit_Fail: 7
Model Bias: 51 Wh
Model Slope: 0.9
Trainingsbewertung: Retrain

=== Fehlermaße der Prognosen ===

MAE: 355.96 Wh
MedAE: 293.28 Wh
RMSE: 407.60 Wh
RMSE relative: 19 %
RMSE Rating: excellent
MAPE: 18.27 %
MdAPE: 14.10 %
R²: 0.72

=== Rauschen ===

Rauschen Bewertung: low

 ChatGPT meint dazu:
## Analyse des neuesten Trainings (11.03.2026, SolarForecast 2.3.1)

Die aktuelle Konfiguration zeigt eine **klare Verbesserung der Modellkalibrierung**, während die Prognosegüte im Wesentlichen stabil bleibt.

---

# 1. Trainingsstabilität

| Kennzahl             | Wert     | Bewertung     |
| -------------------- | -------- | ------------- |
| Training MSE         | 0.003919 | normal        |
| Validation MSE       | 0.003589 | sehr gut      |
| Val/Train Verhältnis | ~0.92    | ausgezeichnet |
| Validation Std       | 0.000391 | sehr stabil   |
| BitFail              | 7        | moderat       |

**Interpretation**

* Validation-Fehler liegt **unter dem Trainingsfehler** → gute Generalisierung.
* Sehr kleine Standardabweichung zeigt ein **stabiles Modell**.
* Bestes Modell bereits bei **Epoche 208** → schnelle Konvergenz.

Das Trainingsverhalten ist damit **sehr sauber**.

---

# 2. Prognosequalität

| Kennzahl     | Wert      |
| ------------ | --------- |
| MAE          | 355.96 Wh |
| RMSE         | 407.60 Wh |
| RMSE relativ | 19 %      |
| MAPE         | 18.27 %   |
| R²           | 0.72      |

Diese Werte sind **nahezu identisch zum letzten Training**.

Interpretation:

* Modell ist **konvergiert**.
* Weitere große Verbesserungen sind mit gleicher Architektur unwahrscheinlich.

Für eine Wärmepumpen-Lastprognose im Haushalt ist:

**RMSE ~400 Wh bei Max ~7600 Wh → technisch gut.**

---

# 3. Wichtigste Verbesserung: Kalibrierung

| Kennzahl | vorher | jetzt     |
| -------- | ------ | --------- |
| Bias     | 404 Wh | **51 Wh** |
| Slope    | 0.80   | **0.90**  |

Das ist die **entscheidende Verbesserung**.

### Bias

Vorher:

```
systematische Überschätzung
```

Jetzt:

```
Bias ≈ 0
```

Das Modell ist praktisch **unbiased**.

### Slope

Vorher:

```
Peak-Kompression
```

Jetzt:

```
0.9 → deutlich bessere Amplitudenabbildung
```

Die Prognosen folgen dem realen Verbrauch **realistischer**.

---

# 4. Fehlerverteilung

Aus MAE und RMSE lässt sich abschätzen:

```
RMSE / MAE ≈ 1.14
```

Das bedeutet:

* relativ **kompakte Fehlerverteilung**
* **keine schweren Ausreißer**

Das ist ein gutes Zeichen für Stabilität.

---

# 5. BitFail-Analyse

| Wert              | Bewertung            |
| ----------------- | -------------------- |
| BitFail = 7       | leicht über Schwelle |
| Limit = 0.18      | relativ streng       |
| Empfehlung System | **0.28**             |

Die Retrain-Empfehlung entsteht fast sicher durch:

```
BitFail > Limit
```

Technisch ist das Modell aber **nicht problematisch**.

Empfehlung:

```
aiConBitFailLimit = 0.22 – 0.25
```

Damit würde der automatische Retrain realistischer arbeiten.

---

# 6. Einfluss der neuen SolarForecast-Version

Die Änderung von **2.3.x** wirkt sich hier vermutlich auf:

* Trainingsdatenaufbereitung
* Feature-Selektion
* Sample-Handling

aus.

Indiz dafür ist:

* deutlich verbesserter **Bias**
* schnelleres **Training (Epoche 208)**.

---

# 7. Modellkapazität

Aktuelle Struktur:

```
Inputs: 98
Hidden: 80-40
Samples: ~7900
```

Parameterabschätzung:

```
98*80  ≈ 7840
80*40  ≈ 3200
40*1   ≈ 40
----------------
~11000 Gewichte
```

Bei ~7900 Samples ist das **noch akzeptabel**, aber bereits relativ dicht.

Das erklärt:

* frühe Konvergenz
* stabile Fehlerwerte.

---

# 8. Gesamtbewertung

| Bereich             | Bewertung      |
| ------------------- | -------------- |
| Trainingsstabilität | sehr gut       |
| Prognosefehler      | gut            |
| Kalibrierung        | **sehr gut**   |
| Bias                | **fast ideal** |
| Drift               | unkritisch     |
| Robustheit          | gut            |

Das Modell ist jetzt **praktisch produktionsreif**.

---

# 9. Empfehlung für deine aktuelle Konfiguration

Deine Parameter sind bereits sinnvoll:

```
ActFunc = GAUSSIAN_SYMMETRIC
HiddenLayers = 80-40
LearnRate = 0.001
Momentum = 0.6
ShuffleMode = 1
TrainAlgo = INCREMENTAL
```

Einzige sinnvolle Anpassung:

```
aiConBitFailLimit 0.23
```

Alles andere würde vermutlich **keinen messbaren Gewinn mehr bringen**.

---

# 10. Fazit

Die Entwicklung über die letzten Trainingsläufe zeigt eine klare Optimierung:

| Training       | R²       | Bias      | RMSE       |
| -------------- | -------- | --------- | ---------- |
| Februar Modell | 0.60     | 523 Wh    | 443 Wh     |
| 01.03 Modell   | 0.72     | 404 Wh    | 402 Wh     |
| 11.03 Modell   | **0.72** | **51 Wh** | **408 Wh** |

Der größte Fortschritt ist:

**Die Kalibrierung des Modells ist jetzt nahezu korrekt.**

Damit ist dieses Modell **das bisher beste deiner Reihe**.

---

Wenn du möchtest, kann ich auch noch zeigen, warum gerade bei **Wärmepumpen + PV-Eigenverbrauch** ein
R² von etwa **0.7–0.8 meist die praktische Obergrenze** für solche neuronalen Prognosen ist.
Das hat physikalische Gründe und erklärt, warum dein Modell jetzt bereits ziemlich nahe am Optimum arbeitet.


Anpassung auf aiConBitFailLimit 0.23 nehme ich noch nicht vor - ich möchte erst die Berechnung des Drift von diesem Tag abwarten......
Aktuell liege ich bei -25 % aber das sollte sich in der Theorie am Donnerstag dann etwas verbessern wenn ein ganzer Tag mit dem neuen Wert gelaufen ist.
Gruß
300P

FHEM 6.4|RPi|SMAEM|SMAInverter|SolarForecast|DbLog|DbRep|MariaDB|Buderus-MQTT_EMS|
Fritzbox|fhempy|JsonMod|HTTPMOD|Modbus ser+TCP|ESP32-Digitizer-AI_on_the_Edge|ESP32CAM usw.

denis.robel

Zitat von: DS_Starter am 09 März 2026, 19:57:50Hallo Denis,

dein Konstrukt ist wahrscheinlich Neuland im SF-Umfeld.
Ich habe mir die Darstellungen des Zendure Balkonfraftwerk mit SolarHub2000 im Inet angeschaut und es könnte folgendermaßen funktionieren.

setupInverterDev01 und setupInverterDev02 ergänzt du mit einem setupBatteryDev01.

Dabei ist setupInverterDev01 der SolarHub2000 (Typ Solar-Ladegerät in SF). Dazu gehört noch setupBatteryDev01, wobei hier vermutlich ebenfalls Werte aus dem SolarHub2000 zugeordnet werden. Die Inhalte von pvOut, pin, pout siehst du im Beitrag zuvor.

Dann legst du noch setupInverterDev02 als Typ Batterie-Wechselrichter an, der die Verbindung vom SolarHub2000 zum Hausnetz realisiert. Ein Batterie-Wechselrichter wird durch strings=none aktiviert und hat nur die Anschlüsse ac2dc bzw. dc2ac. Bei dir dürfte nur dc2ac relevant sein und sollte die Summe aus pout + (pvOut - pin) enthalten.

Wenn du damit erfolgreich deine Anlage einrichten konntest, wäre es sicherlich einen Beitrag im Wiki wert.

LG,
Heiko


Hallo Heiko,

ich hab es hinbekommen. Der Energiefluss wird richtig dargestellt.
Mir fehlt nur noch ein Zähler für etotal.

Wenn alles läuft, kann ich gerne etwas für das Wiki schreiben.
VG

Denis