Transmission Expansion Planning Module

This module provides functions for transmission expansion planning (TEP) analysis of AC/DC hybrid power systems. [1]

Functions are found in pyflow_acdc.ACDC_Static_TEP

Transmission Expansion Planning

This section creates an OPF model, chooses a state objective function. Afterwards it will include transmission expansion planning in the model and TEP objectives, finally solves the model.

Running one state transmission expansion planning

transmission_expansion(grid, NPV=True, n_years=25, Hy=8760, discount_rate=0.02, ObjRule=None, solver='bonmin')

Performs transmission expansion planning analysis.

Parameter

Type

Description

Default

grid

Grid

Grid to analyze

Required

NPV

bool

Calculate net present value

True

n_years

int

Number of years for NPV calculation

25

Hy

int

Hours per year

8760

discount_rate

float

Discount rate for NPV

0.02

ObjRule

dict

Objective function weights

None

solver

str

Solver to use

‘bonmin’

Returns

Returns a tuple containing:

  • Model object

  • Model results

  • Timing information

  • Solver statistics

Example

model, results, timing, stats = pyf.transmission_expansion(grid)

Running multiple scenario based transmission expansion planning

multi_scenario_TEP(grid, increase_Pmin=False, NPV=True, n_years=25, Hy=8760, discount_rate=0.02, clustering_options=None, ObjRule=None, solver='bonmin')

Performs a multiple scenario based transmission expansion planning analysis. It utilizes the clustering module to cluster the time series data into different states.

Parameter

Type

Description

Default

grid

Grid

Grid to analyze

Required

increase_Pmin

bool

Increase minimum power limit

False

NPV

bool

Calculate net present value

True

n_years

int

Number of years for NPV

25

Hy

int

Hours per year

8760

discount_rate

float

Discount rate for NPV

0.02

clustering_options

dict

Time series clustering options

None

ObjRule

dict

Objective function weights

None

solver

str

Solver to use

‘bonmin’

Returns

Returns a tuple containing:

  • Model object

  • Model results

  • Timing information

  • Solver statistics

  • TEP time series results

Example

model, results, timing, stats, ts_results = pyf.multi_scenario_TEP(grid)

Linear and Sensitivity Utilities

linear_transmission_expansion(grid, NPV=True, n_years=25, Hy=8760, discount_rate=0.02, ObjRule=None, solver='gurobi', time_limit=300, tee=False, export=True, fs=False, obj_scaling=1.0)

Linearized TEP workflow suitable for faster studies and large sweeps.

alpha_paretto(grid, steps, ObjRule, NPV=True, n_years=25, Hy=8760, discount_rate=0.02, solver='bonmin', time_limit=None, tee=False, save_name=None, obj_scaling=1.0)

Computes Pareto-like trade-off points by sweeping alpha-style objective mixing.

rate_sensitivity(grid, steps, ObjRule, min_rate=0.0, max_rate=0.1, NPV=True, n_years=25, Hy=8760, solver='bonmin', time_limit=None, tee=False, obj_scaling=1.0)

Runs discount-rate sensitivity for TEP objective outcomes.

kappa_sensitivity(grid, steps, ObjRule, min_kappa=0.0, max_kappa=1.0, NPV=True, n_years=25, Hy=8760, discount_rate=0.02, solver='bonmin', time_limit=None, tee=False, obj_scaling=1.0)

Runs kappa-weight sensitivity for TEP objective outcomes.

comprehensive_sensitivity_analysis(grid, ObjRule, alpha_steps=None, rate_steps=None, kappa_steps=None, alpha_range=(0.0, 1.0), rate_range=(0.01, 0.1), kappa_range=(0.0, 1.0), n_years=25, Hy=8760, discount_rate=0.02, solver='bonmin', time_limit=None, tee=False, obj_scaling=1.0)

Convenience wrapper to execute multiple TEP sensitivity studies.

Element Expansion Helpers

expand_elements_from_pd(grid, exp_elements)

Applies expansion definitions from a pandas table.

repurpose_element_from_pd(grid, rec_elements)

Applies reconductoring/repurposing definitions from a pandas table.

update_attributes(element, n_b, n_i, n_max, life_time, base_cost, per_unit_cost, exp, n_inv_max=None)

Updates expansion-related attributes of a TEP-enabled element.

Expand_element(grid, name, n_b=None, n_i=None, n_max=None, life_time=None, base_cost=None, per_unit_cost=None, exp=None, update_grid=True, n_inv_max=None, **legacy_kwargs)

Enables or updates one element for TEP investment modeling.

Translate_pd_TEP(grid)

Builds pandas summaries from solved TEP model variables.

Transmission Expansion Planning objectives

TEP_obj(model, grid, NPV)

Returns the objective function for the transmission expansion planning based on [1]:

Description

Formula

AC expansion

\(\Psi_{exp}=\sum_{h \in \mathcal{E}_{ac}} \left[(n_h - n_{h,\text{b}}) \cdot \psi_h(L_h) \right]\)

AC reconducting

\(\Psi_{rec}=\sum_{u \in \mathcal{U}_{ac}} \left[\xi_u \cdot \psi_u(L_u) \right]\)

AC line selection

\(\Psi_{a}=\sum_{a \in \mathcal{E}_a} \sum_{n \in \mathcal{CT}} \left[ \xi_{a,n} \cdot \psi_n(L_a) \right]\)

DC expansion

\(\Psi_{dc}=\sum_{e \in \mathcal{E}_{dc}} \left[(n_e - n_{e,\text{b}}) \cdot \psi_e(L_e, p_e) \right]\)

Converter expansion

\(\Psi_{conv}=\sum_{cn \in \mathcal{E}_{cn}} \left[(n_{cn} - n_{cn,\text{b}}) \cdot \psi_{cn}(p_{cn}) \right]\)

General objective function

\(\Psi = \Psi_{exp}+\Psi_{rec}+\Psi_{a}+\Psi_{dc}+\Psi_{conv}\)

State objective function

\(\phi =\) OPF function

Net present value

\(\min \left[\frac{1 - \left(1 + r\right)^{-y}}{r} \cdot H_y \cdot \phi + \Psi \right]\)

Export Results

export_TEP_TS_results_to_excel(grid, export)

Exports time series TEP results to Excel file.

Parameter

Type

Description

Default

grid

Grid

Grid with results

Required

export

str

Export file path

Required

Example

pyf.export_TEP_TS_results_to_excel(grid, "results.xlsx")

References