mirror of
				https://github.com/Akkudoktor-EOS/EOS.git
				synced 2025-11-04 00:36:21 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			1412 lines
		
	
	
		
			26 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			1412 lines
		
	
	
		
			26 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
import numpy as np
 | 
						|
import pytest
 | 
						|
 | 
						|
from akkudoktoreos.class_optimize import optimization_problem
 | 
						|
 | 
						|
# Sample known result (replace with the actual expected output)
 | 
						|
EXPECTED_RESULT = {
 | 
						|
    "discharge_hours_bin": [
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        0,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        0,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        0,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        0,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
    ],
 | 
						|
    "eautocharge_hours_float": [
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0.0,
 | 
						|
        0.0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0.0,
 | 
						|
        0.0,
 | 
						|
    ],
 | 
						|
    "result": {
 | 
						|
        "Last_Wh_pro_Stunde": [
 | 
						|
            0.0,
 | 
						|
            1063.91,
 | 
						|
            1320.56,
 | 
						|
            1132.03,
 | 
						|
            1163.67,
 | 
						|
            1176.82,
 | 
						|
            1216.22,
 | 
						|
            1103.78,
 | 
						|
            1129.12,
 | 
						|
            1178.71,
 | 
						|
            1050.98,
 | 
						|
            988.56,
 | 
						|
            912.38,
 | 
						|
            704.61,
 | 
						|
            516.37,
 | 
						|
            868.05,
 | 
						|
            694.34,
 | 
						|
            608.79,
 | 
						|
            556.31,
 | 
						|
            488.89,
 | 
						|
            506.91,
 | 
						|
            804.89,
 | 
						|
            1141.98,
 | 
						|
            1056.97,
 | 
						|
            992.46,
 | 
						|
            1155.99,
 | 
						|
            827.01,
 | 
						|
            1257.98,
 | 
						|
            1232.67,
 | 
						|
            871.26,
 | 
						|
            860.88,
 | 
						|
            1158.03,
 | 
						|
            1222.72,
 | 
						|
            1221.04,
 | 
						|
            949.99,
 | 
						|
            987.01,
 | 
						|
            733.99,
 | 
						|
            592.97,
 | 
						|
        ],
 | 
						|
        "Netzeinspeisung_Wh_pro_Stunde": [
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            2924.2707438016537,
 | 
						|
            2753.66,
 | 
						|
            1914.18,
 | 
						|
            813.95,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            1311.3858057851144,
 | 
						|
            497.68000000000006,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
        ],
 | 
						|
        "Netzbezug_Wh_pro_Stunde": [
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
        ],
 | 
						|
        "Kosten_Euro_pro_Stunde": [
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
        ],
 | 
						|
        "akku_soc_pro_stunde": [
 | 
						|
            80.0,
 | 
						|
            79.91107093663912,
 | 
						|
            78.99070247933885,
 | 
						|
            79.08956914600552,
 | 
						|
            95.27340247933884,
 | 
						|
            100.0,
 | 
						|
            100.0,
 | 
						|
            100.0,
 | 
						|
            100.0,
 | 
						|
            99.26162190082644,
 | 
						|
            96.11376549586775,
 | 
						|
            91.89251893939392,
 | 
						|
            87.96526342975206,
 | 
						|
            84.93233471074379,
 | 
						|
            82.70966769972449,
 | 
						|
            78.97322658402202,
 | 
						|
            75.98450413223138,
 | 
						|
            73.36402376033054,
 | 
						|
            70.96943870523413,
 | 
						|
            68.86505681818178,
 | 
						|
            66.68310950413219,
 | 
						|
            63.24022899449031,
 | 
						|
            59.76919765840215,
 | 
						|
            58.25555268595038,
 | 
						|
            58.684419352617034,
 | 
						|
            60.18041935261703,
 | 
						|
            64.6149860192837,
 | 
						|
            65.19921935261704,
 | 
						|
            80.15195268595036,
 | 
						|
            92.42761935261704,
 | 
						|
            99.64985268595038,
 | 
						|
            100.0,
 | 
						|
            100.0,
 | 
						|
            98.89101239669421,
 | 
						|
            96.45174758953168,
 | 
						|
            92.20325413223141,
 | 
						|
            89.04386191460057,
 | 
						|
            86.4914772727273,
 | 
						|
        ],
 | 
						|
        "Einnahmen_Euro_pro_Stunde": [
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.20469895206611574,
 | 
						|
            0.19275619999999996,
 | 
						|
            0.1339926,
 | 
						|
            0.0569765,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.091797006404958,
 | 
						|
            0.0348376,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
        ],
 | 
						|
        "Gesamtbilanz_Euro": np.float64(-0.7150588584710738),
 | 
						|
        "E-Auto_SoC_pro_Stunde": [
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
        ],
 | 
						|
        "Gesamteinnahmen_Euro": np.float64(0.7150588584710738),
 | 
						|
        "Gesamtkosten_Euro": np.float64(0.0),
 | 
						|
        "Verluste_Pro_Stunde": [
 | 
						|
            0.0,
 | 
						|
            2.817272727272737,
 | 
						|
            29.157272727272726,
 | 
						|
            3.5592000000000112,
 | 
						|
            582.6179999999995,
 | 
						|
            170.1575107438016,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            23.391818181818195,
 | 
						|
            99.72409090909093,
 | 
						|
            133.72909090909081,
 | 
						|
            124.41545454545451,
 | 
						|
            96.08318181818186,
 | 
						|
            70.41409090909087,
 | 
						|
            118.37045454545455,
 | 
						|
            94.68272727272722,
 | 
						|
            83.01681818181817,
 | 
						|
            75.86045454545456,
 | 
						|
            66.66681818181814,
 | 
						|
            69.12409090909085,
 | 
						|
            109.0704545454546,
 | 
						|
            109.96227272727276,
 | 
						|
            47.952272727272714,
 | 
						|
            15.439199999999985,
 | 
						|
            53.855999999999995,
 | 
						|
            159.6443999999999,
 | 
						|
            21.032399999999996,
 | 
						|
            538.2984000000001,
 | 
						|
            441.924,
 | 
						|
            260.0003999999999,
 | 
						|
            12.605303305786279,
 | 
						|
            0.0,
 | 
						|
            35.132727272727266,
 | 
						|
            77.27590909090907,
 | 
						|
            134.59227272727276,
 | 
						|
            100.08954545454549,
 | 
						|
            80.85954545454547,
 | 
						|
        ],
 | 
						|
        "Gesamt_Verluste": np.float64(4041.523450413223),
 | 
						|
        "Haushaltsgeraet_wh_pro_stunde": [
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
        ],
 | 
						|
    },
 | 
						|
    "eauto_obj": {
 | 
						|
        "kapazitaet_wh": 60000,
 | 
						|
        "start_soc_prozent": 54,
 | 
						|
        "soc_wh": 32400.000000000004,
 | 
						|
        "hours": 48,
 | 
						|
        "discharge_array": [
 | 
						|
            1,
 | 
						|
            1,
 | 
						|
            1,
 | 
						|
            1,
 | 
						|
            1,
 | 
						|
            1,
 | 
						|
            1,
 | 
						|
            1,
 | 
						|
            1,
 | 
						|
            1,
 | 
						|
            1,
 | 
						|
            1,
 | 
						|
            1,
 | 
						|
            1,
 | 
						|
            1,
 | 
						|
            1,
 | 
						|
            1,
 | 
						|
            1,
 | 
						|
            1,
 | 
						|
            1,
 | 
						|
            1,
 | 
						|
            1,
 | 
						|
            1,
 | 
						|
            1,
 | 
						|
            1,
 | 
						|
            1,
 | 
						|
            1,
 | 
						|
            1,
 | 
						|
            1,
 | 
						|
            1,
 | 
						|
            1,
 | 
						|
            1,
 | 
						|
            1,
 | 
						|
            1,
 | 
						|
            1,
 | 
						|
            1,
 | 
						|
            1,
 | 
						|
            1,
 | 
						|
            1,
 | 
						|
            1,
 | 
						|
            1,
 | 
						|
            1,
 | 
						|
            1,
 | 
						|
            1,
 | 
						|
            1,
 | 
						|
            1,
 | 
						|
            1,
 | 
						|
            1,
 | 
						|
        ],
 | 
						|
        "charge_array": [
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
        ],
 | 
						|
        "lade_effizienz": 0.95,
 | 
						|
        "entlade_effizienz": 1.0,
 | 
						|
        "max_ladeleistung_w": 11040,
 | 
						|
    },
 | 
						|
    "start_solution": [
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        0,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        0,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        0,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        0,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0.0,
 | 
						|
        0.0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0.0,
 | 
						|
        0.0,
 | 
						|
    ],
 | 
						|
    "spuelstart": None,
 | 
						|
    "simulation_data": {
 | 
						|
        "Last_Wh_pro_Stunde": [
 | 
						|
            0.0,
 | 
						|
            1063.91,
 | 
						|
            1320.56,
 | 
						|
            1132.03,
 | 
						|
            1163.67,
 | 
						|
            1176.82,
 | 
						|
            1216.22,
 | 
						|
            1103.78,
 | 
						|
            1129.12,
 | 
						|
            1178.71,
 | 
						|
            1050.98,
 | 
						|
            988.56,
 | 
						|
            912.38,
 | 
						|
            704.61,
 | 
						|
            516.37,
 | 
						|
            868.05,
 | 
						|
            694.34,
 | 
						|
            608.79,
 | 
						|
            556.31,
 | 
						|
            488.89,
 | 
						|
            506.91,
 | 
						|
            804.89,
 | 
						|
            1141.98,
 | 
						|
            1056.97,
 | 
						|
            992.46,
 | 
						|
            1155.99,
 | 
						|
            827.01,
 | 
						|
            1257.98,
 | 
						|
            1232.67,
 | 
						|
            871.26,
 | 
						|
            860.88,
 | 
						|
            1158.03,
 | 
						|
            1222.72,
 | 
						|
            1221.04,
 | 
						|
            949.99,
 | 
						|
            987.01,
 | 
						|
            733.99,
 | 
						|
            592.97,
 | 
						|
        ],
 | 
						|
        "Netzeinspeisung_Wh_pro_Stunde": [
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            2924.2707438016537,
 | 
						|
            2753.66,
 | 
						|
            1914.18,
 | 
						|
            813.95,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            1311.3858057851144,
 | 
						|
            497.68000000000006,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
        ],
 | 
						|
        "Netzbezug_Wh_pro_Stunde": [
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
        ],
 | 
						|
        "Kosten_Euro_pro_Stunde": [
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
        ],
 | 
						|
        "akku_soc_pro_stunde": [
 | 
						|
            80.0,
 | 
						|
            79.91107093663912,
 | 
						|
            78.99070247933885,
 | 
						|
            79.08956914600552,
 | 
						|
            95.27340247933884,
 | 
						|
            100.0,
 | 
						|
            100.0,
 | 
						|
            100.0,
 | 
						|
            100.0,
 | 
						|
            99.26162190082644,
 | 
						|
            96.11376549586775,
 | 
						|
            91.89251893939392,
 | 
						|
            87.96526342975206,
 | 
						|
            84.93233471074379,
 | 
						|
            82.70966769972449,
 | 
						|
            78.97322658402202,
 | 
						|
            75.98450413223138,
 | 
						|
            73.36402376033054,
 | 
						|
            70.96943870523413,
 | 
						|
            68.86505681818178,
 | 
						|
            66.68310950413219,
 | 
						|
            63.24022899449031,
 | 
						|
            59.76919765840215,
 | 
						|
            58.25555268595038,
 | 
						|
            58.684419352617034,
 | 
						|
            60.18041935261703,
 | 
						|
            64.6149860192837,
 | 
						|
            65.19921935261704,
 | 
						|
            80.15195268595036,
 | 
						|
            92.42761935261704,
 | 
						|
            99.64985268595038,
 | 
						|
            100.0,
 | 
						|
            100.0,
 | 
						|
            98.89101239669421,
 | 
						|
            96.45174758953168,
 | 
						|
            92.20325413223141,
 | 
						|
            89.04386191460057,
 | 
						|
            86.4914772727273,
 | 
						|
        ],
 | 
						|
        "Einnahmen_Euro_pro_Stunde": [
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.20469895206611574,
 | 
						|
            0.19275619999999996,
 | 
						|
            0.1339926,
 | 
						|
            0.0569765,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.091797006404958,
 | 
						|
            0.0348376,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
        ],
 | 
						|
        "Gesamtbilanz_Euro": np.float64(-0.7150588584710738),
 | 
						|
        "E-Auto_SoC_pro_Stunde": [
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
            54.0,
 | 
						|
        ],
 | 
						|
        "Gesamteinnahmen_Euro": np.float64(0.7150588584710738),
 | 
						|
        "Gesamtkosten_Euro": np.float64(0.0),
 | 
						|
        "Verluste_Pro_Stunde": [
 | 
						|
            0.0,
 | 
						|
            2.817272727272737,
 | 
						|
            29.157272727272726,
 | 
						|
            3.5592000000000112,
 | 
						|
            582.6179999999995,
 | 
						|
            170.1575107438016,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            23.391818181818195,
 | 
						|
            99.72409090909093,
 | 
						|
            133.72909090909081,
 | 
						|
            124.41545454545451,
 | 
						|
            96.08318181818186,
 | 
						|
            70.41409090909087,
 | 
						|
            118.37045454545455,
 | 
						|
            94.68272727272722,
 | 
						|
            83.01681818181817,
 | 
						|
            75.86045454545456,
 | 
						|
            66.66681818181814,
 | 
						|
            69.12409090909085,
 | 
						|
            109.0704545454546,
 | 
						|
            109.96227272727276,
 | 
						|
            47.952272727272714,
 | 
						|
            15.439199999999985,
 | 
						|
            53.855999999999995,
 | 
						|
            159.6443999999999,
 | 
						|
            21.032399999999996,
 | 
						|
            538.2984000000001,
 | 
						|
            441.924,
 | 
						|
            260.0003999999999,
 | 
						|
            12.605303305786279,
 | 
						|
            0.0,
 | 
						|
            35.132727272727266,
 | 
						|
            77.27590909090907,
 | 
						|
            134.59227272727276,
 | 
						|
            100.08954545454549,
 | 
						|
            80.85954545454547,
 | 
						|
        ],
 | 
						|
        "Gesamt_Verluste": np.float64(4041.523450413223),
 | 
						|
        "Haushaltsgeraet_wh_pro_stunde": [
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
            0.0,
 | 
						|
        ],
 | 
						|
    },
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
@pytest.fixture
 | 
						|
def setup_opt_class():
 | 
						|
    # Initialize the optimization_problem class with parameters
 | 
						|
    start_hour = 10
 | 
						|
 | 
						|
    # PV Forecast (in W)
 | 
						|
    pv_forecast = [
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        8.05,
 | 
						|
        352.91,
 | 
						|
        728.51,
 | 
						|
        930.28,
 | 
						|
        1043.25,
 | 
						|
        1106.74,
 | 
						|
        1161.69,
 | 
						|
        6018.82,
 | 
						|
        5519.07,
 | 
						|
        3969.88,
 | 
						|
        3017.96,
 | 
						|
        1943.07,
 | 
						|
        1007.17,
 | 
						|
        319.67,
 | 
						|
        7.88,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        5.04,
 | 
						|
        335.59,
 | 
						|
        705.32,
 | 
						|
        1121.12,
 | 
						|
        1604.79,
 | 
						|
        2157.38,
 | 
						|
        1433.25,
 | 
						|
        5718.49,
 | 
						|
        4553.96,
 | 
						|
        3027.55,
 | 
						|
        2574.46,
 | 
						|
        1720.4,
 | 
						|
        963.4,
 | 
						|
        383.3,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
    ]
 | 
						|
 | 
						|
    # Temperature Forecast (in degree C)
 | 
						|
    temperature_forecast = [
 | 
						|
        18.3,
 | 
						|
        17.8,
 | 
						|
        16.9,
 | 
						|
        16.2,
 | 
						|
        15.6,
 | 
						|
        15.1,
 | 
						|
        14.6,
 | 
						|
        14.2,
 | 
						|
        14.3,
 | 
						|
        14.8,
 | 
						|
        15.7,
 | 
						|
        16.7,
 | 
						|
        17.4,
 | 
						|
        18.0,
 | 
						|
        18.6,
 | 
						|
        19.2,
 | 
						|
        19.1,
 | 
						|
        18.7,
 | 
						|
        18.5,
 | 
						|
        17.7,
 | 
						|
        16.2,
 | 
						|
        14.6,
 | 
						|
        13.6,
 | 
						|
        13.0,
 | 
						|
        12.6,
 | 
						|
        12.2,
 | 
						|
        11.7,
 | 
						|
        11.6,
 | 
						|
        11.3,
 | 
						|
        11.0,
 | 
						|
        10.7,
 | 
						|
        10.2,
 | 
						|
        11.4,
 | 
						|
        14.4,
 | 
						|
        16.4,
 | 
						|
        18.3,
 | 
						|
        19.5,
 | 
						|
        20.7,
 | 
						|
        21.9,
 | 
						|
        22.7,
 | 
						|
        23.1,
 | 
						|
        23.1,
 | 
						|
        22.8,
 | 
						|
        21.8,
 | 
						|
        20.2,
 | 
						|
        19.1,
 | 
						|
        18.0,
 | 
						|
        17.4,
 | 
						|
    ]
 | 
						|
 | 
						|
    # Electricity Price (in Euro per Wh)
 | 
						|
    strompreis_euro_pro_wh = [
 | 
						|
        0.0003384,
 | 
						|
        0.0003318,
 | 
						|
        0.0003284,
 | 
						|
        0.0003283,
 | 
						|
        0.0003289,
 | 
						|
        0.0003334,
 | 
						|
        0.0003290,
 | 
						|
        0.0003302,
 | 
						|
        0.0003042,
 | 
						|
        0.0002430,
 | 
						|
        0.0002280,
 | 
						|
        0.0002212,
 | 
						|
        0.0002093,
 | 
						|
        0.0001879,
 | 
						|
        0.0001838,
 | 
						|
        0.0002004,
 | 
						|
        0.0002198,
 | 
						|
        0.0002270,
 | 
						|
        0.0002997,
 | 
						|
        0.0003195,
 | 
						|
        0.0003081,
 | 
						|
        0.0002969,
 | 
						|
        0.0002921,
 | 
						|
        0.0002780,
 | 
						|
        0.0003384,
 | 
						|
        0.0003318,
 | 
						|
        0.0003284,
 | 
						|
        0.0003283,
 | 
						|
        0.0003289,
 | 
						|
        0.0003334,
 | 
						|
        0.0003290,
 | 
						|
        0.0003302,
 | 
						|
        0.0003042,
 | 
						|
        0.0002430,
 | 
						|
        0.0002280,
 | 
						|
        0.0002212,
 | 
						|
        0.0002093,
 | 
						|
        0.0001879,
 | 
						|
        0.0001838,
 | 
						|
        0.0002004,
 | 
						|
        0.0002198,
 | 
						|
        0.0002270,
 | 
						|
        0.0002997,
 | 
						|
        0.0003195,
 | 
						|
        0.0003081,
 | 
						|
        0.0002969,
 | 
						|
        0.0002921,
 | 
						|
        0.0002780,
 | 
						|
    ]
 | 
						|
 | 
						|
    # Overall System Load (in W)
 | 
						|
    gesamtlast = [
 | 
						|
        676.71,
 | 
						|
        876.19,
 | 
						|
        527.13,
 | 
						|
        468.88,
 | 
						|
        531.38,
 | 
						|
        517.95,
 | 
						|
        483.15,
 | 
						|
        472.28,
 | 
						|
        1011.68,
 | 
						|
        995.00,
 | 
						|
        1053.07,
 | 
						|
        1063.91,
 | 
						|
        1320.56,
 | 
						|
        1132.03,
 | 
						|
        1163.67,
 | 
						|
        1176.82,
 | 
						|
        1216.22,
 | 
						|
        1103.78,
 | 
						|
        1129.12,
 | 
						|
        1178.71,
 | 
						|
        1050.98,
 | 
						|
        988.56,
 | 
						|
        912.38,
 | 
						|
        704.61,
 | 
						|
        516.37,
 | 
						|
        868.05,
 | 
						|
        694.34,
 | 
						|
        608.79,
 | 
						|
        556.31,
 | 
						|
        488.89,
 | 
						|
        506.91,
 | 
						|
        804.89,
 | 
						|
        1141.98,
 | 
						|
        1056.97,
 | 
						|
        992.46,
 | 
						|
        1155.99,
 | 
						|
        827.01,
 | 
						|
        1257.98,
 | 
						|
        1232.67,
 | 
						|
        871.26,
 | 
						|
        860.88,
 | 
						|
        1158.03,
 | 
						|
        1222.72,
 | 
						|
        1221.04,
 | 
						|
        949.99,
 | 
						|
        987.01,
 | 
						|
        733.99,
 | 
						|
        592.97,
 | 
						|
    ]
 | 
						|
 | 
						|
    # Start Solution (binary)
 | 
						|
    start_solution = [
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        0,
 | 
						|
        1,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        0,
 | 
						|
        1,
 | 
						|
        0,
 | 
						|
        1,
 | 
						|
        0,
 | 
						|
        1,
 | 
						|
        0,
 | 
						|
        1,
 | 
						|
        0,
 | 
						|
        1,
 | 
						|
        0,
 | 
						|
        1,
 | 
						|
        0,
 | 
						|
        1,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        1,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        1,
 | 
						|
        0,
 | 
						|
        1,
 | 
						|
        0,
 | 
						|
        1,
 | 
						|
        0,
 | 
						|
        1,
 | 
						|
        0,
 | 
						|
        1,
 | 
						|
        0,
 | 
						|
        1,
 | 
						|
        0,
 | 
						|
        1,
 | 
						|
        0,
 | 
						|
        1,
 | 
						|
        0,
 | 
						|
        1,
 | 
						|
        0,
 | 
						|
        1,
 | 
						|
        0,
 | 
						|
        1,
 | 
						|
        0,
 | 
						|
        1,
 | 
						|
        0,
 | 
						|
        1,
 | 
						|
        0,
 | 
						|
        1,
 | 
						|
        0,
 | 
						|
        1,
 | 
						|
        0,
 | 
						|
        1,
 | 
						|
        0,
 | 
						|
        1,
 | 
						|
        0,
 | 
						|
        1,
 | 
						|
        0,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
    ]
 | 
						|
 | 
						|
    # Define parameters for the optimization problem
 | 
						|
    parameter = {
 | 
						|
        "preis_euro_pro_wh_akku": 10e-05,  # Cost of storing energy in battery (per Wh)
 | 
						|
        "pv_soc": 80,  # Initial state of charge (SOC) of PV battery (%)
 | 
						|
        "pv_akku_cap": 26400,  # Battery capacity (in Wh)
 | 
						|
        "year_energy": 4100000,  # Yearly energy consumption (in Wh)
 | 
						|
        "einspeiseverguetung_euro_pro_wh": 7e-05,  # Feed-in tariff for exporting electricity (per Wh)
 | 
						|
        "max_heizleistung": 1000,  # Maximum heating power (in W)
 | 
						|
        "gesamtlast": gesamtlast,  # Overall load on the system
 | 
						|
        "pv_forecast": pv_forecast,  # PV generation forecast (48 hours)
 | 
						|
        "temperature_forecast": temperature_forecast,  # Temperature forecast (48 hours)
 | 
						|
        "strompreis_euro_pro_wh": strompreis_euro_pro_wh,  # Electricity price forecast (48 hours)
 | 
						|
        "eauto_min_soc": 0,  # Minimum SOC for electric car
 | 
						|
        "eauto_cap": 60000,  # Electric car battery capacity (Wh)
 | 
						|
        "eauto_charge_efficiency": 0.95,  # Charging efficiency of the electric car
 | 
						|
        "eauto_charge_power": 11040,  # Charging power of the electric car (W)
 | 
						|
        "eauto_soc": 54,  # Current SOC of the electric car (%)
 | 
						|
        "pvpowernow": 211.137503624,  # Current PV power generation (W)
 | 
						|
        "start_solution": start_solution,  # Initial solution for the optimization
 | 
						|
        "haushaltsgeraet_wh": 937,  # Household appliance consumption (Wh)
 | 
						|
        "haushaltsgeraet_dauer": 0,  # Duration of appliance usage (hours)
 | 
						|
    }
 | 
						|
 | 
						|
    # Create an instance of the optimization problem class
 | 
						|
    opt_class = optimization_problem(
 | 
						|
        prediction_hours=48, strafe=10, optimization_hours=24, fixed_seed=42
 | 
						|
    )
 | 
						|
    yield (
 | 
						|
        opt_class,
 | 
						|
        parameter,
 | 
						|
        start_hour,
 | 
						|
    )  # Yield the class and parameters for use in tests
 | 
						|
 | 
						|
 | 
						|
@pytest.mark.skip(reason="Expensive - Skipped per default")
 | 
						|
def test_optimierung_ems(setup_opt_class):
 | 
						|
    opt_class, parameter, start_hour = setup_opt_class
 | 
						|
 | 
						|
    # Call the optimization function
 | 
						|
    ergebnis = opt_class.optimierung_ems(parameter=parameter, start_hour=start_hour)
 | 
						|
 | 
						|
    # Compare the result with the known expected result
 | 
						|
    assert (
 | 
						|
        ergebnis == EXPECTED_RESULT
 | 
						|
    )  # Use appropriate comparison based on the structure of ergebnis
 |