Default config file
Below is an example ispypsa_config.yaml file, the file configures a simple fast running model designed to be useful for learning and testing purposes. The model implemented by the config:
- Optimises capacity expansion to met demand in 2050 in a single build step
- Only considers the NSW region
- Is based on 2024 ISP Step Change scenario assumption
- Retains existing capacity which has not reached retirement age by 2050
- Uses three weeks of timeseries data based on 2018 reference year data the weeks in 2050 with residual peak demand, peak-consumption, and residual minimum demand are used.
# ===== Paths ==========================================================================
paths:
# The run directory where all inputs and outputs will be stored
run_directory: "ispypsa_runs"
# The name of the ISPyPSA model run
# This name is used to select the output folder within `ispypsa_runs`
ispypsa_run_name: example_model_run
# The path to the folder containing parsed demand, wind and solar traces.
parsed_traces_directory: "data/trace_data"
# The path to the ISP workbook Excel file
workbook_path: "data/2024-isp-inputs-and-assumptions-workbook.xlsx"
# The path to the workbook table cache directory
parsed_workbook_cache: "data/workbook_table_cache"
# ===== Trace Data =====================================================================
trace_data:
# The type of trace dataset to download when using CLI download tasks
# Options: "example" (smaller, for testing) or "full" (complete dataset)
# Default: "example"
dataset_type: example
# The year of trace dataset to download when using CLI download tasks
# Currently only 2024 is supported
# Default: 2024
dataset_year: 2024
# ===== ISPyPSA templating =============================================================
# The version of IASR workbook that the template inputs are generated from.
iasr_workbook_version: "6.0"
# The ISP scenario for which to generate ISPyPSA inputs
scenario: Step Change
# ===== Financial/Economic =============================================================
# Weighted average cost of capital for annuitisation of generation and transmission
# costs, as a fraction, i.e. 0.07 is 7%.
wacc: 0.07
# Discount rate applied to model objective function, as a fraction, i.e. 0.07 is 7%.
discount_rate: 0.05
# ===== Unserved energy ================================================================
unserved_energy:
# Cost of unserved energy in $/MWh. Set to 'None' to disable unserved energy generators.
cost: 10000.0
# Maximum capacity of each unserved energy generator in MW. Defaults to 1e5 (100,000 MW).
max_per_node: 100000.0
# ===== Regional scope =================================================================
# Filter the model by NEM regions or ISP sub regions.
filter_by_nem_regions: [NSW]
# filter_by_isp_sub_regions: [NNSW, CNSW]
# ===== Network ========================================================================
network:
# Does the model consider the expansion of sub-region to sub-region transmission
# capacity
transmission_expansion: True
# Does the model consider the expansion of renewable energy zone transmission
# capacity
rez_transmission_expansion: True
# Years to annuitise transmission project capital costs over.
annuitisation_lifetime: 30
nodes:
# The regional granularity of the nodes in the modelled network (only sub_regions is implemented)
regional_granularity: sub_regions
# Whether Renewable Energy Zones (REZs) are modelled as distinct nodes
# Only discrete_nodes implemented
rezs: discrete_nodes
# Line capacity limit for rez to node connections that have their limit's modelled
# through custom constraint (MW).
rez_to_sub_region_transmission_default_limit: 1e5
# ===== Temporal =======================================================================
temporal:
year_type: fy
range:
# Model begin at the start of the start year. E.g. the first time interval for a
# financial year model starting in 2025 would be 2024-07-01 00:30:00.
start_year: 2050
# Model ends at the end of the start year. E.g. the last time interval for a
# financial year model ending in 2028 would be 2028-06-01 23:30:00.
end_year: 2050
capacity_expansion:
resolution_min: 30
reference_year_cycle: [2018]
# List of investment period start years. An investment period runs from the beginning
# of the year (financial or calendar depending on the config) until the next the
# period begins.
investment_periods: [2050]
aggregation:
# Representative weeks to use instead of full yearly temporal representation.
# Options:
# ~ (None): Full yearly temporal representation is used or another aggregation.
# list[int]: a list of integers specifying weeks of year to use as representative. Weeks of year are defined as
# full weeks (Monday-Sunday) falling within the year. For example, if the list is "[1]" the model will only use the
# first full week of each modelled year.
representative_weeks: ~
# Named representative weeks based on demand characteristics
# ~ (None): Full yearly temporal representation is used or another aggregation.
# list[str]: peak-demand, residual-peak-demand, minimum-demand,
# residual-minimum-demand, peak-consumption, residual-peak-consumption
named_representative_weeks: [residual-peak-demand]
operational:
resolution_min: 30
reference_year_cycle: [2018]
horizon: 336
overlap: 48
aggregation:
# Representative weeks to use instead of full yearly temporal representation.
# Options:
# ~ (None): Full yearly temporal representation is used or another aggregation.
# list[int]: a list of integers specifying weeks of year to use as representative. Weeks of year are defined as
# full weeks (Monday-Sunday) falling within the year. For example, if the list is "[1]" the model will only use the
# first full week of each modelled year.
representative_weeks: ~
# Named representative weeks based on demand characteristics
# ~ (None): Full yearly temporal representation is used or another aggregation.
# list[str]: peak-demand, residual-peak-demand, minimum-demand,
# residual-minimum-demand, peak-consumption, residual-peak-consumption
named_representative_weeks: [residual-peak-demand, peak-consumption, residual-minimum-demand]
# ===== Solver =======================================================================
# External solver to use
solver: highs
# ===== Plotting =====================================================================
create_plots: True