76_SolarForecast - Informationen/Ideen zu Weiterentwicklung und Support

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

Vorheriges Thema - Nächstes Thema

DS_Starter

ZitatJa aber die prognostizierten 2 kWh können (nicht) die die Differenz zum fehlenden Differenzbetrag ausgleichen...
Es gibt keine direkten proportionalen Zusammenhänge. Die implementierten Semantiken können verstärken und abschwächen. Ich werde versuchen die Blöcke noch etwas besser zu organsisieren.
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

300P

Ich lasse aktuell jetz noch den Standhaushalt laufen. Mal sehen was da im Vergleich zu den anderen kommt.........

Ergebnis (geschätzt) so in 1.5 h anstehend.
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.

300P

PS:
Kann es sein das der "normale" CO-Forecast schon nur allein deshalb besser und treffsicherer ist, weil da nur aufgrund zeitnaher Verbräuche geschätzt wird ?
->> 'consForecastLastDays=14' ist so gesetzt bei mir?

Klar - wenn da sehr schnell hohe Verbrauchsveränderungen sind dauert es auch ein paar Tage ehe es wieder "besser passt" - aber die Differenzen waren bislang bei mir nie so hoch.
Ich will aber auch hiermit nicht den aktuellen Projektstatus für den NN-Verbrauchsforcast komplett verteufeln / anzweifeln...
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.

DS_Starter

#4848
Meine Legacy-Verbrauchsprognose - die wir schon lange in Benutzung haben - arbeitet ja nicht schlecht und da bin ich auch ein wenig stolz darauf  ;) . Ganz ehrlich, KI ist kein Allheilmittel. Deswegen soll FANN auch nur optional auswählbar oder als Unterstützung (aiConAlpha=X) verfügbar sein. Auch deswegen ist der Code-Beitrag von Klaus wertvoll um ihn in den Legacy-Code mit einzubauen.

FANN arbeitet tatsächlich nicht schlecht und angesichts der wirklich schwierig umzusetzenden Verbrauchsprognose finde ich die Ergebnisse beachtlich. Vielleicht nicht für jeden Haushalt, das steht außer Frage. 

Was deine Bemerkung betrifft ... ja, halte ich für durchaus folgerichtig.
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

300P

Hier das letzte Ergebnis bei mir:
(auch um ca. 50 % zu gering - vor allem in der Nacht)

aiConProfile=v1_common

Informationen zum neuronalen Netz der Verbrauchsvorhersage

letztes KI-Training: 10.01.2026 17:01:14 / Laufzeit in Sekunden: 5562
KI Abfragestatus: ok
letzte KI-Ergebnis Generierungsdauer: 47.54 ms
Verbrauchernummer Wärmepumpe: 08

=== Modellparameter ===

Normierungsgrenzen: PV=16071 Wh, Hausverbrauch: Min=0 Wh / Max=7598 Wh
Trainingsdaten: 6954 Datensätze (Training=5563, Validierung=1391)
Architektur: Inputs=38, Hidden Layers=80-40-20, Outputs=1
Hyperparameter: Learning Rate=0.005, Momentum=0.8, BitFail-Limit=0.35
Aktivierungen: Hidden=SIGMOID, Steilheit=0.5, Output=LINEAR
Trainingsalgorithmus: INCREMENTAL, Registry Version=v1_common
Zufallsgenerator: Mode=2, Periode=10

=== Trainingsmetriken ===

bestes Modell bei Epoche: 6330 (von max. 15000)
Training MSE: 0.003666
Validation MSE: 0.012393
Validation MSE Average: 0.017017
Validation MSE Standard Deviation: 0.000479
Validation Bit_Fail: 1
Model Bias: 824 Wh
Model Slope: 0.4
Trainingsbewertung: Retrain

=== Fehlermaße der Prognosen ===

MAE: 664.97 Wh
MedAE: 512.87 Wh
RMSE: 832.62 Wh
RMSE relative: 38 %
RMSE Rating: very bad
MAPE: 29.98 %
MdAPE: 27.16 %
R²: 0.04

=== Drift-Kennzahlen ===

Drift Score: -
Drift RMSE relative: -
Drift Bias: -
Drift Slope: -
Drift Bewertung: -



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.

300P

Zitat von: DS_Starter am 10 Januar 2026, 17:04:05Meine Legacy-Verbrauchsprognose - die wir schon lange in Benutzung haben - arbeitet ja nicht schlecht und da bin ich auch ein wenig stolz darauf  ;) .

.....das kannst du auch zu 100 % sein !!!!!!!!!!!!!!!!
Du darfst diesen Dateianhang nicht ansehen.
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.

DS_Starter

Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

300P

Da wurde "leider" in der Zeit die letzte Variante berechnet und das "normal" Berechnete dadurch protokolliert  ;)
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.

300P

Soll ich mal einfach ein paar Tage nur laufen lassen - mal schauen ob sich was tut ?
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.

DS_Starter

Es reichen erstmal 1-2 Stunden. Möglicherweise greift die Trendfolge sobald Differenzen zur Vorstunde bemerkt werden.
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

DS_Starter

Ich habe deine Einstellungen mal durch die KI gejagt und vermutlich passt die Einstellung nicht:


### 1. Steepness für SIGMOID

Mit Steepness steuerst du, wie stark das Netz auf Unterschiede in den Netzeingängen reagiert.

- **Zu klein (0.3–0.7):** 
  Netz wird träge, Peaks werden glattgebügelt, Lows aufgefüllt → das, was du gerade siehst.
- **Zu groß (≥ 1.5–2.0):** 
  Aktivierung wird sehr steil, viele Neuronen schnell in Sättigung (nahe 0 oder 1) → kann zu instabilem Lernen führen.

Für deine Semantik (Delta, Trends, Volatilität, Tagesklassen) ist sinnvoll:

- **Empfehlung:**
  - **Steepness: `1.0` bis `1.2`** 
    - `1.0`: guter Standard, genug Reaktionsfähigkeit 
    - `1.2`: etwas schärfer, betont Peaks stärker, aber noch beherrschbar

Damit:
- bleiben Peaks sichtbar, 
- werden Lows nicht aufgefüllt, 
- bleibt das Netz trainierbar ohne massives Sättigungsproblem.

---

### 2. Momentum für ,,lebendiges" Verhalten

Momentum entscheidet, wie sehr das Netz ,,an seiner bisherigen Richtung festhält".

- **Zu niedrig (0.0–0.2):** 
  Netz wird nervös, zittert, reagiert stark lokal auf Noise.
- **Zu hoch (0.8–0.9):** 
  Netz wird schwerfällig, trägt alte Muster zu lange weiter, kann über Ziele hinausschießen → das ,,träger Zug"-Verhalten.

Für deine relativ saubere, semantisch vorbereitete Featurewelt (kein brutales Rauschen, sondern strukturierte Inputs):

- **Empfehlung:**
  - **Momentum: `0.4` bis `0.6`**
    - `0.5` ist ein sehr guter Sweet Spot:
      - genug Glättung der Gradienten 
      - aber immer noch reaktionsfähig für neue Peaks und Lows 

---

### 3. Kombination, die ich dir konkret vorschlagen würde

Für deine aktuellen Modelle (v1_common / v1_common_active / hp-Profile):

- **SIGMOID hidden:**
  - **Steepness: `1.0` oder `1.2`**
- **Momentum:**
  - **`0.5`**

Wenn du es leicht differenzieren willst:

- **Variante ,,etwas glatter" (Standardhaushalt ohne extreme Volatilität):**
  - Steepness = `1.0` 
  - Momentum = `0.5`

- **Variante ,,lebendiger / peak-betont" (WP‑Haushalt, viel Aktivität):**
  - Steepness = `1.2` 
  - Momentum = `0.4–0.5`

---

### 4. Woran du erkennst, dass es passt

Mit diesen Werten solltest du in den Tagesverläufen sehen:

- Mittagsspitze klar erkennbar, nicht plattgedrückt 
- Abendpeak sichtbar, aber nicht überschießend 
- Nachtlast ruhig und niedrig 
- keine ,,Plateaus", wo eigentlich Bewegung sein sollte 
- Slope näher an 1, ohne dass MAE/RMSE explodieren

Ganz unten steht die Empfehlung für WP-Haushalt:

- **Variante ,,lebendiger / peak-betont" (WP‑Haushalt, viel Aktivität):**
  - Steepness = `1.2` 
  - Momentum = `0.4–0.5`
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

300P

aktuell
aiConActivate=1
aiConAlpha=1
aiConTrainStart=1:2
aiConActFunc=SIGMOID
aiConHiddenLayers=80-40-20
aiConLearnRate=0.005
aiConMomentum=0.8
aiConShuffleMode=2
aiConSteepness=0.5
aiConTrainAlgo=INCREMENTAL
aiConProfile=v1_common

neu gesetzt okay ??
aiConActivate=1
aiConAlpha=1
aiConTrainStart=1:2
aiConActFunc=SIGMOID
aiConHiddenLayers=40-20
aiConLearnRate=0.001 ### (laut chaptGT 0.001 oder 0.0007 für modulierende WP besser)
aiConMomentum=0.6 ### (laut chaptGT 0.6–0.65 für modulierende WP besser)
aiConShuffleMode=1   ###
aiConSteepness=1.2    ####
aiConTrainAlgo=INCREMENTAL
aiConProfile=v1_heatpump_pv    ####

Damit würde ich erneut die 3 Versionen berechnen lassen




EDI:
ChatGPT Bemerkungen hinzu




Ergebnis 1:
Registry Version=v1_heatpump_pv

Informationen zum neuronalen Netz der Verbrauchsvorhersage
letztes KI-Training: 10.01.2026 19:26:34 / Laufzeit in Sekunden: 2971
KI Abfragestatus: ok
letzte KI-Ergebnis Generierungsdauer: 49.68 ms
Verbrauchernummer Wärmepumpe: 08

=== Modellparameter ===

Normierungsgrenzen: PV=16071 Wh, Hausverbrauch: Min=0 Wh / Max=7598 Wh
Trainingsdaten: 6957 Datensätze (Training=5565, Validierung=1392)
Architektur: Inputs=71, Hidden Layers=40-20, Outputs=1
Hyperparameter: Learning Rate=0.001, Momentum=0.6, BitFail-Limit=0.35
Aktivierungen: Hidden=SIGMOID, Steilheit=1.2, Output=LINEAR
Trainingsalgorithmus: INCREMENTAL, Registry Version=v1_heatpump_pv
Zufallsgenerator: Mode=1, Periode=10

=== Trainingsmetriken ===

bestes Modell bei Epoche: 6029 (von max. 15000)
Training MSE: 0.002917
Validation MSE: 0.012913
Validation MSE Average: 0.015247
Validation MSE Standard Deviation: 0.000861
Validation Bit_Fail: 6
Model Bias: 900 Wh
Model Slope: 0.4
Trainingsbewertung: Retrain

=== Fehlermaße der Prognosen ===

MAE: 634.18 Wh
MedAE: 419.35 Wh
RMSE: 803.60 Wh
RMSE relative: 36 %
RMSE Rating: very bad
MAPE: 26.64 %
MdAPE: 23.09 %
R²: 0.01

=== Drift-Kennzahlen ===

Drift Score: -
Drift RMSE relative: -
Drift Bias: -
Drift Slope: -
Drift Bewertung: -



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.

DS_Starter

Mir fällt gerade auf:

Model Bias: 900 Wh

Die autom. Bias Korrektur drückt dann systematisch die Ergebnisse ca. um 900 Wh nach unten.
Diese Autokorr werde ich ändern.

aiConLearnRate=0.001 ist zwar sehr stabil, aber auch langsam. Würde ich beim Standard lassen und nur Momentum und Steepness anpassen wie du es bereits hast, evtl. Momentum 0.4.
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

300P

Zitat von: DS_Starter am 10 Januar 2026, 20:10:54Die autom. Bias Korrektur drückt dann systematisch die Ergebnisse ca. um 900 Wh nach unten.
Diese Autokorr werde ich ändern.
Dann kämen wir ja nach dieser Korrektur ca. so in Richtung 70 - 90 % des realen Verbrauchs bei mir hin..... :o 
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.

DS_Starter

Hast du eigentlich viele Ausreißer in den Rohdaten?
Siehst du im Trainingslog am Anfang ->

2026.01.09 11:38:50.299 1: SolCast DEBUG> AI FANN - There are 504 Records skipped due to incomplete or invalid data. Index:
...
2026.01.09 11:38:50.312 1: SolCast DEBUG> AI FANN - Target-Norm: raw_max=8581, p99=3585, p99.5=7957, targmaxval=10344
2026.01.09 11:38:50.314 1: SolCast DEBUG> AI FANN - True Outliers above p99.5 (7957): 8581
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter