Coverage for src/distopf/matrix_models/multiperiod/lindist_mp.py: 78%

9 statements  

« prev     ^ index     » next       coverage.py v7.10.6, created at 2025-11-13 17:34 -0800

1from typing import Optional, override 

2import pandas as pd 

3from distopf.importer import Case 

4from distopf.matrix_models.multiperiod.base_mp import LinDistBaseMP 

5 

6 

7class LinDistMP(LinDistBaseMP): 

8 """ 

9 LinDistMP Model class for linear multistep optimal power flow modeling. 

10 

11 This class represents a linearized distribution model used for calculating 

12 power flows, voltages, and other system properties in a distribution network 

13 using the linearized branch-flow formulation from [1]. The model is composed of several power system components 

14 such as buses, branches, generators, capacitors, and regulators. 

15 

16 Parameters 

17 ---------- 

18 branch_data : pd.DataFrame 

19 DataFrame containing branch data (r and x values, limits) 

20 bus_data : pd.DataFrame 

21 DataFrame containing bus data (loads, voltages, limits) 

22 gen_data : pd.DataFrame 

23 DataFrame containing generator/DER data 

24 cap_data : pd.DataFrame 

25 DataFrame containing capacitor data 

26 reg_data : pd.DataFrame 

27 DataFrame containing regulator data 

28 bat_data : pd DataFrame 

29 DataFrame containing battery data 

30 loadshape_data : pd.DataFrame 

31 DataFrame containing loadshape multipliers for P values 

32 pv_loadshape_data : pd.DataFrame 

33 DataFrame containing PV profile of 1h interval for 24h 

34 n_steps : int, 

35 Number of time intervals for multi period optimization. Default is 24. 

36 case : Case, 

37 Case object containing all of the parameters. Alternative to listing seperately. 

38 

39 References 

40 ---------- 

41 [1] R. R. Jha, A. Dubey, C.-C. Liu, and K. P. Schneider, 

42 “Bi-Level Volt-VAR Optimization to Coordinate Smart Inverters 

43 With Voltage Control Devices,” 

44 IEEE Trans. Power Syst., vol. 34, no. 3, pp. 1801–1813, 

45 May 2019, doi: 10.1109/TPWRS.2018.2890613. 

46 """ 

47 

48 @override 

49 def __init__( 

50 self, 

51 branch_data: Optional[pd.DataFrame] = None, 

52 bus_data: Optional[pd.DataFrame] = None, 

53 gen_data: Optional[pd.DataFrame] = None, 

54 cap_data: Optional[pd.DataFrame] = None, 

55 reg_data: Optional[pd.DataFrame] = None, 

56 bat_data: Optional[pd.DataFrame] = None, 

57 schedules: Optional[pd.DataFrame] = None, 

58 start_step: int = 0, 

59 n_steps: int = 24, 

60 delta_t: float = 1, # hours per step 

61 case: Optional[Case] = None, 

62 ): 

63 super().__init__( 

64 branch_data=branch_data, 

65 bus_data=bus_data, 

66 gen_data=gen_data, 

67 cap_data=cap_data, 

68 reg_data=reg_data, 

69 bat_data=bat_data, 

70 schedules=schedules, 

71 start_step=start_step, 

72 n_steps=n_steps, 

73 delta_t=delta_t, 

74 case=case, 

75 ) 

76 self.build()