diff --git a/INDONESIA_2019_11/BAU.txt b/archive/BAU.txt similarity index 100% rename from INDONESIA_2019_11/BAU.txt rename to archive/BAU.txt diff --git a/INDONESIA_2019_11/Current_policies.txt b/archive/Current_policies.txt similarity index 100% rename from INDONESIA_2019_11/Current_policies.txt rename to archive/Current_policies.txt diff --git a/INDONESIA_2019_11/SDG7.1.2.txt b/archive/SDG7.1.2.txt similarity index 100% rename from INDONESIA_2019_11/SDG7.1.2.txt rename to archive/SDG7.1.2.txt diff --git a/INDONESIA_2019_11/SDG7.1.txt b/archive/SDG7.1.txt similarity index 100% rename from INDONESIA_2019_11/SDG7.1.txt rename to archive/SDG7.1.txt diff --git a/INDONESIA_2019_11/SDG7.txt b/archive/SDG7.txt similarity index 100% rename from INDONESIA_2019_11/SDG7.txt rename to archive/SDG7.txt diff --git a/model/README.md b/model/README.md new file mode 100644 index 0000000..e6de6cc --- /dev/null +++ b/model/README.md @@ -0,0 +1,35 @@ +INSTALLATION PREREQUISITES + +a) Windows 10 OS strongly recommended, however Windows 7 SP1 and 8/8.1 are also supported; +b) Full administrative rights are needed for the computer; +c) 64 bit Operating System +d) Updated version of Windows necessary. In case of Windows 7 or 8, update KBB2999226 required; +e) RAM: 4 GB or above; +f) 1 GB free space on the drive or more. + +For further information and installation problems, refer to the OSeMOSYS forum: groups.google.com/forum/#!forum/osemosys + +INSTALLATION OF MOMANI STANDALONE + +1. Download the latest version of MoManI from: http://ww.osemosys.org/get-started.html. E.g. if a version 2.9 and a version 2.10 are present, 2.10 is the latest. This step will download a file called 'momani.zip' +2. Unzip the folder to a folder where you have access without restrictions (e.g. C:\temp or MyDocuments); +3. Right click on the file 'deploy.cmd' (based on system settings, it might also appear as 'deploy' only, without .cmd) and select RUN AS ADMINISTRATOR +4. If a warning pops up asking if you want to allow this app to make changes to your device, click YES; +5. A console window will appear and stay on for a while. This means MoManI is being installed; +6. At some point a question "Do you want to import OSeMOSYS data to your database? Existing data may be overwritten. Press y/n" will appear in the console. Press Y and hit Enter; +7. An additional question "Do you want to remove all current MoManI data? Press y/n" will appear. Press Y and hit Enter if it is the first time you install MoManI, press N otherwise, and hit Enter; +8. Please wait until the installation completes. The window will close automatically. DO NOT close it manually. +9. After the window disappears, open your browser and navigate to http://localhost:8080. +10. The first time you are launching the system it will take a few moments to initialize and will not load immediately. + +For further information and installation problems, refer to the OSeMOSYS forum: groups.google.com/forum/#!forum/osemosys + +IMPORTING THE NEXTSTEP MODEL TO YOUR MOMANI INTERFACE + +1. Download the osemosys.zip folder you find in this repository; +1. Navigate to the 'data' folder in your MoManI installation folder; +2. The folder should contain a file called 'osemosys.zip'. Replace this file with the one you downloaded from this repository; +3. Right click on the 'deploy.cmd' file (based on system settings it might also appear as 'deploy' only, without the .cmd) and select RUN AS ADMINISTRATOR; +4. If a warning pops up asking if you want to allow this app to make changes to your device, click YES; +5. Press Y when asked 'Do you want to import OSeMOSYS data to your database? Existing data may be overwritten. Press y/n'; +6. Press N when asked 'Do you want to remove all current MoManI data? Press y/n'; diff --git a/model/model.txt b/model/model.txt deleted file mode 100644 index b0ae2fa..0000000 --- a/model/model.txt +++ /dev/null @@ -1,332 +0,0 @@ -############### -# Sets # -############### -# -set DAILYTIMEBRACKET; -set DAYTYPE; -set EMISSION; -set FUEL; -set MODE_OF_OPERATION; -set REGION; -set SEASON; -set STORAGE; -set TECHNOLOGY; -set TIMESLICE; -set YEAR; -# -##################### -# Parameters # -##################### -# -param AccumulatedAnnualDemand{r in REGION, f in FUEL, y in YEAR}; -param AnnualEmissionLimit{r in REGION, e in EMISSION, y in YEAR}; -param AnnualExogenousEmission{r in REGION, e in EMISSION, y in YEAR}; -param AvailabilityFactor{r in REGION, t in TECHNOLOGY, y in YEAR}; -param CapacityFactor{r in REGION, t in TECHNOLOGY, l in TIMESLICE, y in YEAR}; -param CapacityOfOneTechnologyUnit{r in REGION, t in TECHNOLOGY, y in YEAR}; -param CapacityToActivityUnit{r in REGION, t in TECHNOLOGY}; -param CapitalCost{r in REGION, t in TECHNOLOGY, y in YEAR}; -param CapitalCostStorage{r in REGION, s in STORAGE, y in YEAR}; -param Conversionld{l in TIMESLICE, ld in DAYTYPE}; -param Conversionlh{l in TIMESLICE, lh in DAILYTIMEBRACKET}; -param Conversionls{l in TIMESLICE, ls in SEASON}; -param DaySplit{lh in DAILYTIMEBRACKET, y in YEAR}; -param DaysInDayType{ls in SEASON, ld in DAYTYPE, y in YEAR}; -param DepreciationMethod{r in REGION}; -param DiscountRate{r in REGION}; -param EmissionActivityRatio{r in REGION, t in TECHNOLOGY, e in EMISSION, m in MODE_OF_OPERATION, y in YEAR}; -param EmissionsPenalty{r in REGION, e in EMISSION, y in YEAR}; -param FixedCost{r in REGION, t in TECHNOLOGY, y in YEAR}; -param InputActivityRatio{r in REGION, t in TECHNOLOGY, f in FUEL, m in MODE_OF_OPERATION, y in YEAR}; -param MinStorageCharge{r in REGION, s in STORAGE, y in YEAR}; -param ModelPeriodEmissionLimit{r in REGION, e in EMISSION}; -param ModelPeriodExogenousEmission{r in REGION, e in EMISSION}; -param OperationalLife{r in REGION, t in TECHNOLOGY}; -param OperationalLifeStorage{r in REGION, s in STORAGE}; -param OutputActivityRatio{r in REGION, t in TECHNOLOGY, f in FUEL, m in MODE_OF_OPERATION, y in YEAR}; -param REMinProductionTarget{r in REGION, y in YEAR}; -param RETagFuel{r in REGION, f in FUEL, y in YEAR}; -param RETagTechnology{r in REGION, t in TECHNOLOGY, y in YEAR}; -param ReserveMargin{r in REGION, y in YEAR}; -param ReserveMarginTagFuel{r in REGION, f in FUEL, y in YEAR}; -param ReserveMarginTagTechnology{r in REGION, t in TECHNOLOGY, y in YEAR}; -param ResidualCapacity{r in REGION, t in TECHNOLOGY, y in YEAR}; -param ResidualStorageCapacity{r in REGION, s in STORAGE, y in YEAR}; -param SpecifiedAnnualDemand{r in REGION, f in FUEL, y in YEAR}; -param SpecifiedDemandProfile{r in REGION, f in FUEL, l in TIMESLICE, y in YEAR}; -param StorageLevelStart{r in REGION, s in STORAGE}; -param StorageMaxChargeRate{r in REGION, s in STORAGE}; -param StorageMaxDischargeRate{r in REGION, s in STORAGE}; -param TechnologyFromStorage{r in REGION, t in TECHNOLOGY, s in STORAGE, m in MODE_OF_OPERATION}; -param TechnologyToStorage{r in REGION, t in TECHNOLOGY, s in STORAGE, m in MODE_OF_OPERATION}; -param TotalAnnualMaxCapacity{r in REGION, t in TECHNOLOGY, y in YEAR}; -param TotalAnnualMaxCapacityInvestment{r in REGION, t in TECHNOLOGY, y in YEAR}; -param TotalAnnualMinCapacity{r in REGION, t in TECHNOLOGY, y in YEAR}; -param TotalAnnualMinCapacityInvestment{r in REGION, t in TECHNOLOGY, y in YEAR}; -param TotalTechnologyAnnualActivityLowerLimit{r in REGION, t in TECHNOLOGY, y in YEAR}; -param TotalTechnologyAnnualActivityUpperLimit{r in REGION, t in TECHNOLOGY, y in YEAR}; -param TotalTechnologyModelPeriodActivityLowerLimit{r in REGION, t in TECHNOLOGY}; -param TotalTechnologyModelPeriodActivityUpperLimit{r in REGION, t in TECHNOLOGY}; -param TradeRoute{r in REGION, rr in REGION, f in FUEL, y in YEAR}; -param VariableCost{r in REGION, t in TECHNOLOGY, m in MODE_OF_OPERATION, y in YEAR}; -param YearSplit{l in TIMESLICE, y in YEAR}; -# -########################## -# Model Variables # -########################## -# -var AccumulatedNewCapacity{r in REGION, t in TECHNOLOGY, y in YEAR} >= 0; -var AccumulatedNewStorageCapacity{r in REGION, s in STORAGE, y in YEAR} >= 0; -var AnnualEmissions{r in REGION, e in EMISSION, y in YEAR} >= 0; -var AnnualFixedOperatingCost{r in REGION, t in TECHNOLOGY, y in YEAR} >= 0; -var AnnualTechnologyEmission{r in REGION, t in TECHNOLOGY, e in EMISSION, y in YEAR} >= 0; -var AnnualTechnologyEmissionByMode{r in REGION, t in TECHNOLOGY, e in EMISSION, m in MODE_OF_OPERATION, y in YEAR} >= 0; -var AnnualTechnologyEmissionPenaltyByEmission{r in REGION, t in TECHNOLOGY, e in EMISSION, y in YEAR} >= 0; -var AnnualTechnologyEmissionsPenalty{r in REGION, t in TECHNOLOGY, y in YEAR} >= 0; -var AnnualVariableOperatingCost{r in REGION, t in TECHNOLOGY, y in YEAR}; -var CapitalInvestment{r in REGION, t in TECHNOLOGY, y in YEAR} >= 0; -var CapitalInvestmentStorage{r in REGION, s in STORAGE, y in YEAR} >= 0; -var Demand{r in REGION, l in TIMESLICE, f in FUEL, y in YEAR} >= 0; -var DemandNeedingReserveMargin{r in REGION, l in TIMESLICE, y in YEAR} >= 0; -var DiscountedCapitalInvestment{r in REGION, t in TECHNOLOGY, y in YEAR} >= 0; -var DiscountedCapitalInvestmentStorage{r in REGION, s in STORAGE, y in YEAR} >= 0; -var DiscountedOperatingCost{r in REGION, t in TECHNOLOGY, y in YEAR} >= 0; -var DiscountedSalvageValue{r in REGION, t in TECHNOLOGY, y in YEAR} >= 0; -var DiscountedSalvageValueStorage{r in REGION, s in STORAGE, y in YEAR} >= 0; -var DiscountedTechnologyEmissionsPenalty{r in REGION, t in TECHNOLOGY, y in YEAR} >= 0; -var ModelPeriodCostByRegion{r in REGION} >= 0; -var ModelPeriodEmissions{r in REGION, e in EMISSION} >= 0; -var NetChargeWithinDay{r in REGION, s in STORAGE, ls in SEASON, ld in DAYTYPE, lh in DAILYTIMEBRACKET, y in YEAR}; -var NetChargeWithinYear{r in REGION, s in STORAGE, ls in SEASON, ld in DAYTYPE, lh in DAILYTIMEBRACKET, y in YEAR}; -var NewCapacity{r in REGION, t in TECHNOLOGY, y in YEAR} >= 0; -var NewStorageCapacity{r in REGION, s in STORAGE, y in YEAR} >= 0; -var NumberOfNewTechnologyUnits{r in REGION, t in TECHNOLOGY, y in YEAR} >= 0, integer; -var OperatingCost{r in REGION, t in TECHNOLOGY, y in YEAR} >= 0; -var Production{r in REGION, l in TIMESLICE, f in FUEL, y in YEAR} >= 0; -var ProductionAnnual{r in REGION, f in FUEL, y in YEAR} >= 0; -var ProductionByTechnology{r in REGION, l in TIMESLICE, t in TECHNOLOGY, f in FUEL, y in YEAR} >= 0; -var ProductionByTechnologyAnnual{r in REGION, t in TECHNOLOGY, f in FUEL, y in YEAR} >= 0; -var RETotalProductionOfTargetFuelAnnual{r in REGION, y in YEAR}; -var RateOfActivity{r in REGION, l in TIMESLICE, t in TECHNOLOGY, m in MODE_OF_OPERATION, y in YEAR} >= 0; -var RateOfDemand{r in REGION, l in TIMESLICE, f in FUEL, y in YEAR} >= 0; -var RateOfProduction{r in REGION, l in TIMESLICE, f in FUEL, y in YEAR} >= 0; -var RateOfProductionByTechnology{r in REGION, l in TIMESLICE, t in TECHNOLOGY, f in FUEL, y in YEAR} >= 0; -var RateOfProductionByTechnologyByMode{r in REGION, l in TIMESLICE, t in TECHNOLOGY, m in MODE_OF_OPERATION, f in FUEL, y in YEAR} >= 0; -var RateOfStorageCharge{r in REGION, s in STORAGE, ls in SEASON, ld in DAYTYPE, lh in DAILYTIMEBRACKET, y in YEAR}; -var RateOfStorageDischarge{r in REGION, s in STORAGE, ls in SEASON, ld in DAYTYPE, lh in DAILYTIMEBRACKET, y in YEAR}; -var RateOfTotalActivity{r in REGION, t in TECHNOLOGY, l in TIMESLICE, y in YEAR} >= 0; -var RateOfUse{r in REGION, l in TIMESLICE, f in FUEL, y in YEAR} >= 0; -var RateOfUseByTechnology{r in REGION, l in TIMESLICE, t in TECHNOLOGY, f in FUEL, y in YEAR} >= 0; -var RateOfUseByTechnologyByMode{r in REGION, l in TIMESLICE, t in TECHNOLOGY, m in MODE_OF_OPERATION, f in FUEL, y in YEAR} >= 0; -var SalvageValue{r in REGION, t in TECHNOLOGY, y in YEAR} >= 0; -var SalvageValueStorage{r in REGION, s in STORAGE, y in YEAR} >= 0; -var StorageLevelDayTypeFinish{r in REGION, s in STORAGE, ls in SEASON, ld in DAYTYPE, y in YEAR} >= 0; -var StorageLevelDayTypeStart{r in REGION, s in STORAGE, ls in SEASON, ld in DAYTYPE, y in YEAR} >= 0; -var StorageLevelSeasonStart{r in REGION, s in STORAGE, ls in SEASON, y in YEAR} >= 0; -var StorageLevelYearFinish{r in REGION, s in STORAGE, y in YEAR} >= 0; -var StorageLevelYearStart{r in REGION, s in STORAGE, y in YEAR} >= 0; -var StorageLowerLimit{r in REGION, s in STORAGE, y in YEAR} >= 0; -var StorageUpperLimit{r in REGION, s in STORAGE, y in YEAR} >= 0; -var TotalAnnualTechnologyActivityByMode{r in REGION, t in TECHNOLOGY, m in MODE_OF_OPERATION, y in YEAR} >= 0; -var TotalCapacityAnnual{r in REGION, t in TECHNOLOGY, y in YEAR} >= 0; -var TotalCapacityInReserveMargin{r in REGION, y in YEAR} >= 0; -var TotalDiscountedCost{r in REGION, y in YEAR} >= 0; -var TotalDiscountedCostByTechnology{r in REGION, t in TECHNOLOGY, y in YEAR} >= 0; -var TotalDiscountedStorageCost{r in REGION, s in STORAGE, y in YEAR} >= 0; -var TotalREProductionAnnual{r in REGION, y in YEAR}; -var TotalTechnologyAnnualActivity{r in REGION, t in TECHNOLOGY, y in YEAR} >= 0; -var TotalTechnologyModelPeriodActivity{r in REGION, t in TECHNOLOGY}; -var Trade{r in REGION, rr in REGION, l in TIMESLICE, f in FUEL, y in YEAR}; -var TradeAnnual{r in REGION, rr in REGION, f in FUEL, y in YEAR}; -var Use{r in REGION, l in TIMESLICE, f in FUEL, y in YEAR} >= 0; -var UseAnnual{r in REGION, f in FUEL, y in YEAR} >= 0; -var UseByTechnology{r in REGION, l in TIMESLICE, t in TECHNOLOGY, f in FUEL, y in YEAR} >= 0; -var UseByTechnologyAnnual{r in REGION, t in TECHNOLOGY, f in FUEL, y in YEAR} >= 0; -# -###################### -# Objective Function # -###################### -# -minimize OFL_Cost: sum{r in REGION, y in YEAR} TotalDiscountedCost [r, y]; -# -##################### -# Constraints # -##################### -# -# Common_Equations -s.t. Acc1_FuelProductionByTechnology{r in REGION, l in TIMESLICE, t in TECHNOLOGY, f in FUEL, y in YEAR}: RateOfProductionByTechnology [r, l, t, f, y] * YearSplit [l, y] = ProductionByTechnology [r, l, t, f, y]; -s.t. Acc2_FuelUseByTechnology{r in REGION, l in TIMESLICE, t in TECHNOLOGY, f in FUEL, y in YEAR}: RateOfUseByTechnology [r, l, t, f, y] * YearSplit [l, y] = UseByTechnology [r, l, t, f, y]; -s.t. Acc3_AverageAnnualRateOfActivity{r in REGION, t in TECHNOLOGY, m in MODE_OF_OPERATION, y in YEAR}: sum{l in TIMESLICE} RateOfActivity [r, l, t, m, y] * YearSplit [l, y] = TotalAnnualTechnologyActivityByMode [r, t, m, y]; -s.t. CAa1_TotalNewCapacity{r in REGION, t in TECHNOLOGY, y in YEAR}: AccumulatedNewCapacity [r, t, y] = sum{yy in YEAR: y - yy < OperationalLife [r, t] && y - yy >= 0} NewCapacity [r, t, yy]; -s.t. CAa2_TotalAnnualCapacity{r in REGION, t in TECHNOLOGY, y in YEAR}: AccumulatedNewCapacity [r, t, y] + ResidualCapacity [r, t, y] = TotalCapacityAnnual [r, t, y]; -s.t. CAa5_TotalNewCapacity{r in REGION, t in TECHNOLOGY, y in YEAR: CapacityOfOneTechnologyUnit [r, t, y] <> 0}: CapacityOfOneTechnologyUnit [r, t, y] * NumberOfNewTechnologyUnits [r, t, y] = NewCapacity [r, t, y]; -s.t. CC1_UndiscountedCapitalInvestment{r in REGION, t in TECHNOLOGY, y in YEAR}: CapitalCost [r, t, y] * NewCapacity [r, t, y] = CapitalInvestment [r, t, y]; -s.t. E2_AnnualEmissionProduction{r in REGION, t in TECHNOLOGY, e in EMISSION, y in YEAR}: sum{m in MODE_OF_OPERATION} AnnualTechnologyEmissionByMode [r, t, e, m, y] = AnnualTechnologyEmission [r, t, e, y]; -s.t. EBa10_EnergyBalanceEachTS4{r in REGION, rr in REGION, l in TIMESLICE, f in FUEL, y in YEAR}: Trade [r, rr, l, f, y] = -1 * Trade [r, rr, l, f, y]; -s.t. EBa1_RateOfFuelProduction1{r in REGION, l in TIMESLICE, t in TECHNOLOGY, m in MODE_OF_OPERATION, y in YEAR, f in FUEL: OutputActivityRatio [r, t, f, m, y] <> 0}: RateOfActivity [r, l, t, m, y] * OutputActivityRatio [r, t, f, m, y] = RateOfProductionByTechnologyByMode [r, l, t, m, f, y]; -s.t. EBa2_RateOfFuelProduction2{r in REGION, t in TECHNOLOGY, f in FUEL, y in YEAR, l in TIMESLICE}: sum{m in MODE_OF_OPERATION: OutputActivityRatio [r, t, f, m, y] <> 0} RateOfProductionByTechnologyByMode [r, l, t, m, f, y] = RateOfProductionByTechnology [r, l, t, f, y]; -s.t. EBa4_RateOfFuelUse1{r in REGION, l in TIMESLICE, t in TECHNOLOGY, m in MODE_OF_OPERATION, y in YEAR, f in FUEL: InputActivityRatio [r, t, f, m, y] <> 0}: RateOfActivity [r, l, t, m, y] * InputActivityRatio [r, t, f, m, y] = RateOfUseByTechnologyByMode [r, l, t, m, f, y]; -s.t. EBa5_RateOfFuelUse2{r in REGION, t in TECHNOLOGY, f in FUEL, y in YEAR, l in TIMESLICE}: sum{m in MODE_OF_OPERATION: InputActivityRatio [r, t, f, m, y] <> 0} RateOfUseByTechnologyByMode [r, l, t, m, f, y] = RateOfUseByTechnology [r, l, t, f, y]; -s.t. NCC1_TotalAnnualMaxNewCapacityConstraint{r in REGION, t in TECHNOLOGY, y in YEAR}: NewCapacity [r, t, y] <= TotalAnnualMaxCapacityInvestment [r, t, y]; -s.t. NCC2_TotalAnnualMinNewCapacityConstraint{r in REGION, t in TECHNOLOGY, y in YEAR: TotalAnnualMinCapacityInvestment [r, t, y] > 0}: NewCapacity [r, t, y] >= TotalAnnualMinCapacityInvestment [r, t, y]; -s.t. OC1_OperatingCostsVariable{r in REGION, t in TECHNOLOGY, y in YEAR}: sum{m in MODE_OF_OPERATION} TotalAnnualTechnologyActivityByMode [r, t, m, y] * VariableCost [r, t, m, y] = AnnualVariableOperatingCost [r, t, y]; -s.t. OC2_OperatingCostsFixedAnnual{r in REGION, t in TECHNOLOGY, y in YEAR}: TotalCapacityAnnual [r, t, y] * FixedCost [r, t, y] = AnnualFixedOperatingCost [r, t, y]; -s.t. SI6_SalvageValueStorageAtEndOfPeriod1{r in REGION, s in STORAGE, y in YEAR: (y + OperationalLifeStorage [r, s] - 1) <= (max{yy in YEAR} max(yy))}: 0 = SalvageValueStorage [r, s, y]; -s.t. SV3_SalvageValueAtEndOfPeriod3{r in REGION, t in TECHNOLOGY, y in YEAR: (y + OperationalLife [r, t] - 1) <= (max{yy in YEAR} max(yy))}: SalvageValue [r, t, y] = 0; -s.t. SV4_SalvageValueDiscountedToStartYear{r in REGION, t in TECHNOLOGY, y in YEAR}: DiscountedSalvageValue [r, t, y] = SalvageValue [r, t, y] / ((1 + DiscountRate [r]) ^ (1 + max{yy in YEAR} max(yy) - min{yy in YEAR} min(yy))); -s.t. TAC1_TotalModelHorizonTechnologyActivity{r in REGION, t in TECHNOLOGY}: sum{y in YEAR} TotalTechnologyAnnualActivity [r, t, y] = TotalTechnologyModelPeriodActivity [r, t]; -# -# Long_Code_Equations -s.t. AAC1_TotalAnnualTechnologyActivity{r in REGION, t in TECHNOLOGY, y in YEAR}: sum{l in TIMESLICE} RateOfTotalActivity [r, t, l, y] * YearSplit [l, y] = TotalTechnologyAnnualActivity [r, t, y]; -s.t. AAC2_TotalAnnualTechnologyActivityUpperLimit{r in REGION, t in TECHNOLOGY, y in YEAR}: TotalTechnologyAnnualActivity [r, t, y] <= TotalTechnologyAnnualActivityUpperLimit [r, t, y]; -s.t. AAC3_TotalAnnualTechnologyActivityLowerLimit{r in REGION, t in TECHNOLOGY, y in YEAR: TotalTechnologyAnnualActivityLowerLimit [r, t, y] > 0}: TotalTechnologyAnnualActivity [r, t, y] >= TotalTechnologyAnnualActivityLowerLimit [r, t, y]; -s.t. Acc4_ModelPeriodCostByRegion{r in REGION}: sum{y in YEAR} TotalDiscountedCost [r, y] = ModelPeriodCostByRegion [r]; -s.t. CAa3_TotalActivityOfEachTechnology{r in REGION, l in TIMESLICE, t in TECHNOLOGY, y in YEAR}: sum{m in MODE_OF_OPERATION} RateOfActivity [r, l, t, m, y] = RateOfTotalActivity [r, t, l, y]; -s.t. CAa4_Constraint_Capacity{r in REGION, t in TECHNOLOGY, l in TIMESLICE, y in YEAR}: RateOfTotalActivity [r, t, l, y] <= TotalCapacityAnnual [r, t, y] * CapacityFactor [r, t, l, y] * CapacityToActivityUnit [r, t]; -s.t. CAb1_PlannedMaintenance{r in REGION, t in TECHNOLOGY, y in YEAR}: sum{l in TIMESLICE} RateOfTotalActivity [r, t, l, y] * YearSplit [l, y] <= sum{l in TIMESLICE} (TotalCapacityAnnual [r, t, y] * CapacityFactor [r, t, l, y] * YearSplit [l, y]) * AvailabilityFactor [r, t, y] * CapacityToActivityUnit [r, t]; -s.t. CC2_DiscountingCapitalInvestment{r in REGION, t in TECHNOLOGY, y in YEAR}: CapitalInvestment [r, t, y] / ((1 + DiscountRate [r]) ^ (y - min{yy in YEAR} min(yy))) = DiscountedCapitalInvestment [r, t, y]; -s.t. E1_AnnualEmissionProductionByMode{r in REGION, t in TECHNOLOGY, e in EMISSION, m in MODE_OF_OPERATION, y in YEAR}: EmissionActivityRatio [r, t, e, m, y] * TotalAnnualTechnologyActivityByMode [r, t, m, y] = AnnualTechnologyEmissionByMode [r, t, e, m, y]; -s.t. E3_EmissionsPenaltyByTechAndEmission{r in REGION, t in TECHNOLOGY, e in EMISSION, y in YEAR}: AnnualTechnologyEmission [r, t, e, y] * EmissionsPenalty [r, e, y] = AnnualTechnologyEmissionPenaltyByEmission [r, t, e, y]; -s.t. E4_EmissionsPenaltyByTechnology{r in REGION, t in TECHNOLOGY, y in YEAR}: sum{e in EMISSION} AnnualTechnologyEmissionPenaltyByEmission [r, t, e, y] = AnnualTechnologyEmissionsPenalty [r, t, y]; -s.t. E5_DiscountedEmissionsPenaltyByTechnology{r in REGION, t in TECHNOLOGY, y in YEAR}: AnnualTechnologyEmissionsPenalty [r, t, y] / ((1 + DiscountRate [r]) ^ (y - min{yy in YEAR} min(yy) + 0.5)) = DiscountedTechnologyEmissionsPenalty [r, t, y]; -s.t. E6_EmissionsAccounting1{r in REGION, e in EMISSION, y in YEAR}: sum{t in TECHNOLOGY} AnnualTechnologyEmission [r, t, e, y] = AnnualEmissions [r, e, y]; -s.t. E7_EmissionsAccounting2{r in REGION, e in EMISSION}: sum{y in YEAR} AnnualEmissions [r, e, y] = ModelPeriodEmissions [r, e] - ModelPeriodExogenousEmission [r, e]; -s.t. E8_AnnualEmissionsLimit{r in REGION, e in EMISSION, y in YEAR}: AnnualEmissions [r, e, y] + AnnualExogenousEmission [r, e, y] <= AnnualEmissionLimit [r, e, y]; -s.t. E9_ModelPeriodEmissionsLimit{r in REGION, e in EMISSION}: ModelPeriodEmissions [r, e] <= ModelPeriodEmissionLimit [r, e]; -s.t. EBa11_EnergyBalanceEachTS5{r in REGION, l in TIMESLICE, f in FUEL, y in YEAR}: Production [r, l, f, y] >= Demand [r, l, f, y] + Use [r, l, f, y] + sum{rr in REGION} Trade [r, rr, l, f, y] * TradeRoute [r, rr, f, y]; -s.t. EBa3_RateOfFuelProduction3{r in REGION, l in TIMESLICE, f in FUEL, y in YEAR}: sum{t in TECHNOLOGY} RateOfProductionByTechnology [r, l, t, f, y] = RateOfProduction [r, l, f, y]; -s.t. EBa6_RateOfFuelUse3{r in REGION, l in TIMESLICE, f in FUEL, y in YEAR}: sum{t in TECHNOLOGY} RateOfUseByTechnology [r, l, t, f, y] = RateOfUse [r, l, f, y]; -s.t. EBa7_EnergyBalanceEachTS1{r in REGION, l in TIMESLICE, f in FUEL, y in YEAR}: RateOfProduction [r, l, f, y] * YearSplit [l, y] = Production [r, l, f, y]; -s.t. EBa8_EnergyBalanceEachTS2{r in REGION, l in TIMESLICE, f in FUEL, y in YEAR}: RateOfUse [r, l, f, y] * YearSplit [l, y] = Use [r, l, f, y]; -s.t. EBa9_EnergyBalanceEachTS3{r in REGION, l in TIMESLICE, f in FUEL, y in YEAR}: RateOfDemand [r, l, f, y] * YearSplit [l, y] = Demand [r, l, f, y]; -s.t. EBb1_EnergyBalanceEachYear1{r in REGION, f in FUEL, y in YEAR}: sum{l in TIMESLICE} Production [r, l, f, y] = ProductionAnnual [r, f, y]; -s.t. EBb2_EnergyBalanceEachYear2{r in REGION, f in FUEL, y in YEAR}: sum{l in TIMESLICE} Use [r, l, f, y] = UseAnnual [r, f, y]; -s.t. EBb3_EnergyBalanceEachYear3{r in REGION, rr in REGION, f in FUEL, y in YEAR}: sum{l in TIMESLICE} Trade [r, rr, l, f, y] = TradeAnnual [r, rr, f, y]; -s.t. EBb4_EnergyBalanceEachYear4{r in REGION, f in FUEL, y in YEAR}: ProductionAnnual [r, f, y] >= UseAnnual [r, f, y] + sum{rr in REGION} TradeAnnual [r, rr, f, y] * TradeRoute [r, rr, f, y] + AccumulatedAnnualDemand [r, f, y]; -s.t. EQ_SpecifiedDemand{r in REGION, f in FUEL, y in YEAR, l in TIMESLICE}: SpecifiedAnnualDemand [r, f, y] * SpecifiedDemandProfile [r, f, l, y] / YearSplit [l, y] = RateOfDemand [r, l, f, y]; -s.t. OC3_OperatingCostsTotalAnnual{r in REGION, t in TECHNOLOGY, y in YEAR}: AnnualFixedOperatingCost [r, t, y] + AnnualVariableOperatingCost [r, t, y] = OperatingCost [r, t, y]; -s.t. OC4_DiscountedOperatingCostsTotalAnnual{r in REGION, t in TECHNOLOGY, y in YEAR}: OperatingCost [r, t, y] / ((1 + DiscountRate [r]) ^ (y - min{yy in YEAR} min(yy) + 0.5)) = DiscountedOperatingCost [r, t, y]; -s.t. RE1_FuelProductionByTechnologyAnnual{r in REGION, t in TECHNOLOGY, f in FUEL, y in YEAR}: sum{l in TIMESLICE} ProductionByTechnology [r, l, t, f, y] = ProductionByTechnologyAnnual [r, t, f, y]; -s.t. RE2_TechIncluded{r in REGION, y in YEAR}: sum{t in TECHNOLOGY, f in FUEL} ProductionByTechnologyAnnual [r, t, f, y] * RETagTechnology [r, t, y] = TotalREProductionAnnual [r, y]; -s.t. RE3_FuelIncluded{r in REGION, y in YEAR}: sum{l in TIMESLICE, f in FUEL} RateOfProduction [r, l, f, y] * RETagFuel [r, f, y] * YearSplit [l, y] = RETotalProductionOfTargetFuelAnnual [r, y]; -s.t. RE4_EnergyConstraint{r in REGION, y in YEAR}: REMinProductionTarget [r, y] * RETotalProductionOfTargetFuelAnnual [r, y] <= TotalREProductionAnnual [r, y]; -s.t. RE5_FuelUseByTechnologyAnnual{r in REGION, t in TECHNOLOGY, f in FUEL, y in YEAR}: sum{l in TIMESLICE} RateOfUseByTechnology [r, l, t, f, y] * YearSplit [l, y] = UseByTechnologyAnnual [r, t, f, y]; -s.t. RM1_ReserveMargin_TechnologiesIncluded_In_Activity_Units{r in REGION, y in YEAR}: sum{t in TECHNOLOGY} TotalCapacityAnnual [r, t, y] * ReserveMarginTagTechnology [r, t, y] * CapacityToActivityUnit [r, t] = TotalCapacityInReserveMargin [r, y]; -s.t. RM2_ReserveMargin_FuelsIncluded{r in REGION, l in TIMESLICE, y in YEAR}: sum{f in FUEL} RateOfProduction [r, l, f, y] * ReserveMarginTagFuel [r, f, y] = DemandNeedingReserveMargin [r, l, y]; -s.t. RM3_ReserveMargin_Constraint{r in REGION, l in TIMESLICE, y in YEAR}: DemandNeedingReserveMargin [r, l, y] * ReserveMargin [r, y] <= TotalCapacityInReserveMargin [r, y]; -s.t. S11_and_S12_StorageLevelDayTypeStart{ld in DAYTYPE, r in REGION, s in STORAGE, ls in SEASON, y in YEAR}: if ld = min{ldld in DAYTYPE} min(ldld) then StorageLevelSeasonStart [r, s, ls, y] else StorageLevelDayTypeStart [r, s, ls, ld-1, y] + sum{lh in DAILYTIMEBRACKET} NetChargeWithinDay [r, s, ls, ld-1, lh, y] * DaysInDayType [ls, ld-1, y] = StorageLevelDayTypeStart [r, s, ls, ld, y]; -s.t. S13_and_S14_and_S15_StorageLevelDayTypeFinish{ls in SEASON, ld in DAYTYPE, r in REGION, s in STORAGE, y in YEAR}: if ls = max{lsls in SEASON} max(lsls) && ld = max{ldld in DAYTYPE} max(ldld) then StorageLevelYearFinish [r, s, y] else if ld = max{ldld in DAYTYPE} max(ldld) then StorageLevelSeasonStart [r, s, ls+1, y] else StorageLevelDayTypeFinish [r, s, ls, ld+1, y] - sum{lh in DAILYTIMEBRACKET} NetChargeWithinDay [r, s, ls, ld+1, lh, y] * DaysInDayType [ls, ld+1, y] = StorageLevelDayTypeFinish [r, s, ls, ld, y]; -s.t. S1_RateOfStorageCharge{r in REGION, s in STORAGE, y in YEAR, ls in SEASON, ld in DAYTYPE, lh in DAILYTIMEBRACKET}: sum{l in TIMESLICE, t in TECHNOLOGY, m in MODE_OF_OPERATION: TechnologyToStorage [r, t, s, m] > 0} RateOfActivity [r, l, t, m, y] * TechnologyToStorage [r, t, s, m] * Conversionls [l, ls] * Conversionld [l, ld] * Conversionlh [l, lh] = RateOfStorageCharge [r, s, ls, ld, lh, y]; -s.t. S2_RateOfStorageDischarge{r in REGION, s in STORAGE, y in YEAR, ls in SEASON, ld in DAYTYPE, lh in DAILYTIMEBRACKET}: sum{l in TIMESLICE, t in TECHNOLOGY, m in MODE_OF_OPERATION: TechnologyFromStorage [r, t, s, m] > 0} RateOfActivity [r, l, t, m, y] * TechnologyFromStorage [r, t, s, m] * Conversionls [l, ls] * Conversionld [l, ld] * Conversionlh [l, lh] = RateOfStorageDischarge [r, s, ls, ld, lh, y]; -s.t. S3_NetChargeWithinYear{ls in SEASON, ld in DAYTYPE, lh in DAILYTIMEBRACKET, r in REGION, s in STORAGE, y in YEAR}: sum{l in TIMESLICE: Conversionls [l, ls] > 0 && Conversionld [l, ld] > 0 && Conversionlh [l, lh] > 0} (RateOfStorageCharge [r, s, ls, ld, lh, y] - RateOfStorageDischarge [r, s, ls, ld, lh, y]) * YearSplit [l, y] * Conversionls [l, ls] * Conversionld [l, ld] * Conversionlh [l, lh] = NetChargeWithinYear [r, s, ls, ld, lh, y]; -s.t. S4_NetChargeWithinDay{r in REGION, s in STORAGE, ls in SEASON, ld in DAYTYPE, lh in DAILYTIMEBRACKET, y in YEAR}: (RateOfStorageCharge [r, s, ls, ld, lh, y] - RateOfStorageDischarge [r, s, ls, ld, lh, y]) * DaySplit [lh, y] = NetChargeWithinDay [r, s, ls, ld, lh, y]; -s.t. S5_and_S6_StorageLevelYearStart{y in YEAR, r in REGION, s in STORAGE}: if y = min{yy in YEAR} min(yy) then StorageLevelStart [r, s] else StorageLevelYearStart [r, s, y-1] + sum{ls in SEASON, ld in DAYTYPE, lh in DAILYTIMEBRACKET} NetChargeWithinYear [r, s, ls, ld, lh, y-1] = StorageLevelYearStart [r, s, y]; -s.t. S7_and_S8_StorageLevelYearFinish{y in YEAR, r in REGION, s in STORAGE}: if y < max{yy in YEAR} max(yy) then StorageLevelYearStart [r, s, y+1] else StorageLevelYearStart [r, s, y] + sum{ls in SEASON, ld in DAYTYPE, lh in DAILYTIMEBRACKET} NetChargeWithinYear [r, s, ls, ld, lh, y] = StorageLevelYearFinish [r, s, y]; -s.t. S9_and_S10_StorageLevelSeasonStart{ls in SEASON, r in REGION, s in STORAGE, y in YEAR}: if ls = min{lsls in SEASON} min(lsls) then StorageLevelYearStart [r, s, y] else StorageLevelSeasonStart [r, s, ls-1, y] + sum{ld in DAYTYPE, lh in DAILYTIMEBRACKET} NetChargeWithinYear [r, s, ls-1, ld, lh, y] = StorageLevelSeasonStart [r, s, ls, y]; -s.t. SC1_LowerLimit_BeginningOfDailyTimeBracketOfFirstInstanceOfDayTypeInFirstWeekConstraint{r in REGION, s in STORAGE, ls in SEASON, ld in DAYTYPE, y in YEAR, lh in DAILYTIMEBRACKET}: 0 <= (StorageLevelDayTypeStart [r, s, ls, ld, y] + sum{lhlh in DAILYTIMEBRACKET: lh - lhlh > 0} NetChargeWithinDay [r, s, ls, ld, lhlh, y]) - StorageLowerLimit [r, s, y]; -s.t. SC1_UpperLimit_BeginningOfDailyTimeBracketOfFirstInstanceOfDayTypeInFirstWeekConstraint{r in REGION, s in STORAGE, ls in SEASON, ld in DAYTYPE, y in YEAR, lh in DAILYTIMEBRACKET}: (StorageLevelDayTypeStart [r, s, ls, ld, y] + sum{lhlh in DAILYTIMEBRACKET: lh - lhlh > 0} NetChargeWithinDay [r, s, ls, ld, lhlh, y]) - StorageUpperLimit [r, s, y] <= 0; -s.t. SC2_LowerLimit_EndOfDailyTimeBracketOfLastInstanceOfDayTypeInFirstWeekConstraint{ld in DAYTYPE, r in REGION, s in STORAGE, ls in SEASON, y in YEAR, lh in DAILYTIMEBRACKET}: 0 <= if ld > min{ldld in DAYTYPE} min(ldld) then (StorageLevelDayTypeStart [r, s, ls, ld, y] - sum{lhlh in DAILYTIMEBRACKET: lh - lhlh < 0} NetChargeWithinDay [r, s, ls, ld-1, lhlh, y]) - StorageLowerLimit [r, s, y]; -s.t. SC2_UpperLimit_EndOfDailyTimeBracketOfLastInstanceOfDayTypeInFirstWeekConstraint{ld in DAYTYPE, r in REGION, s in STORAGE, ls in SEASON, y in YEAR, lh in DAILYTIMEBRACKET}: if ld > min{ldld in DAYTYPE} min(ldld) then (StorageLevelDayTypeStart [r, s, ls, ld, y] - sum{lhlh in DAILYTIMEBRACKET: lh - lhlh < 0} NetChargeWithinDay [r, s, ls, ld-1, lhlh, y]) - StorageUpperLimit [r, s, y] <= 0; -s.t. SC3_LowerLimit_EndOfDailyTimeBracketOfLastInstanceOfDayTypeInLastWeekConstraint{r in REGION, s in STORAGE, ls in SEASON, ld in DAYTYPE, y in YEAR, lh in DAILYTIMEBRACKET}: 0 <= (StorageLevelDayTypeFinish [r, s, ls, ld, y] - sum{lhlh in DAILYTIMEBRACKET: lh - lhlh < 0} NetChargeWithinDay [r, s, ls, ld, lhlh, y]) - StorageLowerLimit [r, s, y]; -s.t. SC3_UpperLimit_EndOfDailyTimeBracketOfLastInstanceOfDayTypeInLastWeekConstraint{r in REGION, s in STORAGE, ls in SEASON, ld in DAYTYPE, y in YEAR, lh in DAILYTIMEBRACKET}: (StorageLevelDayTypeFinish [r, s, ls, ld, y] - sum{lhlh in DAILYTIMEBRACKET: lh - lhlh < 0} NetChargeWithinDay [r, s, ls, ld, lhlh, y]) - StorageUpperLimit [r, s, y] <= 0; -s.t. SC4_LowerLimit_BeginningOfDailyTimeBracketOfFirstInstanceOfDayTypeInLastWeekConstraint{ld in DAYTYPE, r in REGION, s in STORAGE, ls in SEASON, y in YEAR, lh in DAILYTIMEBRACKET}: 0 <= if ld > min{ldld in DAYTYPE} min(ldld) then (StorageLevelDayTypeFinish [r, s, ls, ld-1, y] + sum{lhlh in DAILYTIMEBRACKET: lh - lhlh > 0} NetChargeWithinDay [r, s, ls, ld, lhlh, y]) - StorageLowerLimit [r, s, y]; -s.t. SC4_UpperLimit_BeginningOfDailyTimeBracketOfFirstInstanceOfDayTypeInLastWeekConstraint{ld in DAYTYPE, r in REGION, s in STORAGE, ls in SEASON, y in YEAR, lh in DAILYTIMEBRACKET}: if ld > min{ldld in DAYTYPE} min(ldld) then (StorageLevelDayTypeFinish [r, s, ls, ld-1, y] + sum{lhlh in DAILYTIMEBRACKET: lh - lhlh > 0} NetChargeWithinDay [r, s, ls, ld, lhlh, y]) - StorageUpperLimit [r, s, y] <= 0; -s.t. SC5_MaxChargeConstraint{r in REGION, s in STORAGE, ls in SEASON, ld in DAYTYPE, lh in DAILYTIMEBRACKET, y in YEAR}: RateOfStorageCharge [r, s, ls, ld, lh, y] <= StorageMaxChargeRate [r, s]; -s.t. SC6_MaxDischargeConstraint{r in REGION, s in STORAGE, ls in SEASON, ld in DAYTYPE, lh in DAILYTIMEBRACKET, y in YEAR}: RateOfStorageDischarge [r, s, ls, ld, lh, y] <= StorageMaxDischargeRate [r, s]; -s.t. SI10_TotalDiscountedCostByStorage{r in REGION, s in STORAGE, y in YEAR}: DiscountedCapitalInvestmentStorage [r, s, y] - DiscountedSalvageValueStorage [r, s, y] = TotalDiscountedStorageCost [r, s, y]; -s.t. SI1_StorageUpperLimit{r in REGION, s in STORAGE, y in YEAR}: AccumulatedNewStorageCapacity [r, s, y] + ResidualStorageCapacity [r, s, y] = StorageUpperLimit [r, s, y]; -s.t. SI2_StorageLowerLimit{r in REGION, s in STORAGE, y in YEAR}: MinStorageCharge [r, s, y] * StorageUpperLimit [r, s, y] = StorageLowerLimit [r, s, y]; -s.t. SI3_TotalNewStorage{y in YEAR, r in REGION, s in STORAGE}: sum{yy in YEAR: y - yy < OperationalLifeStorage [r, s] && y - yy > 0} NewStorageCapacity [r, s, yy] = AccumulatedNewStorageCapacity [r, s, y]; -s.t. SI4_UndiscountedCapitalInvestmentStorage{r in REGION, s in STORAGE, y in YEAR}: CapitalCostStorage [r, s, y] * NewStorageCapacity [r, s, y] = CapitalInvestmentStorage [r, s, y]; -s.t. SI5_DiscountingCapitalInvestmentStorage{r in REGION, s in STORAGE, y in YEAR}: CapitalInvestmentStorage [r, s, y] / ((1 + DiscountRate [r]) ^ (y - min{yy in YEAR} min(yy))) = DiscountedCapitalInvestmentStorage [r, s, y]; -s.t. SI7_SalvageValueStorageAtEndOfPeriod2{r in REGION, s in STORAGE, y in YEAR: (DepreciationMethod [r] = 1 && y + OperationalLifeStorage [r, s] - 1 > max{yy in YEAR} max(yy) && DiscountRate [r] = 0) || (DepreciationMethod [r] = 2 && (y + OperationalLifeStorage [r, s] - 1) > (max{yy in YEAR} max(yy)))}: CapitalInvestmentStorage [r, s, y] * (1 - (max{yy in YEAR} max(yy) - y+1) / OperationalLifeStorage [r, s]) = SalvageValueStorage [r, s, y]; -s.t. SI8_SalvageValueStorageAtEndOfPeriod3{r in REGION, s in STORAGE, y in YEAR: DepreciationMethod [r] = 1 && (y + OperationalLifeStorage [r, s] - 1) > (max{yy in YEAR} max(yy)) && DiscountRate [r] > 0}: CapitalInvestmentStorage [r, s, y] * (1 - ((((1 + DiscountRate [r]) ^ (max{yy in YEAR} max(yy) - y+1)) - 1) / ((1 + DiscountRate [r]) ^ OperationalLifeStorage [r, s] - 1))) = SalvageValueStorage [r, s, y]; -s.t. SI9_SalvageValueStorageDiscountedToStartYear{r in REGION, s in STORAGE, y in YEAR}: SalvageValueStorage [r, s, y] / ((1 + DiscountRate [r]) ^ (max{yy in YEAR} max(yy) - min{yy in YEAR} min(yy) + 1)) = DiscountedSalvageValueStorage [r, s, y]; -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] * (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] * (1 - (max{yy in YEAR} max(yy) - y+1) / OperationalLife [r, t]); -s.t. TAC2_TotalModelHorizonTechnologyActivityUpperLimit{r in REGION, t in TECHNOLOGY: TotalTechnologyModelPeriodActivityUpperLimit [r, t] > 0}: TotalTechnologyModelPeriodActivity [r, t] <= TotalTechnologyModelPeriodActivityUpperLimit [r, t]; -s.t. TAC3_TotalModelHorizenTechnologyActivityLowerLimit{r in REGION, t in TECHNOLOGY: TotalTechnologyModelPeriodActivityLowerLimit [r, t] > 0}: TotalTechnologyModelPeriodActivity [r, t] >= TotalTechnologyModelPeriodActivityLowerLimit [r, t]; -s.t. TCC1_TotalAnnualMaxCapacityConstraint{r in REGION, t in TECHNOLOGY, y in YEAR}: TotalCapacityAnnual [r, t, y] <= TotalAnnualMaxCapacity [r, t, y]; -s.t. TCC2_TotalAnnualMinCapacityConstraint{r in REGION, t in TECHNOLOGY, y in YEAR: TotalAnnualMinCapacity [r, t, y] > 0}: TotalCapacityAnnual [r, t, y] >= TotalAnnualMinCapacity [r, t, y]; -s.t. TDC1_TotalDiscountedCostByTechnology{r in REGION, t in TECHNOLOGY, y in YEAR}: DiscountedOperatingCost [r, t, y] + DiscountedCapitalInvestment [r, t, y] + DiscountedTechnologyEmissionsPenalty [r, t, y] - DiscountedSalvageValue [r, t, y] = TotalDiscountedCostByTechnology [r, t, y]; -s.t. TDC2_TotalDiscountedCost{r in REGION, y in YEAR}: sum{t in TECHNOLOGY} TotalDiscountedCostByTechnology [r, t, y] + sum{s in STORAGE} TotalDiscountedStorageCost [r, s, y] = TotalDiscountedCost [r, y]; -# -##################### -# -solve; -# -##################### -# -################ -# Output # -################ -# -table tout {r in REGION, t in TECHNOLOGY, y in YEAR} OUT "CSV" "res/csv/AccumulatedNewCapacity.csv" : r, t, y, AccumulatedNewCapacity[r, t, y]; -table tout {r in REGION, s in STORAGE, y in YEAR} OUT "CSV" "res/csv/AccumulatedNewStorageCapacity.csv" : r, s, y, AccumulatedNewStorageCapacity[r, s, y]; -table tout {r in REGION, e in EMISSION, y in YEAR} OUT "CSV" "res/csv/AnnualEmissions.csv" : r, e, y, AnnualEmissions[r, e, y]; -table tout {r in REGION, t in TECHNOLOGY, y in YEAR} OUT "CSV" "res/csv/AnnualFixedOperatingCost.csv" : r, t, y, AnnualFixedOperatingCost[r, t, y]; -table tout {r in REGION, t in TECHNOLOGY, e in EMISSION, y in YEAR} OUT "CSV" "res/csv/AnnualTechnologyEmission.csv" : r, t, e, y, AnnualTechnologyEmission[r, t, e, y]; -table tout {r in REGION, t in TECHNOLOGY, e in EMISSION, m in MODE_OF_OPERATION, y in YEAR} OUT "CSV" "res/csv/AnnualTechnologyEmissionByMode.csv" : r, t, e, m, y, AnnualTechnologyEmissionByMode[r, t, e, m, y]; -table tout {r in REGION, t in TECHNOLOGY, e in EMISSION, y in YEAR} OUT "CSV" "res/csv/AnnualTechnologyEmissionPenaltyByEmission.csv" : r, t, e, y, AnnualTechnologyEmissionPenaltyByEmission[r, t, e, y]; -table tout {r in REGION, t in TECHNOLOGY, y in YEAR} OUT "CSV" "res/csv/AnnualTechnologyEmissionsPenalty.csv" : r, t, y, AnnualTechnologyEmissionsPenalty[r, t, y]; -table tout {r in REGION, t in TECHNOLOGY, y in YEAR} OUT "CSV" "res/csv/AnnualVariableOperatingCost.csv" : r, t, y, AnnualVariableOperatingCost[r, t, y]; -table tout {r in REGION, t in TECHNOLOGY, y in YEAR} OUT "CSV" "res/csv/CapitalInvestment.csv" : r, t, y, CapitalInvestment[r, t, y]; -table tout {r in REGION, s in STORAGE, y in YEAR} OUT "CSV" "res/csv/CapitalInvestmentStorage.csv" : r, s, y, CapitalInvestmentStorage[r, s, y]; -table tout {r in REGION, l in TIMESLICE, f in FUEL, y in YEAR} OUT "CSV" "res/csv/Demand.csv" : r, l, f, y, Demand[r, l, f, y]; -table tout {r in REGION, l in TIMESLICE, y in YEAR} OUT "CSV" "res/csv/DemandNeedingReserveMargin.csv" : r, l, y, DemandNeedingReserveMargin[r, l, y]; -table tout {r in REGION, t in TECHNOLOGY, y in YEAR} OUT "CSV" "res/csv/DiscountedCapitalInvestment.csv" : r, t, y, DiscountedCapitalInvestment[r, t, y]; -table tout {r in REGION, s in STORAGE, y in YEAR} OUT "CSV" "res/csv/DiscountedCapitalInvestmentStorage.csv" : r, s, y, DiscountedCapitalInvestmentStorage[r, s, y]; -table tout {r in REGION, t in TECHNOLOGY, y in YEAR} OUT "CSV" "res/csv/DiscountedOperatingCost.csv" : r, t, y, DiscountedOperatingCost[r, t, y]; -table tout {r in REGION, t in TECHNOLOGY, y in YEAR} OUT "CSV" "res/csv/DiscountedSalvageValue.csv" : r, t, y, DiscountedSalvageValue[r, t, y]; -table tout {r in REGION, s in STORAGE, y in YEAR} OUT "CSV" "res/csv/DiscountedSalvageValueStorage.csv" : r, s, y, DiscountedSalvageValueStorage[r, s, y]; -table tout {r in REGION, t in TECHNOLOGY, y in YEAR} OUT "CSV" "res/csv/DiscountedTechnologyEmissionsPenalty.csv" : r, t, y, DiscountedTechnologyEmissionsPenalty[r, t, y]; -table tout {r in REGION} OUT "CSV" "res/csv/ModelPeriodCostByRegion.csv" : r, ModelPeriodCostByRegion[r]; -table tout {r in REGION, e in EMISSION} OUT "CSV" "res/csv/ModelPeriodEmissions.csv" : r, e, ModelPeriodEmissions[r, e]; -table tout {r in REGION, s in STORAGE, ls in SEASON, ld in DAYTYPE, lh in DAILYTIMEBRACKET, y in YEAR} OUT "CSV" "res/csv/NetChargeWithinDay.csv" : r, s, ls, ld, lh, y, NetChargeWithinDay[r, s, ls, ld, lh, y]; -table tout {r in REGION, s in STORAGE, ls in SEASON, ld in DAYTYPE, lh in DAILYTIMEBRACKET, y in YEAR} OUT "CSV" "res/csv/NetChargeWithinYear.csv" : r, s, ls, ld, lh, y, NetChargeWithinYear[r, s, ls, ld, lh, y]; -table tout {r in REGION, t in TECHNOLOGY, y in YEAR} OUT "CSV" "res/csv/NewCapacity.csv" : r, t, y, NewCapacity[r, t, y]; -table tout {r in REGION, s in STORAGE, y in YEAR} OUT "CSV" "res/csv/NewStorageCapacity.csv" : r, s, y, NewStorageCapacity[r, s, y]; -table tout {r in REGION, t in TECHNOLOGY, y in YEAR} OUT "CSV" "res/csv/NumberOfNewTechnologyUnits.csv" : r, t, y, NumberOfNewTechnologyUnits[r, t, y]; -table tout {r in REGION, t in TECHNOLOGY, y in YEAR} OUT "CSV" "res/csv/OperatingCost.csv" : r, t, y, OperatingCost[r, t, y]; -table tout {r in REGION, l in TIMESLICE, f in FUEL, y in YEAR} OUT "CSV" "res/csv/Production.csv" : r, l, f, y, Production[r, l, f, y]; -table tout {r in REGION, f in FUEL, y in YEAR} OUT "CSV" "res/csv/ProductionAnnual.csv" : r, f, y, ProductionAnnual[r, f, y]; -table tout {r in REGION, l in TIMESLICE, t in TECHNOLOGY, f in FUEL, y in YEAR} OUT "CSV" "res/csv/ProductionByTechnology.csv" : r, l, t, f, y, ProductionByTechnology[r, l, t, f, y]; -table tout {r in REGION, t in TECHNOLOGY, f in FUEL, y in YEAR} OUT "CSV" "res/csv/ProductionByTechnologyAnnual.csv" : r, t, f, y, ProductionByTechnologyAnnual[r, t, f, y]; -table tout {r in REGION, y in YEAR} OUT "CSV" "res/csv/RETotalProductionOfTargetFuelAnnual.csv" : r, y, RETotalProductionOfTargetFuelAnnual[r, y]; -table tout {r in REGION, l in TIMESLICE, t in TECHNOLOGY, m in MODE_OF_OPERATION, y in YEAR} OUT "CSV" "res/csv/RateOfActivity.csv" : r, l, t, m, y, RateOfActivity[r, l, t, m, y]; -table tout {r in REGION, l in TIMESLICE, f in FUEL, y in YEAR} OUT "CSV" "res/csv/RateOfDemand.csv" : r, l, f, y, RateOfDemand[r, l, f, y]; -table tout {r in REGION, l in TIMESLICE, f in FUEL, y in YEAR} OUT "CSV" "res/csv/RateOfProduction.csv" : r, l, f, y, RateOfProduction[r, l, f, y]; -table tout {r in REGION, l in TIMESLICE, t in TECHNOLOGY, f in FUEL, y in YEAR} OUT "CSV" "res/csv/RateOfProductionByTechnology.csv" : r, l, t, f, y, RateOfProductionByTechnology[r, l, t, f, y]; -table tout {r in REGION, l in TIMESLICE, t in TECHNOLOGY, m in MODE_OF_OPERATION, f in FUEL, y in YEAR} OUT "CSV" "res/csv/RateOfProductionByTechnologyByMode.csv" : r, l, t, m, f, y, RateOfProductionByTechnologyByMode[r, l, t, m, f, y]; -table tout {r in REGION, s in STORAGE, ls in SEASON, ld in DAYTYPE, lh in DAILYTIMEBRACKET, y in YEAR} OUT "CSV" "res/csv/RateOfStorageCharge.csv" : r, s, ls, ld, lh, y, RateOfStorageCharge[r, s, ls, ld, lh, y]; -table tout {r in REGION, s in STORAGE, ls in SEASON, ld in DAYTYPE, lh in DAILYTIMEBRACKET, y in YEAR} OUT "CSV" "res/csv/RateOfStorageDischarge.csv" : r, s, ls, ld, lh, y, RateOfStorageDischarge[r, s, ls, ld, lh, y]; -table tout {r in REGION, t in TECHNOLOGY, l in TIMESLICE, y in YEAR} OUT "CSV" "res/csv/RateOfTotalActivity.csv" : r, t, l, y, RateOfTotalActivity[r, t, l, y]; -table tout {r in REGION, l in TIMESLICE, f in FUEL, y in YEAR} OUT "CSV" "res/csv/RateOfUse.csv" : r, l, f, y, RateOfUse[r, l, f, y]; -table tout {r in REGION, l in TIMESLICE, t in TECHNOLOGY, f in FUEL, y in YEAR} OUT "CSV" "res/csv/RateOfUseByTechnology.csv" : r, l, t, f, y, RateOfUseByTechnology[r, l, t, f, y]; -table tout {r in REGION, l in TIMESLICE, t in TECHNOLOGY, m in MODE_OF_OPERATION, f in FUEL, y in YEAR} OUT "CSV" "res/csv/RateOfUseByTechnologyByMode.csv" : r, l, t, m, f, y, RateOfUseByTechnologyByMode[r, l, t, m, f, y]; -table tout {r in REGION, t in TECHNOLOGY, y in YEAR} OUT "CSV" "res/csv/SalvageValue.csv" : r, t, y, SalvageValue[r, t, y]; -table tout {r in REGION, s in STORAGE, y in YEAR} OUT "CSV" "res/csv/SalvageValueStorage.csv" : r, s, y, SalvageValueStorage[r, s, y]; -table tout {r in REGION, s in STORAGE, ls in SEASON, ld in DAYTYPE, y in YEAR} OUT "CSV" "res/csv/StorageLevelDayTypeFinish.csv" : r, s, ls, ld, y, StorageLevelDayTypeFinish[r, s, ls, ld, y]; -table tout {r in REGION, s in STORAGE, ls in SEASON, ld in DAYTYPE, y in YEAR} OUT "CSV" "res/csv/StorageLevelDayTypeStart.csv" : r, s, ls, ld, y, StorageLevelDayTypeStart[r, s, ls, ld, y]; -table tout {r in REGION, s in STORAGE, ls in SEASON, y in YEAR} OUT "CSV" "res/csv/StorageLevelSeasonStart.csv" : r, s, ls, y, StorageLevelSeasonStart[r, s, ls, y]; -table tout {r in REGION, s in STORAGE, y in YEAR} OUT "CSV" "res/csv/StorageLevelYearFinish.csv" : r, s, y, StorageLevelYearFinish[r, s, y]; -table tout {r in REGION, s in STORAGE, y in YEAR} OUT "CSV" "res/csv/StorageLevelYearStart.csv" : r, s, y, StorageLevelYearStart[r, s, y]; -table tout {r in REGION, s in STORAGE, y in YEAR} OUT "CSV" "res/csv/StorageLowerLimit.csv" : r, s, y, StorageLowerLimit[r, s, y]; -table tout {r in REGION, s in STORAGE, y in YEAR} OUT "CSV" "res/csv/StorageUpperLimit.csv" : r, s, y, StorageUpperLimit[r, s, y]; -table tout {r in REGION, t in TECHNOLOGY, m in MODE_OF_OPERATION, y in YEAR} OUT "CSV" "res/csv/TotalAnnualTechnologyActivityByMode.csv" : r, t, m, y, TotalAnnualTechnologyActivityByMode[r, t, m, y]; -table tout {r in REGION, t in TECHNOLOGY, y in YEAR} OUT "CSV" "res/csv/TotalCapacityAnnual.csv" : r, t, y, TotalCapacityAnnual[r, t, y]; -table tout {r in REGION, y in YEAR} OUT "CSV" "res/csv/TotalCapacityInReserveMargin.csv" : r, y, TotalCapacityInReserveMargin[r, y]; -table tout {r in REGION, y in YEAR} OUT "CSV" "res/csv/TotalDiscountedCost.csv" : r, y, TotalDiscountedCost[r, y]; -table tout {r in REGION, t in TECHNOLOGY, y in YEAR} OUT "CSV" "res/csv/TotalDiscountedCostByTechnology.csv" : r, t, y, TotalDiscountedCostByTechnology[r, t, y]; -table tout {r in REGION, s in STORAGE, y in YEAR} OUT "CSV" "res/csv/TotalDiscountedStorageCost.csv" : r, s, y, TotalDiscountedStorageCost[r, s, y]; -table tout {r in REGION, y in YEAR} OUT "CSV" "res/csv/TotalREProductionAnnual.csv" : r, y, TotalREProductionAnnual[r, y]; -table tout {r in REGION, t in TECHNOLOGY, y in YEAR} OUT "CSV" "res/csv/TotalTechnologyAnnualActivity.csv" : r, t, y, TotalTechnologyAnnualActivity[r, t, y]; -table tout {r in REGION, t in TECHNOLOGY} OUT "CSV" "res/csv/TotalTechnologyModelPeriodActivity.csv" : r, t, TotalTechnologyModelPeriodActivity[r, t]; -table tout {r in REGION, rr in REGION, l in TIMESLICE, f in FUEL, y in YEAR} OUT "CSV" "res/csv/Trade.csv" : r, rr, l, f, y, Trade[r, rr, l, f, y]; -table tout {r in REGION, rr in REGION, f in FUEL, y in YEAR} OUT "CSV" "res/csv/TradeAnnual.csv" : r, rr, f, y, TradeAnnual[r, rr, f, y]; -table tout {r in REGION, l in TIMESLICE, f in FUEL, y in YEAR} OUT "CSV" "res/csv/Use.csv" : r, l, f, y, Use[r, l, f, y]; -table tout {r in REGION, f in FUEL, y in YEAR} OUT "CSV" "res/csv/UseAnnual.csv" : r, f, y, UseAnnual[r, f, y]; -table tout {r in REGION, l in TIMESLICE, t in TECHNOLOGY, f in FUEL, y in YEAR} OUT "CSV" "res/csv/UseByTechnology.csv" : r, l, t, f, y, UseByTechnology[r, l, t, f, y]; -table tout {r in REGION, t in TECHNOLOGY, f in FUEL, y in YEAR} OUT "CSV" "res/csv/UseByTechnologyAnnual.csv" : r, t, f, y, UseByTechnologyAnnual[r, t, f, y]; -# -end;