Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bugfix: limit number of vehicles participating in V2G by dsm rate #1423

Merged
merged 1 commit into from
Nov 15, 2024

Conversation

koen-vg
Copy link
Contributor

@koen-vg koen-vg commented Nov 14, 2024

Previously, all vehicles were assumed to be V2G-capable if V2G was turned on. But BEV battery capacity was still limited by the bev_availability option (0.5 by default). The result was BEV batteries effectively having a storage/discharge ratio of ~2.3 instead of ~4.5 as should be the case with 50kWh batteries and 11kW chargers.

Moreover, V2G is now only enabled if demand-side-management (DSM) is also enabled; V2G had no effect without DSM anyway unless I've misunderstood badly: V2G needs the battery store that's added by the DSM option in order to be useful at all.

Finally, rename the bev_availability option to bev_dsm_availability to avoid confusion with time-dependent BEV charge/discharge availability profiles, which are also referred to as bev_availability elsewhere.

Checklist

  • I tested my contribution locally and it works as intended.
  • Code and workflow changes are sufficiently documented.
  • Changed dependencies are added to envs/environment.yaml.
  • Changes in configuration options are added in config/config.default.yaml.
  • Changes in configuration options are documented in doc/configtables/*.csv.
  • Sources of newly added data are documented in doc/data_sources.rst.
  • A release note doc/release_notes.rst is added.

Moreover, V2G is now only enabled if demand-side-management (DSM) is also
enabled; V2G had no effect without DSM anyway.

Finally, rename the `bev_availability` option to
`bev_dsm_availability` to avoid confusion with time-dependent BEV
charge/discharge availability profiles, which are also referred to as
`bev_availability` elsewhere.
@koen-vg
Copy link
Contributor Author

koen-vg commented Nov 14, 2024

Also while we're on the topic of V2G / DSM, I want to pick on another issue. Right now, vehicles that participate in DSM must be charged to a certain level (default: 75%) at a certain hour (default: 7:00) every day; at any other hour their batteries can have any state of charge at all, all the way down to 0%.

To me, that feels quite unrealistic. Without having looked very carefully at the results, I image that the model will often drain EV batteries fully during the day and charge them during the night to meet the 75% target at 7:00.

It seems much more reasonable to assume that people with EVs aren't going to allow their vehicles to go down to 0% battery on a regular basis. Instead, something like a minimum state-of-charge of 50-75% throughout the day seems reasonable (see e.g. https://www.sciencedirect.com/science/article/pii/S0301421523002343#sec3). In effect, it feels to me like we are over-estimating effective grid-connected battery capacity by a factor of 2-4.

Now, the bev_availability (in this PR renamed to bev_dsm_availability) parameter could be seen as a proxy to controlling this. One could set it to 0.25 in order to effectively guarantee a 75% minimum state of charge across the entire electric vehicle stock, including those not participating in V2G. But that seems like a bit of a hack to me.

If there is any interest towards this, I would propose adding a config option like bev_dsm_restriction_all_hours with a value of 60% by default (open to suggestions for a better name) and use it to amend the profile calculated in bev_dsm_profile in build_transport_demand.py.

@fneum
Copy link
Member

fneum commented Nov 14, 2024

Agreed, the BEV DSM is kind of a weak spot in the model. One potentially has to worry about infeasibilities if the lower SOC limit is set too high.

Copy link
Member

@fneum fneum left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changes look good! I agree to the slightly breaking config change. Thanks @koen-vg.

@lkstrp, feel free to merge.

@koen-vg
Copy link
Contributor Author

koen-vg commented Nov 15, 2024

Feel free to merge, any DSM stuff can go in a different issue or PR :)

Agreed, the BEV DSM is kind of a weak spot in the model. One potentially has to worry about infeasibilities if the lower SOC limit is set too high.

I'm actually not sure if infeasibilities would be an issue, at least with the idea I was thinking of. Maybe I didn't communicate it very well. I'm saying we should consider maintaining a minimum SOC of ~60-70% in EV batteries at all times, possibly with an even higher state of charge enforced at certain hours. This would be equivalent to reducing the EV battery capacity to 30-40% of the original, as only the "top" 30-40% of the battery is available for V2G operations. Just reducing the size of EV batteries in the model cannot lead to infeasibilities unless I'm missing something.

@lkstrp lkstrp merged commit c45591f into PyPSA:master Nov 15, 2024
10 of 13 checks passed
daniel-rdt pushed a commit to open-energy-transition/form-energy-storage that referenced this pull request Nov 22, 2024
…PSA#1423)

Moreover, V2G is now only enabled if demand-side-management (DSM) is also
enabled; V2G had no effect without DSM anyway.

Finally, rename the `bev_availability` option to
`bev_dsm_availability` to avoid confusion with time-dependent BEV
charge/discharge availability profiles, which are also referred to as
`bev_availability` elsewhere.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants