OSeMOSYS / OSeMOSYS_GNU_MathProg

The GNU MathProg implementation of OSeMOSYS
Apache License 2.0
9 stars 14 forks source link

Decreased efficiency & retrofitting #103

Open FraGard opened 3 weeks ago

FraGard commented 3 weeks ago

Long ago I wrote some code for accounting for 1) increased fuel use rate at lower average loads and 2) allowing retrofitting of existing tech capacity with an additional capital investment (in practice, the latter works so that part of the existing capacity is removed and replaced by a corresponding amount with enhanced features, with an additional capital investment). I was just now wondering whether these may be useful features to have on a branch, for some applications? I copy-paste the formulations I had written as they are. Here you find all the documentation. They fit the long code. https://www.politesi.polimi.it/handle/10589/117564 The increased fuel use rate was based on Manuel Welsch's additional equations on ramping, and looks roughly like this (can be simplified and adapted to the master): s.t. R30_PartialLoad{r in REGION, t in TECHNOLOGY, l in TIMESLICE, f in FUEL, y in YEAR: ElectricityForTransmissionTag[r,f]=1 }: OnlineCapacity[r,t,l,y]* CapacityToActivityUnit[r,t] - RateOfProductionByTechnology[r,t,l,f,y] = LoadPartialisation[r,t,l,y]; s.t. EBa5_RateOfFuelUse2{r in REGION, t in TECHNOLOGY, l in TIMESLICE, f in FUEL, y in YEAR}: sum{m in MODE_OF_OPERATION: InputActivityRatio[r,t,f,m,y]<>0} RateOfUseByTechnologyByMode[r,t,l,f,m,y] + LoadPartialisation[r,t,l,y]* AdditionalFuelUse[r,t,f,y] = RateOfUseByTechnology[r,t,l,f,y]; The retrofit is way more convoluted (maybe there are simpler ways), but anyway already fits with the master I think, and looks like this: s.t. CAa5_Accumulated_Withdrawn_Capacity{r in REGION, t in TECHNOLOGY, y in YEAR}: AccumulatedWithdrawnCapacity[r,t,y]= sum{yy in YEAR: y-yy>=0} WithdrawnCapacity[r,t,yy]; s.t. CAa6_AccumulatedRetiredCapacity{r in REGION, t in TECHNOLOGY, y in YEAR}: AccumulatedRetiredCapacity[r,t,y] = sum{yy in YEAR: y-yy>=0 && (yy +1)<= (max{yyy in YEAR} max(yyy))}(ResidualCapacity[r,t,yy] - if ResidualCapacity[r,t,yy+1] <=ResidualCapacity[r,t,yy] then ResidualCapacity[r,t,yy+1] else ResidualCapacity[r,t,yy]); s.t. CAa7_Accumulated_Withdrawn_Capacity2{r in REGION, t in TECHNOLOGY, tt in TECHNOLOGY, y in YEAR: (y+1) <= (max{yy in YEAR}max(yy))}: AccumulatedWithdrawnCapacity[r,t,y+1] >= AccumulatedRetiredCapacity[r,t,y]; s.t. CAa8_Withdrawn_Capacity{r in REGION, t in TECHNOLOGY, y in YEAR: (y+1) <= (max{yy in YEAR}max(yy))}: WithdrawnCapacity[r,t,y+1] <= TotalCapacityAnnual[r,t,y]-AccumulatedNewCapacity[r,t,y]; s.t. CAa9_Balance_old_retrofitted{r in REGION, t in TECHNOLOGY, tt in TECHNOLOGY, y in YEAR: RetrofitLink[r,t,tt]=1}: TotalCapacityAnnual[r,t,y] + TotalCapacityAnnual[r,tt,y] - AccumulatedNewCapacity[r,t,y] - AccumulatedNewCapacity[r,tt,y] = ResidualCapacity[r,t,y]+ResidualCapacity[r,tt,y]; s.t. CAa10_AccumulatedRetrofittedCapacity{r in REGION, t in TECHNOLOGY, tt in TECHNOLOGY, y in YEAR}: AccumulatedRetrofittedCapacity[r,t,y] = sum{yy in YEAR: y-yy>=0 && (y-(min{yyy in YEAR}min(yyy)))<=OperationalLife[r,t]}RetrofittedCapacity[r,t,yy]; s.t. CAa11_RetrofittedCapacity{r in REGION, t in TECHNOLOGY, tt in TECHNOLOGY, y in YEAR}: (WithdrawnCapacity[r,t,y]-RetrofittedCapacity[r,tt,y])*RetrofitLink[r,t,tt]>=0;