EnergySystemsModellingLab / MUSE_OS

Welcome to the MUSE-OS repository
https://muse-os.readthedocs.io/en/latest/
GNU General Public License v3.0
21 stars 9 forks source link

Negative EAC leads to over-investment #319

Closed tsmbland closed 4 months ago

tsmbland commented 6 months ago

Discussed in https://github.com/EnergySystemsModellingLab/MUSE_OS/discussions/316

Originally posted by **tsmbland** May 29, 2024 I've been looking into the EAC objective as it's relevant for [one of the tutorials](https://muse-os.readthedocs.io/en/documentation/user-guide/add-agent.html), and I've been getting some strange behaviour. Not sure if this counts as a bug per se, which is why I bring it up here rather than creating an issue, but I think it's worth flagging anyway. Just taking a very simple example, here's what happens if I take the `default` model and switch the single agent objective from LCOE to EAC: ![lcoe](https://github.com/EnergySystemsModellingLab/MUSE_OS/assets/23723407/ef50650d-7400-4627-9eab-ffab31037f93) ![eac](https://github.com/EnergySystemsModellingLab/MUSE_OS/assets/23723407/efd5a621-a5fb-464e-965c-b0cccd42a5e7) The black dashed line is the capacity that the system needs to satisfy heating demand in the peak timeslice. In the LCOE case, installed capacity nicely matches this line. However, in the EAC case the agent ends up massively overinvesting in heat technologies above what is needed to satisfy demand. The capacity seems to reach the limits imposed in technodata file (`MaxCapacityAddition`, `MaxCapacityGrowth`, `TotalCapacityLimit`). If you increase (e.g. double) these limits then you can get even more extreme behaviour: ![eac-capacity-limits-2x](https://github.com/EnergySystemsModellingLab/MUSE_OS/assets/23723407/ae18a39b-2e8a-4325-adba-3d7d1e6c1f78) I think this may have something to do with the fact that EAC is negative for the heating technologies (gasbioler and heatpump): ![eac-costs](https://github.com/EnergySystemsModellingLab/MUSE_OS/assets/23723407/abbd8303-fdf0-44aa-abb5-8e5f6e511302) This is because EAC subtracts an (upper-bound) estimate of revenue, which in this case is very high due to the high initial cost of `heat` (100 $MUS). You then end up with the situation where the best way to 'minimise costs' in the investment algorithm is to invest as much as possible in technolgies with negative EAC. Mathematically this makes sense, but logically it's a bit nonsensical to invest in all this extra capacity which will just be sitting idle. Part of the problem may lie in the EAC calculation, which seems to assume that technologies will be running at full capacity, which can give an inflated estimate for the revenue. In any case, as long as the EAC is negative it seems like you're bound to get this kind of behaviour where the agent invests as much as it possibly can, which doesn't seem realistic to me. Not sure whether this is something worth thinking more about, or just something that users need to be aware of when using the EAC objective (or any other objective that can be negative). Perhaps this is something MUSE2 already plans to address? Anyway, if anyone has any thoughts about this I'd be very interested to hear.
ahawkes commented 6 months ago

Good to see that LCOE appears to be behaving. But, wow, EAC looks diabolical.

EAC should be annuitized capital cost plus annual operating cost. Is that the calculation being made?

If yes, and negative values are just because of high value of produced commodities, then the problem is not so large but this does need some thought and attention.

In a sense EAC should be negative when it's a profit-making activity (but for such activities it would be weird to choose EAC as an objective), but we should not allow investment above the required capacity - because you're correct it makes no sense to invest in capacity that sits idle.

So, if the equation is correct (can you confirm?), can we limit total investment capacity to the level of demand?

Lastly, we need to add a warning in the documentation about how EAC works. Users need to know how those initial commodity values (a user input) are used in this calculation, so if they put in something ridiculous they will get odd behaviour. Though in this case I think even a very high value of serving heat demand should not lead to different decisions, as you'd still choose the option that has lower other costs (lower EAC, as calculated from capex and other open).

And yes, MUSE 2 can fix this as we won't be using this optimisation approach for investments, and there is less need for these exogenous commodity prices.


From: Tom Bland @.> Sent: Friday, May 31, 2024 12:16:27 AM To: EnergySystemsModellingLab/MUSE_OS @.> Cc: Subscribed @.***> Subject: [EnergySystemsModellingLab/MUSE_OS] Negative EAC leads to over-investment (Issue #319)

This email from @.*** originates from outside Imperial. Do not click on links and attachments unless you recognise the sender. If you trust the sender, add them to your safe senders listhttps://spam.ic.ac.uk/SpamConsole/Senders.aspx to disable email stamping for this address.

Discussed in #316https://github.com/EnergySystemsModellingLab/MUSE_OS/discussions/316

Originally posted by tsmbland May 29, 2024 I've been looking into the EAC objective as it's relevant for one of the tutorialshttps://muse-os.readthedocs.io/en/documentation/user-guide/add-agent.html, and I've been getting some strange behaviour. Not sure if this counts as a bug per se, which is why I bring it up here rather than creating an issue, but I think it's worth flagging anyway.

Just taking a very simple example, here's what happens if I take the default model and switch the single agent objective from LCOE to EAC:

lcoe.png (view on web)https://github.com/EnergySystemsModellingLab/MUSE_OS/assets/23723407/ef50650d-7400-4627-9eab-ffab31037f93 eac.png (view on web)https://github.com/EnergySystemsModellingLab/MUSE_OS/assets/23723407/efd5a621-a5fb-464e-965c-b0cccd42a5e7

The black dashed line is the capacity that the system needs to satisfy heating demand in the peak timeslice. In the LCOE case, installed capacity nicely matches this line. However, in the EAC case the agent ends up massively overinvesting in heat technologies above what is needed to satisfy demand. The capacity seems to reach the limits imposed in technodata file (MaxCapacityAddition, MaxCapacityGrowth, TotalCapacityLimit). If you increase (e.g. double) these limits then you can get even more extreme behaviour:

eac-capacity-limits-2x.png (view on web)https://github.com/EnergySystemsModellingLab/MUSE_OS/assets/23723407/ae18a39b-2e8a-4325-adba-3d7d1e6c1f78

I think this may have something to do with the fact that EAC is negative for the heating technologies (gasbioler and heatpump):

eac-costs.png (view on web)https://github.com/EnergySystemsModellingLab/MUSE_OS/assets/23723407/abbd8303-fdf0-44aa-abb5-8e5f6e511302

This is because EAC subtracts an (upper-bound) estimate of revenue, which in this case is very high due to the high initial cost of heat (100 $MUS). You then end up with the situation where the best way to 'minimise costs' in the investment algorithm is to invest as much as possible in technolgies with negative EAC. Mathematically this makes sense, but logically it's a bit nonsensical to invest in all this extra capacity which will just be sitting idle.

Part of the problem may lie in the EAC calculation, which seems to assume that technologies will be running at full capacity, which can give an inflated estimate for the revenue. In any case, as long as the EAC is negative it seems like you're bound to get this kind of behaviour where the agent invests as much as it possibly can, which doesn't seem realistic to me.

Not sure whether this is something worth thinking more about, or just something that users need to be aware of when using the EAC objective (or any other objective that can be negative). Perhaps this is something MUSE2 already plans to address?

Anyway, if anyone has any thoughts about this I'd be very interested to hear.

— Reply to this email directly, view it on GitHubhttps://github.com/EnergySystemsModellingLab/MUSE_OS/issues/319, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AC37JLOSQR5IRSQ6XU7BPNLZE6JKXAVCNFSM6AAAAABIRUYCGKVHI2DSMVQWIX3LMV43ASLTON2WKOZSGMZDMNJVGU3TSOA. You are receiving this because you are subscribed to this thread.Message ID: @.***>

tsmbland commented 5 months ago

As far as I can tell the calculation for EAC looks reasonable, it just happens to be negative in this case due to the very high cost of heat which gives a very high estimate for revenue. The only possible error I can see is that the calculation for revenue (and costs) assumes that technologies will always be operating at maximum capacity, which won't always be the case (e.g. if demand is lower in some timeslices). Presumably the agent 'knows' the demand profile so could factor this into the revenue estimate.

In any case, I think the solution for this is given in #323, i.e. enforcing that capacity must not exceed maximum demand. This will ensure that, even in cases where EAC is negative, over-investment won't occur.

ahawkes commented 5 months ago

Yes - #323 would solve it I think


From: Tom Bland @.> Sent: Tuesday, June 11, 2024 11:29:26 AM To: EnergySystemsModellingLab/MUSE_OS @.> Cc: Hawkes, Adam D @.>; Comment @.> Subject: Re: [EnergySystemsModellingLab/MUSE_OS] Negative EAC leads to over-investment (Issue #319)

This email from @.*** originates from outside Imperial. Do not click on links and attachments unless you recognise the sender. If you trust the sender, add them to your safe senders listhttps://spam.ic.ac.uk/SpamConsole/Senders.aspx to disable email stamping for this address.

As far as I can tell the calculation for EAC looks reasonable, it just happens to be negative in this case due to the very high cost of heat which gives a very high estimate for revenue. The only possible error I can see is that the calculation for revenue assumes that technologies will always be operating at maximum capacity, which won't always be the case (e.g. if demand is lower in some timeslices). Presumably the agent 'knows' the demand profile so could factor this into the revenue estimate.

In any case, I think the solution for this is given in #323https://github.com/EnergySystemsModellingLab/MUSE_OS/issues/323, i.e. enforcing that capacity must not exceed maximum demand. This will ensure that, even in cases where EAC is negative, over-investment won't occur.

— Reply to this email directly, view it on GitHubhttps://github.com/EnergySystemsModellingLab/MUSE_OS/issues/319#issuecomment-2160392146, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AC37JLJDT4WO5XQJH3OCNWLZG3GQNAVCNFSM6AAAAABIRUYCGKVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCNRQGM4TEMJUGY. You are receiving this because you commented.Message ID: @.***>

tsmbland commented 4 months ago

Fixed by #355