MarketBidCost

PowerSystems.MarketBidCostType
mutable struct MarketBidCost <: OperationalCost
  • no_load_cost::Union{Nothing, Float64, TimeSeriesKey}: No load cost

  • start_up::Union{@NamedTuple{hot::Float64, warm::Float64, cold::Float64}, TimeSeriesKey}: Start-up cost at different stages of the thermal cycle as the unit cools after a shutdown (e.g., hot, warm, or cold starts). Warm is also referred to as intermediate in some markets. Can also accept a single value if there is only one start-up cost

  • shut_down::Float64: Shut-down cost

  • incremental_offer_curves::Union{Nothing, CostCurve{PiecewiseIncrementalCurve}, TimeSeriesKey}: Sell Offer Curves data, which can be a time series of PiecewiseStepData or a CostCurve of PiecewiseIncrementalCurve

  • decremental_offer_curves::Union{Nothing, CostCurve{PiecewiseIncrementalCurve}, TimeSeriesKey}: Buy Offer Curves data, which can be a time series of PiecewiseStepData or a CostCurve of PiecewiseIncrementalCurve

  • incremental_initial_input::Union{Nothing, TimeSeriesKey}: If using a time series for incrementaloffercurves, this is a time series of Float64 representing the initial_input

  • decremental_initial_input::Union{Nothing, TimeSeriesKey}: If using a time series for decrementaloffercurves, this is a time series of Float64 representing the initial_input

  • ancillary_service_offers::Vector{Service}: Bids for the ancillary services

MarketBidCost(no_load_cost, start_up, shut_down, incremental_offer_curves, decremental_offer_curves, ancillary_service_offers)
MarketBidCost(; no_load_cost, start_up, shut_down, incremental_offer_curves, decremental_offer_curves, ancillary_service_offers)
MarketBidCost(no_load_cost, start_up::Real, shut_down, incremental_offer_curves, decremental_offer_curves, ancillary_service_offers)

An operating cost for market bids of energy and ancilliary services for any asset. Compatible with most US Market bidding mechanisms that support demand and generation side.

source
PowerSystems.MarketBidCostMethod
MarketBidCost(
    no_load_cost,
    start_up::Real,
    shut_down;
    incremental_offer_curves,
    decremental_offer_curves,
    incremental_initial_input,
    decremental_initial_input,
    ancillary_service_offers
) -> MarketBidCost

Accepts a single start_up value to use as the hot value, with warm and cold set to 0.0.

source
PowerSystems.MarketBidCostMethod
MarketBidCost(
    no_load_cost::Float64,
    start_up::Union{@NamedTuple{hot::Float64, warm::Float64, cold::Float64}, TimeSeriesKey},
    shut_down,
    incremental_offer_curves,
    decremental_offer_curves,
    ancillary_service_offers
) -> MarketBidCost

Auxiliary Constructor for TestData

source
PowerSystems.MarketBidCostMethod
MarketBidCost(
    no_load_cost::Integer,
    start_up::Union{@NamedTuple{hot::Float64, warm::Float64, cold::Float64}, TimeSeriesKey},
    shut_down,
    incremental_offer_curves,
    decremental_offer_curves,
    incremental_initial_input,
    decremental_initial_input,
    ancillary_service_offers
) -> MarketBidCost

Auxiliary Constructor for Deserialization with Integer at no load cost

source
PowerSystems.make_market_bid_curveMethod
make_market_bid_curve(
    data::PiecewiseStepData,
    initial_input::Float64;
    power_units,
    input_at_zero
) -> CostCurve{PiecewiseIncrementalCurve}

Make a CostCurve{PiecewiseIncrementalCurve} suitable for inclusion in a MarketBidCost from the FunctionData that might be used to store such a cost curve in a time series.

source
PowerSystems.make_market_bid_curveMethod
make_market_bid_curve(
    powers::Vector{Float64},
    marginal_costs::Vector{Float64},
    initial_input::Float64;
    power_units,
    input_at_zero
) -> CostCurve{PiecewiseIncrementalCurve}

Make a CostCurve{PiecewiseIncrementalCurve} suitable for inclusion in a MarketBidCost from a vector of power values, a vector of marginal costs, a float of initial input, and an optional units system and input at zero.

Examples

mbc = make_market_bid_curve([0.0, 100.0, 105.0, 120.0, 130.0], [25.0, 26.0, 28.0, 30.0], 10.0)
mbc2 = make_market_bid_curve([0.0, 100.0, 105.0, 120.0, 130.0], [25.0, 26.0, 28.0, 30.0], 10.0; input_at_zero = 10.0)
mbc3 = make_market_bid_curve([0.0, 100.0, 105.0, 120.0, 130.0], [25.0, 26.0, 28.0, 30.0], 10.0; power_inputs = UnitSystem.NATURAL_UNITS)
source
PowerSystems.set_start_up!Method
set_start_up!(
    value::MarketBidCost,
    val::Real
) -> NamedTuple{(:hot, :warm, :cold), <:Tuple{Any, Float64, Float64}}

Auxiliary Method for setting up start up that are not multi-start

source