Class MultiAgentMedian
- java.lang.Object
-
- agents.flexibility.Strategist
-
- agents.storage.arbitrageStrategists.ArbitrageStrategist
-
- agents.storage.arbitrageStrategists.MultiAgentMedian
-
public class MultiAgentMedian extends ArbitrageStrategist
Creates simple storage dispatch strategies based on an electricity price forecast and its median; Charges whenever the price is below (median - loss_safety) and discharges when prices are above (median + loss_safety). These price limits also resemble the used bid price. Impact of own (dis-)charge is not considered during planning, i.e., large storage operators using this strategy will likely have significant (own) price impacts and might not be able to follow their schedule as planned herein. Thus, many reschedule might be required.- Author:
- Christoph Schimeczek
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class agents.storage.arbitrageStrategists.ArbitrageStrategist
ArbitrageStrategist.StrategistType
-
-
Field Summary
Fields Modifier and Type Field Description static de.dlr.gitlab.fame.agent.input.Tree
parameters
Input parameters for theMultiAgentMedian
strategist-
Fields inherited from class agents.storage.arbitrageStrategists.ArbitrageStrategist
logger, scheduledInitialInternalEnergyInMWH, storage, StrategistTypeParam
-
Fields inherited from class agents.flexibility.Strategist
bidToleranceParam, demandScheduleInMWH, ERR_PROVIDE_FORECAST, ERR_UNKNOWN_STRATEGIST, ERR_USE_MERIT_ORDER_FORECAST, ERR_USE_PRICE_FORECAST, forecastPeriodParam, forecastSteps, OPERATION_PERIOD, priceScheduleInEURperMWH, scheduledBidPricesInEURperMWH, scheduleDurationParam, scheduleDurationPeriods
-
-
Constructor Summary
Constructors Constructor Description MultiAgentMedian(de.dlr.gitlab.fame.agent.input.ParameterData generalInput, de.dlr.gitlab.fame.agent.input.ParameterData specificInput, Device storage)
Creates aMultiAgentMedian
strategist
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected MeritOrderSensitivity
createBlankSensitivity()
double
getChargingPowerForecastInMW(de.dlr.gitlab.fame.time.TimeStamp targetTime)
Returns forecasted external charging power, if possible - otherwise throws a RuntimeEceptionvoid
storeMeritOrderForesight(de.dlr.gitlab.fame.time.TimePeriod _1, SupplyOrderBook _2, DemandOrderBook _3)
Stores given supply and demand bid forecasts for the associated TimePeriod: merit-order forecasting methodvoid
updateSchedule(de.dlr.gitlab.fame.time.TimePeriod timePeriod)
Updates schedule arrays starting at the given TimePeriod with the given initial energy level-
Methods inherited from class agents.storage.arbitrageStrategists.ArbitrageStrategist
calcNumberOfEnergyStates, callOnSensitivity, createStrategist, ensureWithinEnergyBounds, getInternalEnergySchedule
-
Methods inherited from class agents.flexibility.Strategist
clearSensitivitiesBefore, createSchedule, getMissingForecastTimes, getSensitivityForPeriod, getTimesMissingElectricityForecasts, storeElectricityPriceForecast, updateBidSchedule
-
-
-
-
Field Detail
-
parameters
public static final de.dlr.gitlab.fame.agent.input.Tree parameters
Input parameters for theMultiAgentMedian
strategist
-
-
Constructor Detail
-
MultiAgentMedian
public MultiAgentMedian(de.dlr.gitlab.fame.agent.input.ParameterData generalInput, de.dlr.gitlab.fame.agent.input.ParameterData specificInput, Device storage) throws de.dlr.gitlab.fame.agent.input.ParameterData.MissingDataException
Creates aMultiAgentMedian
strategist- Parameters:
generalInput
- general parameters associated with strategistsspecificInput
- specific parameters for this strategiststorage
- device to be optimised- Throws:
de.dlr.gitlab.fame.agent.input.ParameterData.MissingDataException
- if any required input is missing
-
-
Method Detail
-
updateSchedule
public void updateSchedule(de.dlr.gitlab.fame.time.TimePeriod timePeriod)
Description copied from class:Strategist
Updates schedule arrays starting at the given TimePeriod with the given initial energy level- Specified by:
updateSchedule
in classStrategist
- Parameters:
timePeriod
- first period of the schedule to be created
-
createBlankSensitivity
protected MeritOrderSensitivity createBlankSensitivity()
- Specified by:
createBlankSensitivity
in classStrategist
- Returns:
- an empty
MeritOrderSensitivity
item of the type used by thisArbitrageStrategist
-type
-
getChargingPowerForecastInMW
public double getChargingPowerForecastInMW(de.dlr.gitlab.fame.time.TimeStamp targetTime)
Description copied from class:ArbitrageStrategist
Returns forecasted external charging power, if possible - otherwise throws a RuntimeEception- Specified by:
getChargingPowerForecastInMW
in classArbitrageStrategist
- Parameters:
targetTime
- for which to provide the forecast- Returns:
- forecasted external charging power in MW
-
storeMeritOrderForesight
public void storeMeritOrderForesight(de.dlr.gitlab.fame.time.TimePeriod _1, SupplyOrderBook _2, DemandOrderBook _3)
Description copied from class:Strategist
Stores given supply and demand bid forecasts for the associated TimePeriod: merit-order forecasting method- Overrides:
storeMeritOrderForesight
in classStrategist
- Parameters:
_1
- associated with the forecast data_2
- forecasted supply OrderBook_3
- forecasted demand OrderBook
-
-