Closed afernandezcanosa closed 5 years ago
@emayhorn @Hayden-Reeve @DavidWiniarski-pnnl I have started to code the calculation of the strike price as a function of the State of Charge price by using the equation that we discussed in the last meeting. This is the expression that we were supposed to use:
In this expression, the nameplate capacity is known and can be estimated in the fleet class, the state of charge price is also estimated by using simplified assumptions. However, the duration of the grid service cannot be known beforehand by the fleet. This variable is defined as "duration of grid service high price event, i.e., the duration of “higher than normal” prices over which a curtailment of consumption would be expected" so it might be computed by the energy market algorithm that @TomEdmunds @can7huang came up with.
Also, in the "test" strike price vector that @TomEdmunds and @can7huang use their algorithm, there are certain times where is zero and certain times when it is a different value. I was wondering if the algorithm will work with a constant strike price value.
Let me know what are your thoughts. Thanks!
Alejandro,
This appears to be consistent with the way I define SP in my code. SP = $ penalty for one MWh of energy shifted from t1 to t2 relative to the baseline power consumption (see attached). The right hand side below is $/MWhhrMW = $ so the units match.
The dispatch code would work with a constant strike price for any pair of hours t1 and t2. For your vehicle charging device, I believe you were using a zero round trip efficiency value to preclude discharging when you wanted to vehicle to be charged. (You could also enforce this behavior with a high SP in those hours.)
Tom
From: Alejandro Fernandez Canosa notifications@github.com Sent: Wednesday, May 15, 2019 9:29 AM To: GMLC-1-4-2/battery_interface battery_interface@noreply.github.com Cc: Edmunds, Thomas A. edmunds2@llnl.gov; Mention mention@noreply.github.com Subject: Re: [GMLC-1-4-2/battery_interface] API Variables for EnergyMarket service (#90)
@emayhornhttps://github.com/emayhorn @Hayden-Reevehttps://github.com/Hayden-Reeve @DavidWiniarski-pnnlhttps://github.com/DavidWiniarski-pnnl I have started to code the calculation of the strike price as a function of the State of Charge price by using the equation that we discussed in the last meeting. This is the expression that we were supposed to use:
[https://camo.githubusercontent.com/64325403dad65ffed217c5f016cd5b728ba52508/68747470733a2f2f6c617465782e636f6465636f67732e636f6d2f6769662e6c617465783f5c626567696e7b616c69676e2a7d2673706163653b53502673706163653b263d2673706163653b5c667261637b317d7b327d536f435f502673706163653b5c63646f742673706163653b5c44656c74612673706163653b742673706163653b5c63646f742673706163653b435e2a2673706163653b5c5c2673706163653b5c746578747b77686572657d2c5c5c2673706163653b53502673706163653b263d2673706163653b5c746578747b537472696b652673706163653b50726963657d2673706163653b5c5c2673706163653b536f435f502673706163653b263d2673706163653b5c746578747b53746174652673706163653b6f662673706163653b4368617267652673706163653b50726963657d2673706163653b5c5c2673706163653b5c44656c74612673706163653b742673706163653b263d2673706163653b5c746578747b4475726174696f6e2673706163653b6f662673706163653b7468652673706163653b677269642673706163653b736572766963657d5c5c2673706163653b432a2673706163653b263d2673706163653b5c746578747b4e616d65706c6174652673706163653b63617061636974792673706163653b6f662673706163653b7468652673706163653b6465766963657d2673706163653b5c656e647b616c69676e2a7d]https://www.codecogs.com/eqnedit.php?latex=\begin%7balign*%7d&space;SP&space;&=&space;\frac%7b1%7d%7b2%7dSoC_P&space;\cdot&space;\Delta&space;t&space;\cdot&space;C%5e*&space;\\&space;\text%7bwhere%7d,\\&space;SP&space;&=&space;\text%7bStrike&space;Price%7d&space;\\&space;SoC_P&space;&=&space;\text%7bState&space;of&space;Charge&space;Price%7d&space;\\&space;\Delta&space;t&space;&=&space;\text%7bDuration&space;of&space;the&space;grid&space;service%7d\\&space;C*&space;&=&space;\text%7bNameplate&space;capacity&space;of&space;the&space;device%7d&space;\end%7balign*%7d
In this expression, the nameplate capacity is known and can be estimated in the fleet class, the state of charge price is also estimated by using simplified assumptions. However, the duration of the grid service cannot be known beforehand by the fleet. This variable is defined as "duration of grid service high price event, i.e., the duration of “higher than normal” prices over which a curtailment of consumption would be expected" so it might be computed by the energy market algorithm that @TomEdmundshttps://github.com/TomEdmunds @can7huanghttps://github.com/can7huang came up with.
Also, in the "test" strike price vector that @TomEdmundshttps://github.com/TomEdmunds and @can7huanghttps://github.com/can7huang use their algorithm, there are certain times where is zero and certain times when it is a different value. I was wondering if the algorithm will work with a constant strike price value.
Let me know what are your thoughts. Thanks!
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHubhttps://github.com/GMLC-1-4-2/battery_interface/issues/90?email_source=notifications&email_token=AJV2GXRHMSP53HVEN3G6RHTPVQ23HA5CNFSM4HIXP6TKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODVPGVAY#issuecomment-492726915, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AJV2GXWSH3MSZJTEOTVAWLDPVQ23HANCNFSM4HIXP6TA.
For your information, these are the exact definitions of the variables:
SP = Strike price for a DER to produce energy, i.e., the required minimum price differential between the time it is charged to the time it is discharged (if it stores energy), or, for generation devices, the electricity price at which it is cost effective to operate given current fuel costs
∆t = duration of grid service high price event, i.e., the duration of “higher than normal” prices over which a curtailment of consumption would be expected
C* = the nameplate energy storage capacity of the device
SoCP = State-of-Charge (Deficit) Price, i.e., the hourly incentive or compensation [$/hr] required by the device owner for the inconvenience or loss of amenity associated with a state-of-charge deficit equal to the energy storage capacity (assumed to be a linear relationship)
@emayhorn @Hayden-Reeve @DavidWiniarski-pnnl @TomEdmunds I have been thinking about how to implement the strike price for the entire fleet by using the equation above, and I found some questions that do not allow me to implement it. Perhaps you can help me with them:
Thank you!
@afernandezcanosa , defining capacity just on fleet members that are technically capable of responding seems to make sense to me. I don't know enough to answer the other question. I suspect each charging and discharging period is one hour.
@jmaguire1 @raselmahmud02 @ORNLJD @rkadavil @can7huang @emayhorn @Hayden-Reeve @hlngo @TomEdmunds
For the integration of the current version of the Energy Market service, apart from the
forecast
method, some API variables are required to be different thanNone
. In particular, these four are used by the service to build the request:response.Eff_charge
response.Eff_discharge
response.P_service_max
response.P_service_min
The first two are used to calculate the roundtrip efficiency matrix and the last two are fed into the model to incorporate certain constraints.
For the fleet developers, please try to return something different than
None
for these four variables so that we can integrate this service into the Battery-Equivalent interface.Thanks!