IEEE-30 energy system data of multi-period market with intertemporal constraints
<p>This is the dataset that is used for the original article: "Locational marginal pricing in multi-period AC OPF environment"</p> <p>The dataset consists of the following files</p> <ul> <li>Case1.zip</li> <li>Case2.zip</li> <li>Case3.zip</li> <li>case_modifications.py</li> <li>data_spec.py</li> <li>OPF_formulation.pdf</li> </ul> <p>Multiperiod AC OPF is given in OPF_formulation.pdf. Modifications of traditional IEEE 30-node case are given in case_modifications.py</p> <p>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.</p> <p>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.</p> <p>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).</p> <p>Step 2 are to define all other LMPs at price-taking nodes (second LMP definition in fig. 6 in the paper).</p> <p>The following interrelation between Lagrange multipliers, LMP components, and price-bonding factors holds true:</p> <pre>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</pre> <p> </p>
ShareScore
32/100
Overall dataset sharing score
Score breakdown
These five areas show where the dataset supports — or may limit — practical reuse.
- Stewardship
- 4
- Harmonization
- 4
- Access
- 16
- Reuse readiness
- 8
- Engagement
- 0