Class ProfitMaximiser
- java.lang.Object
-
- agents.flexibility.Strategist
-
- agents.storage.arbitrageStrategists.ArbitrageStrategist
-
- agents.storage.arbitrageStrategists.DynamicProgrammingStrategist
-
- agents.storage.arbitrageStrategists.ProfitMaximiser
-
public class ProfitMaximiser extends DynamicProgrammingStrategist
Strategy to maximise profits via dynamic programming, running backwards in time. Profits are maximised by finding the best sequence of states. The result fully utilises market power to improve profits.- Author:
- Christoph Schimeczek, Evelyn Sperber
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class agents.storage.arbitrageStrategists.ArbitrageStrategist
ArbitrageStrategist.StrategistType
-
-
Field Summary
-
Fields inherited from class agents.storage.arbitrageStrategists.DynamicProgrammingStrategist
bestNextState, internalEnergyPerState, numberOfEnergyStates, numberOfTransitionStates, parameters
-
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_UNKNOWN_UPDATE_TYPE, ERR_USE_MERIT_ORDER_FORECAST, ERR_USE_PRICE_FORECAST, forecastPeriodParam, forecastSteps, forecastUpdateTypeParam, OPERATION_PERIOD, priceScheduleInEURperMWH, scheduledBidPricesInEURperMWH, scheduleDurationParam, scheduleDurationPeriods
-
-
Constructor Summary
Constructors Constructor Description ProfitMaximiser(de.dlr.gitlab.fame.agent.input.ParameterData generalInput, de.dlr.gitlab.fame.agent.input.ParameterData specificInput, Device storage)
Creates aProfitMaximiser
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected double
calcBidPrice(de.dlr.gitlab.fame.time.TimePeriod timePeriod, double externalEnergyDelta)
Calculates bidding price for given time period and planned external energy deltaprotected void
clearPlanningArrays()
replaces all entries in the planning arrays with 0 or Integer.MIN_VALUEprotected MeritOrderSensitivity
createBlankSensitivity()
protected void
optimiseDispatch(de.dlr.gitlab.fame.time.TimePeriod firstPeriod)
update most profitable final state for each possible initial state in every periodvoid
storeElectricityPriceForecast(de.dlr.gitlab.fame.time.TimePeriod timePeriod, double electricityPriceForecastInEURperMWH)
Stores given electricity price forecast for the associated TimePeriod: price-forecasting method-
Methods inherited from class agents.storage.arbitrageStrategists.DynamicProgrammingStrategist
calcFinalStateLowerBound, calcFinalStateUpperBound, getChargingPowerForecastInMW, updateSchedule, updateScheduleArrays
-
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, storeMeritOrderForesight, updateBidSchedule
-
-
-
-
Constructor Detail
-
ProfitMaximiser
public ProfitMaximiser(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 aProfitMaximiser
- 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
-
clearPlanningArrays
protected void clearPlanningArrays()
Description copied from class:DynamicProgrammingStrategist
replaces all entries in the planning arrays with 0 or Integer.MIN_VALUE- Specified by:
clearPlanningArrays
in classDynamicProgrammingStrategist
-
optimiseDispatch
protected void optimiseDispatch(de.dlr.gitlab.fame.time.TimePeriod firstPeriod)
update most profitable final state for each possible initial state in every period- Specified by:
optimiseDispatch
in classDynamicProgrammingStrategist
- Parameters:
firstPeriod
- first period of the schedule to be created
-
calcBidPrice
protected double calcBidPrice(de.dlr.gitlab.fame.time.TimePeriod timePeriod, double externalEnergyDelta)
Description copied from class:DynamicProgrammingStrategist
Calculates bidding price for given time period and planned external energy delta- Specified by:
calcBidPrice
in classDynamicProgrammingStrategist
- Parameters:
timePeriod
- at which the (dis-)charging action happensexternalEnergyDelta
- planned to take place; > 0: charging < 0: discharging- Returns:
- bidding price depending on time and type of action
-
createBlankSensitivity
protected MeritOrderSensitivity createBlankSensitivity()
- Specified by:
createBlankSensitivity
in classStrategist
- Returns:
- an empty
MeritOrderSensitivity
item of the type used by thisArbitrageStrategist
-type
-
storeElectricityPriceForecast
public void storeElectricityPriceForecast(de.dlr.gitlab.fame.time.TimePeriod timePeriod, double electricityPriceForecastInEURperMWH)
Description copied from class:Strategist
Stores given electricity price forecast for the associated TimePeriod: price-forecasting method- Overrides:
storeElectricityPriceForecast
in classStrategist
- Parameters:
timePeriod
- associated with the forecast dataelectricityPriceForecastInEURperMWH
- forecast for the electricity price in EUR per MWh
-
-