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
« 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
7class LinDistMP(LinDistBaseMP):
8 """
9 LinDistMP Model class for linear multistep optimal power flow modeling.
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.
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.
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 """
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()