10. GridPath Functionality - Advanced
This section contains the advanced documentation that is automatically generated from the documentation within each GridPath module.
10.1. Core Functionality
This chapter describes GridPath’s basic functionality if no optional features are included.
10.1.1. Temporal Setup
gridpath.temporal
The gridpath.temporal package describes the optimization problem’s temporal span and resolution.
Temporal units include:
Timepoints: the finest resolution over which operational decisions are made (e.g. an hour). Commitment and dispatch decisions are made for each timepoint, with some constraints applied across timepoint (e.g. ramp constraints.)
Horizons: Each timepoint belongs to a ‘horizon’ (e.g. a day), which describes which timepoints are linked together, with some operational constraints enforced over the ‘horizon,’ e.g. hydro budgets or storage energy balance.
Periods: each timepoint and horizon belong to a ‘period’ (e.g. an year), which describes when decisions to build or retire infrastructure can be made.
gridpath.temporal.operations
The gridpath.temporal.operations package contains the timepoints and horizons modules that describe the operational resolution of the model.
gridpath.temporal.operations.timepoints
Refer Timepoints.
- add_model_components(m, d, scenario_directory, weather_iteration, hydro_iteration, availability_iteration, subproblem, stage)[source]
The following Pyomo model components are defined in this module:
Sets
TMPSWithin:PositiveIntegersThe list of timepoints being modeled; timepoints are ordered and must be non-negative integers.
MONTHSWithin:PositiveIntegersThe list of months (1-12).
Required Input Params
hrs_in_tmpDefined over:TMPSWithin:NonNegativeRealsThe number of hours in each timepoint (can be a fraction). For example, a 15-minute timepoint will have 0.25 hours per timepoint whereas a 4-hour timepoint will have 4 hours per timepoint. This parameter is used by other modules to track energy (e.g. storage state of charge) and when evaluation ramp rates. Timepoints do not need to have the same
hrs_in_tmpvalue, i.e. one of them can represent a 5-minute segment and another a 24-hour segment.tmp_weightDefined over:TMPSWithin:NonNegativeRealsThis parameter accounts for the number of other similar ‘timepoints’ that are not explicitly included in the optimization, but that the included timepoint represents in the objective function. For example, we could include one day from the month to represent the entire month, in which case the timepoint_weight for each timepoint on that day will be the number of the days in the respective month.
prev_stage_tmp_mapDefined over:TMPSWithin:NonNegativeIntegersThe associated timepoint in the previous stage (if there is any) for each timepoint. This is used to pass commitment decisions from one stage to the next. E.g. if the real-time stage has 15-minute timepoints , and the hour-ahead stage had hourly timepoints, all 4 real-time timepoints within an hour will point to the same hourly timepoint in the previous hour-ahead stage to its commitment decision.
monthDefined over:TMPSWithin:MONTHS | {"undefined"}The month that each timepoint belongs to. Can be undefined, but is needed if you have any parameters that are indexed by month.
gridpath.temporal.operations.horizons
Refer Balancing Types and Horizons.
- add_model_components(m, d, scenario_directory, weather_iteration, hydro_iteration, availability_iteration, subproblem, stage)[source]
The following Pyomo model components are defined in this module:
Sets
BLN_TYPE_HRZSTwo dimensional set of balancing types and their associated horizons. Balancing types are strings, e.g. year, month, week, day, whereas horizons must be non-negative integers.
TMPS_BY_BLN_TYPE_HRZDefined over:BLN_TYPE_HRZSOrdered, indexed set that describes the the horizons associated with each balancing type. The timepoins within a horizon-balancing type are ordered.
Derived Sets
BLN_TYPESThe list of all balancing types.
HRZS_BY_BLN_TYPEDefined over:BLN_TYPESOrdered, indexed set that describes the horizons associated with each balancing type. The horizons within a balancing type are ordered.
TMPS_BLN_TYPESTwo-dimensional set of all timepoints along with the balancing types each timepoint belongs to.
Required Input Params
horizonDefined over:TMPS x BLN_TYPESDescribes the horizon that each timeoint belongs to for a given balancing type. Depending on the balancing type, timepoints can be grouped in different horizons.
boundaryDefined over:BLN_TYPE_HRZSWithin:['circular', 'linear']The boundary for each horizon. If the boundary is ‘circular,’ then the last timepoint of the horizon is treated as the ‘previous’ timepoint for the first timepoint of the horizon (e.g. for ramping constraints or tracking storage state of charge).
Derived Input Params
first_hrz_tmpDefined over:BLN_TYPE_HRZSDerived parameter describing the first timepoint in each horizon for a given balancing type. Note: this relies on
TMPS_BY_BLN_TYPE_HRZbeing an ordered (indexed) set.last_hrz_tmpDefined over:BLN_TYPE_HRZSDerived parameter describing the last timepoint in each horizon for a given balancing type. Note: this relies on
TMPS_BY_BLN_TYPE_HRZbeing an ordered (indexed) set.prev_tmpDefined over:TMPS x BLN_TYPESWithin: :code: m.TMPS | {None}Derived parameter describing the previous timepoint for each timepoint in each balancing type; depends on whether horizon is circular or linear and relies on having ordered
TMPS.next_tmpDefined over:TMPS x BLN_TYPESWithin: :code: m.TMPS | {None}Derived parameter describing the next timepoint for each timepoint in each balancing type; depends on whether horizon is circular or linear and relies on having ordered
TMPS.
gridpath.temporal.investment
The gridpath.temporal.investment package contains the periods module that describe the investment resolution of the model.
gridpath.temporal.investment.periods
Refer Periods.
- add_model_components(m, d, scenario_directory, weather_iteration, hydro_iteration, availability_iteration, subproblem, stage)[source]
The following Pyomo model components are defined in this module:
Sets
PERIODSWithin:PositiveIntegersThe list of all periods being modeled. Periods must be non-negative integers and the set is ordered.
Derived Sets
TMPS_IN_PRDDefined over:PERIODSIndexed set that describes the timepoints that occur in each period.
NOT_FIRST_PRDSWithin:PERIODSThe list of periods excluding the first period. Relies on periods being ordered.
Required Input Params
discount_factorDefined over:PERIODSWithin:NonNegativeRealsDetermines the relative objective function weight of investment and operational decisions made in each period (i.e. future costs can be weighted less).
hours_in_period_timepointsDefined over:PERIODSWithin:NonNegativeRealsThe number of hours in the timepoints representing a period (across all scenario subproblems, within a stage, excluding spinup/lookahead. Note that to ensure consistent weighting of period-level and timepoint-level costs, this derived parameter must have a value of the number of hours in a year. In each period, regardless of period param values, the total number of hours in timepoints adjusted for timepoint weight and duration and excluding spinup and lookahead timepoints should be the number of hours in a year (8760, 8766, or 8784). This is to ensure consistent weighting of timepoint-level and period-level costs. The value of this parameter is automatically calculated from the temporal_scenario_id structure if using the database and you will see a validation warning if the timepoint param inputs do not sum up to one of 8760, 8766, or 8784. Within GridPath, this parameter is also used to adjust the capacity-related costs incurred within a subproblem if a subproblem is shorter than the period.
period_start_yearDefined over:PERIODSWithin:NonNegativeRealsThe first ‘year’ in a period, e.g. if this is 2030, the period is assumed to begin at 2030-01-01 00:00. Note that non-integer values are allowed, so you could have 2030.25 for a period that starts on 2030-04-01, for example. Having periods shorter (or longer) than a year is largely untested, so be extra careful if attempting to use this functionality, as it could be buggy.
period_end_yearDefined over:PERIODSWithin:NonNegativeRealsThe last ‘year’ in a period. This is exclusive following typical Python convention, i.e. if it is 2040, the period is assumed to go through 2039-12-01 23:59. Note that non-integer values are allowed, so you could have 2030.50 for a period that goes through 2030-06-30, for example. Having periods shorter (or longer) than a year is largely untested, so be extra careful if attempting to use this functionality, as it could be buggy.
periodDefined over:TMPSWithin:PERIODSSpecifies the associated period for each timepoint.
Derived Input Params
number_years_representedDefined over:PERIODSWithin:NonNegativeRealsAccounts for the number of years that the periods is meant to represent. Investment cost inputs in GridPath are annualized, so they are multiplied by this parameter in the objective function. The parameter is derived based on the period_start_year and period_end_year parameters.
first_periodWithin:PERIODSThe first period in the model. Relies on the PERIODS set being ordered.
prev_periodDefined over:NOT_FIRST_PRDSWithin:PERIODSDetermines the previous period for each period other than the first period, which doesn’t have a previous period. This parameter is optional and will default to the period with index i-1 in the ordered set PERIODS if not specified. The parameter shoud be specified when using GridPath to create stochastic problems to define future tree trajectories.
hours_in_subproblem_periodDefined over:PERIODSWithin:NonNegativeRealsThe number of hours in each period for the current subproblem, taking into account the timepoints in each period-subproblem, the number of hours in each timepoint, and their associated timepoint weights. In capacity expansion mode with one subproblem, this should simply be equal to
hours_in_period_timepoints. In production simulation mode with multiple subproblems within 1 period, this number is compared tohours_in_period_timepointsand used to adjust the reported “per-period” costs. For instance, when running daily subproblems the fixed cost in each day should be only 1/365 of the annualized fixed cost.
10.1.2. Geographic Setup
The gridpath.geography package describes the optimization problem’s geographic span and resolution.
gridpath.geography.load_zones
The gridpath.geography.load_zones module describes the geographic unit at which load is met. Here, we also define whether violations (overgeneration and unserved energy) are allowed and what the violation costs are.
- add_model_components(m, d, scenario_directory, weather_iteration, hydro_iteration, availability_iteration, subproblem, stage)[source]
- Parameters:
m – the Pyomo abstract model object we are adding components to
d – the dynamic inputs class object; not used here
The module adds the LOAD_ZONES set to the model formulation as well as vairous parameters associated with load balance penalties and limits.
10.1.3. Projects
gridpath.project.__init__
The ‘project’ package contains modules to describe the available capacity and operational characteristics of generation, storage, and demand-side infrastructure ‘projects’ in the optimization problem.
Project Capacity
gridpath.project.capacity
This package contains modules to describe the available capacity and the capacity-associated costs of generation, storage, and demand-side infrastructure ‘projects’ in the optimization problem.
gridpath.project.capacity.capacity
This is a project-level module that adds to the formulation components that describe the capacity of projects that are available to the optimization for each period. For example, the capacity can be a fixed number or an expression with variables depending on the project’s capacity_type. The project capacity can then be used to constrain operations, contribute to reliability constraints, etc.
- add_model_components(m, d, scenario_directory, weather_iteration, hydro_iteration, availability_iteration, subproblem, stage)[source]
First, we iterate over all required capacity_types modules (this is the set of distinct project capacity types in the list of projects specified by the user) and add the components specific to the respective capacity_type module. We do this by calling the add_model_components method of the capacity_type module if the method exists.
Then, the following Pyomo model components are defined in this module:
Sets
PRJ_OPR_PRDSWithin:PROJECTS x PERIODSTwo-dimensional set that defines all project-period combinations when a project can be operational (i.e. either has specified capacity or can be build). This set is created by joining sets added by the capacity_type modules (which is done before loading this module), as how operational periods are determined differs by capacity type.
OPR_PRDS_BY_PRJDefined over:PROJECTSIndexed set that describes the possible operational periods for each project.
PRJ_OPR_TMPSTwo-dimensional set that defines all project-timepoint combinations when a project can be operational.
OPR_PRJS_IN_TMPDefined over:TMPSIndexed set that describes all projects that could be operational in each timepoint.
Expressions
Capacity_MWDefined over:PRJ_OPR_PRDSDefines the project capacity in each period (in which the project can exist) in the model. The exact formulation of the expression depends on the project’s capacity_type. For each project, we call its capacity_type module’s capacity_rule method in order to formulate the expression. E.g. a project of the gen_spec capacity_type will have a have a pre-specified capacity whereas a project of the gen_new_lin capacity_type will have a model variable (or sum of variables) as its Capacity_MW.
Energy_Storage_Capacity_MWhDefined over:PRJ_OPR_PRDSDefines the project’s energy capacity in each period (in which the project can exist). The exact formulation of the expression depends on the project’s capacity_type. For each project, we call its capacity_type module’s energy_stor_capacity_rule method in order to formulate the expression.
gridpath.project.capacity.costs
The gridpath.project.capacity.costs module is a project-level module that adds to the formulation components that describe the capacity-related costs of projects (e.g. investment capital costs and fixed O&M costs).
- add_model_components(m, d, scenario_directory, weather_iteration, hydro_iteration, availability_iteration, subproblem, stage)[source]
The following Pyomo model components are defined in this module:
Expressions
Capacity_Cost_in_PeriodDefined Over:PRJ_OPR_PRDSThis expression describe each project’s capacity-related costs for each operational period, based on its capacity_type. For the purpose, call the capacity_cost_rule method from the respective capacity-type module. If the subproblem is less than a full year (e.g. in production- cost mode with 365 daily subproblems), the costs are scaled down proportionally.
gridpath.project.capacity.capacity_types
The gridpath.project.capacity.capacity_types package contains modules to describe the various ways in which project capacity can be treated in the optimization problem, e.g. as specified, available to be built, available to be retired, etc.
gridpath.project.capacity.capacity_types.gen_spec
The following Pyomo model components are defined in this module:
Sets |
|---|
GEN_SPEC_OPR_PRDSTwo-dimensional set of project-period combinations that describes the
project capacity available in a given period. This set is added to the
list of sets to join to get the final |
Required Input Params |
|---|
gen_spec_capacity_mwDefined over:
GEN_SPEC_OPR_PRDSWithin:
NonNegativeRealsThe project’s specified capacity (in MW) in each operational period. |
Optional Input Params |
|---|
gen_spec_fixed_cost_per_mw_yrDefined over:
GEN_SPEC_OPR_PRDSWithin:
NonNegativeRealsDefault:
0.The project’s fixed cost (in $ per MW-yr.) in each operational period. This cost will be added to the objective function but will not affect optimization decisions. |
gridpath.project.capacity.capacity_types.gen_new_lin
The following Pyomo model components are defined in this module:
Sets |
|---|
GEN_NEW_LIN_VNTSA two-dimensional set of project-vintage combinations to describe the periods in time when project capacity can be built in the optimization. |
Required Input Params |
|---|
gen_new_lin_operational_lifetime_yrs_by_vintageDefined over:
GEN_NEW_LIN_VNTSWithin:
NonNegativeRealsThe project’s lifetime, i.e. how long project capacity of a particular vintage remains operational. |
gen_new_lin_fixed_cost_per_mw_yrDefined over:
GEN_NEW_LIN_VNTSWithin:
NonNegativeRealsThe project’s fixed O&M cost incurred in each year in which the project is operational. |
gen_new_lin_financial_lifetime_yrs_by_vintageDefined over:
GEN_NEW_LIN_VNTSWithin:
NonNegativeRealsThe project’s financial lifetime, i.e. how long project capacity of a particular incurs annualized capital costs. |
gen_new_lin_annualized_real_cost_per_mw_yrDefined over:
GEN_NEW_LIN_VNTSWithin:
NonNegativeRealsThe project’s cost to build new capacity in annualized real dollars in per MW. |
Note
The cost input to the model is an annualized cost per unit capacity. This annualized cost is incurred in each period of the study (and multiplied by the number of years the period represents) for the duration of the project’s “financial” lifetime. It is up to the user to ensure that the variousl lifetime and cost parameters are consistent with one another and with the period length (projects are operational and incur capital costs only if the operational and financial lifetimes last through the end of a period respectively.
Derived Sets |
|---|
OPR_PRDS_BY_GEN_NEW_LIN_VINTAGEDefined over:
GEN_NEW_LIN_VNTSIndexed set that describes the operational periods for each possible
project-vintage combination, based on the
|
GEN_NEW_LIN_OPR_PRDSTwo-dimensional set that includes the periods when project capacity of
any vintage could be operational if built. This set is added to the
list of sets to join to get the final |
GEN_NEW_LIN_VNTS_OPR_IN_PERIODDefined over:
PERIODSIndexed set that describes the project-vintages that could be
operational in each period based on the
|
FIN_PRDS_BY_GEN_NEW_LIN_VINTAGEDefined over:
GEN_NEW_LIN_VNTSIndexed set that describes the financial periods for each possible
project-vintage combination, based on the
|
GEN_NEW_LIN_FIN_PRDSTwo-dimensional set that includes the periods when project capacity of
any vintage could be incurring costs if built. This set is added to
the list of sets to join to get the final |
GEN_NEW_LIN_VNTS_FIN_IN_PERIODDefined over:
PERIODSIndexed set that describes the project-vintages that could be incurring
costs in each period based on the
|
Variables |
|---|
GenNewLin_Build_MWDefined over:
GEN_NEW_LIN_VNTSWithin:
NonNegativeRealsDetermines how much capacity of each possible vintage is built at each gen_new_lin project. |
Expressions |
|---|
GenNewLin_Capacity_MWDefined over:
GEN_NEW_LIN_OPR_PRDSWithin:
NonNegativeRealsThe capacity of a new-build generator in a given operational period is equal to the sum of all capacity-build of vintages operational in that period. |
Constraints |
|---|
GenNewLin_Min_Cum_Build_ConstraintDefined over:
GEN_NEW_LIN_VNTS_W_MIN_CONSTRAINTEnsures that certain amount of capacity is built by a certain period,
based on |
GenNewLin_Max_Cum_Build_ConstraintDefined over:
GEN_NEW_LIN_VNTS_W_MAX_CONSTRAINTLimits the amount of capacity built by a certain period, based on
|
gridpath.project.capacity.capacity_types.gen_new_bin
The following Pyomo model components are defined in this module:
Sets |
|---|
GEN_NEW_BINTwo-dimensional set of project-vintage combinations to describe all possible project-vintage combinations for projects with a cumulative minimum build capacity specified. |
GEN_NEW_BIN_VNTSA two-dimensional set of project-vintage combinations to describe the periods in time when project capacity can be built in the optimization. |
Required Input Params |
|---|
gen_new_bin_operational_lifetime_yrs_by_vintageDefined over:
GEN_NEW_BIN_VNTSWithin:
NonNegativeRealsThe project’s lifetime, i.e. how long project capacity of a particular vintage remains operational. |
gen_new_bin_fixed_cost_per_mw_yrDefined over:
GEN_NEW_BIN_VNTSWithin:
NonNegativeRealsThe project’s fixed O&M cost incurred in each year in which the project is operational. |
gen_new_bin_financial_lifetime_yrs_by_vintageDefined over:
GEN_NEW_BIN_VNTSWithin:
NonNegativeRealsThe project’s financial lifetime, i.e. how long project capacity of a particular incurs annualized capital costs. |
gen_new_bin_annualized_real_cost_per_mw_yrDefined over:
GEN_NEW_BIN_VNTSWithin:
NonNegativeRealsThe project’s cost to build new capacity in annualized real dollars per MW. |
gen_new_bin_build_size_mwDefined over:
GEN_NEW_BINWithin:
NonNegativeRealsThe project’s specified build size in MW. The model can only build the project in this pre-specified size. |
Note
The cost input to the model is an annualized cost per unit capacity. This annualized cost is incurred in each period of the study (and multiplied by the number of years the period represents) for the duration of the project’s “financial” lifetime. It is up to the user to ensure that the variousl lifetime and cost parameters are consistent with one another and with the period length (projects are operational and incur capital costs only if the operational and financial lifetimes last through the end of a period respectively.
Derived Sets |
|---|
OPR_PRDS_BY_GEN_NEW_BIN_VINTAGEDefined over:
GEN_NEW_BIN_VNTSIndexed set that describes the operational periods for each possible
project-vintage combination, based on the
|
GEN_NEW_BIN_OPR_PRDSTwo-dimensional set that includes the periods when project capacity of
any vintage could be operational if built. This set is added to the
list of sets to join to get the final |
GEN_NEW_BIN_VNTS_OPR_IN_PERIODDefined over:
PERIODSIndexed set that describes the project-vintages that could be
operational in each period based on the
|
GEN_NEW_BIN_FIN_PRDSTwo-dimensional set that includes the periods when project capacity of
any vintage could be incurring annual capital costs if built. This
set is added to the list of sets to join to get the final
|
Variables |
|---|
GenNewBin_BuildDefined over:
GEN_NEW_BIN_VNTSWithin:
BinaryBinary build decision for each project-vintage combination (1=build). |
Constraints |
|---|
GenNewBin_Only_Build_Once_ConstraintDefined over:
GEN_NEW_BIN_OPR_PRDSOnce a project is built, it cannot be built again in another vintage until its lifetime is expired. |
gridpath.project.capacity.capacity_types.gen_ret_lin
The following Pyomo model components are defined in this module:
Sets |
|---|
GEN_RET_LINThe list of projects of the |
GEN_RET_LIN_OPR_PRDSTwo-dimensional set of project-period combinations that helps describe
the project capacity available in a given period. This set is added to
the list of sets to join to get the final |
OPR_PRDS_BY_GEN_RET_LINIndexed set that describes the operational periods for each
|
Required Input Params |
|---|
gen_ret_lin_capacity_mwDefined over:
GEN_RET_LIN_OPR_PRDSWithin:
NonNegativeRealsThe project’s specified capacity (in MW) in each operational period if no capacity is retired. |
gen_ret_lin_fixed_cost_per_mw_yrDefined over:
GEN_RET_LIN_OPR_PRDSWithin:
NonNegativeRealsThe project’s fixed cost (in $ per MW-yr.) in each operational period. This cost can be avoided by retiring the generation project. |
Variables |
|---|
GenRetLin_Retire_MWDefined over:
GEN_RET_LIN_OPR_PRDSThe amount of capacity (in MW) to be retired for each project in each
operational period. Has to be larger than zero and smaller than
|
Constraints |
|---|
GenRetLin_Retire_Forever_ConstraintDefined over:
GEN_RET_LIN_OPR_PRDSTotal capacity after retirement must be less than or equal what is was in the previous period. This ensures retirement decisions cannot be undone. |
gridpath.project.capacity.capacity_types.gen_ret_bin
The following Pyomo model components are defined in this module:
Sets |
|---|
GEN_RET_BINThe list of projects of the |
GEN_RET_BIN_OPR_PRDSTwo-dimensional set of project-period combinations that helps describe
the project capacity available in a given period. This set is added to
the list of sets to join to get the final |
OPR_PRDS_BY_GEN_RET_BINIndexed set that describes the operational periods for each
|
Required Input Params |
|---|
gen_ret_bin_capacity_mwDefined over:
GEN_RET_BIN_OPR_PRDSWithin:
NonNegativeRealsThe project’s specified capacity (in MW) in each operational period if no capacity is retired. |
gen_ret_bin_fixed_cost_per_mw_yrDefined over:
GEN_RET_BIN_OPR_PRDSWithin:
NonNegativeRealsThe project’s fixed cost (in $ per MW-yr.) in each operational period. This cost can be avoided by retiring the generation project. |
Variables |
|---|
GenRetBin_RetireDefined over:
GEN_RET_BIN_OPR_PRDSBinary decision variable that specifies whether the project is to be retired in a given operational period or not (1 = retire). When retired, no capacity will be available in that period and all following periods, and any fixed costs will no longer be incurred. |
Constraints |
|---|
GenRetBin_Retire_Forever_ConstraintDefined over:
GEN_RET_BIN_OPR_PRDSThe binary decision variable has to be less than or equal to the binary decision variable in the previous period. This will prevent capacity from coming back online after it has been retired. |
gridpath.project.capacity.capacity_types.stor_spec
The following Pyomo model components are defined in this module:
Sets |
|---|
STOR_SPEC_OPR_PRDSTwo-dimensional set of project-period combinations that helps describe
the project capacity available in a given period. This set is added to
the list of sets to join to get the final |
Required Input Params |
|---|
stor_spec_power_capacity_mwDefined over:
STOR_SPEC_OPR_PRDSWithin:
NonNegativeRealsThe storage project’s specified power capacity (in MW) in each operational period. |
stor_spec_energy_capacity_mwhDefined over:
STOR_SPEC_OPR_PRDSWithin:
NonNegativeRealsThe storage project’s specified energy capacity (in MWh) in each operational period. |
Optional Input Params |
|---|
stor_spec_fixed_cost_per_mw_yrDefined over:
STOR_SPEC_OPR_PRDSWithin:
NonNegativeRealsDefault:
0.The storage project’s fixed cost for the power components (in $ per MW-yr.) in each operational period. This cost will be added to the objective function but will not affect optimization decisions. |
stor_spec_fixed_cost_per_stor_mwh_yrDefined over:
STOR_SPEC_OPR_PRDSWithin:
NonNegativeRealsDefault:
0.The storage project’s fixed cost for the energy components (in $ per MWh-yr.) in each operational period. This cost will be added to the objective function but will not affect optimization decisions. |
gridpath.project.capacity.capacity_types.stor_new_lin
The following Pyomo model components are defined in this module:
Sets |
|---|
STOR_NEW_LINThe list of projects of capacity type |
STOR_NEW_LIN_VNTSA two-dimensional set of project-vintage combinations to describe the periods in time when storage capacity/energy can be built in the optimization. |
STOR_NEW_LIN_VNTS_W_MIN_CAPACITY_CONSTRAINTTwo-dimensional set of project-vintage combinations to describe all possible project-vintage combinations for projects with a cumulative minimum build capacity specified. |
STOR_NEW_LIN_VNTS_W_MIN_ENERGY_CONSTRAINTTwo-dimensional set of project-vintage combinations to describe all possible project-vintage combinations for projects with a cumulative minimum build energy specified. |
STOR_NEW_LIN_VNTS_W_MAX_CAPACITY_CONSTRAINTTwo-dimensional set of project-vintage combinations to describe all possible project-vintage combinations for projects with a cumulative maximum build capacity specified. |
STOR_NEW_LIN_VNTS_W_MAX_ENERGY_CONSTRAINTTwo-dimensional set of project-vintage combinations to describe all possible project-vintage combinations for projects with a cumulative maximum build energy specified. |
Required Input Params |
|---|
stor_new_lin_operational_lifetime_yrsDefined over:
STOR_NEW_LIN_VNTSWithin:
NonNegativeRealsThe project’s lifetime, i.e. how long project capacity/energy of a particular vintage remains operational. |
stor_new_lin_fixed_cost_per_mw_yrDefined over:
STOR_NEW_LIN_VNTSWithin:
NonNegativeRealsThe project’s power capacity fixed O&M cost incurred in each year in which the project is operational. |
stor_new_lin_fixed_cost_per_stor_mwh_yrDefined over:
STOR_NEW_LIN_VNTSWithin:
NonNegativeRealsThe project’s energy capacity fixed O&M cost incurred in each year in which the project is operational. |
stor_new_lin_financial_lifetime_yrs_by_vintageDefined over:
STOR_NEW_LIN_VNTSWithin:
NonNegativeRealsThe project’s financial lifetime, i.e. how long project capacity of a particular vintage incurs annualized capital costs. |
stor_new_lin_annualized_real_cost_per_mw_yrDefined over:
STOR_NEW_LIN_VNTSWithin:
NonNegativeRealsThe project’s cost to build new power capacity in annualized real dollars in per MW. |
stor_new_lin_annualized_real_cost_per_stor_mwh_yrDefined over:
STOR_NEW_LIN_VNTSWithin:
NonNegativeRealsThe project’s cost to build new energy capacity in annualized real dollars in per MW. |
Note
The cost input to the model is an annualized cost per unit capacity. This annualized cost is incurred in each period of the study (and multiplied by the number of years the period represents) for the duration of the project’s “financial” lifetime. It is up to the user to ensure that the variousl lifetime and cost parameters are consistent with one another and with the period length (projects are operational and incur capital costs only if the operational and financial lifetimes last through the end of a period respectively.
For example, if a project has a financial lifetime of 20 years and is built | | stor_new_lin_min_duration_hrs |
Optional Input Params |
|---|
Defined over:
STOR_NEW_LINWithin:
NonNegativeRealsDefault:
0The project’s minimum duration, i.e. ratio of MWh of energy capacity by MW of power capacity, in hours. Note this is not adjusted for discharging efficiency. |
stor_new_lin_max_duration_hrsDefined over:
STOR_NEW_LINWithin:
NonNegativeRealsDefault:
float("inf")The project’s maximum duration, i.e. ratio of MWh of energy capacity by MW of power capacity, in hours. Note this is not adjusted for discharging efficiency. |
Derived Sets |
|---|
OPR_PRDS_BY_STOR_NEW_LIN_VINTAGEDefined over:
STOR_NEW_LIN_VNTSIndexed set that describes the operational periods for each possible
project-vintage combination, based on the
|
STOR_NEW_LIN_OPR_PRDSTwo-dimensional set that includes the periods when project capacity of
any vintage could be operational if built. This set is added to the
list of sets to join to get the final |
STOR_NEW_LIN_VNTS_OPR_IN_PRDDefined over:
PERIODSIndexed set that describes the project-vintages that could be
operational in each period based on the
|
Variables |
|---|
StorNewLin_Build_MWDefined over:
STOR_NEW_LIN_VNTSWithin:
NonNegativeRealsDetermines how much power capacity (in MW) of each possible vintage is built at each stor_new_lin project. |
StorNewLin_Build_MWhDefined over:
STOR_NEW_LIN_VNTSWithin:
NonNegativeRealsDetermines how much energy capacity (in MWh) of each possible vintage
is built at each stor_new_lin project. Note that this is independent
from |
Expressions |
|---|
StorNewLin_Power_Capacity_MWDefined over:
STOR_NEW_LIN_OPR_PRDSWithin:
NonNegativeRealsThe power capacity of a new storage project (in MW) in a given operational period is equal to the sum of all capacity-build of vintages operational in that period. |
StorNewLin_Energy_Storage_Capacity_MWhDefined over:
STOR_NEW_LIN_OPR_PRDSWithin:
NonNegativeRealsThe energy capacity of a new storage project (in MWh) in a given operational period is equal to the sum of all energy-build of vintages operational in that period. |
Constraints |
|---|
StorNewLin_Min_Duration_ConstraintDefined over:
STOR_NEW_LIN_OPR_PRDSEnsures that the storage duration is above a pre-specified requirement when building the project, preventing situations when energy capacity is built first with power capacity only following in a subsequent vintage. |
StorNewLin_Max_Duration_ConstraintDefined over:
STOR_NEW_LIN_OPR_PRDSEnsures that the storage duration in each operational period is above a pre-specified requirement. |
gridpath.project.capacity.capacity_types.stor_new_bin
The following Pyomo model components are defined in this module:
Sets |
|---|
STOR_NEW_BINThe list of projects of capacity type |
STOR_NEW_BIN_VNTSA two-dimensional set of project-vintage combinations to describe the periods in time when storage capacity/energy can be built in the optimization. |
Required Input Params |
|---|
stor_new_bin_operational_lifetime_yrsDefined over:
STOR_NEW_BIN_VNTSWithin:
NonNegativeRealsThe project’s lifetime, i.e. how long project capacity/energy of a particular vintage remains operational. |
stor_new_bin_fixed_cost_per_mw_yrDefined over:
STOR_NEW_BIN_VNTSWithin:
NonNegativeRealsThe project’s power capacity fixed O&M cost incurred in each year in which the project is operational. |
stor_new_bin_fixed_cost_per_stor_mwh_yrDefined over:
STOR_NEW_BIN_VNTSWithin:
NonNegativeRealsThe project’s energy capacity fixed O&M cost incurred in each year in which the project is operational. |
stor_new_bin_financial_lifetime_yrs_by_vintageDefined over:
STOR_NEW_BIN_VNTSWithin:
NonNegativeRealsThe project’s financial lifetime, i.e. how long project capacity of a particular vintage incurs annualized capital costs. |
stor_new_bin_annualized_real_cost_per_mw_yrDefined over:
STOR_NEW_BIN_VNTSWithin:
NonNegativeRealsThe project’s cost to build new power capacity in annualized real dollars in per MW. |
stor_new_bin_annualized_real_cost_per_stor_mwh_yrDefined over:
STOR_NEW_BIN_VNTSWithin:
NonNegativeRealsThe project’s cost to build new energy capacity in annualized real dollars in per MW. |
stor_new_bin_build_size_mwDefined over:
STOR_NEW_BINWithin:
NonNegativeRealsThe project’s specified power capacity build size in MW. The model can only build the project in this pre-specified size. |
stor_new_bin_build_size_mwhDefined over:
STOR_NEW_BINWithin:
NonNegativeRealsThe project’s specified energy capacity build size in MWh. The model can only build the project in this pre-specified size. |
Note
The cost input to the model is an annualized cost per unit capacity. This annualized cost is incurred in each period of the study (and multiplied by the number of years the period represents) for the duration of the project’s “financial” lifetime. It is up to the user to ensure that the variousl lifetime and cost parameters are consistent with one another and with the period length (projects are operational and incur capital costs only if the operational and financial lifetimes last through the end of a period respectively.
Derived Sets |
|---|
OPR_PRDS_BY_STOR_NEW_BIN_VINTAGEDefined over:
STOR_NEW_BIN_VNTSIndexed set that describes the operational periods for each possible
project-vintage combination, based on the
|
STOR_NEW_BIN_OPR_PRDSTwo-dimensional set that includes the periods when project capacity of
any vintage could be operational if built. This set is added to the
list of sets to join to get the final |
STOR_NEW_BIN_VNTS_OPR_IN_PRDDefined over:
PERIODSIndexed set that describes the project-vintages that could be
operational in each period based on the
|
FIN_PRDS_BY_STOR_NEW_BIN_VINTAGEDefined over:
STOR_NEW_BIN_VNTSIndexed set that describes the financial periods for each possible
project-vintage combination, based on the
|
STOR_NEW_BIN_FIN_PRDSTwo-dimensional set that includes the periods when project capacity of
any vintage could be incurring costs if built. This set is added to
the list of sets to join to get the final |
Variables |
|---|
StorNewBin_BuildDefined over:
STOR_NEW_BIN_VNTSWithin:
BinaryBinary build decision for each project-vintage combination (1=build). |
Constraints |
|---|
StorNewBin_Only_Build_Once_ConstraintDefined over:
STOR_NEW_BIN_OPR_PRDSOnce a project is built, it cannot be built again in another vintage until its lifetime is expired. |
gridpath.project.capacity.capacity_types.gen_stor_hyb_spec
The following Pyomo model components are defined in this module:
Sets |
|---|
GEN_STOR_HYB_SPEC_OPR_PRDSTwo-dimensional set of project-period combinations that describes the
project capacity available in a given period. This set is added to the
list of sets to join to get the final |
Required Input Params |
|---|
gen_stor_hyb_spec_capacity_mwDefined over:
GEN_STOR_HYB_SPEC_OPR_PRDSWithin:
NonNegativeRealsThe project’s specified capacity (in MW) in each operational period. This is the grid-facing capacity, which can be different from the sizing of the internal generation and storage components of the hybrid project. |
gen_stor_hyb_spec_hyb_gen_capacity_mwDefined over:
GEN_STOR_HYB_SPEC_OPR_PRDSWithin:
NonNegativeRealsThe specified capacity (in MW) of the project’s generator component in each operational period. |
gen_stor_hyb_spec_hyb_stor_capacity_mwDefined over:
GEN_STOR_HYB_SPEC_OPR_PRDSWithin:
NonNegativeRealsThe specified capacity (in MW) of the project’s storage component in each operational period. |
gen_stor_hyb_spec_capacity_mwhDefined over:
GEN_STOR_HYB_SPEC_OPR_PRDSWithin:
NonNegativeRealsThe specified energy capacity (in MWh) of the project’s storage component in each operational period. |
Optional Input Params |
|---|
gen_stor_hyb_spec_fixed_cost_per_mw_yrDefined over:
GEN_STOR_HYB_SPEC_OPR_PRDSWithin:
NonNegativeRealsDefault:
0.The project’s fixed cost (in $ per MW-yr.) in each operational period. This cost will be added to the objective function but will not affect optimization decisions. Costs for the generator, storage, and energy capacity components can be added separately. |
gen_stor_hyb_spec_hyb_gen_fixed_cost_per_mw_yrDefined over:
GEN_STOR_HYB_SPEC_OPR_PRDSWithin:
NonNegativeRealsDefault:
0.The project’s fixed cost for its generator component (in $ per MW-yr.) in each operational period. This cost will be added to the objective function but will not affect optimization decisions. |
gen_stor_hyb_spec_hyb_stor_fixed_cost_per_mw_yrDefined over:
GEN_STOR_HYB_SPEC_OPR_PRDSWithin:
NonNegativeRealsDefault:
0.The project’s fixed cost for its storage power component (in $ per MW-yr.) in each operational period. This cost will be added to the objective function but will not affect optimization decisions. |
gen_stor_hyb_spec_fixed_cost_per_stor_mwh_yrDefined over:
GEN_STOR_HYB_SPEC_OPR_PRDSWithin:
NonNegativeRealsDefault:
0.The project’s fixed cost for its storage energy component (in $ per MWh-yr.) in each operational period. This cost will be added to the objective function but will not affect optimization decisions. |
gridpath.project.capacity.capacity_types.dr_new
The following Pyomo model components are defined in this module:
Sets |
|---|
DR_NEWThe list of |
DR_NEW_OPR_PRDSTwo-dimensional set of all |
DR_NEW_FIN_PRDSTwo-dimensional set of all |
DR_NEW_PTSTwo-dimensional set of all |
Required Input Params |
|---|
dr_new_min_durationDefined over:
DR_NEWWithin:
NonNegativeRealsThe project’s duration in hours, i.e. how many hours the load can be shifted. |
dr_new_min_cumulative_new_build_mwhDefined over:
DR_NEW_OPR_PRDSWithin:
NonNegativeRealsThe minimum cumulative amount of shiftable load capacity (in MWh) that must be built for a project by a certain period. |
dr_new_max_cumulative_new_build_mwhDefined over:
DR_NEW_OPR_PRDSWithin:
NonNegativeRealsThe maximum cumulative amount of shiftable load capacity (in MWh) that must be built for a project by a certain period. |
dr_new_supply_curve_slopeDefined over:
DR_NEW_PTSWithin:
NonNegativeRealsThe project’s slope for each point (section) in the piecewise linear supply cost curve, in $ per MWh. |
dr_new_supply_curve_interceptDefined over:
DR_NEW_PTSWithin:
NonNegativeRealsThe project’s intercept for each point (section) in the piecewise linear supply cost curve, in $. |
Variables |
|---|
DRNew_Build_MWhDefined over:
DR_NEW_OPR_PRDSWithin:
NonNegativeRealsDetermines how much shiftable load capacity (in MWh) is built in each operational period. |
DRNew_CostDefined over:
DR_NEW_OPR_PRDSWithin:
NonNegativeRealsThe cost of new shiftable load capacity in each operational period. |
Expressions |
|---|
DRNew_Energy_Storage_Capacity_MWhDefined over:
DR_NEW_OPR_PRDSWithin:
NonNegativeRealsThe project’s total energy capacity (in MWh) in each operational period is the sum of the new-built energy capacity in all of the previous periods. |
DRNew_Power_Capacity_MWDefined over:
DR_NEW_OPR_PRDSWithin:
NonNegativeRealsThe project’s total power capacity (in MW) in each operational period is equal to the total energy capacity in that period, divided by the project’s minimum duraiton (in hours). |
Constraints |
|---|
DRNew_Cost_ConstraintDefined over:
DR_NEW_PTS*PERIODSEnsures that the project’s cost in each operational period is larger than the calculated piecewise linear cost in each segment. Only one segment will bind at a time. |
Project Availability
gridpath.project.availability.availability
gridpath.project.availability.availability_types.exogenous
The following Pyomo model components are defined in this module:
Sets |
|---|
AVL_EXOGThe set of projects of the |
AVL_EXOG_OPR_TMPSTwo-dimensional set with projects of the |
gridpath.project.availability.availability_types.binary
The following Pyomo model components are defined in this module:
Sets |
|---|
AVL_BINThe set of projects of the |
AVL_BIN_OPR_PRDSTwo-dimensional set with projects of the |
AVL_BIN_OPR_TMPSTwo-dimensional set with projects of the |
Required Input Params |
|---|
avl_bin_unavl_hrs_per_prdDefined over:
AVL_BINWithin:
NonNegativeRealsThe number of hours the project must be unavailable per period. |
avl_bin_unavl_hrs_per_prd_req_exactDefined over:
AVL_BINWithin:
BooleanRequire exactly the number of hours the project must be unavailable per period. If set to 0, the constraint is soft. |
avl_bin_min_unavl_hrs_per_eventDefined over:
AVL_BINWithin:
NonNegativeRealsThe minimum number of hours an unavailability event should last for. |
avl_bin_min_avl_hrs_between_eventsDefined over:
AVL_BINWithin:
NonNegativeRealsThe minimum number of hours a project should be available between unavailability events. |
Variables |
|---|
AvlBin_UnavailableDefined over:
AVL_BIN_OPR_TMPSWithin:
BinaryBinary decision variable that specifies whether the project is unavailable or not in each operational timepoint (1=unavailable). |
AvlBin_Start_UnavailabilityDefined over:
AVL_BIN_OPR_TMPSWithin:
BinaryBinary decision variable that designates the start of an unavailability event (when the project goes from available to unavailable. |
AvlBin_Stop_UnavailabilityDefined over:
AVL_BIN_OPR_TMPSWithin:
BinaryBinary decision variable that designates the end of an unavailability event (when the project goes from unavailable to available. |
Constraints |
|---|
AvlBin_Tot_Sched_Unavl_per_Prd_ConstraintDefined over:
AVL_BIN_OPR_PRDSThe project must be unavailable for |
AvlBin_Unavl_Start_and_Stop_ConstraintDefined over:
AVL_BIN_OPR_TMPSLink the three binary variables in each timepoint such that
|
AvlBin_Min_Event_Duration_ConstraintDefined over:
AVL_BIN_OPR_TMPSThe duration of each unavailability event should be larger than or
equal to |
AvlBin_Min_Time_Between_Events_ConstraintDefined over:
AVL_BIN_OPR_TMPSThe time between unavailability events should be larger than or equal
to |
gridpath.project.availability.availability_types.continuous
The following Pyomo model components are defined in this module:
Sets |
|---|
AVL_CONTThe set of projects of the |
AVL_CONT_OPR_PRDSTwo-dimensional set with projects of the |
AVL_CONT_OPR_TMPSTwo-dimensional set with projects of the |
Required Input Params |
|---|
avl_cont_unavl_hrs_per_prdDefined over:
AVL_CONTWithin:
NonNegativeRealsThe number of hours the project must be unavailable per period. |
avl_cont_unavl_hrs_per_prd_req_exactDefined over:
AVL_BINWithin:
BooleanRequire exactly the number of hours the project must be unavailable per period. If set to 0, the constraint is soft. |
avl_cont_min_unavl_hrs_per_eventDefined over:
AVL_CONTWithin:
NonNegativeRealsThe minimum number of hours an unavailability event should last for. |
avl_cont_min_avl_hrs_between_eventsDefined over:
AVL_CONTWithin:
NonNegativeRealsThe minimum number of hours a project should be available between unavailability events. |
Variables |
|---|
AvlCont_UnavailableDefined over:
AVL_CONT_OPR_TMPSWithin:
PercentFractionContinuous decision variable that specifies whteher the project is unavailable or not in each operational timepoint (1=unavailable). |
AvlCont_Start_UnavailabilityDefined over:
AVL_CONT_OPR_TMPSWithin:
PercentFractionContinuous decision variable that designates the start of an unavailability event (when the project goes from available to unavailable. |
AvlCont_Stop_UnavailabilityDefined over:
AVL_CONT_OPR_TMPSWithin:
PercentFractionContinuous decision variable that designates the end of an unavailability event (when the project goes from unavailable to available. |
Constraints |
|---|
AvlCont_Tot_Sched_Unavl_per_Prd_ConstraintDefined over:
AVL_CONT_OPR_PRDSThe project must be unavailable for |
AvlCont_Unavl_Start_and_Stop_ConstraintDefined over:
AVL_CONT_OPR_TMPSLink the three continuous variables in each timepoint such that
|
AvlCont_Min_Event_Duration_ConstraintDefined over:
AVL_CONT_OPR_TMPSThe duration of each unavailability event should be larger than or
equal to |
AvlCont_Min_Time_Between_Events_ConstraintDefined over:
AVL_CONT_OPR_TMPSThe time between unavailability events should be larger than or equal
to |
Project Operations
gridpath.project.operations
The gridpath.project.operations package contains modules to describe the operational capabilities, constraints, and costs of generation, storage, and demand-side infrastructure ‘projects’ in the optimization problem.
In this package, we also create the project fuel burn and cost components to be passed downstream for aggregation into the system-level constraints and the objective function.
In the __init__ module of the package, we specify fuel burn and cost parameters for each project. The project’s operational type uses these parameters to determine the projects will incur fuel burn and cost in each operational timepoint. All parameters are optional, i.e. each type can be used without fuel or variable cost for example. Conversely, the user needs to ensure that the specified functionality makes sense for the project’s operational type, e.g. even if startup costs are specified for a gen_var project, that operational type uses the default method for startup costs, which returns 0, as variable generators do not have the concept of startup (see the documentation in operational_types.__init__ for the defaults and in each individual operational type module). When incompatible parameters are specified for an operational type, GridPath will flag a validation error and throw a warning (but not an error) at runtime.
gridpath.project.operations.power
The gridpath.project.capacity.capacity module is a project-level module that adds to the formulation components that describe the amount of power that a project is providing in each study timepoint.
- add_model_components(m, d, scenario_directory, weather_iteration, hydro_iteration, availability_iteration, subproblem, stage)[source]
The following Pyomo model components are defined in this module:
Expressions
Project_Power_Provision_MWDefined over:PRJ_OPR_TMPSDefines the power a project is producing in each of its operational timepoints. The exact formulation of the expression depends on the project’s operational_type. For each project, we call its capacity_type module’s power_provision_rule method in order to formulate the expression. E.g. a project of the gen_must_run operational_type will be producing power equal to its capacity while a dispatchable project will have a variable in its power provision expression. This expression will then be used by other modules.
Bulk_Power_Provision_MWDefined over:PRJ_OPR_TMPSDefines the power a project is producing in each of its operational timepoints from the bulk system perspective (adjusted for distribution losses.
gridpath.project.operations.costs
The gridpath.project.operations.costs module is a project-level module that adds to the formulation components that describe the operations-related costs of projects (e.g. variable O&M costs, fuel costs, startup and shutdown costs).
For the purpose, this module calls the respective method from the operational type modules.
- add_model_components(m, d, scenario_directory, weather_iteration, hydro_iteration, availability_iteration, subproblem, stage)[source]
The following Pyomo model components are defined in this module:
Sets
VAR_OM_COST_SIMPLE_PRJ_OPR_TMPSWithin:PRJ_OPR_TMPSThe two-dimensional set of projects for which a simple variable O&M cost is specified and their operational timepoints.
VAR_OM_COST_CURVE_PRJS_OPR_TMPS_SGMSThe three-dimensional set of projects for which a VOM cost curve is specified along with the VOM curve segments and the project operational timepoints.
VAR_OM_COST_CURVE_PRJS_OPR_TMPSWithin:PRJ_OPR_TMPSThe two-dimensional set of projects for which a VOM cost curve is specified along with their operational timepoints.
VAR_OM_COST_ALL_PRJS_OPR_TMPSWithin:PRJ_OPR_TMPSThe two-dimensional set of projects for which either or both a simple VOM or a VOM curve is specified along with their operational timepoints.
STARTUP_COST_PRJ_OPR_TMPSWithin:PRJ_OPR_TMPSThe two-dimensional set of projects for which a startup cost is specified along with their operational timepoints.
SHUTDOWN_COST_PRJ_OPR_TMPSWithin:PRJ_OPR_TMPSThe two-dimensional set of projects for which a shutdown cost curve is specified along with their operational timepoints.
VIOL_ALL_PRJ_OPR_TMPSWithin:PRJ_OPR_TMPSThe two-dimensional set of projects for which an operational constraint can be violated along with their operational timepoints.
CURTAILMENT_COST_PRJ_OPR_TMPSWithin:PRJ_OPR_TMPSThe two-dimensional set of projects for which an curtailment costs are incurred along with their operational timepoints.
Variables
Variable_OM_Curve_CostDefined over:VAR_OM_COST_CURVE_PRJS_OPR_TMPSWithin:NonNegativeRealsVariable cost in each operational timepoint of projects with a VOM cost curve.
Constraints
Variable_OM_Curve_ConstraintDefined over:VAR_OM_COST_CURVE_PRJS_OPR_TMPS_SGMSDetermines variable cost from the project in each timepoint based on its VOM curve.
Expressions
Variable_OM_CostDefined over:VAR_OM_COST_ALL_PRJS_OPR_TMPSThis is the variable cost incurred in each operational timepoints for projects for which either a simple VOM or a VOM curve is specified. If both are specified, the two are additive. We obtain the simple VOM by calling the variable_om_cost_rule method of a project’s operational_type module. We obtain the VOM curve cost by calling the variable_om_cost_by_ll_rule method of a project’s operational type, using that to create the Variable_OM_Curve_Constraint on the Variable_OM_Curve_Cost variable, and the using the variable in this expression.
Fuel_CostDefined over:FUEL_PRJ_OPR_TMPSThis expression defines the fuel cost of a project in all of its operational timepoints by summing across fuel burn by fuel times each fuel’s price.
Startup_CostDefined over:STARTUP_COST_PRJ_OPR_TMPSThis expression defines the startup cost of a project in all of its operational timepoints. We obtain the expression by calling the startup_cost_rule method of a project’s operational_type module.
Shutdown_CostDefined over:SHUTDOWN_COST_PRJ_OPR_TMPSThis expression defines the shutdown cost of a project in all of its operational timepoints. We obtain the expression by calling the shutdown_cost_rule method of a project’s operational_type module.
Operational_Violation_CostDefined over:VIOL_ALL_PRJ_OPR_TMPSThis expression defines the operational constraint violation cost of a project in all of its operational timepoints. We obtain the expression by calling the operational_violation_cost_rule method of a project’s operational_type module.
Curtailment_CostDefined over:CURTAILMENT_COST_PRJ_OPR_TMPSThis expression defines the curtailment cost of a project in all of its operational timepoints. We obtain the expression by calling the curtailment_cost_rule method of a project’s operational_type module.
gridpath.project.operations.carbon_emissions
Carbon emissions from each carbonaceous project.
- add_model_components(m, d, scenario_directory, weather_iteration, hydro_iteration, availability_iteration, subproblem, stage)[source]
The following Pyomo model components are defined in this module:
Expressions
Project_Carbon_EmissionsDefined over:FUEL_PRJ_OPR_TMPSThe project’s carbon emissions for each timepoint in which the project could be operational. Note that this is an emissions RATE (per hour) and should be multiplied by the timepoint duration and timepoint weight to get the total emissions amount during that timepoint.
gridpath.project.operations.carbon_tax
- add_model_components(m, d, scenario_directory, weather_iteration, hydro_iteration, availability_iteration, subproblem, stage)[source]
The following Pyomo model components are defined in this module:
Sets
CARBON_TAX_PRJSWithin:PROJECTSTwo set of carbonaceous projects we need to track for the carbon tax.
Required Input Params
carbon_tax_zoneDefined over:CARBON_TAX_PRJSWithin:CARBON_TAX_ZONESThis param describes the carbon tax zone for each carbon tax project.
carbon_tax_allowanceDefined over:CARBON_TAX_PRJS, FUEL_GROUPS, PERIODSWithin:NonNegativeRealsThis param describes the carbon tax allowance for each carbon tax project and fuel group.
carbon_tax_allowance_average_heat_rateDefined over:CARBON_TAX_PRJS, PERIODSWithin:PositiveRealsThis param describes the average heat rate for each carbon tax project used to calculate the carbon tax allowance.
Derived Sets
CARBON_TAX_PRJS_BY_CARBON_TAX_ZONEDefined over:CARBON_TAX_ZONESWithin:CARBON_TAX_PRJSIndexed set that describes the list of carbonaceous projects for each carbon tax zone.
CARBON_TAX_PRJ_OPR_TMPSWithin:PRJ_OPR_TMPSTwo-dimensional set that defines all project-timepoint combinations when a carbon tax project can be operational.
CARBON_TAX_PRJ_OPR_PRDSWithin:PRJ_OPR_PRDSTwo-dimensional set that defines all project-period combinations when a carbon tax project can be operational.
CARBON_TAX_PRJ_FUEL_GROUP_OPR_TMPSTwo-dimensional set that defines all project-fuel_group-timepoint combinations when a carbon tax project can be operational.
CARBON_TAX_PRJ_FUEL_GROUP_OPR_PRDSTwo-dimensional set that defines all project-fuel_group-period combinations when a carbon tax project can be operational.
gridpath.project.operations.fuel_burn
This module keeps track of fuel burn for each project. Fuel burn consists of both operational fuel burn for power production, and startup fuel burn (if applicable).
- add_model_components(m, d, scenario_directory, weather_iteration, hydro_iteration, availability_iteration, subproblem, stage)[source]
The following Pyomo model components are defined in this module:
Sets
FUEL_PRJ_OPR_TMPSWithin:PRJ_OPR_TMPSThe two-dimensional set of projects for which a fuel is specified and their operational timepoints.
HR_CURVE_PRJS_OPR_TMPS_SGMSThe three-dimensional set of projects for which a heat rate curve is specified along with the heat rate curve segments and the project operational timepoints.
HR_CURVE_PRJS_OPR_TMPSWithin:PRJ_OPR_TMPSThe two-dimensional set of projects for which a heat rate curve is specified along with their operational timepoints.
STARTUP_FUEL_PRJ_OPR_TMPSWithin:FUEL_PRJ_OPR_TMPSThe two-dimensional set of projects for which startup fuel burn is specified and their operational timepoints.
Variables
HR_Curve_Prj_Fuel_BurnDefined over:HR_CURVE_PRJS_OPR_TMPSWithin:NonNegativeRealsFuel burn in each operational timepoint of projects with a heat rate curve.
Project_Opr_Fuel_Burn_by_FuelDefined over:FUEL_PRJS_FUEL_OPR_TMPSWithin:NonNegativeRealsFuel burn by fuel in each operational timepoint of each fuel project.
Project_Startup_Fuel_Burn_by_FuelDefined over:FUEL_PRJS_FUEL_OPR_TMPSWithin:NonNegativeRealsStartup fuel burn by fuel in each operational timepoint of each startup fuel project.
Expressions
Operations_Fuel_Burn_MMBtuWithin:PRJ_OPR_TMPSThis expression describes each project’s operational fuel consumption (in MMBtu) in all operational timepoints. We obtain it by calling the fuel_burn_rule method in the relevant operational_type. This does not include fuel burn for startups, which has a separate expression.
Startup_Fuel_Burn_MMBtuWithin:PRJ_OPR_TMPSThis expression describes each project’s startup fuel consumption (in MMBtu) in all operational timepoints. We obtain it by calling the startup_fuel_burn_rule method in the relevant operational_type. Only operational types with commitment variables can have startup fuel burn (for others it will always return zero).
Total_Fuel_Burn_by_Fuel_MMBtuWithin:PRJ_OPR_TMPSTotal fuel burn is the sum of operational fuel burn for power production and startup fuel burn (by fuel).
Constraints
HR_Curve_Prj_Fuel_Burn_ConstraintDefined over:HR_CURVE_PRJS_OPR_TMPS_SGMSDetermines fuel burn from the project in each timepoint based on its heat rate curve.
Fuel_Blending_Opr_Fuel_Burn_ConstraintDefined over:FUEL_PRJ_OPR_TMPSThe sum of operations fuel burn across all fuels should equal the total operations fuel burn.
Fuel_Blending_Startup_Fuel_Burn_ConstraintDefined over:STARTUP_FUEL_PRJ_OPR_TMPSThe sum of startup fuel burn across all fuels should equal the total operations fuel burn.
gridpath.project.operations.cycle_select
The gridpath.project.operations.cycle_select module is a project-level module that adds to the formulation components that describe cycle selection constraints, i.e. mutually exclusive syncing of projects. An example might be a plant that can be operated in either simple cycle or combined cycle mode. This plant would be described by multiple projects with mutually exclusive Sync variables, i.e. only one of the projects can be synced at any time.
- add_model_components(m, d, scenario_directory, weather_iteration, hydro_iteration, availability_iteration, subproblem, stage)[source]
The tables below list the Pyomo model components defined in the ‘gen_commit_bin’ module followed below by the respective components defined in the ‘gen_commit_lin” module.
Sets
GEN_W_CYCLE_SELECTWithin:GEN_COMMIT_BINLINProjects that have “cycle select” constraints.
GEN_CYCLE_SELECT_BY_GENDefined over:GEN_W_CYCLE_SELECTWithin:GEN_COMMIT_BINLINIndexed set that describes each project’s list of “cycle select” – projects that cannot be ‘synced’ when this project is synced, e.g. when choosing simple-cycle vs. combined cycle operational model.
GEN_W_GEN_CYCLE_SELECT_OPR_TMPSThree-dimensional set with generators of the respective operational type, their “cycle select” projects, and their their operational timepoints. Note that projects that don’t have “cycle select” projects are not included in this set.
Constraints
Gen_Commit_BinLin_Select_Cycle_ConstraintDefined over:GEN_W_GEN_CYCLE_SELECT_OPR_TMPSThis generator can only be synced if the “cycle select” generator is not synced (the sum of the Sync variables of the two must be less than or equal to 1.
gridpath.project.operations.supplemental_firing
The gridpath.project.operations.cycle_select module is a project-level module that adds to the formulation components that describe cycle selection constraints, i.e. mutually exclusive syncing of projects. An example might be a plant that can be operated in either simple cycle or combined cycle mode. This plant would be described by multiple projects with mutually exclusive Sync variables, i.e. only one of the projects can be synced at any time.
- add_model_components(m, d, scenario_directory, weather_iteration, hydro_iteration, availability_iteration, subproblem, stage)[source]
The tables below list the Pyomo model components defined in the ‘gen_commit_bin’ module followed below by the respective components defined in the ‘gen_commit_lin” module.
Sets
GEN_W_SUPPLEMENTAL_FIRINGWithin:GEN_COMMIT_BINLINProjects that have “cycle select” constraints.
GEN_SUPPLEMENTAL_FIRING_BY_GENDefined over:GEN_W_SUPPLEMENTAL_FIRINGWithin:GEN_COMMIT_BINLINIndexed set that describes each project’s list of “cycle select” – projects that cannot be ‘synced’ when this project is synced, e.g. when choosing simple-cycle vs. combined cycle operational model.
GEN_W_GEN_SUPPLEMENTAL_FIRING_OPR_TMPSThree-dimensional set with generators of the respective operational type, their “supplemental firing” projects, and their their operational timepoints. Note that projects that don’t have “supplemental firing” projects are not included in this set.
Constraints
Gen_Commit_BinLin_Select_Cycle_ConstraintDefined over:GEN_W_GEN_SUPPLEMENTAL_FIRING_OPR_TMPSThis generator can only be synced if the “cycle select” generator is not synced (the sum of the Sync variables of the two must be less than or equal to 1.
gridpath.project.operations.energy_target_contributions
Get RECs for each project
- add_model_components(m, d, scenario_directory, weather_iteration, hydro_iteration, availability_iteration, subproblem, stage)[source]
The following Pyomo model components are defined in this module:
Sets
ENERGY_TARGET_PRJSWithin:PROJECTSThe set of all energy-target-eligible projects.
ENERGY_TARGET_PRJ_OPR_TMPSTwo-dimensional set that defines all project-timepoint combinations when an energy-target-elgible project can be operational.
ENERGY_TARGET_PRJS_BY_ENERGY_TARGET_ZONEDefined over:ENERGY_TARGET_ZONESWithin:ENERGY_TARGET_PRJSIndexed set that describes the energy-target projects for each energy-target zone.
Input Params
energy_target_zoneDefined over:ENERGY_TARGET_PRJSWithin:ENERGY_TARGET_ZONESThis param describes the energy-target zone for each energy-target project.
Expressions
Scheduled_Energy_Target_Energy_MWDefined over:ENERGY_TARGET_PRJ_OPR_TMPSDescribes how many RECs (in MW) are scheduled for each energy-target-eligible project in each timepoint.
Scheduled_Curtailment_MWDefined over:ENERGY_TARGET_PRJ_OPR_TMPSDescribes the amount of scheduled curtailment (in MW) for each energy-target-eligible project in each timepoint.
Subhourly_Energy_Target_Energy_MWDefined over:ENERGY_TARGET_PRJ_OPR_TMPSDescribes how many RECs (in MW) are delivered subhourly for each energy-target-eligible project in each timepoint. Subhourly energy-target energy delivery can occur due to sub-hourly upward reserve dispatch (e.g. reg-up).
Subhourly_Curtailment_MWDefined over:ENERGY_TARGET_PRJ_OPR_TMPSDescribes the amount of subhourly curtailment (in MW) for each energy-target-eligible project in each timepoint. Subhourly curtailment can occur due to sub-hourly downward reserve dispatch (e.g. reg-down).
gridpath.project.operations.performance_standard
- add_model_components(m, d, scenario_directory, weather_iteration, hydro_iteration, availability_iteration, subproblem, stage)[source]
The following Pyomo model components are defined in this module:
Sets
PERFORMANCE_STANDARD_PRJS_PERFORMANCE_STANDARD_ZONESWithin:m.PROJECTS * m.PERFORMANCE_STANDARD_ZONESset of projects we need to track for the performance standard. Two-dimensional set of performance standard projects and the performance standard zones they contribute to. Projects can contribute to multiple performance standard zones.
Derived Sets
PERFORMANCE_STANDARD_PRJSWithin:PROJECTSTwo set of performance standard projects we need to track for the performance standard.
PERFORMANCE_STANDARD_PRJS_BY_PERFORMANCE_STANDARD_ZONEDefined over:PERFORMANCE_STANDARD_ZONESWithin:PERFORMANCE_STANDARD_PRJSIndexed set that describes the list of performance standard projects for each performance standard zone.
PERFORMANCE_STANDARD_OPR_TMPSWithin:PRJ_OPR_TMPSTwo-dimensional set that defines all project-timepoint combinations when a performance standard project can be operational.
PERFORMANCE_STANDARD_OPR_PRDSWithin:PRJ_OPR_PRDSTwo-dimensional set that defines all project-period combinations when a performance standard project can be operational.
gridpath.project.operations.cap_factor_limits
The gridpath.project.operations.cap_factor_limits module is a project-level module that adds to the formulation components that limit the minimum and maximum cap factor of a project over a horizon.
- add_model_components(m, d, scenario_directory, weather_iteration, hydro_iteration, availability_iteration, subproblem, stage)[source]
The tables below list the Pyomo model components defined in the ‘gen_commit_bin’ module followed below by the respective components defined in the ‘gen_commit_lin” module.
Sets
CAP_FACTOR_LIMIT_PRJ_BT_HRZWithin:PROJECTS*BLN_TYPE_HRZSThree-dimensional set with the project, horizon balancing type, and horizon over which cap factor limits should be enforced.
Input Params
min_cap_factorDefined over:CAP_FACTOR_LIMIT_PRJ_BT_HRZWithin:RealsDefault:Negative_InfinityThe project’s minimum cap factor for this horizon balancing type and horizon. It can be negative to allow us to limit storage (which is a net load over the course of the horizon due to losses.
max_cap_factorDefined over:CAP_FACTOR_LIMIT_PRJ_BT_HRZWithin:RealsDefault:InfinityThe project’s maximum cap factor for this horizon balancing type and horizon. It can be negative to allow us to limit storage (which is a net load over the course of the horizon due to losses.
Constraints
Min_Cap_Factor_ConstraintDefined over:CAP_FACTOR_LIMIT_PRJ_BT_HRZEnergy output from this project over this balancing type and horizon must equal or exceed the minimum capacity factor multiplied by the maximum possible output over this balancing type and horizon.
Max_Cap_Factor_ConstraintDefined over:CAP_FACTOR_LIMIT_PRJ_BT_HRZEnergy output from this project over this balancing type and horizon must be less than or equal to the maximum capacity factor multiplied by the maximum possible output over this balancing type and horizon.
gridpath.project.operations.tuning_costs
Operational tuning costs that prevent erratic dispatch in case of degeneracy. Tuning costs can be applied to hydro up and down ramps (gen_hydro and gen_hydro_must_take operational types) and to storage up-ramps ( stor operational type) in order to force smoother dispatch.
- add_model_components(m, d, scenario_directory, weather_iteration, hydro_iteration, availability_iteration, subproblem, stage)[source]
The following Pyomo model components are defined in this module:
Variables
Ramp_Up_Tuning_CostDefined over:PRJ_OPR_TMPSWithin:NonNegativeRealsThis variable represents the total upward ramping tuning cost for each project in each operational timepoint.
Ramp_Up_Tuning_CostDefined over:PRJ_OPR_TMPSWithin:NonNegativeRealsThis variable represents the total downwward ramping tuning cost for each project in each operational timepoint.
Expressions
Ramp_ExpressionDefined over:PRJ_OPR_TMPSThis expression pulls the ramping expression from the appropriate operational type module. It represents the difference in power output (in MW) between 2 timepoints; i.e. a positive number means upward ramp and a negative number means downward ramp. For simplicity, we only look at the difference in power setpoints, i.e. ignore the effect of providing any reserves.
Constraints
Ramp_Up_Tuning_Cost_ConstraintDefined over:PRJ_OPR_TMPSSets the upward ramping tuning cost to be equal to the ramp expression times the tuning cost (for the appropriate operational types only).
Ramp_Down_Tuning_Cost_ConstraintDefined over:PRJ_OPR_TMPSSets the downward ramping tuning cost to be equal to the ramp expression times the tuning cost (for the appropriate operational types only).
gridpath.project.capacity.operational_types.gen_simple
The following Pyomo model components are defined in this module:
Sets |
|---|
GEN_SIMPLEThe set of generators of the |
GEN_SIMPLE_OPR_TMPSTwo-dimensional set with generators of the |
GEN_SIMPLE_LINKED_TMPSTwo-dimensional set with generators of the |
Optional Input Params |
|---|
gen_simple_ramp_up_when_on_rateDefined over:
GEN_SIMPLEWithin:
PercentFractionDefault:
1The project’s upward ramp rate limit during operations, defined as a fraction of its capacity per minute. |
gen_simple_ramp_down_when_on_rateDefined over:
GEN_SIMPLEWithin:
PercentFractionDefault:
1The project’s downward ramp rate limit during operations, defined as a fraction of its capacity per minute. |
Linked Input Params |
|---|
gen_simple_linked_powerDefined over:
GEN_SIMPLE_LINKED_TMPSWithin:
NonNegativeRealsThe project’s power provision in the linked timepoints. |
gen_simple_linked_upwards_reservesDefined over:
GEN_SIMPLE_LINKED_TMPSWithin:
NonNegativeRealsThe project’s upward reserve provision in the linked timepoints. |
gen_simple_linked_downwards_reservesDefined over:
GEN_SIMPLE_LINKED_TMPSWithin:
NonNegativeRealsThe project’s downward reserve provision in the linked timepoints. |
Variables |
|---|
GenSimple_Provide_Power_MWDefined over:
GEN_SIMPLE_OPR_TMPSWithin:
NonNegativeRealsPower provision in MW from this project in each timepoint in which the project is operational (capacity exists and the project is available). |
Constraints |
|---|
Power |
GenSimple_Max_Power_ConstraintDefined over:
GEN_SIMPLE_OPR_TMPSLimits the power plus upward reserves to the available capacity. |
GenSimple_Min_Power_ConstraintDefined over:
GEN_SIMPLE_OPR_TMPSPower provision minus downward reserves should exceed the minimum stable level for the project. |
Ramps |
GenSimple_Ramp_Up_ConstraintDefined over:
GEN_SIMPLE_OPR_TMPSLimits the allowed project upward ramp based on the
|
GenSimple_Ramp_Down_ConstraintDefined over:
GEN_SIMPLE_OPR_TMPSLimits the allowed project downward ramp based on the
|
gridpath.project.capacity.operational_types.gen_must_run
The following Pyomo model components are defined in this module:
Sets |
|---|
GEN_MUST_RUNThe set of generators of the |
GEN_MUST_RUN_OPR_TMPSTwo-dimensional set with generators of the |
Optional Input Params |
|---|
gen_must_run_aux_consumption_frac_capacityDefined over:
GEN_MUST_RUNWithin:
PercentFractionDefault:
0Auxiliary consumption as a fraction of capacity. This would be incurred all timepoints when capacity is available. |
Constraints |
|---|
GenMustRun_No_Upward_Reserves_ConstraintDefined over:
GEN_MUST_RUN_OPR_TMPSMust-run projects cannot provide upward reserves. |
GenMustRun_No_Downward_Reserves_ConstraintDefined over:
GEN_MUST_RUN_OPR_TMPSMust-run projects cannot provide downward reserves. |
gridpath.project.capacity.operational_types.gen_always_on
The following Pyomo model components are defined in this module:
Sets |
|---|
GEN_ALWAYS_ONThe set of generators of the |
GEN_ALWAYS_ON_OPR_TMPSTwo-dimensional set with generators of the |
GEN_ALWAYS_ON_LINKED_TMPSTwo-dimensional set with generators of the |
Required Input Params |
|---|
gen_always_on_unit_size_mwDefined over:
GEN_ALWAYS_ONWithin:
NonNegativeRealsThe MW size of a unit in this project (projects of the
|
gen_always_on_min_stable_level_fractionDefined over:
GEN_ALWAYS_ONWithin:
PercentFractionThe minimum stable level of this project as a fraction of its capacity. This can also be interpreted as the minimum stable level of a unit within this project (as the project itself can represent multiple units with similar characteristics. |
Optional Input Params |
|---|
gen_always_on_ramp_up_when_on_rateDefined over:
GEN_ALWAYS_ONWithin:
PercentFractionDefault:
1The project’s upward ramp rate limit during operations, defined as a fraction of its capacity per minute. |
gen_always_on_ramp_down_when_on_rateDefined over:
GEN_ALWAYS_ONWithin:
PercentFractionDefault:
1The project’s downward ramp rate limit during operations, defined as a fraction of its capacity per minute. |
gen_always_on_aux_consumption_frac_capacityDefined over:
GEN_ALWAYS_ONWithin:
PercentFractionDefault:
0Auxiliary consumption as a fraction of capacity. This would be incurred in all timepoints when capacity is available. |
gen_always_on_aux_consumption_frac_powerDefined over:
GEN_ALWAYS_ONWithin:
PercentFractionDefault:
0Auxiliary consumption as a fraction of gross power output. |
Linked Input Params |
|---|
gen_always_on_linked_powerDefined over:
GEN_ALWAYS_ON_LINKED_TMPSWithin:
NonNegativeRealsThe project’s power provision in the linked timepoints. |
gen_always_on_linked_upwards_reservesDefined over:
GEN_ALWAYS_ON_LINKED_TMPSWithin:
NonNegativeRealsThe project’s upward reserve provision in the linked timepoints. |
gen_always_on_linked_downwards_reservesDefined over:
GEN_ALWAYS_ON_LINKED_TMPSWithin:
NonNegativeRealsThe project’s downward reserve provision in the linked timepoints. |
Variables |
|---|
GenAlwaysOn_Gross_Power_MWDefined over:
GEN_ALWAYS_ON_OPR_TMPSWithin:
NonNegativeRealsPower provision in MW from this project in each timepoint in which the project is operational (capacity exists and the project is available). |
Expressions |
|---|
GenAlwaysOn_Auxiliary_Consumption_MWDefined over:
GEN_ALWAYS_ON_OPR_TMPSThe project’s auxiliary consumption (power consumed on-site and not sent to the grid) in each timepoint. |
Constraints |
|---|
Power |
GenAlwaysOn_Max_Power_ConstraintDefined over:
GEN_ALWAYS_ON_OPR_TMPSLimits the power plus upward reserves to the available capacity. |
GenAlwaysOn_Min_Power_ConstraintDefined over:
GEN_ALWAYS_ON_OPR_TMPSPower provision minus downward reserves should exceed the minimum stable level for the project. |
Ramps |
GenAlwaysOn_Ramp_Up_ConstraintDefined over:
GEN_ALWAYS_ON_OPR_TMPSLimits the allowed project upward ramp based on the
|
GenAlwaysOn_Ramp_Down_ConstraintDefined over:
GEN_ALWAYS_ON_OPR_TMPSLimits the allowed project downward ramp based on the
|
gridpath.project.capacity.operational_types.gen_commit_bin
See the formulation documentation in the gen_commit_unit_common.add_model_components().
gridpath.project.capacity.operational_types.gen_commit_lin
See the formulation documentation in the gen_commit_unit_common.add_model_components().
gridpath.project.capacity.operational_types.gen_commit_unit_common
The tables below list the Pyomo model components defined in the ‘gen_commit_bin’ module followed below by the respective components defined in the ‘gen_commit_lin” module.
Sets |
|---|
GEN_COMMIT_BINGEN_COMMIT_LINThe set of generators of the |
GEN_COMMIT_BIN_STARTUP_BY_ST_PRJSwithin:
GEN_COMMIT_BINGEN_COMMIT_LIN_STARTUP_BY_ST_PRJSwithin:
GEN_COMMIT_LINThe set of generators of the |
GEN_COMMIT_BIN_STARTUP_BY_ST_PRJS_TYPESGEN_COMMIT_LIN_STARTUP_BY_ST_PRJS_TYPESTwo-dimensional set of generators of the respective operational type
and their startup types (if the project is in
|
GEN_COMMIT_BIN_OPR_TMPSGEN_COMMIT_LIN_OPR_TMPSTwo-dimensional set with generators of the respective operational type and their operational timepoints. |
GEN_COMMIT_BIN_OPR_TMPS_STR_TYPESGEN_COMMIT_LIN_OPR_TMPS_STR_TYPESThree-dimensional set with generators of the respective operational
type, their operational timepoints, and their startup types (if the
project is in |
GEN_COMMIT_BIN_STR_TYPES_BY_PRJDefined over:
GEN_COMMIT_BINGEN_COMMIT_LIN_STR_TYPES_BY_PRJDefined over:
GEN_COMMIT_LINIndexed set that describes the startup types for each project of the respective operational type. |
GEN_COMMIT_BIN_LINKED_TMPSGEN_COMMIT_LIN_LINKED_TMPSTwo-dimensional set with generators of the respective operational type and their linked timepoints. |
Required Input Params |
|---|
gen_commit_bin_min_stable_level_fractionDefined over:
GEN_COMMIT_BINWithin:
PercentFractiongen_commit_lin_min_stable_level_fractionDefined over:
GEN_COMMIT_LINWithin:
PercentFractionThe minimum stable level of this project as a fraction of its capacity. |
Optional Input Params |
|---|
gen_commit_bin_ramp_up_when_on_rateDefined over:
GEN_COMMIT_BINWithin:
PercentFractionDefault:
1gen_commit_lin_ramp_up_when_on_rateDefined over:
GEN_COMMIT_LINWithin:
PercentFractionDefault:
1The project’s upward ramp rate limit during operations, defined as a fraction of its capacity per minute. |
gen_commit_bin_ramp_down_when_on_rateDefined over:
GEN_COMMIT_BINWithin:
PercentFractionDefault:
1gen_commit_lin_ramp_down_when_on_rateDefined over:
GEN_COMMIT_LINWithin:
PercentFractionDefault:
1The project’s downward ramp rate limit during operations, defined as a fraction of its capacity per minute. |
gen_commit_bin_startup_plus_ramp_up_rate_by_stDefined over:
GEN_COMMIT_BIN_STARTUP_BY_ST_PRJS_TYPESWithin:
PercentFractionDefault:
1gen_commit_lin_startup_plus_ramp_up_rate_by_stDefined over:
GEN_COMMIT_LIN_STARTUP_BY_ST_PRJS_TYPESWithin:
PercentFractionDefault:
1The project’s upward ramp rate limit during startup for a given startup type, defined as a fraction of its capacity per minute. If, after adjusting for timepoint duration, this is smaller than the minimum stable level, the project will have a startup trajectory across multiple timepoints. |
gen_commit_bin_shutdown_plus_ramp_down_rateDefined over:
GEN_COMMIT_BINWithin:
PercentFractionDefault:
1gen_commit_lin_shutdown_plus_ramp_down_rateDefined over:
GEN_COMMIT_LINWithin:
PercentFractionDefault:
1The project’s downward ramp rate limit during startup, defined as a fraction of its capacity per minute. If, after adjusting for timepoint duration, this is smaller than the minimum stable level, the project will have a shutdown trajectory across multiple timepoitns. |
gen_commit_bin_min_up_time_hoursDefined over:
GEN_COMMIT_BINWithin:
NonNegativeRealsDefault:
0gen_commit_lin_min_up_time_hoursDefined over:
GEN_COMMIT_LINWithin:
NonNegativeRealsDefault:
0The project’s minimum up time in hours. |
gen_commit_bin_min_down_time_hoursDefined over:
GEN_COMMIT_BINWithin:
NonNegativeRealsDefault:
0gen_commit_lin_min_down_time_hoursDefined over:
GEN_COMMIT_LINWithin:
NonNegativeRealsDefault:
0The project’s minimum down time in hours. |
gen_commit_bin_aux_consumption_frac_capacityDefined over:
GEN_COMMIT_BINWithin:
PercentFractionDefault:
0gen_commit_lin_aux_consumption_frac_capacityDefined over:
GEN_COMMIT_LINWithin:
PercentFractionDefault:
0Auxiliary consumption as a fraction of committed capacity. |
gen_commit_bin_aux_consumption_frac_powerDefined over:
GEN_COMMIT_BINWithin:
PercentFractionDefault:
0gen_commit_lin_aux_consumption_frac_powerDefined over:
GEN_COMMIT_LINWithin:
PercentFractionDefault:
0Auxiliary consumption as a fraction of gross power output. |
gen_commit_bin_down_time_cutoff_hoursDefined over:
GEN_COMMIT_BIN_STARTUP_BY_ST_PRJS_TYPESWithin:
NonNegativeRealsgen_commit_lin_down_time_cutoff_hoursDefined over:
GEN_COMMIT_LIN_STARTUP_BY_ST_PRJS_TYPESWithin:
NonNegativeRealsThe project’s minimum down time cutoff to activate a given startup type. If the unit has been down for more hours than this cutoff, the relevant startup type will be activated. E.g. if a unit has 2 startup types (hot and cold) with respective cutoffs of 4 hours and 8 hours, it means that startup type 1 (the hot start) will be activated if the unit starts after a down time between 4-8 hours, and startup type 2 (the cold start) will be activated if the unit starts after a down time of over 8 hours. The cutoff for the hottest start must match the unit’s minimum down time. If the unit is fast-start without a minimum down time, the user should input zero (rather than NULL) |
gen_commit_bin_partial_availability_thresholdDefined over:
GEN_COMMIT_BINWithin:
PercentFractionDefault:
0.01gen_commit_lin_partial_availability_thresholdDefined over:
GEN_COMMIT_LINWithin:
PercentFractionDefault:
0.01The project’s availability threshold below which it cannot be committed/synced. Defaults to 0.01, i.e., the commit and sync variables will be set to zero any time availability is 0.01 or less (for gen_commit_bin; the gen_commit_lin variables are still continuous), but can be 1 otherwise. Make sure to set this to a positive fraction to ensure you approximate partial availability but avoid the issue where the optimization can set the sync variables to 1 even when the project is unavailable, thus avoiding startup costs. |
gen_commit_bin_max_n_starts_per_hrzDefined over: :code:`GEN_COMMIT_BIN_N_STARTUP_BT_HRZS’
Within:
NonNegativeRealsDefault:
infgen_commit_lin_max_n_starts_per_hrzDefined over: :code:`GEN_COMMIT_LIN_N_STARTUP_BT_HRZS’
Within:
NonNegativeRealsDefault:
infThe maximum number of starts allowed in a given horizon. |
Derived Params |
|---|
gen_commit_bin_allow_ramp_up_violationDefined over:
GEN_COMMIT_BINWithin:
Booleangen_commit_lin_allow_ramp_up_violationDefined over:
GEN_COMMIT_LINWithin:
BooleanDetermines whether the ramp up constraint can be violated. It is 1 if a ramp_up_violation_penalty is specified for the project. |
gen_commit_bin_allow_ramp_down_violationDefined over:
GEN_COMMIT_BINWithin:
Booleangen_commit_lin_allow_ramp_down_violationDefined over:
GEN_COMMIT_LINWithin:
BooleanDetermines whether the ramp down constraint can be violated. It is 1 if a ramp_down_violation_penalty is specified for the project. |
gen_commit_bin_allow_min_up_time_violationDefined over:
GEN_COMMIT_BINWithin:
Booleangen_commit_lin_allow_min_up_time_violationDefined over:
GEN_COMMIT_LINWithin:
BooleanDetermines whether the min up time constraint can be violated. It is 1 if a min_up_time_violation_penalty is specified for the project. |
gen_commit_bin_allow_min_down_time_violationDefined over:
GEN_COMMIT_BINWithin:
Booleangen_commit_lin_allow_min_down_time_violationDefined over:
GEN_COMMIT_LINWithin:
BooleanDetermines whether the min down time constraint can be violated. It is 1 if a min_down_time_violation_penalty is specified for the project. |
Variables |
|---|
GenCommitBin_CommitWithin:
BinaryDefined over:
GEN_COMMIT_BIN_OPR_TMPSGenCommitLin_CommitWithin:
PercentFractionDefined over:
GEN_COMMIT_LIN_OPR_TMPSIn gen_commit_bin, a binary variable which represents the commitment decision in each operational timepoint. It is one if the unit is committed and zero otherwise (including during a startup and shutdown trajectory). In gen_commit_lin, this variable can take on non-binary values between zero and 1 (i.e. partial commitment of the unit is allowed). |
GenCommitBin_StartupWithin:
BinaryDefined over:
GEN_COMMIT_BIN_OPR_TMPSGenCommitLin_StartupWithin:
PercentFractionDefined over:
GEN_COMMIT_LIN_OPR_TMPSBinary variable which is one if the unit starts up and zero otherwise. A startup is defined as changing commitment from zero to one. Note: this variable is zero throughout a startup trajectory! In gen_commit_lin, this variable can take on non-binary values between zero and 1. |
GenCommitBin_Startup_TypeWithin:
BinaryDefined over:
GEN_COMMIT_BIN_OPR_TMPS_STR_TYPESGenCommitLin_Startup_TypeWithin:
PercentFractionDefined over:
GEN_COMMIT_LIN_OPR_TMPS_STR_TYPESBinary variable which is one if the unit starts up for the given startup type and zero otherwise. A startup is defined as changing commitment from zero to one, whereas the startup type indicates the hotness/coldness of the start. Note: this variable is zero throughout a startup trajectory! In gen_commit_lin, this variable can take on non-binary values between zero and 1. |
GenCommitBin_ShutdownWithin:
BinaryDefined over:
GEN_COMMIT_BIN_OPR_TMPSGenCommitLin_ShutdownWithin:
PercentFractionDefined over:
GEN_COMMIT_LIN_OPR_TMPSBinary variable which is one if the unit shuts down and zero otherwise. A shutdown is defined as changing commitment from one to zero. Note: this variable is zero throughout a shutdown trajectory! In gen_commit_lin, this variable can take on non-binary values between zero and 1. |
GenCommitBin_SyncedWithin:
BinaryDefined over:
GEN_COMMIT_BIN_OPR_TMPSGenCommitLin_SyncedWithin:
PercentFractionDefined over:
GEN_COMMIT_LIN_OPR_TMPSBinary variable which is one if the project is providing any power ( either because it is committed or because it is in a startup or shutdown trajectory), and zero otherwise. In gen_commit_lin, this variable can take on non-binary values between zero and 1. |
GenCommitBin_Provide_Power_Above_Pmin_MWWithin:
NonNegativeRealsDefined over:
GEN_COMMIT_BIN_OPR_TMPSGenCommitLin_Provide_Power_Above_Pmin_MWWithin:
NonNegativeRealsDefined over:
GEN_COMMIT_LIN_OPR_TMPSPower provision above the minimum stable level in MW from this project in each timepoint in which the project is committed. |
GenCommitBin_Provide_Power_Startup_By_ST_MWWithin:
NonNegativeRealsDefined over:
GEN_COMMIT_BIN_OPR_TMPS_STR_TYPESGenCommitLin_Provide_Power_Startup_By_ST_MWWithin:
NonNegativeRealsDefined over:
GEN_COMMIT_LIN_OPR_TMPS_STR_TYPESPower provision during startup in each timepoint in which the project is starting up, for each startup type (zero if project is committed or not starting up). |
GenCommitBin_Provide_Power_Shutdown_MWWithin:
NonNegativeRealsDefined over:
GEN_COMMIT_BIN_OPR_TMPSGenCommitLin_Provide_Power_Shutdown_MWWithin:
NonNegativeRealsDefined over:
GEN_COMMIT_LIN_OPR_TMPSPower provision during shutdown in each timepoint in which the project is shutting down (zero if project is committed or not shutting down). |
GenCommitBin_Ramp_Up_Violation_MWWithin:
NonNegativeRealsDefined over:
GEN_COMMIT_BIN_OPR_TMPSGenCommitLin_Ramp_Up_Violation_MWWithin:
NonNegativeRealsDefined over:
GEN_COMMIT_LIN_OPR_TMPSViolation of the project’s ramp up constraint in each operational timepoint. |
GenCommitBin_Ramp_Down_Violation_MWWithin:
NonNegativeRealsDefined over:
GEN_COMMIT_BIN_OPR_TMPSGenCommitLin_Ramp_Down_Violation_MWWithin:
NonNegativeRealsDefined over:
GEN_COMMIT_LIN_OPR_TMPSViolation of the project’s ramp down constraint in each operational timepoint. |
GenCommitBin_Min_Up_Time_ViolationWithin:
NonNegativeRealsDefined over:
GEN_COMMIT_BIN_OPR_TMPSGenCommitLin_Min_Up_Time_ViolationWithin:
NonNegativeRealsDefined over:
GEN_COMMIT_LIN_OPR_TMPSViolation of the project’s min up time constraint in each operational timepoint. |
GenCommitBin_Min_Down_Time_ViolationWithin:
NonNegativeRealsDefined over:
GEN_COMMIT_BIN_OPR_TMPSGenCommitLin_Min_Down_Time_ViolationWithin:
NonNegativeRealsDefined over:
GEN_COMMIT_LIN_OPR_TMPSViolation of the project’s min down time constraint in each operational timepoint. |
Expressions |
|---|
GenCommitBin_Pmax_MWDefined over:
GEN_COMMIT_BIN_OPR_TMPSGenCommitLin_Pmax_MWDefined over:
GEN_COMMIT_LIN_OPR_TMPSThe project’s maximum power output (in MW) if the unit was committed. Depends on the project’s availability and capacity in the timepoint. |
GenCommitBin_Pmin_MWDefined over:
GEN_COMMIT_BIN_OPR_TMPSGenCommitLin_Pmin_MWDefined over:
GEN_COMMIT_LIN_OPR_TMPSThe project’s minimum power output (in MW) if the unit was committed. Depends on the project’s availability and capacity in the timepoint, and the minimum stable level. |
GenCommitBin_Provide_Power_Startup_MWDefined over:
GEN_COMMIT_BIN_OPR_TMPSGenCommitLin_Provide_Power_Startup_MWDefined over:
GEN_COMMIT_LIN_OPR_TMPSPower provision during startup in each timepoint in which the project is starting up (zero if project is committed or not starting up). |
GenCommitBin_Provide_Power_MWDefined over:
GEN_COMMIT_BIN_OPR_TMPSGenCommitLin_Provide_Power_MWDefined over:
GEN_COMMIT_LIN_OPR_TMPSThe project’s total power output (in MW) in each operational timepoint, including power from a startup or shutdown trajectory. If modeling auxiliary consumption, this is the gross power output. |
GenCommitBin_Ramp_Up_Rate_MW_Per_TmpDefined over:
GEN_COMMIT_BIN_OPR_TMPSThe project’s upward ramp-able capacity (in MW) in each operational
timepoint. Depends on the |
GenCommitBin_Ramp_Down_Rate_MW_Per_TmpDefined over:
GEN_COMMIT_BIN_OPR_TMPSGenCommitLin_Ramp_Up_Rate_MW_Per_TmpDefined over:
GEN_COMMIT_LIN_OPR_TMPSThe project’s downward ramp-able capacity (in MW) in each operationa
timepoint. Depends on the |
GenCommitBin_Startup_Ramp_Rate_By_ST_MW_Per_TmpDefined over:
GEN_COMMIT_BIN_OPR_TMPS_STR_TYPESGenCommitLin_Startup_Ramp_Rate_By_ST_MW_Per_TmpDefined over:
GEN_COMMIT_LIN_OPR_TMPS_STR_TYPESThe project’s upward ramp-able capacity (in MW) during startup in each
operational timepoint. Depends on the
|
GenCommitBin_Shutdown_Ramp_Rate_MW_Per_TmpDefined over:
GEN_COMMIT_BIN_OPR_TMPSGenCommitLin_Shutdown_Ramp_Rate_MW_Per_TmpDefined over:
GEN_COMMIT_LIN_OPR_TMPSThe project’s downward ramp-able capacity (in MW) during shutdown in
each operational timepoint. Depends on the
|
GenCommitBin_Active_Startup_TypeDefined over:
GEN_COMMIT_BIN_OPR_TMPSGenCommitLin_Active_Startup_TypeDefined over:
GEN_COMMIT_LIN_OPR_TMPSThe project’s active startup type in each operational timepoint, described as an integer. If no startup type is active (the project is not starting up in this timepoint), this expression returns zero. |
GenCommitBin_Upwards_Reserves_MWDefined over:
GEN_COMMIT_BIN_OPR_TMPSGenCommitLin_Upwards_Reserves_MWDefined over:
GEN_COMMIT_LIN_OPR_TMPSThe project’s total upward reserves offered (in MW) in each timepoint. |
GenCommitBin_Downwards_Reserves_MWDefined over:
GEN_COMMIT_BIN_OPR_TMPSGenCommitLin_Downwards_Reserves_MWDefined over:
GEN_COMMIT_LIN_OPR_TMPSThe project’s total downward reserves offered (in MW) in each timepoint. |
GenCommitBin_Auxiliary_Consumption_MWDefined over:
GEN_COMMIT_BIN_OPR_TMPSThe project’s auxiliary consumption (power consumed on-site and not sent to the grid) in each timepoint. |
Constraints |
|---|
Commitment |
GenCommitBin_Binary_Logic_ConstraintDefined over:
GEN_COMMIT_BIN_OPR_TMPSGenCommitLin_Binary_Logic_ConstraintDefined over:
GEN_COMMIT_LIN_OPR_TMPSDefines the relationship between the binary commitment, startup, and shutdown variables. When the commitment changes from zero to one, the startup variable is one, when it changes from one to zero, the shutdown variable is one. |
GenCommitBin_Synced_ConstraintDefined over:
GEN_COMMIT_BIN_OPR_TMPSGenCommitLin_Synced_ConstraintDefined over:
GEN_COMMIT_LIN_OPR_TMPSSets the GenCommitBin_Synced variable to one if the project is providing any power (either because it is committed or because it is in a startup or shutdown trajectory), and zero otherwise. |
Power |
GenCommitBin_Max_Power_ConstraintDefined over:
GEN_COMMIT_BIN_OPR_TMPSGenCommitLin_Max_Power_ConstraintDefined over:
GEN_COMMIT_LIN_OPR_TMPSLimits the power plus upward reserves to the available capacity. |
GenCommitBin_Min_Power_ConstraintDefined over:
GEN_COMMIT_BIN_OPR_TMPSPower provision minus downward reserves should exceed the minimum stable level for the project. |
Minimum Up and Down Time |
GenCommitBin_Min_Up_Time_ConstraintDefined over:
GEN_COMMIT_BIN_OPR_TMPSGenCommitLin_Min_Up_Time_ConstraintDefined over:
GEN_COMMIT_LIN_OPR_TMPSRequires that when the project is started, it stays on for at least
|
GenCommitBin_Min_Down_Time_ConstraintDefined over:
GEN_COMMIT_BIN_OPR_TMPSGenCommitLin_Min_Down_Time_ConstraintDefined over:
GEN_COMMIT_LIN_OPR_TMPSRequires that when the project is shut down, it stays off for at least
|
Ramps |
GenCommitBin_Ramp_Up_ConstraintDefined over:
GEN_COMMIT_BIN_OPR_TMPSGenCommitLin_Ramp_Up_ConstraintDefined over:
GEN_COMMIT_LIN_OPR_TMPSLimits the allowed project upward ramp during operations based on the
|
GenCommitBin_Ramp_Down_ConstraintDefined over:
GEN_COMMIT_BIN_OPR_TMPSGenCommitLin_Ramp_Down_ConstraintDefined over:
GEN_COMMIT_LIN_OPR_TMPSLimits the allowed project downward ramp during operations based on the
|
Startup Power |
GenCommitBin_Unique_Startup_Type_ConstraintDefined over:
GEN_COMMIT_BIN_OPR_TMPSGenCommitLin_Unique_Startup_Type_ConstraintDefined over:
GEN_COMMIT_LIN_OPR_TMPSEnsures that only one startup type can be active at the same time. |
GenCommitBin_Active_Startup_Type_ConstraintDefined over:
GEN_COMMIT_BIN_OPR_TMPS_STR_TYPESGenCommitLin_Active_Startup_Type_ConstraintDefined over:
GEN_COMMIT_LIN_OPR_TMPS_STR_TYPESEnsures that a startup type can only be active if the unit has been down for the appropriate interval. |
GenCommitBin_Max_Startup_Power_ConstraintDefined over:
GEN_COMMIT_BIN_OPR_TMPSGenCommitLin_Max_Startup_Power_ConstraintDefined over:
GEN_COMMIT_LIN_OPR_TMPSLimits startup power to zero when the project is committed and to the minimum stable level when it is not committed. |
GenCommitBin_Ramp_During_Startup_By_ST_ConstraintDefined over:
GEN_COMMIT_BIN_OPR_TMPS_STR_TYPESGenCommitLin_Ramp_During_Startup_By_ST_ConstraintDefined over:
GEN_COMMIT_LIN_OPR_TMPS_STR_TYPESLimits the allowed project upward startup power ramp based on the
|
GenCommitBin_Increasing_Startup_Power_By_ST_ConstraintDefined over:
GEN_COMMIT_BIN_OPR_TMPS_STR_TYPESGenCommitLin_Increasing_Startup_Power_By_ST_ConstraintDefined over:
GEN_COMMIT_LIN_OPR_TMPS_STR_TYPESRequires that the startup power always increases, except for the
startup timepoint (when |
GenCommitBin_Power_During_Startup_By_ST_ConstraintDefined over:
GEN_COMMIT_BIN_OPR_TMPS_STR_TYPESGenCommitLin_Power_During_Startup_By_ST_ConstraintDefined over:
GEN_COMMIT_LIN_OPR_TMPS_STR_TYPESLimits the difference between the power provision in the startup
timepoint and the startup power in the previous timepoint based on the
|
Shutdown Power |
GenCommitBin_Max_Shutdown_Power_ConstraintDefined over:
GEN_COMMIT_BIN_OPR_TMPSGenCommitLin_Max_Shutdown_Power_ConstraintDefined over:
GEN_COMMIT_LIN_OPR_TMPSLimits shutdown power to zero when the project is committed and to the minimum stable level when it is not committed. |
GenCommitBin_Ramp_During_Shutdown_ConstraintDefined over:
GEN_COMMIT_BIN_OPR_TMPSGenCommitLin_Ramp_During_Shutdown_ConstraintDefined over:
GEN_COMMIT_LIN_OPR_TMPSLimits the allowed project downward shutdown power ramp based on the
|
GenCommitBin_Decreasing_Shutdown_Power_ConstraintDefined over:
GEN_COMMIT_BIN_OPR_TMPSGenCommitLin_Decreasing_Shutdown_Power_ConstraintDefined over:
GEN_COMMIT_LIN_OPR_TMPSRequires that the shutdown power always decreases, except for the
shutdown timepoint (when |
GenCommitBin_Power_During_Shutdown_ConstraintDefined over:
GEN_COMMIT_BIN_OPR_TMPSGenCommitLin_Power_During_Shutdown_ConstraintDefined over:
GEN_COMMIT_LIN_OPR_TMPSLimits the difference between the power provision in the shutdown
timepoint and the shutdown power in the next timepoint based on the
|
GenCommitBin_No_Sync_When_Unavailable_ConstraintDefined over:
GEN_COMMIT_BIN_OPR_TMPSGenCommitLin_No_Sync_When_Unavailable_ConstraintDefined over:
GEN_COMMIT_LIN_OPR_TMPSA project cannot be synced (committed or providing startup/shutdown power) when unavailable (<1% available). |
GenCommitBin_No_Commit_When_Unavailable_ConstraintDefined over:
GEN_COMMIT_BIN_OPR_TMPSForces the binary commitment to 0 when the project is unavailable (<1% available). |
gridpath.project.capacity.operational_types.gen_commit_cap
The following Pyomo model components are defined in this module:
Sets |
|---|
GEN_COMMIT_CAPThe set of generators of the gen_commit_cap operational type |
GEN_COMMIT_CAP_OPR_TMPSTwo-dimensional set with generators of the |
GEN_COMMIT_CAP_LINKED_TMPSTwo-dimensional set with generators of the |
Required Input Params |
|---|
gen_commit_cap_unit_size_mwDefined over:
GEN_COMMIT_CAPWithin:
NonNegativeRealsThe MW size of a unit in this project (projects of the
|
gen_commit_cap_min_stable_level_fractionDefined over:
GEN_COMMIT_CAPWithin:
NonNegativeRealsThe minimum stable level of this project as a fraction of its capacity. This can also be interpreted as the minimum stable level of a unit within this project (as the project itself can represent multiple units with similar characteristics. |
Optional Input Params |
|---|
gen_commit_cap_startup_plus_ramp_up_rateDefined over:
GEN_COMMIT_CAPWithin:
PercentFractionDefault:
1The project’s ramp rate when starting up as percent of project capacity per minute (defaults to 1 if not specified). |
gen_commit_cap_shutdown_plus_ramp_down_rateDefined over:
GEN_COMMIT_CAPWithin:
PercentFractionDefault:
1The project’s ramp rate when shutting down as percent of project capacity per minute (defaults to 1 if not specified). |
gen_commit_cap_ramp_up_when_on_rateDefined over:
GEN_COMMIT_CAPWithin:
PercentFractionDefault:
1The project’s upward ramp rate limit during operations, defined as a fraction of its capacity per minute. |
gen_commit_cap_ramp_down_when_on_rateDefined over:
GEN_COMMIT_CAPWithin:
PercentFractionDefault:
1The project’s downward ramp rate limit during operations, defined as a fraction of its capacity per minute. |
gen_commit_cap_min_up_time_hoursDefined over:
GEN_COMMIT_CAPWithin:
PercentFractionDefault:
1The project’s minimum up time in hours. |
gen_commit_cap_min_down_time_hoursDefined over:
GEN_COMMIT_CAPWithin:
PercentFractionDefault:
1The project’s minimum down time in hours. |
gen_commit_cap_aux_consumption_frac_capacityDefined over:
GEN_COMMIT_CAPWithin:
PercentFractionDefault:
0Auxiliary consumption as a fraction of committed capacity. |
gen_commit_cap_aux_consumption_frac_powerDefined over:
GEN_COMMIT_CAPWithin:
PercentFractionDefault:
0Auxiliary consumption as a fraction of gross power output. |
Linked Input Params |
|---|
gen_commit_cap_linked_commit_capacityDefined over:
GEN_COMMIT_CAP_LINKED_TMPSWithin:
NonNegativeRealsThe project’s committed capacity in the linked timepoints. |
gen_commit_cap_linked_powerDefined over:
GEN_COMMIT_CAP_LINKED_TMPSWithin:
NonNegativeRealsThe project’s power provision in the linked timepoints. |
gen_commit_cap_linked_upwards_reservesDefined over:
GEN_COMMIT_CAP_LINKED_TMPSWithin:
NonNegativeRealsThe project’s upward reserve provision in the linked timepoints. |
gen_commit_cap_linked_downwards_reservesDefined over:
GEN_COMMIT_CAP_LINKED_TMPSWithin:
NonNegativeRealsThe project’s downward reserve provision in the linked timepoints. |
gen_commit_cap_linked_startupDefined over:
GEN_COMMIT_CAP_LINKED_TMPSWithin:
NonNegativeRealsThe project’s startup in the linked timepoints. |
gen_commit_cap_linked_shutdownDefined over:
GEN_COMMIT_CAP_LINKED_TMPSWithin:
NonNegativeRealsThe project’s shutdown in the linked timepoints. |
Variables |
|---|
GenCommitCap_Provide_Power_MWWithin:
NonNegativeRealsDefined over:
GEN_COMMIT_CAP_OPR_TMPSPower provision in MW from this project in each timepoint in which the project is operational (capacity exists and the project is available). If modeling auxiliary consumption, this is the gross power output. |
Commit_Capacity_MWWithin:
NonNegativeRealsDefined over:
GEN_COMMIT_CAP_OPR_TMPSA continuous variable that represents the commitment state of the (i.e. of the units represented by this project). |
GenCommitCap_Fuel_Burn_MMBTUWithin:
NonNegativeRealsDefined over:
GEN_COMMIT_CAP_OPR_TMPSFuel burn by this project in each operational timepoint. |
Ramp_Up_Startup_MWWithin:
RealsDefined over:
GEN_COMMIT_CAP_OPR_TMPSThe upward ramp of the project when capacity is started up. |
Ramp_Down_Startup_MWWithin:
RealsDefined over:
GEN_COMMIT_CAP_OPR_TMPSThe downward ramp of the project when capacity is shutting down. |
Ramp_Up_When_On_MWWithin:
RealsDefined over:
GEN_COMMIT_CAP_OPR_TMPSThe upward ramp of the project when capacity on. |
Ramp_Down_When_On_MWWithin:
RealsDefined over:
GEN_COMMIT_CAP_OPR_TMPSThe downward ramp of the project when capacity is on. |
GenCommitCap_Startup_MWWithin:
NonNegativeRealsDefined over:
GEN_COMMIT_CAP_OPR_TMPSThe amount of capacity started up (in MW). |
GenCommitCap_Shutdown_MWWithin:
NonNegativeRealsDefined over:
GEN_COMMIT_CAP_OPR_TMPSThe amount of capacity shut down (in MW). |
Expressions |
|---|
GenCommitCap_Auxiliary_Consumption_MWDefined over:
GEN_COMMIT_CAP_OPR_TMPSThe project’s auxiliary consumption (power consumed on-site and not sent to the grid) in each timepoint. |
Constraints |
|---|
Commitment and Power |
Commit_Capacity_ConstraintDefined over:
GEN_COMMIT_CAP_OPR_TMPSLimits committed capacity to the available capacity. |
GenCommitCap_Max_Power_ConstraintDefined over:
GEN_COMMIT_CAP_OPR_TMPSLimits the power plus upward reserves to the committed capacity. |
GenCommitCap_Min_Power_ConstraintDefined over:
GEN_COMMIT_CAP_OPR_TMPSLimits the power provision minus downward reserves to the minimum stable level for the project. |
Ramps |
Ramp_Up_Off_to_On_ConstraintDefined over:
GEN_COMMIT_CAP_OPR_TMPSLimits the allowed project upward ramp when turning capacity on based
on the |
Ramp_Up_When_On_ConstraintDefined over:
GEN_COMMIT_CAP_OPR_TMPSLimits the allowed project upward ramp when capacity is on based on
the |
Ramp_Up_When_On_Headroom_ConstraintDefined over:
GEN_COMMIT_CAP_OPR_TMPSLimits the allowed project upward ramp based on the headroom available in the previous timepoint. |
GenCommitCap_Ramp_Up_ConstraintDefined over:
GEN_COMMIT_CAP_OPR_TMPSLimits the allowed project upward ramp (regardless of commitment state). |
Ramp_Down_On_to_Off_ConstraintDefined over:
GEN_COMMIT_CAP_OPR_TMPSLimits the allowed project downward ramp when turning capacity on based
on the |
Ramp_Down_When_On_ConstraintDefined over:
GEN_COMMIT_CAP_OPR_TMPSLimits the allowed project downward ramp when capacity is on based on
the |
Ramp_Down_When_On_Headroom_ConstraintDefined over:
GEN_COMMIT_CAP_OPR_TMPSLimits the allowed project downward ramp based on the headroom available in the current timepoint. |
GenCommitCap_Ramp_Down_ConstraintDefined over:
GEN_COMMIT_CAP_OPR_TMPSLimits the allowed project downward ramp (regardless of commitment state). |
Minimum Up and Down Time |
GenCommitCap_Startup_ConstraintDefined over:
GEN_COMMIT_CAP_OPR_TMPSLimits the capacity started up to the difference in commitment between the current and previous timepoint. |
GenCommitCap_Shutdown_ConstraintDefined over:
GEN_COMMIT_CAP_OPR_TMPSLimits the capacity shut down to the difference in commitment between the current and previous timepoint. |
GenCommitCap_Min_Up_Time_ConstraintDefined over:
GEN_COMMIT_CAP_OPR_TMPSRequires that when units within this project are started, they stay on
for at least |
GenCommitCap_Min_Down_Time_ConstraintDefined over:
GEN_COMMIT_CAP_OPR_TMPSRequires that when units within this project are stopped, they stay off
for at least |
gridpath.project.capacity.operational_types.gen_hydro
The following Pyomo model components are defined in this module:
Optional Input Params |
|---|
gen_hydro_ramp_up_when_on_rateDefined over:
GEN_HYDROWithin:
NonNegativeRealsDefault:
infThe project’s upward ramp rate limit during operations, defined as a fraction of its capacity per minute. |
gen_hydro_ramp_down_when_on_rateDefined over:
GEN_HYDROWithin:
NonNegativeRealsDefault:
infThe project’s downward ramp rate limit during operations, defined as a fraction of its capacity per minute. |
gen_hydro_aux_consumption_frac_capacityDefined over:
GEN_HYDROWithin:
PercentFractionDefault:
0Auxiliary consumption as a fraction of capacity. This would be incurred in all timepoints when capacity is available. |
gen_hydro_aux_consumption_frac_powerDefined over:
GEN_HYDROWithin:
PercentFractionDefault:
0Auxiliary consumption as a fraction of gross power output. |
Linked Input Params |
|---|
gen_hydro_linked_powerDefined over:
GEN_HYDRO_LINKED_TMPSWithin:
RealsThe project’s power provision in the linked timepoints. |
gen_hydro_linked_curtailmentDefined over:
GEN_HYDRO_LINKED_TMPSWithin:
NonNegativeRealsThe project’s curtailment in the linked timepoints. |
gen_hydro_linked_upwards_reservesDefined over:
GEN_HYDRO_LINKED_TMPSWithin:
NonNegativeRealsThe project’s upward reserve provision in the linked timepoints. |
gen_hydro_linked_downwards_reservesDefined over:
GEN_HYDRO_LINKED_TMPSWithin:
NonNegativeRealsThe project’s downward reserve provision in the linked timepoints. |
Variables |
|---|
GenHydro_Gross_Power_MWDefined over:
GEN_HYDRO_OPR_TMPSWithin:
RealsGross power in MW from this project in each timepoint in which the project is operational (capacity exists and the project is available). We’ll subtract curtailment and auxiliary consumption from this for load balance purposes. |
GenHydro_Curtail_MWDefined over:
GEN_HYDRO_OPR_TMPSWithin:
NonNegativeRealsCurtailment in MW from this project in each timepoint in which the project is operational (capacity exists and the project is available). |
Expressions |
|---|
GenHydro_Auxiliary_Consumption_MWDefined over:
GEN_HYDRO_OPR_TMPSThe project’s auxiliary consumption (power consumed on-site and not sent to the grid) in each timepoint. |
gridpath.project.capacity.operational_types.gen_hydro_must_take
The following Pyomo model components are defined in this module:
Required Input Params |
|---|
gen_hydro_must_take_max_power_fractionDefined over:
GEN_HYDRO_MUST_TAKE_OPR_BT_HRZSWithin:
RealsThe project’s maximum power output in each operational horizon as a fraction of its available capacity. |
gen_hydro_must_take_min_power_fractionDefined over:
GEN_HYDRO_MUST_TAKE_OPR_BT_HRZSWithin:
RealsThe project’s minimum power output in each operational horizon as a fraction of its available capacity. |
gen_hydro_must_take_average_power_fractionDefined over:
GEN_HYDRO_MUST_TAKE_OPR_BT_HRZSWithin:
RealsThe project’s avarage power output in each operational horizon as a fraction of its available capacity. This can be interpreted as the project’s average capacity factor or plant load factor. |
Optional Input Params |
|---|
gen_hydro_must_take_ramp_up_when_on_rateDefined over:
GEN_HYDRO_MUST_TAKEWithin:
NonNegativeRealsDefault: :code:``inf
The project’s upward ramp rate limit during operations, defined as a fraction of its capacity per minute. |
gen_hydro_must_take_ramp_down_when_on_rateDefined over:
GEN_HYDRO_MUST_TAKEWithin:
NonNegativeRealsDefault:
infThe project’s downward ramp rate limit during operations, defined as a fraction of its capacity per minute. |
gen_hydro_must_take_aux_consumption_frac_capacityDefined over:
GEN_HYDRO_MUST_TAKEWithin:
PercentFractionDefault:
0Auxiliary consumption as a fraction of capacity. This would be incurred in all timepoints when capacity is available. |
gen_hydro_must_take_aux_consumption_frac_powerDefined over:
GEN_HYDRO_MUST_TAKEWithin:
PercentFractionDefault:
0Auxiliary consumption as a fraction of gross power output. |
Linked Input Params |
|---|
gen_hydro_must_take_linked_powerDefined over:
GEN_HYDRO_MUST_TAKE_LINKED_TMPSWithin:
RealsThe project’s power provision in the linked timepoints. |
gen_hydro_must_take_linked_upwards_reservesDefined over:
GEN_HYDRO_MUST_TAKE_LINKED_TMPSWithin:
NonNegativeRealsThe project’s upward reserve provision in the linked timepoints. |
gen_hydro_must_take_linked_downwards_reservesDefined over:
GEN_HYDRO_MUST_TAKE_LINKED_TMPSWithin:
NonNegativeRealsThe project’s downward reserve provision in the linked timepoints. |
Variables |
|---|
GenHydroMustTake_Gross_Power_MWDefined over:
GEN_HYDRO_MUST_TAKE_OPR_TMPSWithin:
RealsPower provision in MW from this project in each timepoint in which the project is operational (capacity exists and the project is available). |
Expressions |
|---|
GenHydroMustTake_Auxiliary_Consumption_MWDefined over:
GEN_HYDRO_MUST_TAKE_OPR_TMPSThe project’s auxiliary consumption (power consumed on-site and not sent to the grid) in each timepoint. |
gridpath.project.capacity.operational_types.gen_var
The following Pyomo model components are defined in this module:
Sets |
|---|
GEN_VARThe set of generators of the |
GEN_VAR_OPR_TMPSTwo-dimensional set with generators of the |
Required Input Params |
|---|
gen_var_cap_factorDefined over:
GEN_VAR_OPR_TMPSWithin:
RealsDefault:
gen_var_cap_factor_defaultThe project’s power output in each operational timepoint as a fraction of its available capacity (i.e. the capacity factor). Setting the default is optional. |
Variables |
|---|
GenVar_Provide_Power_MWDefined over:
GEN_VAR_OPR_TMPSWithin:
NonNegativeRealsPower provision in MW from this project in each timepoint in which the project is operational (capacity exists and the project is available). |
GenVar_Scheduled_Curtailment_MWDefined over:
GEN_VAR_OPR_TMPSWithin:
NonNegativeRealsCurtailed power in MW from this project in each timepoint in which the project is operational (capacity exists and the project is available). This will be the available power minus what was actually provided. |
Expressions |
|---|
GenVar_Subhourly_Curtailment_MWDefined over:
GEN_VAR_OPR_TMPSSub-hourly curtailment (in MW) from providing downward reserves. |
GenVar_Subhourly_Energy_Delivered_MWDefined over:
GEN_VAR_OPR_TMPSSub-hourly energy delivered (in MW) from providing upward reserves. |
GenVar_Total_Curtailment_MWDefined over:
GEN_VAR_OPR_TMPSScheduled curtailment (in MW) plus an upward adjustment for additional curtailment when providing downward reserves, and a downward adjustment adjustment for a reduction in curtailment when providing upward reserves, to account for sub-hourly dispatch when providing reserves. |
Constraints |
|---|
Power |
GenVar_Max_Power_ConstraintDefined over:
GEN_VAR_OPR_TMPSLimits the power plus scheduled curtailment in each timepoint to equal
the available power.
|
GenVar_Max_Upward_Reserves_ConstraintDefined over:
GEN_VAR_OPR_TMPSUpward reserves cannot exceed curtailment. |
GenVar_Max_Downward_Reserves_ConstraintDefined over:
GEN_VAR_OPR_TMPSDownward reserves cannot exceed power provision when the capacity factor is non-negative (power is non-negative); otherwise they are set to zero. |
gridpath.project.capacity.operational_types.gen_var_must_take
The following Pyomo model components are defined in this module:
Sets |
|---|
GEN_VAR_MUST_TAKEThe set of generators of the |
GEN_VAR_MUST_TAKE_OPR_TMPSTwo-dimensional set with generators of the |
Required Input Params |
|---|
gen_var_must_take_cap_factorDefined over:
GEN_VAR_MUST_TAKE_OPR_TMPSWithin:
RealsDefault:
gen_var_must_take_cap_factor_defaultThe project’s power output in each operational timepoint as a fraction of its available capacity (i.e. the capacity factor). Setting the default is optional. |
Optional Input Params |
|---|
gen_var_must_take_cap_factor_defaultDefined over:
GEN_VAR_MUST_TAKEWithin:
RealsOptinal default value for gen_var_must_take_cap_factor. Use with caution. |
Constraints |
|---|
GenVarMustTake_No_Upward_Reserves_ConstraintDefined over:
GEN_VAR_MUST_TAKE_OPR_TMPSVariable must-take generator projects cannot provide upward reserves. |
GenVarMustTake_No_Downward_Reserves_ConstraintDefined over:
GEN_VAR_MUST_TAKE_OPR_TMPSVariable must-take generator projects cannot provide downward reserves. |
gridpath.project.capacity.operational_types.stor
The following Pyomo model components are defined in this module:
Sets |
|---|
STORThe set of projects of the |
STOR_OPR_TMPSTwo-dimensional set with projects of the |
STOR_LINKED_TMPSTwo-dimensional set with generators of the |
Required Input Params |
|---|
stor_charging_efficiencyDefined over:
STORWithin:
PercentFractionThe storage project’s charging efficiency (1 = 100% efficient). |
stor_discharging_efficiencyDefined over:
STORWithin:
PercentFractionThe storage project’s discharging efficiency (1 = 100% efficient). |
Optional Input Params |
|---|
stor_storage_efficiencyDefined over:
STORWithin:
PercentFractionDefault:
1The storage project’s storage efficiency (1 = 100% efficient). |
stor_losses_factor_in_energy_targetDefined over:
STORWithin:
PercentFractionDefault:
1The fraction of storage losses that count against the energy target. |
stor_losses_factor_curtailmentDefined over:
STORWithin:
PercentFractionDefault:
1The fraction of storage losses that count against curtailment. |
stor_charging_capacity_multiplierDefined over:
STORWithin:
NonNegativeRealsDefault:
1.0The storage project’s charging capacity multiplier to be used if the charging capacity is different from the nameplate capacity. |
stor_discharging_capacity_multiplierDefined over:
STORWithin:
NonNegativeRealsDefault:
1.0The storage project’s discharging capacity multiplier to be used if the discharging capacity is different from the nameplate capacity. |
stor_exogenous_starting_state_of_chargeDefined over:
STOR_EXOG_SOC_TMPSWithin:
NonNegativeRealsThe storage project’s exogenously specified starting state of charge. If not specified, the state of charge is endogenously determined by the optimization subject to the rest of the constraints. |
Linked Input Params |
|---|
stor_linked_starting_energy_in_storageDefined over:
STOR_LINKED_TMPSWithin:
NonNegativeRealsThe project’s starting energy in storage in the linked timepoints. |
stor_linked_dischargeDefined over:
STOR_LINKED_TMPSWithin:
NonNegativeRealsThe project’s dicharging in the linked timepoints. |
stor_linked_chargeDefined over:
STOR_LINKED_TMPSWithin:
NonNegativeRealsThe project’s charging in the linked timepoints. |
Variables |
|---|
Stor_Charge_MWDefined over:
STOR_OPR_TMPSWithin:
NonNegativeRealsCharging power in MW from this project in each timepoint in which the project is operational (capacity exists and the project is available). |
Stor_Discharge_MWDefined over:
STOR_OPR_TMPSWithin:
NonNegativeReals
|
Stor_Starting_Energy_in_Storage_MWhDefined over:
STOR_OPR_TMPSWithin:
NonNegativeRealsThe state of charge of the storage project at the start of each timepoint, in MWh of energy stored. |
Constraints |
|---|
Power and Stage of Charge |
Stor_Max_Charge_ConstraintDefined over:
STOR_OPR_TMPSLimits the project’s charging power to the available capacity. |
Stor_Max_Discharge_ConstraintDefined over:
STOR_OPR_TMPSLimits the project’s discharging power to the available capacity. |
Stor_Energy_Tracking_ConstraintDefined over:
STOR_OPR_TMPSTracks the amount of energy stored in each timepoint based on the previous timepoint’s energy stored and the charge and discharge decisions. |
Stor_Max_Energy_in_Storage_ConstraintDefined over:
STOR_OPR_TMPSLimits the project’s total energy stored to the available energy capacity. |
Reserves |
Stor_Max_Headroom_Power_ConstraintDefined over:
STOR_OPR_TMPSLimits the project’s upward reserves based on available headroom. Going from charging to non-charging also counts as headroom, doubling the maximum amount of potential headroom. |
Stor_Max_Footroom_Power_ConstraintDefined over:
STOR_OPR_TMPSLimits the project’s downward reserves based on available footroom. Going from non-charging to charging also counts as footroom, doubling the maximum amount of potential footroom. |
Stor_Max_Headroom_Energy_ConstraintDefined over:
STOR_OPR_TMPSCan’t provide more upward reserves (times sustained duration required) than available energy in storage in that timepoint. |
Stor_Max_Footroom_Energy_ConstraintDefined over:
STOR_OPR_TMPSCan’t provide more downard reserves (times sustained duration required) than available capacity to store energy in that timepoint. |
gridpath.project.capacity.operational_types.gen_var_stor_hyb
The following Pyomo model components are defined in this module:
Sets |
|---|
GEN_VAR_STOR_HYBThe set of generators of the |
GEN_VAR_STOR_HYB_OPR_TMPSTwo-dimensional set with generators of the |
Required Input Params |
|---|
gen_var_stor_hyb_cap_factorDefined over:
GEN_VAR_STOR_HYBWithin:
NonNegativeRealsThe project’s power output in each operational timepoint as a fraction of its available capacity (i.e. the capacity factor). |
gen_var_stor_hyb_charging_efficiencyDefined over:
GEN_VAR_STOR_HYBWithin:
PercentFractionThe project’s storage component charging efficiency (1 = 100% efficient). |
gen_var_stor_hyb_discharging_efficiencyDefined over:
GEN_VAR_STOR_HYBWithin:
PercentFractionThe project’s storage component discharging efficiency (1 = 100% efficient). |
Optional Input Params |
|---|
gen_var_stor_hyb_cap_factor_defaultDefined over:
GEN_VAR_STOR_HYBWithin:
RealsOptional default value for gen_var_stor_hyb_cap_factor. Use with caution. |
Variables |
|---|
GenVarStorHyb_Provide_Power_MWDefined over:
GEN_VAR_STOR_HYB_OPR_TMPSWithin:
NonNegativeRealsPower provision in MW from this project in each timepoint in which the project is operational (capacity exists and the project is available). This can come either directly from the variable resource via the the generator component or from the storage component. |
GenVarStorHyb_Charge_MWDefined over:
GEN_VAR_STOR_HYB_OPR_TMPSWithin:
NonNegativeRealsCharging power in MW from this project in each timepoint in which the project is operational (capacity exists and the project is available). This operational type can only charge from the variable resource, not from the grid. |
GenVarStorHyb_Discharge_MWDefined over:
GEN_VAR_STOR_HYB_OPR_TMPSWithin:
NonNegativeRealsDischarging power in MW from this project in each timepoint in which the project is operational (capacity exists and the project is available). |
GenVarStorHyb_Starting_Energy_in_Storage_MWhDefined over:
GEN_VAR_STOR_HYB_OPR_TMPSWithin:
NonNegativeRealsThe state of charge of the project’s storage component at the start of each timepoint, in MWh of energy stored. |
Constraints |
|---|
GenVarStorHyb_Max_Power_ConstraintDefined over:
GEN_VAR_STOR_HYB_OPR_TMPSThe project’s power and upward reserves cannot exceed the available capacity. |
GenVarStorHyb_Max_Available_Power_ConstraintDefined over:
GEN_VAR_STOR_HYB_OPR_TMPSLimits the power plus upward reserves in each timepoint based on the
product of |
GenVarStorHyb_Min_Power_ConstraintDefined over:
GEN_VAR_STOR_HYB_OPR_TMPSPower provision minus downward reserves should be greater than or equal to zero. We are assuming that the hybrid storage cannot charge from the grid (so power provision cannot go negative). |
GenVarStorHyb_Max_Charge_ConstraintDefined over:
GEN_VAR_STOR_HYB_OPR_TMPSStorage charging power can’t exceed available storage component capacity. |
GenVarStorHyb_Max_Discharge_ConstraintDefined over:
GEN_VAR_STOR_HYB_OPR_TMPSStorage discharging power can’t exceed available storage component capacity. |
GenVarStorHyb_Energy_Tracking_ConstraintDefined over:
GEN_VAR_STOR_HYB_OPR_TMPSThe energy stored in each timepoint is equal to the energy stored in the previous timepoint minus any discharged power (adjusted for discharging efficiency and timepoint duration) plus any charged power (adjusted for charging efficiency and timepoint duration). |
GenVarStorHyb_Max_Energy_in_Storage_ConstraintDefined over:
GEN_VAR_STOR_HYB_OPR_TMPSThe amount of energy stored in each operational timepoint cannot exceed the available energy capacity. |
GenVarStorHyb_Max_Stor_Headroom_Power_ConstraintDefined over:
GEN_VAR_STOR_HYB_OPR_TMPS |
gridpath.project.capacity.operational_types.dr
The following Pyomo model components are defined in this module:
Sets |
|---|
DRThe set of projects of the |
DR_OPR_TMPSTwo-dimensional set with projects of the |
DR_OPR_HRZSTwo-dimensional set with projects of the |
Variables |
|---|
DR_Shift_Up_MWDefined over:
DR_OPR_TMPSWithin:
NonNegativeRealsLoad added (in MW) in each operational timepoint. |
DR_Shift_Down_MWDefined over:
DR_OPR_TMPSWithin:
NonNegativeRealsLoad removed (in MW) in each operational timepoint. |
Constraints |
|---|
DR_Max_Shift_Up_ConstraintDefined over:
DR_OPR_TMPSLimits the added load to the available power capacity. |
DR_Max_Shift_Down_ConstraintDefined over:
DR_OPR_TMPSLimits the removed load to the available power capacity. |
DR_Energy_Balance_ConstraintDefined over:
DR_OPR_HRZSEnsures no energy losses or gains when shifting load within the horizon. |
DR_Energy_Budget_ConstraintDefined˚ over:
DR_OPR_HRZSTotal energy that can be shifted on each horizon should be less than or equal to budget. |
gridpath.project.capacity.operational_types.dispatchable_load
The following Pyomo model components are defined in this module:
Sets |
|---|
DISPATCHABLE_LOAD_PRJSThe set of generators of the |
DISPATCHABLE_LOAD_PRJS_OPR_TMPSTwo-dimensional set with projects of the |
Linked Input Params |
|---|
dispatchable_load_energy_requirement_factor_paramDefined over:
DISPATCHABLE_LOAD_PRJSWithin:
PercentFractionThe project’s power provision in the linked timepoints. |
Variables |
|---|
DispatchableLoadPrj_Consume_Power_MWDefined over:
DISPATCHABLE_LOAD_PRJS_OPR_TMPSWithin:
NonNegativeRealsPower consumption in MW from this project in each timepoint in which the project is operational (capacity exists and the project is available). |
Constraints |
|---|
Power |
DispatchableLoadPrj_Max_Power_ConstraintDefined over:
DISPATCHABLE_LOAD_PRJS_OPR_TMPSLimits the power consumption to the available capacity. |
10.1.4. Load Balance
gridpath.system.load_balance.static_load_requirement
This module adds the main load-balance consumption component, the static load requirement to the load-balance constraint.
- add_model_components(m, d, scenario_directory, weather_iteration, hydro_iteration, availability_iteration, subproblem, stage)[source]
- Parameters:
m – the Pyomo abstract model object we are adding the components to
d – the DynamicComponents class object we are adding components to
Here, we add profiles for the various load components that must be defined for each load zone z and timepoint tmp. These profiles are summed into the LZ_Bulk_Static_Load_in_Tmp expression, which in turn is added to the dynamic load-balance consumption components that will go into the load balance constraint in the load_balance module (i.e. the constraint’s RHS).
The following Pyomo model components are defined in this module:
Sets
LOAD_ZONE_LOAD_CMPNTS_ALLTwo-dimensional set of all load_zone-load_components.
LOAD_ZONE_TMP_LOAD_CMPNTS_ALLThree-dimensional set of all load_zone-timepoint-load_components.
LOAD_ZONE_TMP_LOAD_CMPNTS_W_DEFINED_LOADThree-dimensional set of load_zone-timepoint-load_component for which load will be defined.
Required Input Params
component_static_load_mw_w_tmp_valueDefined over:LOAD_ZONE_TMP_LOAD_CMPNTS_W_DEFINED_LOADWithin:NonNegativeRealsLoad level for load_zone, timepoint, and load_component.
Optional Input Params
load_level_defaultDefined over:LOAD_ZONE_LOAD_CMPNTSWithin:NonNegativeRealsDefault:"undefined"Default value for load level if it is not defined for via the timepoint inputs; if not defined, this parameter itself defaults to infinity. If it ends up defaulting to infinity, a ValueError is raised.
Derived Params
component_static_load_mwDefined over:LOAD_ZONE_TMP_LOAD_CMPNTS_ALLWithin:NonNegativeRealsWill either be set to component_static_load_mw_w_tmp_value or to load_level_default. One or the other is required; if both are specified a ValueError will be thrown.
gridpath.system.load_balance.aggregate_project_power
This module, aggregates the power production by all operational projects to create a load-balance production component, and adds it to the load-balance constraint.
- add_model_components(m, d, scenario_directory, weather_iteration, hydro_iteration, availability_iteration, subproblem, stage)[source]
- Parameters:
m – the Pyomo abstract model object we are adding the components to
d – the DynamicComponents class object we are adding components to
Here, we add the Bulk_Power_Production_in_Zone_MW expression – an aggregation of power production by all operational projects in each load zone z and timepoint tmp –and add it to the dynamic load-balance production components that will go into the load balance constraint in the load_balance module (i.e. the constraint’s lhs).
\(Power\_Production\_in\_Zone\_MW_{z, tmp} = \sum_{r^z\in OR_{tmp}}{Power\_Provision\_MW_{r, tmp}}\)
gridpath.system.load_balance.load_balance
Refer Load Balance.
- add_model_components(m, d, scenario_directory, weather_iteration, hydro_iteration, availability_iteration, subproblem, stage)[source]
- Parameters:
m – the Pyomo abstract model object we are adding the components to
d – the DynamicComponents class object we are adding components to
Here we add, the overgeneration and unserved-energy per unit costs are declared here as well as the overgeneration and unserved-energy variables.
We also get all other production and consumption components and add them to the lhs and rhs of the load-balance constraint respectively. With the minimum set of features, the load-balance constraint will be formulated like this:
\(Power\_Production\_in\_Zone\_MW_{z, tmp} + Unserved\_Energy\_MW_{ z, tmp} = static\_load\_requirement_{z, tmp} + Overgeneration\_MW_{z, tmp}\)
10.1.5. Objective Function
The gridpath.objective package creates the objective function from dynamic model components added by other modules.
Project-level costs are added in the projects subpackage.
Project-level costs are added in the system subpackage.
gridpath.objective.project.aggregate_capacity_costs
This module aggregates all project capacity costs and adds them to the objective function.
- add_model_components(m, d, scenario_directory, weather_iteration, hydro_iteration, availability_iteration, subproblem, stage)[source]
- Parameters:
m – the Pyomo abstract model object we are adding the components to
d – the DynamicComponents class object we are adding components to
Here, we sum up all capacity-related costs and add them to the objective-function dynamic components.
\(Total\_Capacity\_Costs = \sum_{(r, p)\in {RP}}{Capacity\_Cost\_in\_Period_{r, p} \\times discount\_factor_p \\times number\_years\_represented_p}\)
gridpath.objective.project.aggregate_operational_costs
This module aggregates all project operational costs and adds them to the objective function.
- add_model_components(m, d, scenario_directory, weather_iteration, hydro_iteration, availability_iteration, subproblem, stage)[source]
- Parameters:
m – the Pyomo abstract model object we are adding the components to
d – the DynamicComponents class object we are adding components to
Here, we sum up all operational costs. Operational costs include variable O&M costs, fuel costs, startup costs, and shutdown costs.
\(Total\_Variable\_OM\_Cost = \sum_{(r, tmp)\in {RT}}{Variable\_OM\_Cost_{r, tmp} \\times number\_of\_hours\_in\_timepoint_{tmp} \\times horizon\_weight_{h^{tmp}} \\times number\_years\_represented_{p^{tmp}} \\times discount\_factor_{p^{tmp}}}\)
\(Total\_Fuel\_Cost = \sum_{(r, tmp)\in {RT}}{Fuel\_Cost_{r, tmp} \\times number\_of\_hours\_in\_timepoint_{tmp} \\times horizon\_weight_{h^{tmp}} \\times number\_years\_represented_{p^{tmp}} \\times discount\_factor_{p^{tmp}}}\)
gridpath.objective.system.aggregate_load_balance_penalties
This module adds load-balance penalty costs to the objective function. Penalties can be applied on unserved energy, overgeneration, and the maximum unserved load experienced in the study period (the latter is only indexed by load zone and is not weighted by any timepoint- or period-level parameters).
Note
Unserved_Energy_MW, unserved_energy_penalty_per_mwh, Overgeneration_MW, overgeneration_penalty_per_mw, and max_unserved_load_penalty_per_mw are declared in system/load_balance/load_balance.py
- add_model_components(m, d, scenario_directory, weather_iteration, hydro_iteration, availability_iteration, subproblem, stage)[source]
- Parameters:
m – the Pyomo abstract model object we are adding components to
d – the DynamicComponents class object we will get components from
Here, we aggregate total unserved-energy and overgeneration costs as well as any penalties on max unserved load by load zone, and add them as a dynamic component to the objective function.
gridpath.objective.max_npv
Refer Objective Function.
- add_model_components(m, d, scenario_directory, weather_iteration, hydro_iteration, availability_iteration, subproblem, stage)[source]
- Parameters:
m – the Pyomo abstract model object we are adding components to
d – the DynamicComponents class object we will get components from
At this point, all relevant modules should have added cost components to d.total_cost_components. We sum them all up here. With the minimum set of functionality, the objective function will be as follows:
\(minimize:\) n
\(Total\_Capacity\_Costs + Total\_Variable\_OM\_Cost + Total\_Fuel\_Cost + Total\_Load\_Balance\_Penalty\_Costs\)
10.2. Advanced Functionality
This section describes GridPath’s advanced functionality that can be included by selecting optional features.
10.2.1. Multi-Stage
This module exports the commitment variables that must be fixed in the next stage and imports the commitment variables that were fixed in the previous stage.
- add_model_components(m, d, scenario_directory, weather_iteration, hydro_iteration, availability_iteration, subproblem, stage)[source]
The following Pyomo model components are defined in this module:
Sets
FNL_COMMIT_PRJSThe set of generators for which the current stage or any of the previous stages is the final commitment stage.
FXD_COMMIT_PRJSThe set of generators that have already had their commitment fixed in a prior commitment stage.
FNL_COMMIT_PRJS_OPR_TMPSTwo-dimensional set of all final commitment projects and their operational timepoints.
FXD_COMMIT_PRJS_OPR_TMPSTwo-dimensional set of all fixed commitment projects and their operational timepoints.
Input Params
fixed_commitmentDefined over:FXD_COMMIT_PRJ_OPR_TMPSThis param describes the fixed commitment from the prior commitment stage for each fixed commitment project and their operational timepoints.
Expressions
CommitmentDefined over:FNL_COMMIT_PRJ_OPR_TMPSDescribes the commitment for all final commitment projects and their operational timepoints. For the
gen_commit_capoperational type, it describes the committed capacity in MW whereas for thegen_commit_linandgen_commit_binoperational types it describes the binary commitment variable. This expression will be exported so that the next stage’s optimization can read it in through thefixed_commitmentparam and fix the commitment to this value.
- export_pass_through_inputs(scenario_directory, weather_iteration, hydro_iteration, availability_iteration, subproblem, stage, m)[source]
This function exports the commitment for all final commitment projects, i.e. projects for which the current stage or any of the previous stages is the final commitment stage.
- Parameters:
scenario_directory –
subproblem –
stage –
m –
- Returns:
- fix_variables(m, d, scenario_directory, weather_iteration, hydro_iteration, availability_iteration, subproblem, stage)[source]
This function fixes the commitment of all fixed commitment projects by running the
fix_commitmentfunction in the appropriate operational module.- Parameters:
m –
d –
scenario_directory –
subproblem –
stage –
- Returns:
10.2.2. Transmission
gridpath.transmission
The gridpath.transmission package adds transmission-line-level components to the model formulation.
gridpath.transmission.capacity.capacity_types
The gridpath.transmission.capacity.capacity_types package contains modules to describe the various ways in which transmission-line capacity can be treated in the optimization problem, e.g. as specified, available to be built, available to be retired, etc.
gridpath.transmission.capacity.capacity_types.tx_spec
The following Pyomo model components are defined in this module:
Sets |
|---|
TX_SPEC_OPR_PRDSTwo-dimensional set of transmission line-period combinations that
helps describe the transmission capacity available in a given period.
This set is added to the list of sets to join to get the final
|
Required Input Params |
|---|
tx_spec_min_cap_mwDefined over:
TX_SPEC_OPR_PRDSWithin:
RealsThe transmission line’s specified minimum flow capacity (in MW) in each operational period. A negative number designates flow in the opposite direction of the defined line flow direction. |
tx_spec_max_cap_mwDefined over:
TX_SPEC_OPR_PRDSWithin:
RealsThe transmission line’s specified maximum flow capacity (in MW) in each operational period. A negative number designates flow in the opposite direction of the defined line flow direction. |
Optional Input Params |
|---|
tx_spec_fixed_cost_per_mw_yrDefined over:
TX_SPEC_OPR_PRDSWithin:
NonNegativeRealsDefault:
0Fixed cost to be incurred in each operational period. Multiplied by the average of the absolute values of the min and max line capacity. |
gridpath.transmission.capacity.capacity_types.tx_new_lin
The following Pyomo model components are defined in this module:
Sets |
|---|
TX_NEW_LIN_VNTSA two-dimensional set of line-vintage combinations to help describe the periods in time when transmission line capacity can be built in the optimization. |
TX_NEW_LIN_VNTS_W_MIN_CONSTRAINTTwo-dimensional set of transmission-vintage combinations to describe all possible transmission-vintage combinations for transmission lines with a cumulative minimum build capacity specified. |
TX_NEW_LIN_VNTS_W_MAX_CONSTRAINTTwo-dimensional set of transmission-vintage combinations to describe all possible transmission-vintage combinations for transmission lines with a cumulative maximum build capacity specified. |
Required Input Params |
|---|
tx_new_lin_operational_lifetime_yrs_by_vintageDefined over:
TX_NEW_LIN_VNTSWithin:
NonNegativeRealsThe transmission line’s operational lifetime, i.e. how long line capacity of a particular vintage remains operational. |
tx_new_lin_financial_lifetime_yrs_by_vintageDefined over:
TX_NEW_LIN_VNTSWithin:
NonNegativeRealsThe transmission line’s financial lifetime, i.e. how long payments are made if new capacity is built. |
tx_new_lin_annualized_real_cost_per_mw_yrDefined over:
TX_NEW_LIN_VNTSWithin:
NonNegativeRealsThe transmission line’s cost to build new capacity in annualized real dollars per MW. |
Note
The cost input to the model is an annualized cost per unit
capacity. This annualized cost is incurred in each period of the study
(and multiplied by the number of years the period represents) for
the duration of the line’s lifetime. It is up to the user to
ensure that the tx_new_lin_financial_lifetime_yrs_by_vintage and
tx_new_lin_annualized_real_cost_per_mw_yr parameters are
consistent.
Optional Input Params |
|---|
tx_new_lin_fixed_cost_per_mw_yrDefined over:
TX_NEW_LIN_VNTSWithin:
NonNegativeRealsDefault:
0The transmission line’s fixed cost to be paid in each operational period in real dollars per unit capacity of that vintage. |
tx_new_lin_min_cumulative_new_build_mwDefined over:
TX_NEW_LIN_VNTSWithin:
NonNegativeRealsThe minimum cumulative amount of capacity (in MW) that must be built for a transmission line by a certain period. |
tx_new_lin_max_cumulative_new_build_mwDefined over:
TX_NEW_LIN_VNTSWithin:
NonNegativeRealsThe maximum cumulative amount of capacity (in MW) that must be built for a transmission line by a certain period. |
Derived Sets |
|---|
OPR_PRDS_BY_TX_NEW_LIN_VINTAGEDefined over:
TX_NEW_LIN_VNTSIndexed set that describes the operational periods for each possible
transmission line-vintage combination, based on the
|
TX_NEW_LIN_OPR_PRDSTwo-dimensional set that includes the periods when transmission
capacity of any vintage could be operational if built. This set is
added to the list of sets to join to get the final
|
TX_NEW_LIN_VNTS_OPR_IN_PRDDefined over:
PERIODSIndexed set that describes the transmission line-vintages that could
be operational in each period based on the
|
FIN_PRDS_BY_TX_NEW_LIN_VINTAGEDefined over:
TX_NEW_LIN_VNTSIndexed set that describes the financial periods for each possible
line-vintage combination, based on the
|
TX_NEW_LIN_FIN_PRDSTwo-dimensional set that includes the periods when line capacity of
any vintage could be incurring costs if built. This set is added to
the list of sets to join to get the final |
TX_NEW_LIN_VNTS_FIN_IN_PRDDefined over:
PERIODSIndexed set that describes the line-vintages that could be incurring
costs in each period based on the
|
Variables |
|---|
TxNewLin_Build_MWDefined over:
TX_NEW_LIN_VNTSWithin:
NonNegativeRealsDetermines how much transmission capacity of each possible vintage is
built at each |
Expressions |
|---|
TxNewLin_Capacity_MWDefined over:
TX_NEW_LIN_OPR_PRDSWithin:
NonNegativeRealsThe transmission capacity of a line in a given operational period is equal to the sum of all capacity-build of vintages operational in that period. |
Constraints |
|---|
TxNewLin_Min_Cum_Build_ConstraintDefined over:
TX_NEW_LIN_VNTS_W_MIN_CONSTRAINTEnsures that certain amount of capacity is built by a certain period,
based on |
TxNewLin_Max_Cum_Build_ConstraintDefined over:
TX_NEW_LIN_VNTS_W_MAX_CONSTRAINTLimits the amount of capacity built by a certain period, based on
|
gridpath.transmission.capacity.capacity
This is a line-level module that adds to the formulation components that describe the capacity of transmission lines that are available to the optimization for each period. The capacity can be a fixed number or an expression with variables depending on the line’s capacity_type. The project capacity can then be used to constrain operations, contribute to reliability constraints, etc. The module also adds transmission costs which again depend on the line’s capacity_type.
gridpath.transmission.operations.operational_types
The gridpath.transmission.operations.operational_types package contains modules to describe the various ways in which transmission-line operations are constrained in optimization problem, e.g. as a simple transport model, or DC OPF.
gridpath.transmission.operations.operational_types.tx_simple
The following Pyomo model components are defined in this module:
Sets |
|---|
TX_SIMPLEThe set of transmission lines of the |
TX_SIMPLE_OPR_TMPSTwo-dimensional set with transmission lines of the |
Params |
|---|
tx_simple_loss_factorDefined over:
TX_SIMPLEWithin:
PercentFractionDefault:
0The fraction of power that is lost when transmitted over this line. |
Variables |
|---|
TxSimple_Transmit_Power_MWDefined over:
TX_SIMPLE_OPR_TMPSWithin:
RealsThe transmission line’s power flow in each timepoint in which the line is operational. Negative power means the power flow goes in the opposite direction of the line’s defined direction. |
TxSimple_Losses_LZ_From_MWDefined over:
TX_SIMPLE_OPR_TMPSWithin:
NonNegativeRealsLosses on the transmission line in each timepoint, which we’ll account for in the “from” origin load zone’s load balance, i.e. losses incurred when power is flowing to the “from” zone. |
TxSimple_Losses_LZ_To_MWDefined over:
TX_SIMPLE_OPR_TMPSWithin:
NonNegativeRealsLosses on the transmission line in each timepoint, which we’ll account for in the “to” origin load zone’s load balance, i.e. losses incurred when power is flowing to the “to” zone. |
Constraints |
|---|
TxSimple_Min_Transmit_ConstraintDefined over:
TX_SIMPLE_OPR_TMPSTransmitted power should exceed the transmission line’s minimum power flow for in every operational timepoint. |
TxSimple_Max_Transmit_ConstraintDefined over:
TX_SIMPLE_OPR_TMPSTransmitted power cannot exceed the transmission line’s maximum power flow in every operational timepoint. |
TxSimple_Losses_LZ_From_ConstraintDefined over:
TX_SIMPLE_OPR_TMPSLosses to be accounted for in the “from” load zone’s load balance are 0 when power flow on the line is positive (power flowing from the “from” to the “to” load zone) and must be greater than or equal to the flow times the loss factor otherwise (power flowing to the “from” load zone). |
TxSimple_Losses_LZ_To_ConstraintDefined over:
TX_SIMPLE_OPR_TMPSLosses to be accounted for in the “to” load zone’s load balance are 0 when power flow on the line is negative (power flowing from the “to” to the “from” load zone) and must be greater than or equal to the flow times the loss factor otherwise (power flowing to the “to” load zone). |
TxSimple_Max_Losses_From_ConstraintDefined over:
TX_SIMPLE_OPR_TMPSLosses cannot exceed the maximum transmission flow capacity times the loss factor in each operational timepoint. Provides upper bound on losses. |
TxSimple_Max_Losses_To_ConstraintDefined over:
TX_SIMPLE_OPR_TMPSLosses cannot exceed the maximum transmission flow capacity times the loss factor in each operational timepoint. Provides upper bound on losses. |
gridpath.transmission.operations.operational_types.tx_dcopf
The following Pyomo model components are defined in this module:
Sets |
|---|
TX_DCOPFThe set of transmission lines of the |
TX_DCOPF_OPR_TMPSTwo-dimensional set with transmission lines of the |
Derived Sets |
|---|
PRDS_CYCLES_ZONESThree-dimensional set describing the combination of periods, cycles, and zones/nodes. A cycle is a “basic cycle” in the network as defined in graph theory. This is the key set on which most other sets are derived. |
PRDS_CYCLESTwo-dimensional set with the period and cycle_id of the independent cycles of the network graph (the network can change between periods). |
CYCLES_OPR_TMPSTwo-dimensional set with of cycle IDs and operational timepoints. KVL constraint is indexed by this set. |
ZONES_IN_PRD_CYCLEDefined over:
PRDS_CYCLESIndexed set of ordered zones/nodes by period-cycle. Helper set, not directly used in constraints/param indices. |
PRDS_CYCLES_TX_DCOPFThree-dimensional set of periods, cycle_ids, and transmission lines in
that period-cycle. This set is used to determine the set
|
TX_DCOPF_IN_PRD_CYCLEDefined over:
PRDS_CYCLESIndexed set of transmission lines in each period-cycle. This set is used in the KVL constraint when summing up the values. |
Required Params |
|---|
tx_dcopf_reactance_ohmsDefined over:
TX_DCOPFThe series reactance in Ohms for each |
Derived Params |
|---|
tx_dcopf_cycle_directionDefined over:
PRDS_CYCLES_TX_DCOPFThe value of the cycle incidence matrix for each period-cycle-tx_line. |
Variables |
|---|
TxDcopf_Transmit_Power_MWDefined over:
TX_DCOPF_OPR_TMPSWithin:
RealsThe transmission line’s power flow in each timepoint in which the line is operational. Negative power means the power flow goes in the opposite direction of the line’s defined direction. |
Constraints |
|---|
TxDcopf_Min_Transmit_ConstraintDefined over:
TX_DCOPF_OPR_TMPSTransmitted power should exceed the transmission line’s minimum power flow for in every operational timepoint. |
TxDcopf_Max_Transmit_ConstraintDefined over:
TX_DCOPF_OPR_TMPSTransmitted power cannot exceed the transmission line’s maximum power flow in every operational timepoint. |
TxDcopf_Kirchhoff_Voltage_Law_ConstraintDefined over:
CYCLES_OPR_TMPSThe sum of all potential difference across branches around all cycles in the network must be zero. Using DC OPF assumptions, this can be expressed in terms of the cycle incidence matrix and line reactance. |
gridpath.transmission.operations.operations
This is a line-level module that adds to the formulation components that describe the amount of power flowing on each line.
gridpath.system.load_balance.aggregate_transmission_power
This module aggregates the net power flow in/out of a load zone on all transmission lines connected to the load zone to create a load-balance production component, and adds it to the load-balance constraint.
Transmission Hurdle Rates
If the transmission hurdle rates feature is enabled, the following modules are also included:
gridpath.transmission.operations.hurdle_costs
This is a Tx-line-level module that adds to the formulation components that describe the operations-related costs of transmission lines, namely hurdle rate costs. Hurdle rate costs are currently applied on power sent across the transmission line.
gridpath.objective.transmission.aggregate_hurdle_costs
This module aggregates transmission-line-timepoint-level operational costs for use in the objective function.
10.2.3. Operating Reserves
GridPath can model operating reserve requirements and provision. Reserves currently modeled (none, any, or all can be selected, as they are additive in the model) include regulation up and down, spinning reserves, load-following up and down, frequency response, and inertia reserves.
The treatment of operating reserves is standardized. It requires defining the reserve balancing areas with their associated parameters and setting the reserve requirements by balancing area and timepoint; we must also assign a balancing area to each project that can provide the reserve; the model then takes care of creating the appropriate project-level reserve-provision variables, aggregates the provision of reserves, and ensures that total provision of the reserve and the reserve requirement are balanced (or that penalties are applied if not).
Modules from each reserve feature call on standardized methods included in other GridPath modules. The standard methods are included in the following modules:
gridpath.project.operations.reserves.reserve_provision
- generic_record_dynamic_components(d, scenario_directory, weather_iteration, hydro_iteration, availability_iteration, subproblem, stage, headroom_or_footroom_dict, ba_column_name, reserve_provision_variable_name, reserve_provision_derate_param_name, reserve_to_energy_adjustment_param_name, reserve_balancing_area_param_name)[source]
- Parameters:
d – the DynamicComponents class we’ll be populating
scenario_directory – the base scenario directory
stage – the horizon subproblem, not used here
stage – the stage subproblem, not used here
headroom_or_footroom_dict – the headroom or footroom dictionary with projects as keys and list of headroom or footroom variables, respectively, as values; the keys are populated in the determine_dynamic_inputs method of gridpath.project.__init__
ba_column_name – the name of the column that determines the reserve balancing area for the projects in the projects.tab input file
reserve_provision_variable_name – the variable name for this reserve type
reserve_provision_derate_param_name – the reserve-provision derate paramater name for this reserve type
reserve_to_energy_adjustment_param_name – the reserve-to-energy-adjustment parameter name for this reserve type
reserve_balancing_area_param_name – the project-level balancing area parameter name for this reserve type
This method populates the following ‘dynamic components’:
headroom_variables or footroom_variables
reserve_variable_derate_params
reserve_to_energy_adjustment_params
The headroom_variables and footroom_variables components are populated based on the data in the projects.tab input file.
When this method is called, the module calling it will specify whether the respective reserve variable name should be added to the headroom or footroom dictionaries. The reserve module will also specify what the name is of the column in projects.tab where the project’s balancing area for the respective reserve is specified, the ba_column_name. For projects for which a balancing area is specified (as opposed to having a ‘.’ value indicating no balancing area), the respective reserve-provision variable name (the reserve_provision_variable_name specified by the reserve module calling this method) will be added to the project’s list of headroom/footroom variables. These lists will then be passed to the ‘add_model_components’ method of the operational-modules and used to build the appropriate operational constraints for each project, usually named the ‘max power rule’ (power + upward reserves must be less than or equal to online capacity) and ‘min power rule’ (power - downward reserves must be greater than or equal to the minimum stable level) in the operational-type modules.
Advanced GridPath functionality includes the ability to put a more stringent constraint on reserve-provision than the available headroom/footroom by de-rating how much of the available project headroom/footroom can be used for a certain reserve-type in the respective constraints in the operational_type modules. The reserve_variable_derate_params dynamic component dictionary is populated here; it has the project-level reserve provision variable as key and the derate param for the respective reserve variable as value.
Note
Currently, these de-rates are only used in the variable operational type and we need to add them to other operational types.
Advanced GridPath functionality also includes the ability to account for the energy effects of reserve-provision. For example, when providing regulation-up during a timepoint, projects will occasionally be called upon, so they will produce extra energy above what was schedule for the timepont. Similarly, if they are providing load-following down, they will occasionally be called upon to reduce their output, so will produce less energy than ‘scheduled’ for the timepoint. To account for this, the simplest treatment is to multiply the reserve-provision variables by a parameter and include that ‘energy’ in other constraints. We create a dictionary of the reserve-provision variables and the adjustment parameter name for each reserve-type requested by the user.
Note
Currently, these adjustments are only used in the variable operational type and we need to add them to other operational types.
10.2.4. Reliability
GridPath currently includes the ability to require that a planning reserve requirement be met. Projects can contribute toward the reserve requirement via a simple fraction of their installed capacity or an “ELCC surface” that takes into account declining marginal contributions and/or portfolio effects with other projects. GridPath can also account for “deliverability,” i.e., lower capacity contributions due to transmission limits.
gridpath.project.reliability.prm.prm_simple
Simplest PRM contribution where each PRM project contributes a fraction of its installed capacity. Note that projects contributing through the ELCC surface can also simultaneous contribute a simple fraction of their capacity (the fraction defaults to 0 if not specified).
gridpath.project.reliability.prm.elcc_surface
Contributions to ELCC surface
gridpath.system.reliability.prm.elcc_surface
Total ELCC of projects on ELCC surface
10.2.5. Policy
GridPath includes the ability to model certain policies, e.g. a renewable portfolio standard requiring that a certain percentage of demand be met with renewable resources, and a carbon cap, requiring that total emissions be below a certain level.
gridpath.system.policy.carbon_cap
gridpath.system.policy.carbon_tax
gridpath.system.policy.energy_targets.horizon_energy_target
Simplest implementation with a MWh target by balancing type horizon.
gridpath.system.policy.fuel_burn_limits.fuel_burn_limits
Fuel burn limit for each fuel burn balancing area.
gridpath.system.policy.performance_standard.performance_standard
Performance standard for each performance_standard zone
10.2.6. Markets
GridPath can model market participation of a project or a set of projects. A price stream is required and projects are assumed to be price-takers. The market volume can be constrained. In multi-stage modeling, the transactions from the previous stages can be fixed in the following stages.