Skip to content

Depreciation Method does not work in OSeMOSYS_fast  #104

Open
@trevorb1

Description

@trevorb1

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!

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions