Published May 10, 2019 | Version v1

IEEE-30 energy system data of multi-period market with intertemporal constraints

Authors/Creators

  • 1. MPEI

Description

This is the dataset that is used for the original article: "Locational marginal pricing in multi-period AC OPF environment"

The dataset consists of the following files

  • Case1.zip
  • Case2.zip
  • Case3.zip
  • case_modifications.py
  • data_spec.py
  • OPF_formulation.pdf

Multiperiod AC OPF is given in OPF_formulation.pdf. Modifications of traditional IEEE 30-node case are given in case_modifications.py

The case files incorporate input and output multiperiod AC OPF and LMP decomposition data in csv and pickle formats. Data structure of case files is given in data_spec.py.

For python users pickle files are given. Nevertheless, python environment is not required. Specification can be read as a text file. All necessary data are repeated in csv format.

Step 1 are to define LMPs of  limited energy resources or storage resources that are formed by actual marginal resources from all time periods (first LMP definition in fig. 6 in the paper).

Step 2 are to define all other LMPs at price-taking nodes (second LMP definition in fig. 6 in the paper).

The following interrelation between Lagrange multipliers, LMP components, and price-bonding factors holds true:

assert np.max(np.abs(output_ramp.sensitivities.dot(output_ramp.offer_gen_data.price).tolist() -
                     output_ramp.ramping_gen_data.price)) < 1e-2
if output_pt_step1.components.shape[0]:
    step1_pf_filter = (~output_pf.is_limited_energy) & (~output_pf.is_storage)
    assert np.max(np.abs(output_pt_step1.components.node_price -
                         (output_pt_step1.components.f + output_pt_step1.components.tc_sum + output_pt_step1.components.vc_sum))) < 1e-2
    assert (output_pt_step1.components.f - output_pt_step1.w_f.dot(output_pf.node_price[step1_pf_filter])).abs().max() < 1e-2
    assert (output_pt_step1.components.tc_sum -
            pd.concat(
            (w.dot(output_pf.offer_price[step1_pf_filter]) for w in output_pt_step1.w_tc_list), axis=1
        ).sum(axis=1)).abs().max() < 1e-2

assert np.max(np.abs(output_pt_step2.components.node_price -
                     (output_pt_step2.components.f + output_pt_step2.components.tc_sum + output_pt_step2.components.vc_sum))) < 1e-2
assert (output_pt_step2.components.f - output_pt_step2.w_f.dot(output_pf.node_price)).abs().max() < 1e-2
assert (output_pt_step2.components.tc_sum -
            pd.concat(
                (w.dot(output_pf.offer_price) for w in output_pt_step2.w_tc_list), axis=1
            ).sum(axis=1)
        ).abs().max() < 1e-2

 

Files

Case 1.zip

Files (1.5 MB)

Name Size
md5:993b28b6104fb4daa2d0150517a660a8
368.0 kB Preview Download
md5:cdfdb5b2085e81ef90a52b2a2fb7c85e
500.5 kB Preview Download
md5:aa2a712fa9bee5888231ef9e6f84c622
498.2 kB Preview Download
md5:f9095fff1793459b72330f68dc7daf61
5.0 kB Download
md5:401c0f0a87ce697103adafdc160d96d2
20.9 kB Download
md5:4f75aeba574f462fde94840688d949f0
106.0 kB Preview Download