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

Depreciation Method does not work in OSeMOSYS_fast #104

Open
trevorb1 opened this issue Jul 2, 2024 · 0 comments
Open

Depreciation Method does not work in OSeMOSYS_fast #104

trevorb1 opened this issue Jul 2, 2024 · 0 comments
Labels
bug Something isn't working

Comments

@trevorb1
Copy link
Member

trevorb1 commented Jul 2, 2024

The Issue

In OSeMOSYS there are two types of depreciation methods; sinking-fund and straight-line. Depreciation Method is a binary parameter which can take on the value of 1 or 2 (sinking-fund and straight-line respectively). In OSeMOSYS_fast, the parameter DepreciationMethod is still defined in the model file, yet, users are locked to only using sinking-fund depreciation method (which is a little confusing!). I would assume using OSeMOSYS_fast should not prohibit me from choosing different depreciation methods?

Description

In the regular OSeMOSYS version, if deprecation method is 1, the SV1 constraint is activated (assuming discount rate is greater than zero). If deprecation method is 2, the SV2 constraint is activated. These work correctly when running the regular osemosys model.

s.t. SV1_SalvageValueAtEndOfPeriod1{r in REGION, t in TECHNOLOGY, y in YEAR: DepreciationMethod[r]=1 && (y + OperationalLife[r,t]-1) > (max{yy in YEAR} max(yy)) && DiscountRate[r]>0}: SalvageValue[r,t,y] = CapitalCost[r,t,y] * NewCapacity[r,t,y] * CapitalRecoveryFactor[r,t] * PvAnnuity[r,t] *(1-(((1+DiscountRate[r])^(max{yy in YEAR} max(yy) - y+1)-1)/((1+DiscountRate[r])^OperationalLife[r,t]-1)));

s.t. SV2_SalvageValueAtEndOfPeriod2{r in REGION, t in TECHNOLOGY, y in YEAR: (DepreciationMethod[r]=1 && (y + OperationalLife[r,t]-1) > (max{yy in YEAR} max(yy)) && DiscountRate[r]=0) || (DepreciationMethod[r]=2 && (y + OperationalLife[r,t]-1) > (max{yy in YEAR} max(yy)))}: SalvageValue[r,t,y] = CapitalCost[r,t,y] * NewCapacity[r,t,y] * CapitalRecoveryFactor[r,t] * PvAnnuity[r,t] *(1-(max{yy in YEAR} max(yy) - y+1)/OperationalLife[r,t]);

In OSeMOSYS_fast. the equivalent salvage value equations are defined as follows. Depreciation method is removed from both of them. Moreover, the only spot depreciation method appears in OSeMOSYS_fast is in commented out storage salvage value equations.

s.t. SV1_SalvageValueAtEndOfPeriod1{r in REGION, t in TECHNOLOGY, y in YEAR: (y + OperationalLife[r,t]-1) > (max{yy in YEAR} max(yy)) && DiscountRate[r]>0}: SalvageValue[r,t,y] = CapitalCost[r,t,y] * NewCapacity[r,t,y] * CapitalRecoveryFactor[r,t] * PvAnnuity[r,t] * (1-(((1+DiscountRate[r])^(max{yy in YEAR} max(yy) - y+1)-1)/((1+DiscountRate[r])^OperationalLife[r,t]-1)));

s.t. SV2_SalvageValueAtEndOfPeriod2{r in REGION, t in TECHNOLOGY, y in YEAR: (y + OperationalLife[r,t]-1) > (max{yy in YEAR} max(yy)) && DiscountRate[r]=0}: SalvageValue[r,t,y] = CapitalCost[r,t,y] * NewCapacity[r,t,y] * CapitalRecoveryFactor[r,t] * PvAnnuity[r,t] * (1-(max{yy in YEAR} max(yy) - y+1)/OperationalLife[r,t]);

Steps to Reproduce

I used Simplicity and OSeMOSYS_fast to generated two *.lp files; one where DepreciationMethod was set to 1 and one where DepreciationMethod was set to 2. I did a diff on these two LP files and they are the exact same!

Anything Else

Tagging @hannahluscombe as she originally spotted this issue!

@trevorb1 trevorb1 added the bug Something isn't working label Jul 2, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant