From aeaebcddc7370a23a2bced666f361175689f981d Mon Sep 17 00:00:00 2001 From: zech_ma Date: Mon, 27 May 2019 19:09:02 +0200 Subject: [PATCH 1/8] integrating capacity expansion --- dispaset/GAMS/UCM_CAP.gms | 1078 +++++++++++++++++++++++ dispaset/GAMS/UCM_h.gms | 121 ++- dispaset/preprocessing/data_handler.py | 6 + dispaset/preprocessing/preprocessing.py | 94 +- 4 files changed, 1265 insertions(+), 34 deletions(-) create mode 100755 dispaset/GAMS/UCM_CAP.gms mode change 100644 => 100755 dispaset/GAMS/UCM_h.gms mode change 100644 => 100755 dispaset/preprocessing/data_handler.py mode change 100644 => 100755 dispaset/preprocessing/preprocessing.py diff --git a/dispaset/GAMS/UCM_CAP.gms b/dispaset/GAMS/UCM_CAP.gms new file mode 100755 index 00000000..9ca7a4c5 --- /dev/null +++ b/dispaset/GAMS/UCM_CAP.gms @@ -0,0 +1,1078 @@ +$Title UCM model + +$eolcom // +Option threads=4; +Option IterLim=1000000000; +Option ResLim = 10000000000; +*Option optca=0.0; + + +// Reduce .lst file size + +// Turn off the listing of the input file +$offlisting +$offlog + +// Turn off the listing and cross-reference of the symbols used +$offsymxref offsymlist + +option + limrow = 0, // equations listed per block + limcol = 0, // variables listed per block + solprint = off, // solver's solution output printed + sysout = off; // solver's system output printed + + + +*=============================================================================== +*Definition of the dataset-related options +*=============================================================================== + +* Print results to excel files (0 for no, 1 for yes) +$set Verbose 0 + +* Set debug mode. !! This breaks the loop and requires a debug.gdx file !! +* (0 for no, 1 for yes) +$set Debug 0 + +* Print results to excel files (0 for no, 1 for yes) +$set PrintResults 0 + +* Name of the input file (Ideally, stick to the default Input.gdx) +*$set InputFileName Input.gdx +$set InputFileName Inputs.gdx + +* Definition of the equations that will be present in LP or MIP +* (1 for LP 0 for MIP TC) +$setglobal LPFormulation 0 +* Flag to retrieve status or not +* (1 to retrieve 0 to not) +$setglobal RetrieveStatus 0 + + + +*=============================================================================== +*Definition of sets and parameters +*=============================================================================== +SETS +mk Markets +n Nodes +l Lines +u Units +uc(u) Units expanded by CEP +ue(u) Existing units +t Generation technologies +tr(t) Renewable generation technologies +f Fuel types +p Pollutants +s(u) Storage Units (with reservoir) +chp(u) CHP units +h Hours +i(h) Subset of simulated hours for one iteration +z(h) Subset of all simulated hours +; + +Alias(mk,mkmk); +Alias(n,nn); +Alias(l,ll); +Alias(u,uu); +Alias(t,tt); +Alias(f,ff); +Alias(p,pp); +Alias(s,ss); +Alias(h,hh); +Alias(i,ii); + +*Parameters as defined in the input file +* \u indicate that the value is provided for one single unit +PARAMETERS +AvailabilityFactor(u,h) [%] Availability factor +CHPPowerLossFactor(u) [%] Power loss when generating heat +CHPPowerToHeat(u) [%] Nominal power-to-heat factor +CHPMaxHeat(chp) [MW\u] Maximum heat capacity of chp plant +CHPType +CommittedInitial(u) [n.a.] Initial committment status +Config +*CostCurtailment(n,h) [EUR\MW] Curtailment costs +CostFixed(u) [EUR\h] Fixed costs +CostRampUp(u) [EUR\MW\h] Ramp-up costs +CostRampDown(u) [EUR\MW\h] Ramp-down costs +CostShutDown(u) [EUR\u] Shut-down costs +CostStartUp(u) [EUR\u] Start-up costs +CostVariable(u,h) [EUR\MW] Variable costs +CostHeatSlack(chp,h) [EUR\MWh] Cost of supplying heat via other means +CostLoadShedding(n,h) [EUR\MWh] Cost of load shedding +Curtailment(n) [n.a] Curtailment allowed or not {1 0} at node n +Demand(mk,n,h) [MW] Demand +Efficiency(u) [%] Efficiency +EmissionMaximum(n,p) [tP] Emission limit +EmissionRate(u,p) [tP\MWh] P emission rate +FlowMaximum(l,h) [MW] Line limits +FlowMinimum(l,h) [MW] Minimum flow +Fuel(u,f) [n.a.] Fuel type {1 0} +HeatDemand(chp,h) [MWh\u] Heat demand profile for chp units +LineNode(l,n) [n.a.] Incidence matrix {-1 +1} +LoadShedding(n,h) [MW] Load shedding capacity +Location(u,n) [n.a.] Location {1 0} +Markup(u,h) [EUR\MW] Markup +OutageFactor(u,h) [%] Outage Factor (100% = full outage) +PartLoadMin(u) [%] Minimum part load +PowerCapacity(u) [MW\u] Installed capacity +PowerInitial(u) [MW\u] Power output before initial period +PowerMinStable(u) [MW\u] Minimum power output +PriceTransmission(l,h) [EUR\MWh] Transmission price +StorageChargingCapacity(u) [MW\u] Storage capacity +StorageChargingEfficiency(u) [%] Charging efficiency +StorageSelfDischarge(u) [%\day] Self-discharge of the storage units +RampDownMaximum(u) [MW\h\u] Ramp down limit +RampShutDownMaximum(u) [MW\h\u] Shut-down ramp limit +RampStartUpMaximum(u) [MW\h\u] Start-up ramp limit +RampStartUpMaximumH(u,h) [MW\h\u] Start-up ramp limit - Clustered formulation +RampShutDownMaximumH(u,h) [MW\h\u] Shut-down ramp limit - Clustered formulation +RampUpMaximum(u) [MW\h\u] Ramp up limit +Reserve(t) [n.a.] Reserve technology {1 0} +StorageCapacity(u) [MWh\u] Storage capacity +StorageDischargeEfficiency(u) [%] Discharge efficiency +StorageOutflow(u,h) [MWh\u] Storage outflows +StorageInflow(u,h) [MWh\u] Storage inflows (potential energy) +StorageInitial(u) [MWh] Storage level before initial period +StorageProfile(u,h) [MWh] Storage level to be resepected at the end of each horizon +StorageMinimum(u) [MWh\u] Storage minimum +Technology(u,t) [n.a.] Technology type {1 0} +TimeDownMinimum(u) [h] Minimum down time +TimeUpMinimum(u) [h] Minimum up time +$If %RetrieveStatus% == 1 CommittedCalc(u,z) [n.a.] Committment status as for the MILP +Nunits(u) [n.a.] Number of units inside the cluster (upper bound value for integer variables) +K_QuickStart(n) [n.a.] Part of the reserve that can be provided by offline quickstart units +QuickStartPower(u,h) [MW\h\u] Available max capacity in tertiary regulation up from fast-starting power plants - TC formulation +Investment(uc) [EUR]?Investment cost +EconomicLifetime(uc) Economic Lifetime of the power plants +C_inv(uc) Investment cost + +; + +*Parameters as used within the loop +PARAMETERS +CostLoadShedding(n,h) [EUR\MW] Value of lost load +LoadMaximum(u,h) [%] Maximum load given AF and OF +PowerMustRun(u,h) [MW\u] Minimum power output +StorageFinalMin(s) [MWh] Minimum storage level at the end of the optimization horizon +; + +* Scalar variables necessary to the loop: +scalar FirstHour,LastHour,LastKeptHour,day,ndays,failed; +scalar intrate_investment interest rate for investments [%] /0.09/; +FirstHour = 1; + +*=============================================================================== +*Data import +*=============================================================================== + +$gdxin %inputfilename% + +$LOAD mk +$LOAD n +$LOAD l +$LOAD u +$LOAD uc +$LOAD ue +$LOAD t +$LOAD tr +$LOAD f +$LOAD p +$LOAD s +$LOAD chp +$LOAD h +$LOAD z +$LOAD AvailabilityFactor +$LOAD CHPPowerLossFactor +$LOAD CHPPowerToHeat +$LOAD CHPMaxHeat +$LOAD CHPType +$LOAD Config +$LOAD CostFixed +$LOAD CostHeatSlack +$LOAD CostLoadShedding +$LOAD CostShutDown +$LOAD CostStartUp +$LOAD CostVariable +$LOAD Curtailment +$LOAD Demand +$LOAD StorageDischargeEfficiency +$LOAD Efficiency +$LOAD EmissionMaximum +$LOAD EmissionRate +$LOAD FlowMaximum +$LOAD FlowMinimum +$LOAD Fuel +$LOAD HeatDemand +$LOAD LineNode +$LOAD LoadShedding +$LOAD Location +$LOAD Markup +$LOAD Nunits +$LOAD OutageFactor +$LOAD PowerCapacity +$LOAD PowerInitial +$LOAD PartLoadMin +$LOAD PriceTransmission +$LOAD StorageChargingCapacity +$LOAD StorageChargingEfficiency +$LOAD StorageSelfDischarge +$LOAD RampDownMaximum +$LOAD RampShutDownMaximum +$LOAD RampStartUpMaximum +$LOAD RampUpMaximum +$LOAD Reserve +$LOAD StorageCapacity +$LOAD StorageInflow +$LOAD StorageInitial +$LOAD StorageProfile +$LOAD StorageMinimum +$LOAD StorageOutflow +$LOAD Technology +$LOAD TimeDownMinimum +$LOAD TimeUpMinimum +$LOAD CostRampUp +$LOAD CostRampDown +$If %RetrieveStatus% == 1 $LOAD CommittedCalc +$LOAD Investment +$LOAD EconomicLifetime +; + + +$If %Verbose% == 0 $goto skipdisplay + +Display +mk, +n, +l, +u, +uc, +ue, +t, +tr, +f, +p, +s, +chp, +h, +AvailabilityFactor, +CHPPowerLossFactor, +CHPPowerToHeat, +CHPMaxHeat, +CHPType, +Config, +CostFixed, +CostShutDown, +CostStartUp, +CostRampUp, +CostVariable, +Demand, +StorageDischargeEfficiency, +Efficiency, +EmissionMaximum, +EmissionRate, +FlowMaximum, +FlowMinimum, +Fuel, +HeatDemand, +LineNode, +Location, +LoadShedding +Markup, +OutageFactor, +PartLoadMin, +PowerCapacity, +PowerInitial, +PriceTransmission, +StorageChargingCapacity, +StorageChargingEfficiency, +StorageSelfDischarge, +RampDownMaximum, +RampShutDownMaximum, +RampStartUpMaximum, +RampUpMaximum, +Reserve, +StorageCapacity, +StorageInflow, +StorageInitial, +StorageProfile, +StorageMinimum, +StorageOutflow, +Technology, +TimeDownMinimum, +TimeUpMinimum +$If %RetrieveStatus% == 1 , CommittedCalc +; + +$label skipdisplay + +*=============================================================================== +*Definition of variables +*=============================================================================== +VARIABLES +Committed(u,h) [n.a.] Unit committed at hour h {1 0} or integer +StartUp(u,h) [n.a.] Unit start up at hour h {1 0} or integer +ShutDown(u,h) [n.a.] Unit shut down at hour h {1 0} or integer +; + +$If %LPFormulation% == 1 POSITIVE VARIABLES Committed (u,h) ; Committed.UP(u,h) = 1 ; +$If not %LPFormulation% == 1 INTEGER VARIABLES Committed (u,h), StartUp(u,h), ShutDown(u,h) ; Committed.UP(u,h) = Nunits(u) ; StartUp.UP(u,h) = Nunits(u) ; ShutDown.UP(u,h) = Nunits(u) ; + +POSITIVE VARIABLES +CostStartUpH(u,h) [EUR] Cost of starting up +CostShutDownH(u,h) [EUR] cost of shutting down +CostRampUpH(u,h) [EUR] Ramping cost +CostRampDownH(u,h) [EUR] Ramping cost +CurtailedPower(n,h) [MW] Curtailed power at node n +Flow(l,h) [MW] Flow through lines +Power(u,h) [MW] Power output +PowerMaximum(u,h) [MW] Power output +PowerMinimum(u,h) [MW] Power output +ShedLoad(n,h) [MW] Shed load +StorageInput(u,h) [MWh] Charging input for storage units +StorageLevel(u,h) [MWh] Storage level of charge +LL_MaxPower(n,h) [MW] Deficit in terms of maximum power +LL_RampUp(u,h) [MW] Deficit in terms of ramping up for each plant +LL_RampDown(u,h) [MW] Deficit in terms of ramping down +LL_MinPower(n,h) [MW] Power exceeding the demand +LL_2U(n,h) [MW] Deficit in reserve up +LL_3U(n,h) [MW] Deficit in reserve up - non spinning +LL_2D(n,h) [MW] Deficit in reserve down +spillage(s,h) [MWh] spillage from water reservoirs +SystemCost(h) [EUR] Hourly system cost +Reserve_2U(u,h) [MW] Spinning reserve up +Reserve_2D(u,h) [MW] Spinning reserve down +Reserve_3U(u,h) [MW] Non spinning quick start reserve up +Heat(chp,h) [MW] Heat output by chp plant +HeatSlack(chp,h) [MW] Heat satisfied by other sources +WaterSlack(s) [MWh] Unsatisfied water level constraint +Expanded(uc) [] Additional capacity to install (Generation Expansion) +; + +FREE variable +SystemCostD ![EUR] Total system cost for one optimization period +; + +*=============================================================================== +*Assignment of initial values +*=============================================================================== + +*Initial commitment status +CommittedInitial(u)=0; +CommittedInitial(u)$(PowerInitial(u)>0)=1; + +* Definition of the minimum stable load: +PowerMinStable(u) = PartLoadMin(u)*PowerCapacity(u); + +LoadMaximum(u,h)= AvailabilityFactor(u,h)*(1-OutageFactor(u,h)); + +* parameters for clustered formulation (quickstart is defined as the capability to go to minimum power in 15 min) +QuickStartPower(u,h) = 0; +QuickStartPower(u,h)$(RampStartUpMaximum(u)>=PowerMinStable(u)*4) = PowerCapacity(u)*LoadMaximum(u,h); +RampStartUpMaximumH(u,h) = min(PowerCapacity(u)*LoadMaximum(u,h),max(RampStartUpMaximum(u),PowerMinStable(u),QuickStartPower(u,h))); +RampShutDownMaximumH(u,h) = min(PowerCapacity(u)*LoadMaximum(u,h),max(RampShutDownMaximum(u),PowerMinStable(u))); + +PowerMustRun(u,h)=PowerMinStable(u)*LoadMaximum(u,h); +PowerMustRun(u,h)$(sum(tr,Technology(u,tr))>=1 and smin(n,Location(u,n)*(1-Curtailment(n)))=1) = PowerCapacity(u)*LoadMaximum(u,h); + +* Part of the reserve that can be provided by offline quickstart units: +K_QuickStart(n) = Config("QuickStartShare","val"); + + +Expanded.up(uc) = 1; + +* Investment unit: EUR/kW, model unit MW -> 1/1/1000=01 +C_inv(uc) = ((intrate_investment*(1+intrate_investment)**EconomicLifetime(uc)) + /((1+intrate_investment)**EconomicLifetime(uc)-1))*Investment(uc); + +$If %Verbose% == 1 Display RampStartUpMaximum, RampShutDownMaximum, CommittedInitial; + +$offorder + +*=============================================================================== +*Declaration and definition of equations +*=============================================================================== +EQUATIONS +EQ_Objective_function +EQ_CHP_extraction_Pmax +EQ_CHP_extraction +EQ_CHP_backpressure +EQ_CHP_demand_satisfaction +EQ_CHP_max_heat +EQ_Heat_Storage_balance +EQ_Heat_Storage_minimum +EQ_Heat_Storage_level +EQ_Commitment +EQ_MinUpTime +EQ_MinDownTime +EQ_RampUp_TC +EQ_RampDown_TC +EQ_CostStartUp +EQ_CostShutDown +EQ_CostRampUp +EQ_CostRampDown +EQ_Demand_balance_DA +EQ_Demand_balance_2U +EQ_Demand_balance_3U +EQ_Demand_balance_2D +EQ_Power_must_run +EQ_Power_available +EQ_Reserve_2U_capability +EQ_Reserve_2D_capability +EQ_Reserve_3U_capability +EQ_Storage_minimum +EQ_Storage_level +EQ_Storage_input +EQ_Storage_MaxDischarge +EQ_Storage_MaxCharge +EQ_Storage_balance +EQ_Storage_boundaries +EQ_SystemCost +EQ_Emission_limits +EQ_Flow_limits_lower +EQ_Flow_limits_upper +EQ_Force_Commitment +EQ_Force_DeCommitment +EQ_LoadShedding +$If %RetrieveStatus% == 1 EQ_CommittedCalc +EQ_Committed_Cap +EQ_Startup_Cap +EQ_Shutdown_Cap +; + +$If %RetrieveStatus% == 0 $goto skipequation + +EQ_CommittedCalc(u,z).. + Committed(u,z) + =E= + CommittedCalc(u,z) +; + +$label skipequation + +*Objective function + +$ifthen [%LPFormulation% == 1] +EQ_SystemCost(i).. + SystemCost(i) + =E= + sum(u,CostFixed(u)*Committed(u,i)) + +sum(u,CostRampUpH(u,i) + CostRampDownH(u,i)) + +sum(u,CostVariable(u,i) * Power(u,i)) + +sum(l,PriceTransmission(l,i)*Flow(l,i)) + +sum(n,CostLoadShedding(n,i)*ShedLoad(n,i)) + +sum(chp, CostHeatSlack(chp,i) * HeatSlack(chp,i)) + +sum(chp, CostVariable(chp,i) * CHPPowerLossFactor(chp) * Heat(chp,i)) + +Config("ValueOfLostLoad","val")*(sum(n,LL_MaxPower(n,i)+LL_MinPower(n,i))) + +0.8*Config("ValueOfLostLoad","val")*(sum(n,LL_2U(n,i)+LL_2D(n,i)+LL_3U(n,i))) + +0.7*Config("ValueOfLostLoad","val")*sum(u,LL_RampUp(u,i)+LL_RampDown(u,i)) + +Config("CostOfSpillage","val")*sum(s,spillage(s,i)) + +sum(uc, Expanded(uc) * C_inv(uc)*PowerCapacity(uc)* 1/card(h)) + ; +$else + +EQ_SystemCost(i).. + SystemCost(i) + =E= + sum(u,CostFixed(u)*Committed(u,i)) + +sum(u,CostStartUpH(u,i) + CostShutDownH(u,i)) + +sum(u,CostRampUpH(u,i) + CostRampDownH(u,i)) + +sum(u,CostVariable(u,i) * Power(u,i)) + +sum(l,PriceTransmission(l,i)*Flow(l,i)) + +sum(n,CostLoadShedding(n,i)*ShedLoad(n,i)) + +sum(chp, CostHeatSlack(chp,i) * HeatSlack(chp,i)) + +sum(chp, CostVariable(chp,i) * CHPPowerLossFactor(chp) * Heat(chp,i)) + +Config("ValueOfLostLoad","val")*(sum(n,LL_MaxPower(n,i)+LL_MinPower(n,i))) + +0.8*Config("ValueOfLostLoad","val")*(sum(n,LL_2U(n,i)+LL_2D(n,i)+LL_3U(n,i))) + +0.7*Config("ValueOfLostLoad","val")*sum(u,LL_RampUp(u,i)+LL_RampDown(u,i)) + +Config("CostOfSpillage","val")*sum(s,spillage(s,i)) + +sum(uc, Expanded(uc) * C_inv(uc)*PowerCapacity(uc)* 1/card(h)) + ; + +$endIf +; + + + +EQ_Objective_function.. + SystemCostD + =E= + sum(i,SystemCost(i)) + +Config("WaterValue","val")*sum(s,WaterSlack(s)) +; + +* 3 binary commitment status +EQ_Commitment(u,i).. + Committed(u,i)-CommittedInitial(u)$(ord(i) = 1)-Committed(u,i-1)$(ord(i) > 1) + =E= + StartUp(u,i) - ShutDown(u,i) +; + +* minimum up time +EQ_MinUpTime(u,i).. + sum(ii$( (ord(ii) >= ord(i) - TimeUpMinimum(u)) and (ord(ii) <= ord(i)) ), StartUp(u,ii)) + + sum(h$( (ord(h) >= FirstHour + ord(i) - TimeUpMinimum(u) -1) and (ord(h) < FirstHour)),StartUp.L(u,h)) + =L= + Committed(u,i) +; + +* minimum down time +EQ_MinDownTime(u,i).. + sum(ii$( (ord(ii) >= ord(i) - TimeDownMinimum(u)) and (ord(ii) <= ord(i)) ), ShutDown(u,ii)) + + sum(h$( (ord(h) >= FirstHour + ord(i) - TimeDownMinimum(u) -1) and (ord(h) < FirstHour)),ShutDown.L(u,h)) + =L= + Nunits(u)-Committed(u,i) +; + +* ramp up constraints +EQ_RampUp_TC(u,i)$(sum(tr,Technology(u,tr))=0).. + - Power(u,i-1)$(ord(i) > 1) - PowerInitial(u)$(ord(i) = 1) + Power(u,i) + =L= + (Committed(u,i) - StartUp(u,i)) * RampUpMaximum(u) + RampStartUpMaximumH(u,i) * StartUp(u,i) - PowerMustRun(u,i) * ShutDown(u,i) + LL_RampUp(u,i) +; + +* ramp down constraints +EQ_RampDown_TC(u,i)$(sum(tr,Technology(u,tr))=0).. + Power(u,i-1)$(ord(i) > 1) + PowerInitial(u)$(ord(i) = 1) - Power(u,i) + =L= + (Committed(u,i) - StartUp(u,i)) * RampDownMaximum(u) + RampShutDownMaximumH(u,i) * ShutDown(u,i) - PowerMustRun(u,i) * StartUp(u,i) + LL_RampDown(u,i) +; + +* Start up cost +EQ_CostStartUp(u,i)$(CostStartUp(u) <> 0).. + CostStartUpH(u,i) + =E= + CostStartUp(u)*StartUp(u,i) +; + +* Start up cost +EQ_CostShutDown(u,i)$(CostShutDown(u) <> 0).. + CostShutDownH(u,i) + =E= + CostShutDown(u)*ShutDown(u,i) +; + +EQ_CostRampUp(u,i)$(CostRampUp(u) <> 0).. + CostRampUpH(u,i) + =G= + CostRampUp(u)*(Power(u,i)-PowerInitial(u)$(ord(i) = 1)-Power(u,i-1)$(ord(i) > 1)) +; + +EQ_CostRampDown(u,i)$(CostRampDown(u) <> 0).. + CostRampDownH(u,i) + =G= + CostRampDown(u)*(PowerInitial(u)$(ord(i) = 1)+Power(u,i-1)$(ord(i) > 1)-Power(u,i)) +; + +*Hourly demand balance in the day-ahead market for each node +EQ_Demand_balance_DA(n,i).. + sum(u,Power(u,i)*Location(u,n)) + +sum(l,Flow(l,i)*LineNode(l,n)) + =E= + Demand("DA",n,i) + +sum(s,StorageInput(s,i)*Location(s,n)) + -ShedLoad(n,i) + -LL_MaxPower(n,i) + +LL_MinPower(n,i) +; + +*Hourly demand balance in the upwards spinning reserve market for each node +EQ_Demand_balance_2U(n,i).. + sum((u,t),Reserve_2U(u,i)*Technology(u,t)*Reserve(t)*Location(u,n)) + =G= + +Demand("2U",n,i)*(1-K_QuickStart(n)) + -LL_2U(n,i) +; + +*Hourly demand balance in the upwards non-spinning reserve market for each node +EQ_Demand_balance_3U(n,i).. + sum((u,t),(Reserve_2U(u,i) + Reserve_3U(u,i))*Technology(u,t)*Reserve(t)*Location(u,n)) + =G= + +Demand("2U",n,i) + -LL_3U(n,i) +; + +*Hourly demand balance in the downwards reserve market for each node +EQ_Demand_balance_2D(n,i).. + sum((u,t),Reserve_2D(u,i)*Technology(u,t)*Reserve(t)*Location(u,n)) + =G= + Demand("2D",n,i) + -LL_2D(n,i) +; + +EQ_Reserve_2U_capability(u,i).. + Reserve_2U(u,i) + =L= + PowerCapacity(u)*LoadMaximum(u,i)*Committed(u,i) - Power(u,i) +; + +EQ_Reserve_2D_capability(u,i).. + Reserve_2D(u,i) + =L= + (Power(u,i) - PowerMustRun(u,i) * Committed(u,i)) + (StorageChargingCapacity(u)*Nunits(u)-StorageInput(u,i))$(s(u)) +; + +EQ_Reserve_3U_capability(u,i)$(QuickStartPower(u,i) > 0).. + Reserve_3U(u,i) + =L= + (Nunits(u)-Committed(u,i))*QuickStartPower(u,i) +; + +*Minimum power output is above the must-run output level for each unit in all periods +EQ_Power_must_run(u,i).. + PowerMustRun(u,i) * Committed(u,i) - (StorageInput(u,i) * CHPPowerLossFactor(u) )$(chp(u) and (CHPType(u,'Extraction') or CHPType(u,'P2H'))) + =L= + Power(u,i) +; + +*Maximum power output is below the available capacity +EQ_Power_available(u,i).. + Power(u,i) + =L= + PowerCapacity(u) + *LoadMaximum(u,i) + *Committed(u,i) +; + +*Storage level must be above a minimum +EQ_Storage_minimum(s,i).. + StorageMinimum(s)* Nunits(s) + =L= + StorageLevel(s,i) +; + +*Storage level must below storage capacity +EQ_Storage_level(s,i).. + StorageLevel(s,i) + =L= + StorageCapacity(s)*AvailabilityFactor(s,i)*Nunits(s) +; + +* Storage charging is bounded by the maximum capacity +EQ_Storage_input(s,i).. + StorageInput(s,i) + =L= + StorageChargingCapacity(s)*(Nunits(s)-Committed(s,i)) +; +* The system could curtail by pumping and turbining at the same time if Nunits>1. This should be included into the curtailment equation! + +*Discharge is limited by the storage level +EQ_Storage_MaxDischarge(s,i).. + Power(s,i)/(max(StorageDischargeEfficiency(s),0.0001)) + +StorageOutflow(s,i)*Nunits(s) +Spillage(s,i) - StorageInflow(s,i)*Nunits(s) + =L= + StorageLevel(s,i) +; + +*Charging is limited by the remaining storage capacity +EQ_Storage_MaxCharge(s,i).. + StorageInput(s,i) * StorageChargingEfficiency(s) + -StorageOutflow(s,i)*Nunits(s) -spillage(s,i) + StorageInflow(s,i)*Nunits(s) + =L= + StorageCapacity(s)*AvailabilityFactor(s,i)*Nunits(s) - StorageLevel(s,i) +; + +*Storage balance +EQ_Storage_balance(s,i).. + StorageInitial(s)$(ord(i) = 1) + +StorageLevel(s,i-1)$(ord(i) > 1) +* +StorageLevelH(h--1,s) + +StorageInflow(s,i)*Nunits(s) + +StorageInput(s,i)*StorageChargingEfficiency(s) + =E= + StorageLevel(s,i) + +StorageOutflow(s,i)*Nunits(s) + +spillage(s,i) + +Power(s,i)/(max(StorageDischargeEfficiency(s),0.0001)) +; + +* Minimum level at the end of the optimization horizon: +EQ_Storage_boundaries(s,i)$(ord(i) = card(i)).. + StorageFinalMin(s) + =L= + StorageLevel(s,i) + WaterSlack(s) +; + +*Total emissions are capped +EQ_Emission_limits(n,i,p).. + sum(u,Power(u,i)*EmissionRate(u,p)*Location(u,n)) + =L= + EmissionMaximum(n,p) +; + +*Flows are above minimum values +EQ_Flow_limits_lower(l,i).. + FlowMinimum(l,i) + =L= + Flow(l,i) +; + +*Flows are below maximum values +EQ_Flow_limits_upper(l,i).. + Flow(l,i) + =L= + FlowMaximum(l,i) +; + +*Force Unit commitment/decommitment: +* E.g: renewable units with AF>0 must be committed +EQ_Force_Commitment(u,i)$((sum(tr,Technology(u,tr))>=1 and LoadMaximum(u,i)>0)).. + Committed(u,i) + =G= + 1; + +* E.g: renewable units with AF=0 must be decommitted +EQ_Force_DeCommitment(u,i)$(LoadMaximum(u,i)=0).. + Committed(u,i) + =E= + 0; + +*Load shedding +EQ_LoadShedding(n,i).. + ShedLoad(n,i) + =L= + LoadShedding(n,i) +; + +* CHP units: +EQ_CHP_extraction(chp,i)$(CHPType(chp,'Extraction')).. + Power(chp,i) + =G= + StorageInput(chp,i) * CHPPowerToHeat(chp) +; + +EQ_CHP_extraction_Pmax(chp,i)$(CHPType(chp,'Extraction') or CHPType(chp,'P2H')).. + Power(chp,i) + =L= + PowerCapacity(chp)*Nunits(chp) - StorageInput(chp,i) * CHPPowerLossFactor(chp) +; + +EQ_CHP_backpressure(chp,i)$(CHPType(chp,'Back-Pressure')).. + Power(chp,i) + =E= + StorageInput(chp,i) * CHPPowerToHeat(chp) +; + +EQ_CHP_max_heat(chp,i).. + StorageInput(chp,i) + =L= + CHPMaxHeat(chp)*Nunits(chp) +; + +EQ_CHP_demand_satisfaction(chp,i).. + Heat(chp,i) + HeatSlack(chp,i) + =E= + HeatDemand(chp,i) +; + +*Heat Storage balance +EQ_Heat_Storage_balance(chp,i).. + StorageInitial(chp)$(ord(i) = 1) + +StorageLevel(chp,i-1)$(ord(i) > 1) + +StorageInput(chp,i) + =E= + StorageLevel(chp,i) + +Heat(chp,i) + StorageSelfDischarge(chp) * StorageLevel(chp,i)/24 +; +* The self-discharge proportional to the charging level is a bold hypothesis, but it avoids keeping self-discharging if the level reaches zero + +*Storage level must be above a minimum +EQ_Heat_Storage_minimum(chp,i).. + StorageMinimum(chp)*Nunits(chp) + =L= + StorageLevel(chp,i) +; + +*Storage level must below storage capacity +EQ_Heat_Storage_level(chp,i).. + StorageLevel(chp,i) + =L= + StorageCapacity(chp)*Nunits(chp) +; + +* Minimum level at the end of the optimization horizon: +*EQ_Heat_Storage_boundaries(chp,i)$(ord(i) = card(i)).. +* StorageFinalMin(chp) +* =L= +* StorageLevel(chp,i) +*; + + +**** CAPACITY EXPANSION +EQ_Startup_Cap(uc,i).. + StartUp(uc,i) + =L= + Committed(uc,i); + +**** CAPACITY EXPANSION +EQ_Shutdown_Cap(uc,i).. + ShutDown(uc,i) + =L= + Committed(uc, i); + +*EQ_Power_available_Cap(uc,i).. +* Power(uc,i) +* =L= +* Expanded(uc)*PowerCapacity(uc)*LoadMaximum(uc,i); + +EQ_Committed_Cap(uc,i).. + Committed(uc,i) + =L= + Expanded(uc) ; + + + +*=============================================================================== +*Definition of models +*=============================================================================== + + + +MODEL UCM_SIMPLE / +EQ_Objective_function, +EQ_CHP_extraction_Pmax, +EQ_CHP_extraction, +EQ_CHP_backpressure, +EQ_CHP_demand_satisfaction, +EQ_CHP_max_heat, +$If not %LPFormulation% == 1 EQ_CostStartUp, +$If not %LPFormulation% == 1 EQ_CostShutDown, +$If %LPFormulation% == 1 EQ_CostRampUp, +$If %LPFormulation% == 1 EQ_CostRampDown, +EQ_Commitment, +$If not %LPFormulation% == 1 EQ_MinUpTime, +$If not %LPFormulation% == 1 EQ_MinDownTime, +EQ_RampUp_TC, +EQ_RampDown_TC, +EQ_Demand_balance_DA, +EQ_Demand_balance_2U, +EQ_Demand_balance_2D, +EQ_Demand_balance_3U, +$If not %LPFormulation% == 1 EQ_Power_must_run, +EQ_Power_available, +EQ_Heat_Storage_balance, +EQ_Heat_Storage_minimum, +EQ_Heat_Storage_level, +EQ_Reserve_2U_capability, +EQ_Reserve_2D_capability, +EQ_Reserve_3U_capability, +EQ_Storage_minimum, +EQ_Storage_level, +EQ_Storage_input, +EQ_Storage_balance, +EQ_Storage_boundaries, +EQ_Storage_MaxCharge +EQ_Storage_MaxDischarge +EQ_SystemCost +*EQ_Emission_limits, +EQ_Flow_limits_lower, +EQ_Flow_limits_upper, +EQ_Force_Commitment, +EQ_Force_DeCommitment, +EQ_LoadShedding, +$If %RetrieveStatus% == 1 EQ_CommittedCalc, +EQ_Committed_Cap, +EQ_Startup_Cap, +EQ_Shutdown_Cap +/ +; +UCM_SIMPLE.optcr = 0.01; +UCM_SIMPLE.optfile=1; + +*=============================================================================== +*Solving loop +*=============================================================================== + +ndays = floor(card(h)/24); +if (Config("RollingHorizon LookAhead","day") > ndays -1, abort "The look ahead period is longer than the simulation length";); + +* Some parameters used for debugging: +failed=0; +parameter CommittedInitial_dbg(u), PowerInitial_dbg(u), StorageInitial_dbg(s); + +* Fixing the initial guesses: +*PowerH.L(u,i)=PowerInitial(u); +*Committed.L(u,i)=CommittedInitial(u); + +* Defining a parameter that records the solver status: +set tmp "tpm" / "model", "solver" / ; +parameter status(tmp,h); + +$if %Debug% == 1 $goto DebugSection + + +display "OK"; + +scalar starttime; +set days /1,'ndays'/; +display days; +PARAMETER elapsed(days); + +* Capacity expansion for a rolling horizon does not make sense without further methods +day=1; +FirstHour = (day-1)*24+1; +LastHour = min(card(h),FirstHour + (Config("RollingHorizon Length","day")+Config("RollingHorizon LookAhead","day")) * 24 - 1); +LastKeptHour = LastHour - Config("RollingHorizon LookAhead","day") * 24; +i(h) = no; +i(h)$(ord(h)>=firsthour and ord(h)<=lasthour)=yes; +display day,FirstHour,LastHour,LastKeptHour; + +* Defining the minimum level at the end of the horizon, ensuring that it is feasible with the provided inflows: +StorageFinalMin(s) = min(StorageInitial(s) + (sum(i,StorageInflow(s,i)) - sum(i,StorageOutflow(s,i)))*Nunits(s), sum(i$(ord(i)=card(i)),StorageProfile(s,i)*Nunits(s)*StorageCapacity(s)*AvailabilityFactor(s,i))); +* Correcting the minimum level to avoid the infeasibility in case it is too close to the StorageCapacity: +StorageFinalMin(s) = min(StorageFinalMin(s),Nunits(s)*StorageCapacity(s) - Nunits(s)*smax(i,StorageInflow(s,i))); + +$If %Verbose% == 1 Display PowerInitial,CommittedInitial,StorageFinalMin; + +$If %LPFormulation% == 1 SOLVE UCM_SIMPLE USING LP MINIMIZING SystemCostD; +$If not %LPFormulation% == 1 SOLVE UCM_SIMPLE USING MIP MINIMIZING SystemCostD; + +$If %Verbose% == 0 $goto skipdisplay2 +$If %LPFormulation% == 1 Display EQ_Objective_function.M, EQ_CostRampUp.M, EQ_CostRampDown.M, EQ_Demand_balance_DA.M, EQ_Storage_minimum.M, EQ_Storage_level.M, EQ_Storage_input.M, EQ_Storage_balance.M, EQ_Storage_boundaries.M, EQ_Storage_MaxCharge.M, EQ_Storage_MaxDischarge.M, EQ_Flow_limits_lower.M ; +$If not %LPFormulation% == 1 Display EQ_Objective_function.M, EQ_CostStartUp.M, EQ_CostShutDown.M, EQ_Commitment.M, EQ_MinUpTime.M, EQ_MinDownTime.M, EQ_RampUp_TC.M, EQ_RampDown_TC.M, EQ_Demand_balance_DA.M, EQ_Demand_balance_2U.M, EQ_Demand_balance_2D.M, EQ_Demand_balance_3U.M, EQ_Reserve_2U_capability.M, EQ_Reserve_2D_capability.M, EQ_Reserve_3U_capability.M, EQ_Power_must_run.M, EQ_Power_available.M, EQ_Storage_minimum.M, EQ_Storage_level.M, EQ_Storage_input.M, EQ_Storage_balance.M, EQ_Storage_boundaries.M, EQ_Storage_MaxCharge.M, EQ_Storage_MaxDischarge.M, EQ_SystemCost.M, EQ_Flow_limits_lower.M, EQ_Flow_limits_upper.M, EQ_Force_Commitment.M, EQ_Force_DeCommitment.M, EQ_LoadShedding.M ; +$label skipdisplay2 + +status("model",i) = UCM_SIMPLE.Modelstat; +status("solver",i) = UCM_SIMPLE.Solvestat; + +if(UCM_SIMPLE.Modelstat <> 1 and UCM_SIMPLE.Modelstat <> 8 and not failed, CommittedInitial_dbg(u) = CommittedInitial(u); PowerInitial_dbg(u) = PowerInitial(u); StorageInitial_dbg(s) = StorageInitial(s); + EXECUTE_UNLOAD "debug.gdx" day, status, CommittedInitial_dbg, PowerInitial_dbg, StorageInitial_dbg; + failed=1;); + +CommittedInitial(u)=sum(i$(ord(i)=LastKeptHour-FirstHour+1),Committed.L(u,i)); +PowerInitial(u) = sum(i$(ord(i)=LastKeptHour-FirstHour+1),Power.L(u,i)); + +StorageInitial(s) = sum(i$(ord(i)=LastKeptHour-FirstHour+1),StorageLevel.L(s,i)); +StorageInitial(chp) = sum(i$(ord(i)=LastKeptHour-FirstHour+1),StorageLevel.L(chp,i)); + + +*Loop variables to display after solving: +$If %Verbose% == 1 Display LastKeptHour,PowerInitial,CostStartUpH.L,CostShutDownH.L,CostRampUpH.L; + + +CurtailedPower.L(n,z)=sum(u,(Nunits(u)*PowerCapacity(u)*LoadMaximum(u,z)-Power.L(u,z))$(sum(tr,Technology(u,tr))>=1) * Location(u,n)); + +$If %Verbose% == 1 Display Flow.L,Power.L,Committed.L,ShedLoad.L,CurtailedPower.L,StorageLevel.L,StorageInput.L,SystemCost.L,LL_MaxPower.L,LL_MinPower.L,LL_2U.L,LL_2D.L,LL_RampUp.L,LL_RampDown.L; + +*=============================================================================== +*Result export +*=============================================================================== + +PARAMETER +OutputCommitted(u,h) +OutputHeat(chp,h) +OutputFlow(l,h) +OutputPower(u,h) +OutputStorageInput(u,h) +OutputStorageLevel(u,h) +OutputSystemCost(h) +OutputSpillage(s,h) +OutputShedLoad(n,h) +OutputCurtailedPower(n,h) +ShadowPrice(n,h) +LostLoad_MaxPower(n,h) +LostLoad_MinPower(n,h) +LostLoad_2D(n,h) +LostLoad_2U(n,h) +LostLoad_3U(n,h) +LostLoad_RampUp(n,h) +LostLoad_RampDown(n,h) +OutputGenMargin(n,h) +OutputHeat(chp,h) +OutputHeatSlack(chp,h) +; + +OutputCommitted(u,z)=Committed.L(u,z); +OutputFlow(l,z)=Flow.L(l,z); +OutputPower(u,z)=Power.L(u,z); +OutputHeat(chp,z)=Heat.L(chp,z); +OutputHeatSlack(chp,z)=HeatSlack.L(chp,z); +OutputStorageInput(s,z)=StorageInput.L(s,z); +OutputStorageInput(chp,z)=StorageInput.L(chp,z); +OutputStorageLevel(s,z)=StorageLevel.L(s,z); +OutputStorageLevel(chp,z)=StorageLevel.L(chp,z); +OutputSystemCost(z)=SystemCost.L(z); +OutputSpillage(s,z) = Spillage.L(s,z) ; +OutputShedLoad(n,z) = ShedLoad.L(n,z); +OutputCurtailedPower(n,z)=CurtailedPower.L(n,z); +LostLoad_MaxPower(n,z) = LL_MaxPower.L(n,z); +LostLoad_MinPower(n,z) = LL_MinPower.L(n,z); +LostLoad_2D(n,z) = LL_2D.L(n,z); +LostLoad_2U(n,z) = LL_2U.L(n,z); +LostLoad_3U(n,z) = LL_3U.L(n,z); +LostLoad_RampUp(n,z) = sum(u,LL_RampUp.L(u,z)*Location(u,n)); +LostLoad_RampDown(n,z) = sum(u,LL_RampDown.L(u,z)*Location(u,n)); +ShadowPrice(n,z) = EQ_Demand_balance_DA.m(n,z); + +EXECUTE_UNLOAD "Results.gdx"; + +$onorder +* Exit here if the PrintResult option is set to 0: +$if not %PrintResults%==1 $exit + +EXECUTE 'GDXXRW.EXE "%inputfilename%" O="Results.xlsx" Squeeze=N par=Technology rng=Technology!A1 rdim=2 cdim=0' +EXECUTE 'GDXXRW.EXE "%inputfilename%" O="Results.xlsx" Squeeze=N par=PowerCapacity rng=PowerCapacity!A1 rdim=1 cdim=0' +EXECUTE 'GDXXRW.EXE "%inputfilename%" O="Results.xlsx" Squeeze=N par=PowerInitial rng=PowerInitialA1 rdim=1 cdim=0' +EXECUTE 'GDXXRW.EXE "%inputfilename%" O="Results.xlsx" Squeeze=N par=RampDownMaximum rng=RampDownMaximum!A1 rdim=1 cdim=0' +EXECUTE 'GDXXRW.EXE "%inputfilename%" O="Results.xlsx" Squeeze=N par=RampShutDownMaximum rng=RampShutDownMaximum!A1 rdim=1 cdim=0' +EXECUTE 'GDXXRW.EXE "%inputfilename%" O="Results.xlsx" Squeeze=N par=RampStartUpMaximum rng=RampStartUpMaximum!A1 rdim=1 cdim=0' +EXECUTE 'GDXXRW.EXE "%inputfilename%" O="Results.xlsx" Squeeze=N par=RampUpMaximum rng=RampUpMaximum!A1 rdim=1 cdim=0' +EXECUTE 'GDXXRW.EXE "%inputfilename%" O="Results.xlsx" Squeeze=N par=TimeUpMinimum rng=TimeUpMinimum!A1 rdim=1 cdim=0' +EXECUTE 'GDXXRW.EXE "%inputfilename%" O="Results.xlsx" Squeeze=N par=TimeDownMinimum rng=TimeDownMinimum!A1 rdim=1 cdim=0' +EXECUTE 'GDXXRW.EXE "%inputfilename%" O="Results.xlsx" Squeeze=N par=Reserve rng=Reserve!A1 rdim=1 cdim=0' +EXECUTE 'GDXXRW.EXE "%inputfilename%" O="Results.xlsx" Squeeze=N par=StorageCapacity rng=StorageCapacity!A1 rdim=1 cdim=0' +EXECUTE 'GDXXRW.EXE "%inputfilename%" O="Results.xlsx" Squeeze=Y par=StorageInflow rng=StorageInflow!A1 rdim=1 cdim=1' +EXECUTE 'GDXXRW.EXE "%inputfilename%" O="Results.xlsx" Squeeze=N par=StorageCapacity rng=StorageCapacity!A1 rdim=1 cdim=0' +EXECUTE 'GDXXRW.EXE "%inputfilename%" O="Results.xlsx" Squeeze=N par=LoadShedding rng=LoadShedding!A1 rdim=1 cdim=0' +EXECUTE 'GDXXRW.EXE "%inputfilename%" O="Results.xlsx" Squeeze=N par=FlowMaximum rng=FlowMaximum!A1 rdim=1 cdim=1' +EXECUTE 'GDXXRW.EXE "%inputfilename%" O="Results.xlsx" Squeeze=N par=AvailabilityFactor rng=AvailabilityFactor!A1 rdim=1 cdim=1' +EXECUTE 'GDXXRW.EXE "%inputfilename%" O="Results.xlsx" Squeeze=Y par=OutageFactor rng=OutageFactor!A1 rdim=1 cdim=1' +EXECUTE 'GDXXRW.EXE "%inputfilename%" O="Results.xlsx" Squeeze=N par=Demand rng=Demand!A1 rdim=2 cdim=1' +EXECUTE 'GDXXRW.EXE "%inputfilename%" O="Results.xlsx" Squeeze=N par=PartLoadMin rng=PartLoadMin!A1 rdim=1 cdim=0' + +EXECUTE 'GDXXRW.EXE "Results.gdx" O="Results.xlsx" Squeeze=N var=CurtailedPower rng=CurtailedPower!A1 rdim=1 cdim=1' +EXECUTE 'GDXXRW.EXE "Results.gdx" O="Results.xlsx" Squeeze=N var=ShedLoad rng=ShedLoad!A1 rdim=1 cdim=1' +EXECUTE 'GDXXRW.EXE "Results.gdx" O="Results.xlsx" Squeeze=N par=OutputCommitted rng=Committed!A1 rdim=1 cdim=1' +EXECUTE 'GDXXRW.EXE "Results.gdx" O="Results.xlsx" Squeeze=N par=OutputFlow rng=Flow!A1 rdim=1 cdim=1' +EXECUTE 'GDXXRW.EXE "Results.gdx" O="Results.xlsx" Squeeze=N par=OutputPower rng=Power!A5 epsout=0 rdim=1 cdim=1' +EXECUTE 'GDXXRW.EXE "Results.gdx" O="Results.xlsx" Squeeze=N par=OutputStorageInput rng=StorageInput!A1 rdim=1 cdim=1' +EXECUTE 'GDXXRW.EXE "Results.gdx" O="Results.xlsx" Squeeze=N par=OutputStorageLevel rng=StorageLevel!A1 rdim=1 cdim=1' +EXECUTE 'GDXXRW.EXE "Results.gdx" O="Results.xlsx" Squeeze=N par=OutputSystemCost rng=SystemCost!A1 rdim=1 cdim=0' +EXECUTE 'GDXXRW.EXE "Results.gdx" O="Results.xlsx" Squeeze=Y var=LostLoad_MaxPower rng=LostLoad_MaxPower!A1 rdim=1 cdim=1' +EXECUTE 'GDXXRW.EXE "Results.gdx" O="Results.xlsx" Squeeze=Y var=LostLoad_MinPower rng=LostLoad_MinPower!A1 rdim=1 cdim=1' +EXECUTE 'GDXXRW.EXE "Results.gdx" O="Results.xlsx" Squeeze=Y var=LostLoad_2D rng=LostLoad_2D!A1 rdim=1 cdim=1' +EXECUTE 'GDXXRW.EXE "Results.gdx" O="Results.xlsx" Squeeze=Y var=LostLoad_2U rng=LostLoad_2U!A1 rdim=1 cdim=1' +EXECUTE 'GDXXRW.EXE "Results.gdx" O="Results.xlsx" Squeeze=Y var=LostLoad_RampUp rng=LostLoad_RampUp!A1 rdim=1 cdim=1' +EXECUTE 'GDXXRW.EXE "Results.gdx" O="Results.xlsx" Squeeze=Y var=LostLoad_RampDown rng=LostLoad_RampDown!A1 rdim=1 cdim=1' + + + +$exit + +$Label DebugSection + +$gdxin debug.gdx +$LOAD day +$LOAD PowerInitial_dbg +$LOAD CommittedInitial_dbg +$LOAD StorageInitial_dbg +; +PowerInitial(u) = PowerInitial_dbg(u); CommittedInitial(u) = CommittedInitial_dbg(u); StorageInitial(s) = StorageInitial_dbg(s); +FirstHour = (day-1)*24+1; +LastHour = min(card(h),FirstHour + (Config("RollingHorizon Length","day")+Config("RollingHorizon LookAhead","day")) * 24 - 1); +LastKeptHour = LastHour - Config("RollingHorizon LookAhead","day") * 24; +i(h) = no; +i(h)$(ord(h)>=firsthour and ord(h)<=lasthour)=yes; +StorageFinalMin(s) = min(StorageInitial(s) + sum(i,StorageInflow(s,i)) - sum(i,StorageOutflow(s,i)) , sum(i$(ord(i)=card(i)),StorageProfile(s,i)*StorageCapacity(s)*AvailabilityFactor(s,i))); +StorageFinalMin(s) = min(StorageFinalMin(s),StorageCapacity(s) - smax(i,StorageInflow(s,i))); +$If %Verbose% == 1 Display TimeUpLeft_initial,TimeUpLeft_JustStarted,PowerInitial,CommittedInitial,StorageFinalMin; +$If %LPFormulation% == 1 SOLVE UCM_SIMPLE USING LP MINIMIZING SystemCostD; +$If not %LPFormulation% == 1 SOLVE UCM_SIMPLE USING MIP MINIMIZING SystemCostD; +$If %LPFormulation% == 1 Display EQ_Objective_function.M, EQ_CostRampUp.M, EQ_CostRampDown.M, EQ_Demand_balance_DA.M, EQ_Power_available.M, EQ_Ramp_up.M, EQ_Ramp_down.M, EQ_Storage_minimum.M, EQ_Storage_level.M, EQ_Storage_input.M, EQ_Storage_balance.M, EQ_Storage_boundaries.M, EQ_Storage_MaxCharge.M, EQ_Storage_MaxDischarge.M, EQ_Flow_limits_lower.M ; +$If not %LPFormulation% == 1 Display EQ_Objective_function.M, EQ_CostStartUp.M, EQ_CostShutDown.M, EQ_Demand_balance_DA.M, EQ_Power_must_run.M, EQ_Power_available.M, EQ_Ramp_up.M, EQ_Ramp_down.M, EQ_MaxShutDowns.M, EQ_MaxShutDowns_JustStarted.M, EQ_MaxStartUps.M, EQ_MaxStartUps_JustStopped.M, EQ_Storage_minimum.M, EQ_Storage_level.M, EQ_Storage_input.M, EQ_Storage_balance.M, EQ_Storage_boundaries.M, EQ_Storage_MaxCharge.M, EQ_Storage_MaxDischarge.M, EQ_Flow_limits_lower.M ; + +display day,FirstHour,LastHour,LastKeptHour; +Display StorageFinalMin,PowerInitial,CommittedInitial,StorageFinalMin; +Display Flow.L,Power.L,Committed.L,ShedLoad.L,StorageLevel.L,StorageInput.L,SystemCost.L,Spillage.L,StorageLevel.L,StorageInput.L,LL_MaxPower.L,LL_MinPower.L,LL_2U.L,LL_2D.L,LL_RampUp.L,LL_RampDown.L; diff --git a/dispaset/GAMS/UCM_h.gms b/dispaset/GAMS/UCM_h.gms old mode 100644 new mode 100755 index 3eedf327..480b8e13 --- a/dispaset/GAMS/UCM_h.gms +++ b/dispaset/GAMS/UCM_h.gms @@ -1,7 +1,7 @@ $Title UCM model $eolcom // -Option threads=8; +Option threads=4; Option IterLim=1000000000; Option ResLim = 10000000000; *Option optca=0.0; @@ -44,11 +44,16 @@ $set InputFileName Inputs.gdx * Definition of the equations that will be present in LP or MIP * (1 for LP 0 for MIP TC) -$setglobal LPFormulation 0 +$setglobal LPFormulation 1 * Flag to retrieve status or not * (1 to retrieve 0 to not) $setglobal RetrieveStatus 0 +* Definition of the capacity expansion decision +* (1 for yes 0 for no) +$setglobal CEPFormulation 0 + + *=============================================================================== *Definition of sets and parameters *=============================================================================== @@ -57,6 +62,8 @@ mk Markets n Nodes l Lines u Units +uc(u) Units expanded by CEP +ue(u) Existing units t Generation technologies tr(t) Renewable generation technologies f Fuel types @@ -141,6 +148,10 @@ $If %RetrieveStatus% == 1 CommittedCalc(u,z) [n.a.] Committment Nunits(u) [n.a.] Number of units inside the cluster (upper bound value for integer variables) K_QuickStart(n) [n.a.] Part of the reserve that can be provided by offline quickstart units QuickStartPower(u,h) [MW\h\u] Available max capacity in tertiary regulation up from fast-starting power plants - TC formulation +Investment(uc) [EUR]?Investment cost +EconomicLifetime(uc) Economic Lifetime of the power plants +C_inv(uc) Investment cost + ; *Parameters as used within the loop @@ -153,6 +164,7 @@ StorageFinalMin(s) [MWh] Minimum storage level at the end of the * Scalar variables necessary to the loop: scalar FirstHour,LastHour,LastKeptHour,day,ndays,failed; +scalar intrate_investment interest rate for investments [%] /0.09/; FirstHour = 1; *=============================================================================== @@ -165,6 +177,8 @@ $LOAD mk $LOAD n $LOAD l $LOAD u +$LOAD uc +$LOAD ue $LOAD t $LOAD tr $LOAD f @@ -225,6 +239,8 @@ $LOAD TimeUpMinimum $LOAD CostRampUp $LOAD CostRampDown $If %RetrieveStatus% == 1 $LOAD CommittedCalc +$LOAD Investment +$LOAD EconomicLifetime ; @@ -235,6 +251,8 @@ mk, n, l, u, +uc, +ue, t, tr, f, @@ -333,9 +351,10 @@ Reserve_3U(u,h) [MW] Non spinning quick start reserve up Heat(chp,h) [MW] Heat output by chp plant HeatSlack(chp,h) [MW] Heat satisfied by other sources WaterSlack(s) [MWh] Unsatisfied water level constraint +Expanded(uc) [] Additional capacity to install (Generation Expansion) ; -free variable +FREE variable SystemCostD ![EUR] Total system cost for one optimization period ; @@ -364,6 +383,13 @@ PowerMustRun(u,h)$(sum(tr,Technology(u,tr))>=1 and smin(n,Location(u,n)*(1-Curta * Part of the reserve that can be provided by offline quickstart units: K_QuickStart(n) = Config("QuickStartShare","val"); + +Expanded.up(uc) = 1; + +* Investment unit: EUR/kW, model unit MW -> 1/1/1000=01 +C_inv(uc) = ((intrate_investment*(1+intrate_investment)**EconomicLifetime(uc)) + /((1+intrate_investment)**EconomicLifetime(uc)-1))*Investment(uc); + $If %Verbose% == 1 Display RampStartUpMaximum, RampShutDownMaximum, CommittedInitial; $offorder @@ -414,6 +440,9 @@ EQ_Force_Commitment EQ_Force_DeCommitment EQ_LoadShedding $If %RetrieveStatus% == 1 EQ_CommittedCalc +$If %CEPFormulation% == 1 EQ_Committed_Cap +$If %CEPFormulation% == 1 EQ_Startup_Cap +$If %CEPFormulation% == 1 EQ_Shutdown_Cap ; $If %RetrieveStatus% == 0 $goto skipequation @@ -442,7 +471,8 @@ EQ_SystemCost(i).. +Config("ValueOfLostLoad","val")*(sum(n,LL_MaxPower(n,i)+LL_MinPower(n,i))) +0.8*Config("ValueOfLostLoad","val")*(sum(n,LL_2U(n,i)+LL_2D(n,i)+LL_3U(n,i))) +0.7*Config("ValueOfLostLoad","val")*sum(u,LL_RampUp(u,i)+LL_RampDown(u,i)) - +Config("CostOfSpillage","val")*sum(s,spillage(s,i)); + +Config("CostOfSpillage","val")*sum(s,spillage(s,i)) + ; $else EQ_SystemCost(i).. @@ -459,18 +489,31 @@ EQ_SystemCost(i).. +Config("ValueOfLostLoad","val")*(sum(n,LL_MaxPower(n,i)+LL_MinPower(n,i))) +0.8*Config("ValueOfLostLoad","val")*(sum(n,LL_2U(n,i)+LL_2D(n,i)+LL_3U(n,i))) +0.7*Config("ValueOfLostLoad","val")*sum(u,LL_RampUp(u,i)+LL_RampDown(u,i)) - +Config("CostOfSpillage","val")*sum(s,spillage(s,i)); + +Config("CostOfSpillage","val")*sum(s,spillage(s,i)) + + ; $endIf ; +$ifthen [%CEPFormulation% == 1] EQ_Objective_function.. - SystemCostD + SystemCostD + =E= + sum(i,SystemCost(i)) + +Config("WaterValue","val")*sum(s,WaterSlack(s)) ; +$else +EQ_Objective_function.. + SystemCostD =E= sum(i,SystemCost(i)) - +Config("WaterValue","val")*sum(s,WaterSlack(s)) + +Config("WaterValue","val")*sum(s,WaterSlack(s)) + + sum(uc, Expanded(uc) * C_inv(uc)*PowerCapacity(uc)* 1/card(h)); + + +$endIf ; * 3 binary commitment status @@ -768,9 +811,40 @@ EQ_Heat_Storage_level(chp,i).. * =L= * StorageLevel(chp,i) *; + +$ifthen %CEPFormulation% == 1 + +**** CAPACITY EXPANSION +EQ_Startup_Cap(uc,i).. + StartUp(uc,i) + =L= + Committed(uc,i); + +**** CAPACITY EXPANSION +EQ_Shutdown_Cap(uc,i).. + ShutDown(uc,i) + =L= + Committed(uc, i); + +*EQ_Power_available_Cap(uc,i).. +* Power(uc,i) +* =L= +* Expanded(uc)*PowerCapacity(uc)*LoadMaximum(uc,i); + +EQ_Committed_Cap(uc,i).. + Committed(uc,i) + =L= + Expanded(uc) ; + +$endif +; + *=============================================================================== *Definition of models *=============================================================================== + + + MODEL UCM_SIMPLE / EQ_Objective_function, EQ_CHP_extraction_Pmax, @@ -813,7 +887,10 @@ EQ_Flow_limits_upper, EQ_Force_Commitment, EQ_Force_DeCommitment, EQ_LoadShedding, -$If %RetrieveStatus% == 1 EQ_CommittedCalc +$If %RetrieveStatus% == 1 EQ_CommittedCalc, +$If %CEPFormulation% == 1 EQ_Committed_Cap, +$If %CEPFormulation% == 1 EQ_Startup_Cap, +$If %CEPFormulation% == 1 EQ_Shutdown_Cap / ; UCM_SIMPLE.optcr = 0.01; @@ -840,6 +917,7 @@ parameter status(tmp,h); $if %Debug% == 1 $goto DebugSection + display "OK"; scalar starttime; @@ -847,6 +925,9 @@ set days /1,'ndays'/; display days; PARAMETER elapsed(days); +* Capacity expansion for a rolling horizon does not make sense without further methods +$If %CEPFormulation% == 1 Config("RollingHorizon Length","day") = ndays; + FOR(day = 1 TO ndays-Config("RollingHorizon LookAhead","day") by Config("RollingHorizon Length","day"), FirstHour = (day-1)*24+1; LastHour = min(card(h),FirstHour + (Config("RollingHorizon Length","day")+Config("RollingHorizon LookAhead","day")) * 24 - 1); @@ -943,29 +1024,7 @@ LostLoad_RampUp(n,z) = sum(u,LL_RampUp.L(u,z)*Location(u,n)); LostLoad_RampDown(n,z) = sum(u,LL_RampDown.L(u,z)*Location(u,n)); ShadowPrice(n,z) = EQ_Demand_balance_DA.m(n,z); -EXECUTE_UNLOAD "Results.gdx" -OutputCommitted, -OutputFlow, -OutputPower, -OutputHeat, -OutputHeatSlack, -OutputStorageInput, -OutputStorageLevel, -OutputSystemCost, -OutputSpillage, -OutputShedLoad, -OutputCurtailedPower, -OutputGenMargin, -LostLoad_MaxPower, -LostLoad_MinPower, -LostLoad_2D, -LostLoad_2U, -LostLoad_3U, -LostLoad_RampUp, -LostLoad_RampDown, -ShadowPrice, -status -; +EXECUTE_UNLOAD "Results.gdx"; $onorder * Exit here if the PrintResult option is set to 0: diff --git a/dispaset/preprocessing/data_handler.py b/dispaset/preprocessing/data_handler.py old mode 100644 new mode 100755 index 03f02ba6..59d0809d --- a/dispaset/preprocessing/data_handler.py +++ b/dispaset/preprocessing/data_handler.py @@ -488,6 +488,12 @@ def load_config_excel(ConfigFile,AbsPath=True): config['GAMS_folder'] = sheet.cell_value(21, 2) config['cplex_path'] = sheet.cell_value(22, 2) + try: + config["CEP"] = sheet.cell_value(151, 2) + except: # config sheet without CEP cell leads to out of bounds error + config["CEP"] = None + + config['StartDate'] = xlrd.xldate_as_tuple(sheet.cell_value(30, 2), wb.datemode) config['StopDate'] = xlrd.xldate_as_tuple(sheet.cell_value(31, 2), wb.datemode) config['HorizonLength'] = int(sheet.cell_value(32, 2)) diff --git a/dispaset/preprocessing/preprocessing.py b/dispaset/preprocessing/preprocessing.py old mode 100644 new mode 100755 index b9369208..a89e9477 --- a/dispaset/preprocessing/preprocessing.py +++ b/dispaset/preprocessing/preprocessing.py @@ -53,7 +53,7 @@ def build_simulation(config): # Boolean variable to check wether it is milp or lp: LP = config['SimulationType'] == 'LP' or config['SimulationType'] == 'LP clustered' - + CEP = config['CEP'] == 1 # Day/hour corresponding to the first and last days of the simulation: # Note that the first available data corresponds to 2015.01.31 (23.00) and the # last day with data is 2015.12.31 (22.00) @@ -426,6 +426,77 @@ def build_simulation(config): sets_param['TimeUpMinimum'] = ['u'] sets_param['TimeDownMinimum'] = ['u'] + + + # %%################################################################################################################ + ############################################ Capacity Expansion ############################################################ + ################################################################################################################### + + + all_cost = load_csv('Database/CapacityExpansion/techs_cost.csv') # cost information # NOTE: Fixed Cost are added to initial model formulation + + if CEP: + # split set u -> uc ⋃ ue + # load technical parameters (averaged by existing data) and cost (DIW) + ## TODO: Determine parameters in dependency of country + + logging.info("Capacity Expansion used!") + expandable_units = ['HRD-STUR', 'LIG-STUR', 'NUC-STUR','OIL-STUR', 'GAS-GTUR'] #TODO rather in config? + + #Plants_merged = Plants_merged.query('Technology != "COMC" and Fuel != "GAS"') + #Plants_merged = Plants_merged.query('Technology != "STUR" and Fuel != "GAS"') + + plant_new = load_csv('Database/CapacityExpansion/techs_cap.csv') # technical information + plant_new = plant_new[plant_new.Unit.isin(expandable_units)] + + # create variables (cartesian product of tech x country) + n_countries = len(config['countries']) + n_technologies = plant_new.shape[0] + plant_new = pd.concat([plant_new] * n_countries) # for each zone + plant_new['Zone'] = np.repeat(config['countries'], n_technologies) # create zone column + plant_new['Unit'] = plant_new.apply(lambda x: x['Zone'] + "-" + x['Unit'], axis=1) # naming + plant_new = plant_new.set_index('Unit', drop=False) + + ## Cost of new technologies + index = plant_new[['Fuel', 'Technology']].reset_index().set_index('Unit', drop=False) + + Plants_merged = Plants_merged.merge(index[['Fuel', 'Technology']], how='outer', on = ['Fuel', 'Technology'], + indicator=True).query('_merge == "left_only"') + + del Plants_merged['_merge'] + + Plants_merged = Plants_merged.set_index('Unit', drop=False) + sets['ue'] = Plants_merged.index.tolist() # existing plants + sets['uc'] = plant_new.index.tolist() # new plants to expand + sets['u'] = sets['ue'] + sets['uc'] # Union + + Plants_merged = Plants_merged.append(plant_new) + plant_new_cost = all_cost[all_cost.Unit.isin(expandable_units)] + df_expanded = pd.merge(index, plant_new_cost, on=['Fuel', 'Technology'], how='left') + + else: + sets['uc'] = list() + + for var in ["Investment", "EconomicLifetime"]: + sets_param[var] = ['uc'] + + # Define all the parameters and set a default value of zero: + for var in sets_param: + parameters[var] = define_parameter(sets_param[var], sets, value=0) + + for var in ["Investment", "EconomicLifetime"]: + parameters[var] = define_parameter(sets_param[var], sets, value=0) + if CEP: + parameters[var]["val"] = df_expanded[var].values + + Plants_merged['FixedCost'] = pd.merge(Plants_merged, all_cost, how='left', on=['Fuel', 'Technology'])['FixedCost'].values + Nunits = len(Plants_merged) + + for var in ["CostFixed"]: + sets_param[var] = ['u'] + parameters[var] = define_parameter(sets_param[var], sets, value=0) + parameters[var]["val"] = Plants_merged['FixedCost'].values + # Define all the parameters and set a default value of zero: for var in sets_param: parameters[var] = define_parameter(sets_param[var], sets, value=0) @@ -657,16 +728,33 @@ def build_simulation(config): if not os.path.exists(sim): os.makedirs(sim) - if LP: + + def replace_text_by_dict(text, dic): + """Replace dictionary items in text + """ + + for i, j in dic.items(): + text = text.replace(i, j) + return text + + gams_file_changes = {'LP':LP, 'CEP':CEP} + changes_infile_string = {'LP': ('$setglobal LPFormulation 0','$setglobal LPFormulation 1'), 'CEP': ('$setglobal CEPFormulation 0', '$setglobal CEPFormulation 1')} + gams_file_changes_list = {changes_infile_string[k][0]: changes_infile_string[k][1] for k,v in gams_file_changes.items() if v == True} #filter based on selection + if len(gams_file_changes_list)>0: fin = open(os.path.join(GMS_FOLDER, 'UCM_h.gms')) fout = open(os.path.join(sim,'UCM_h.gms'), "wt") for line in fin: - fout.write(line.replace('$setglobal LPFormulation 0', '$setglobal LPFormulation 1')) + fout.write(replace_text_by_dict(line, gams_file_changes_list)) fin.close() fout.close() else: shutil.copyfile(os.path.join(GMS_FOLDER, 'UCM_h.gms'), os.path.join(sim, 'UCM_h.gms')) + + if CEP: + shutil.copyfile(os.path.join(GMS_FOLDER, 'UCM_CAP.gms'), + os.path.join(sim, 'UCM_CAP.gms')) + gmsfile = open(os.path.join(sim, 'UCM.gpr'), 'w') gmsfile.write( '[PROJECT] \n \n[RP:UCM_H] \n1= \n[OPENWINDOW_1] \nFILE0=UCM_h.gms \nFILE1=UCM_h.gms \nMAXIM=1 \nTOP=50 \nLEFT=50 \nHEIGHT=400 \nWIDTH=400') From a27a86ff348b9cdb182b2225f247bbdd13fe58c1 Mon Sep 17 00:00:00 2001 From: Matzee Date: Mon, 27 May 2019 23:04:10 +0200 Subject: [PATCH 2/8] data + bug fixing + objective function scaling --- ConfigFiles/Config_CAP.xlsx | Bin 0 -> 15183 bytes Database/CapacityExpansion/cost_tech.csv | 10 ++++++++++ Database/CapacityExpansion/cost_tech.xlsx | Bin 0 -> 16039 bytes Database/CapacityExpansion/techs_cap.csv | 16 ++++++++++++++++ Database/CapacityExpansion/techs_cap.xlsx | Bin 0 -> 30277 bytes Database/CapacityExpansion/techs_cost.csv | 16 ++++++++++++++++ Database/CapacityExpansion/techs_cost.xlsx | Bin 0 -> 15364 bytes dispaset/GAMS/UCM_CAP.gms | 3 +-- dispaset/GAMS/UCM_h.gms | 15 ++++++++------- dispaset/preprocessing/preprocessing.py | 6 +++++- 10 files changed, 56 insertions(+), 10 deletions(-) create mode 100644 ConfigFiles/Config_CAP.xlsx create mode 100644 Database/CapacityExpansion/cost_tech.csv create mode 100644 Database/CapacityExpansion/cost_tech.xlsx create mode 100644 Database/CapacityExpansion/techs_cap.csv create mode 100644 Database/CapacityExpansion/techs_cap.xlsx create mode 100644 Database/CapacityExpansion/techs_cost.csv create mode 100644 Database/CapacityExpansion/techs_cost.xlsx diff --git a/ConfigFiles/Config_CAP.xlsx b/ConfigFiles/Config_CAP.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..248e665178da44ea4d9831663c0fe8703664b4fa GIT binary patch literal 15183 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 VoFpjN*DYYaKA%pWmgDQ_{{W#YlsEtY literal 0 HcmV?d00001 diff --git a/Database/CapacityExpansion/cost_tech.csv b/Database/CapacityExpansion/cost_tech.csv new file mode 100644 index 00000000..89a174dc --- /dev/null +++ b/Database/CapacityExpansion/cost_tech.csv @@ -0,0 +1,10 @@ +uc,cost [€/KW],[€/KWy],[€/MWh],[%],lifetime [y],lifetime +NUC,6000,100,9,0.33,50,30 +LIG,1800,60,7,0.43,40,30 +Coal,1800,50,6,0.46,40,30 +CCGT,800,20,3,0.60,40,30 +OCGT,550,15,2,0.39,40,30 +GTUR,550,15,3,0.41,40,30 +CCOT,800,25,4,0.60,40,30 +OCOT,400,6,3,0.39,40,30 +OilSteam,400,6,3,0.41,40,30 diff --git a/Database/CapacityExpansion/cost_tech.xlsx b/Database/CapacityExpansion/cost_tech.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..dba1cfff013aa2ee1400ee1a8be2f475f82f40aa GIT binary patch literal 16039 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 Date: Mon, 27 May 2019 23:24:18 +0200 Subject: [PATCH 3/8] edit conf.yml for testing --- tests/conf.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/conf.yml b/tests/conf.yml index 5ca5df69..a626c523 100644 --- a/tests/conf.yml +++ b/tests/conf.yml @@ -17,6 +17,7 @@ Clustering: 1.0 SimulationType: 'MILP' #LP, LP clustered ReserveCalculation: 'Generic' AllowCurtailment: 1.0 +CEP: 1 #------------------- CostHeatSlack: '' From 3aab9737a16e5bdd98fff3ec0c3a91909e24058a Mon Sep 17 00:00:00 2001 From: Matzee Date: Fri, 3 Jan 2020 13:29:14 +0100 Subject: [PATCH 4/8] sync with fork --- ConfigFiles/Config_CAP.xlsx | Bin 15183 -> 20723 bytes Database/PowerPlants/AT/2015.csv | 94 +- Database/PowerPlants/AT/clustered.csv | 20 +- Database/PowerPlants/BE/2015.csv | 74 +- Database/PowerPlants/BE/clustered.csv | 22 +- Database/PowerPlants/BE/simplified.csv | 58 +- Database/PowerPlants/BG/clustered.csv | 20 +- Database/PowerPlants/CH/2015.csv | 62 +- Database/PowerPlants/CH/clustered.csv | 8 +- Database/PowerPlants/CY/2015.csv | 50 +- Database/PowerPlants/CY/2015_heat.csv | 50 +- Database/PowerPlants/CY/2015_heatpump.csv | 50 +- Database/PowerPlants/CZ/clustered.csv | 20 +- Database/PowerPlants/DE/2015.csv | 282 ++-- Database/PowerPlants/DE/clustered.csv | 28 +- Database/PowerPlants/DK/clustered.csv | 22 +- Database/PowerPlants/EE/clustered.csv | 12 +- Database/PowerPlants/EL/2015.csv | 108 +- Database/PowerPlants/EL/clustered.csv | 18 +- Database/PowerPlants/ES/clustered.csv | 24 +- Database/PowerPlants/FI/clustered.csv | 22 +- Database/PowerPlants/FR/2015.csv | 326 ++--- Database/PowerPlants/FR/clustered.csv | 24 +- Database/PowerPlants/HR/clustered.csv | 20 +- Database/PowerPlants/HU/clustered.csv | 18 +- Database/PowerPlants/IE/2015_Lucy.csv | 154 +- Database/PowerPlants/IE/clustered.csv | 20 +- Database/PowerPlants/IT/clustered.csv | 26 +- Database/PowerPlants/LT/clustered.csv | 18 +- Database/PowerPlants/LU/clustered.csv | 12 +- Database/PowerPlants/LV/clustered.csv | 12 +- Database/PowerPlants/NL/2015.csv | 94 +- Database/PowerPlants/NL/2015_BEVS.csv | 116 +- Database/PowerPlants/NL/clustered.csv | 20 +- Database/PowerPlants/NO/clustered.csv | 12 +- Database/PowerPlants/PL/clustered.csv | 14 +- Database/PowerPlants/PT/clustered.csv | 22 +- Database/PowerPlants/RO/clustered.csv | 22 +- Database/PowerPlants/SE/clustered.csv | 10 +- Database/PowerPlants/SI/clustered.csv | 16 +- Database/PowerPlants/SK/clustered.csv | 22 +- Database/PowerPlants/UK/clustered.csv | 26 +- dispaset/preprocessing/data_check.py | 2 + dispaset/preprocessing/data_handler.py | 6 +- dispaset/preprocessing/preprocessing.py | 1602 +++++++++------------ dispaset/preprocessing/utils.py | 754 +++++----- 46 files changed, 2052 insertions(+), 2360 deletions(-) mode change 100644 => 100755 dispaset/preprocessing/data_check.py mode change 100644 => 100755 dispaset/preprocessing/utils.py diff --git a/ConfigFiles/Config_CAP.xlsx b/ConfigFiles/Config_CAP.xlsx index 248e665178da44ea4d9831663c0fe8703664b4fa..314ba00cbc375b9c9995f1cf139369a9d01e75db 100644 GIT binary patch literal 20723 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 L4a_S+z91d|4r(EO literal 15183 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 VoFpjN*DYYaKA%pWmgDQ_{{W#YlsEtY diff --git a/Database/PowerPlants/AT/2015.csv b/Database/PowerPlants/AT/2015.csv index bb9dc4cc..8850f58c 100644 --- a/Database/PowerPlants/AT/2015.csv +++ b/Database/PowerPlants/AT/2015.csv @@ -1,47 +1,47 @@ -PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost,NoLoadCost,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency -1272,KW Simmering,AT,COMC,GAS,0.525,5,1,0.0087814465,0.0087814465,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -838,GDK-Mellach,AT,COMC,GAS,0.525,5,1,0.0133293556,0.0133293556,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -765,Kraftwerk Thei??,AT,COMC,GAS,0.525,5,1,0.0146013072,0.0146013072,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -730,Malta-Hauptstufe,AT,HPHS,WAT,0.86,0,0,0.4109589041,0.4109589041,0,0,0,0,0.86,0.3,0,,,35040,0,613.4453781513,0.86 -400,Kraftwerk Timelkam GUD,AT,COMC,GAS,0.525,5,1,0.027925,0.027925,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -395,KW Donaustadt,AT,COMC,GAS,0.525,5,1,0.028278481,0.028278481,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -392,Kraftwerk D??rnrohr,AT,STUR,HRD,0.395,8,6,0.012755102,0.012755102,117242.17,0,0,0.3,0.395,7,0.95,,,,,, -360,H??usling,AT,HPHS,WAT,0.86,0,0,0.8333333333,0.8333333333,0,0,0,0,0.86,0.3,0,,,17280,0,302.5210084034,0.86 -345,Mayrhofen,AT,HDAM,WAT,0.85,0,0,0.2608695652,0.2608695652,0,0,0,0,0.85,0.3,0,,,169395,0,0,0 -328,Altenwarth,AT,HROR,WAT,1,0,0,0.6707317073,0.6707317073,0,0,0,0,1,0.3,0,,,,,, -293,Greifenstein,AT,HROR,WAT,1,0,0,0.7508532423,0.7508532423,0,0,0,0,1,0.3,0,,,,,, -287,Aschach,AT,HROR,WAT,1,0,0,0.7665505226,0.7665505226,0,0,0,0,1,0.3,0,,,,,, -240,Kaprun-Hauptstufe,AT,HDAM,WAT,0.85,0,0,0.375,0.375,0,0,0,0,0.85,0.3,0,,,117840,0,0,0 -237,Ybbs-Persenbeug,AT,HROR,WAT,1,0,0,0.9282700422,0.9282700422,0,0,0,0,1,0.3,0,,,,,, -231,Ro??hag,AT,HPHS,WAT,0.86,0,0,1.2987012987,1.2987012987,0,0,0,0,0.86,0.3,0,,,11088,0,194.1176470588,0.86 -220,FHKW Mellach,AT,STUR,HRD,0.395,8,6,0.0227272727,0.0227272727,117242.17,0,0,0.3,0.395,7,0.95,,,,,, -217,Fernheizkraftwerk Linz Mitte,AT,COMC,GAS,0.525,5,1,0.0514746544,0.0514746544,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -210,Wallsee-Mitterkirchen,AT,HROR,WAT,1,0,0,1.0476190476,1.0476190476,0,0,0,0,1,0.3,0,,,,,, -200,Gerlos,AT,HDAM,WAT,0.85,0,0,0.45,0.45,0,0,0,0,0.85,0.3,0,,,98200,0,0,0 -187,Melk,AT,HROR,WAT,1,0,0,1.1764705882,1.1764705882,0,0,0,0,1,0.3,0,,,,,, -179,Ottensheim-Wilhering,AT,HROR,WAT,1,0,0,1.2290502793,1.2290502793,0,0,0,0,1,0.3,0,,,,,, -172,Freudenau,AT,HROR,WAT,1,0,0,1.2790697674,1.2790697674,0,0,0,0,1,0.3,0,,,,,, -168,Abwinden-Asten,AT,HROR,WAT,1,0,0,1.3095238095,1.3095238095,0,0,0,0,1,0.3,0,,,,,, -158,FHKW Linz S??d,AT,COMC,GAS,0.525,5,1,0.0706962025,0.0706962025,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -153,voestalpine KW Linz,AT,COMC,GAS,0.525,5,1,0.0730065359,0.0730065359,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -150,Kraftwerk Riedersbach 2,AT,STUR,HRD,0.395,8,6,0.0333333333,0.0333333333,117242.17,0,0,0.3,0.395,7,0.95,,,,,, -150,Kraftwerk Korneuburg,AT,COMC,GAS,0.525,5,1,0.0744666667,0.0744666667,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -140,Kraftwerk Feldsee,AT,HPHS,WAT,0.86,0,0,2.1428571429,2.1428571429,0,0,0,0,0.86,0.3,0,,,6720,0,117.6470588235,0.86 -140,KW Leopoldau,AT,COMC,GAS,0.525,5,1,0.0797857143,0.0797857143,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -120,Kaprun-Schwarzach,AT,HDAM,WAT,0.85,0,0,0.75,0.75,0,0,0,0,0.85,0.3,0,,,58920,0,0,0 -120,Malta-Oberstufe,AT,HPHS,WAT,0.86,0,0,2.5,2.5,0,0,0,0,0.86,0.3,0,,,5760,0,100.8403361345,0.86 -114,Kraftwerk Oschenik,AT,HPHS,WAT,0.86,0,0,2.6315789474,2.6315789474,0,0,0,0,0.86,0.3,0,,,5472,0,95.7983193277,0.86 -113,Kaprun-Oberstufe,AT,HPHS,WAT,0.86,0,0,2.6548672566,2.6548672566,0,0,0,0,0.86,0.3,0,,,5424,0,94.9579831933,0.86 -100,Kraftwerk Au??erfragant,AT,HDAM,WAT,0.85,0,0,0.9,0.9,0,0,0,0,0.85,0.3,0,,,49100,0,0,0 -814,DispaSET PHOT_AT,AT,PHOT,SUN,1,0,0,1.1056511057,1.1056511057,0,0,0,0,1,0,0,,,,,, -2306,DispaSET WindOn_AT,AT,WTON,WIN,1,0,0,0.0585429315,0.0585429315,0,0,0,0,1,0,0,,,,,, -393,DispaSET Biomass_AT,AT,STUR,BIO,0.45,8,6,0.0127226463,0.0127226463,2000,0,0,0.2,0.45,7,0,,,,,, -301,DispaSET FossilGas_AT0,AT,COMC,GAS,0.525,5,1,0.0371096346,0.0371096346,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -57,DispaSET FossilHardCoal_AT,AT,STUR,HRD,0.395,8,6,0.0877192982,0.0877192982,117242.17,0,0,0.3,0.395,7,0.95,,,,,, -288,DispaSET FossilOil_AT,AT,STUR,OIL,0.41,8,6,0.0173611111,0.0173611111,35280.965,0,0,0.3,0.41,7,0.79,,,,,, -1250,DispaSET HydroPumpedSt_AT,AT,HPHS,WAT,0.86,0,0,0.1653803749,0.1653803749,0,0,0,0,0.86,0.3,0,,,60000,0,1050.4201680672,0.86 -3500,DispaSET HydroRiver_AT,AT,HROR,WAT,1,0,0,0.0709677419,0.0709677419,0,0,0,0,1,0.3,0,,,,,, -2544,DispaSET HydroRes_AT,AT,HDAM,WAT,0.85,0,0,0.0710900474,0.0710900474,0,0,0,0,0.85,0.3,0,,,1249104,0,0,0 -600,DispaSET FossilGas_AT1,AT,COMC,GAS,0.525,5,1,0.0186166667,0.0186166667,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -600,DispaSET FossilGas_AT2,AT,COMC,GAS,0.525,5,1,0.0186166667,0.0186166667,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -600,DispaSET FossilGas_AT3,AT,COMC,GAS,0.525,5,1,0.0186166667,0.0186166667,112542.12,0,0,0.4,0.525,1,0.45,,,,,, +PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost,NoLoadCost,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,Extendable,Investment,FixedCost,EconomicLifetime +1272,KW Simmering,AT,COMC,GAS,0.525,5,1,0.0087814465,0.0087814465,112542.12,0,0,0.4,0.525,1.0,0.45,,,,,,,,,, +838,GDK-Mellach,AT,COMC,GAS,0.525,5,1,0.0133293556,0.0133293556,112542.12,0,0,0.4,0.525,1.0,0.45,,,,,,,,,, +765,Kraftwerk Thei??,AT,COMC,GAS,0.525,5,1,0.0146013072,0.0146013072,112542.12,0,0,0.4,0.525,1.0,0.45,,,,,,,,,, +730,Malta-Hauptstufe,AT,HPHS,WAT,0.86,0,0,0.41095890409999997,0.41095890409999997,0.0,0,0,0.0,0.86,0.3,0.0,,,35040.0,0.0,613.4453781513,0.86,,,, +400,Kraftwerk Timelkam GUD,AT,COMC,GAS,0.525,5,1,0.027925,0.027925,112542.12,0,0,0.4,0.525,1.0,0.45,,,,,,,,,, +395,KW Donaustadt,AT,COMC,GAS,0.525,5,1,0.028278481,0.028278481,112542.12,0,0,0.4,0.525,1.0,0.45,,,,,,,,,, +392,Kraftwerk D??rnrohr,AT,STUR,HRD,0.395,8,6,0.012755101999999999,0.012755101999999999,117242.17,0,0,0.3,0.395,7.0,0.95,,,,,,,,,, +360,H??usling,AT,HPHS,WAT,0.86,0,0,0.8333333333,0.8333333333,0.0,0,0,0.0,0.86,0.3,0.0,,,17280.0,0.0,302.5210084034,0.86,,,, +345,Mayrhofen,AT,HDAM,WAT,0.85,0,0,0.2608695652,0.2608695652,0.0,0,0,0.0,0.85,0.3,0.0,,,169395.0,0.0,0.0,0.0,,,, +328,Altenwarth,AT,HROR,WAT,1.0,0,0,0.6707317073,0.6707317073,0.0,0,0,0.0,1.0,0.3,0.0,,,,,,,,,, +293,Greifenstein,AT,HROR,WAT,1.0,0,0,0.7508532423000001,0.7508532423000001,0.0,0,0,0.0,1.0,0.3,0.0,,,,,,,,,, +287,Aschach,AT,HROR,WAT,1.0,0,0,0.7665505226,0.7665505226,0.0,0,0,0.0,1.0,0.3,0.0,,,,,,,,,, +240,Kaprun-Hauptstufe,AT,HDAM,WAT,0.85,0,0,0.375,0.375,0.0,0,0,0.0,0.85,0.3,0.0,,,117840.0,0.0,0.0,0.0,,,, +237,Ybbs-Persenbeug,AT,HROR,WAT,1.0,0,0,0.9282700422,0.9282700422,0.0,0,0,0.0,1.0,0.3,0.0,,,,,,,,,, +231,Ro??hag,AT,HPHS,WAT,0.86,0,0,1.2987012987,1.2987012987,0.0,0,0,0.0,0.86,0.3,0.0,,,11088.0,0.0,194.1176470588,0.86,,,, +220,FHKW Mellach,AT,STUR,HRD,0.395,8,6,0.0227272727,0.0227272727,117242.17,0,0,0.3,0.395,7.0,0.95,,,,,,,,,, +217,Fernheizkraftwerk Linz Mitte,AT,COMC,GAS,0.525,5,1,0.05147465440000002,0.05147465440000002,112542.12,0,0,0.4,0.525,1.0,0.45,,,,,,,,,, +210,Wallsee-Mitterkirchen,AT,HROR,WAT,1.0,0,0,1.0476190476,1.0476190476,0.0,0,0,0.0,1.0,0.3,0.0,,,,,,,,,, +200,Gerlos,AT,HDAM,WAT,0.85,0,0,0.45,0.45,0.0,0,0,0.0,0.85,0.3,0.0,,,98200.0,0.0,0.0,0.0,,,, +187,Melk,AT,HROR,WAT,1.0,0,0,1.1764705882,1.1764705882,0.0,0,0,0.0,1.0,0.3,0.0,,,,,,,,,, +179,Ottensheim-Wilhering,AT,HROR,WAT,1.0,0,0,1.2290502793,1.2290502793,0.0,0,0,0.0,1.0,0.3,0.0,,,,,,,,,, +172,Freudenau,AT,HROR,WAT,1.0,0,0,1.2790697674,1.2790697674,0.0,0,0,0.0,1.0,0.3,0.0,,,,,,,,,, +168,Abwinden-Asten,AT,HROR,WAT,1.0,0,0,1.3095238095000001,1.3095238095000001,0.0,0,0,0.0,1.0,0.3,0.0,,,,,,,,,, +158,FHKW Linz S??d,AT,COMC,GAS,0.525,5,1,0.0706962025,0.0706962025,112542.12,0,0,0.4,0.525,1.0,0.45,,,,,,,,,, +153,voestalpine KW Linz,AT,COMC,GAS,0.525,5,1,0.0730065359,0.0730065359,112542.12,0,0,0.4,0.525,1.0,0.45,,,,,,,,,, +150,Kraftwerk Riedersbach 2,AT,STUR,HRD,0.395,8,6,0.033333333300000004,0.033333333300000004,117242.17,0,0,0.3,0.395,7.0,0.95,,,,,,,,,, +150,Kraftwerk Korneuburg,AT,COMC,GAS,0.525,5,1,0.0744666667,0.0744666667,112542.12,0,0,0.4,0.525,1.0,0.45,,,,,,,,,, +140,Kraftwerk Feldsee,AT,HPHS,WAT,0.86,0,0,2.1428571429,2.1428571429,0.0,0,0,0.0,0.86,0.3,0.0,,,6720.0,0.0,117.6470588235,0.86,,,, +140,KW Leopoldau,AT,COMC,GAS,0.525,5,1,0.07978571429999999,0.07978571429999999,112542.12,0,0,0.4,0.525,1.0,0.45,,,,,,,,,, +120,Kaprun-Schwarzach,AT,HDAM,WAT,0.85,0,0,0.75,0.75,0.0,0,0,0.0,0.85,0.3,0.0,,,58920.0,0.0,0.0,0.0,,,, +120,Malta-Oberstufe,AT,HPHS,WAT,0.86,0,0,2.5,2.5,0.0,0,0,0.0,0.86,0.3,0.0,,,5760.0,0.0,100.8403361345,0.86,,,, +114,Kraftwerk Oschenik,AT,HPHS,WAT,0.86,0,0,2.6315789474,2.6315789474,0.0,0,0,0.0,0.86,0.3,0.0,,,5472.0,0.0,95.7983193277,0.86,,,, +113,Kaprun-Oberstufe,AT,HPHS,WAT,0.86,0,0,2.6548672566,2.6548672566,0.0,0,0,0.0,0.86,0.3,0.0,,,5424.0,0.0,94.9579831933,0.86,,,, +100,Kraftwerk Au??erfragant,AT,HDAM,WAT,0.85,0,0,0.9,0.9,0.0,0,0,0.0,0.85,0.3,0.0,,,49100.0,0.0,0.0,0.0,,,, +814,DispaSET PHOT_AT,AT,PHOT,SUN,1.0,0,0,1.1056511057,1.1056511057,0.0,0,0,0.0,1.0,0.0,0.0,,,,,,,,,, +2306,DispaSET WindOn_AT,AT,WTON,WIN,1.0,0,0,0.05854293150000001,0.05854293150000001,0.0,0,0,0.0,1.0,0.0,0.0,,,,,,,,,, +393,DispaSET Biomass_AT,AT,STUR,BIO,0.45,8,6,0.0127226463,0.0127226463,2000.0,0,0,0.2,0.45,7.0,0.0,,,,,,,,,, +301,DispaSET FossilGas_AT0,AT,COMC,GAS,0.525,5,1,0.0371096346,0.0371096346,112542.12,0,0,0.4,0.525,1.0,0.45,,,,,,,,,, +57,DispaSET FossilHardCoal_AT,AT,STUR,HRD,0.395,8,6,0.0877192982,0.0877192982,117242.17,0,0,0.3,0.395,7.0,0.95,,,,,,,,,, +288,DispaSET FossilOil_AT,AT,STUR,OIL,0.41,8,6,0.0173611111,0.0173611111,35280.965,0,0,0.3,0.41,7.0,0.79,,,,,,,,,, +1250,DispaSET HydroPumpedSt_AT,AT,HPHS,WAT,0.86,0,0,0.16538037490000002,0.16538037490000002,0.0,0,0,0.0,0.86,0.3,0.0,,,60000.0,0.0,1050.4201680672,0.86,,,, +3500,DispaSET HydroRiver_AT,AT,HROR,WAT,1.0,0,0,0.0709677419,0.0709677419,0.0,0,0,0.0,1.0,0.3,0.0,,,,,,,,,, +2544,DispaSET HydroRes_AT,AT,HDAM,WAT,0.85,0,0,0.07109004740000001,0.07109004740000001,0.0,0,0,0.0,0.85,0.3,0.0,,,1249104.0,0.0,0.0,0.0,,,, +600,DispaSET FossilGas_AT1,AT,COMC,GAS,0.525,5,1,0.0186166667,0.0186166667,112542.12,0,0,0.4,0.525,1.0,0.45,,,,,,,,,, +600,DispaSET FossilGas_AT2,AT,COMC,GAS,0.525,5,1,0.0186166667,0.0186166667,112542.12,0,0,0.4,0.525,1.0,0.45,,,,,,,,,, +600,DispaSET FossilGas_AT3,AT,COMC,GAS,0.525,5,1,0.0186166667,0.0186166667,112542.12,0,0,0.4,0.525,1.0,0.45,,,,,,,,,, diff --git a/Database/PowerPlants/AT/clustered.csv b/Database/PowerPlants/AT/clustered.csv index d62fd3fc..901aa360 100644 --- a/Database/PowerPlants/AT/clustered.csv +++ b/Database/PowerPlants/AT/clustered.csv @@ -1,10 +1,10 @@ -,PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost_pu,NoLoadCost_pu,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,CHPPowerLossFactor,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,CHPMaxHeat,Nunits -AT_STUR_BIO,145.4718892,AT_STUR_BIO,AT,STUR,BIO,0.46,4,6,0.02,0.02,120,12.5,1.3,0.35,0.35,1,0,back-pressure,1,0,,,,,145.4718892,2 -AT_COMC_GAS,406.1605294,AT_COMC_GAS,AT,COMC,GAS,0.57,2,4,0.03,0.03,55,0,0,0.36,0.57,1,0.42,,,,,,,,,9 -AT_GTUR_GAS,52.77463649,AT_GTUR_GAS,AT,GTUR,GAS,0.425,0,0,0.166666667,0.166666667,0,0,0,0.2,0.425,0.166666667,0.564705882,,,,,,,,,3 -AT_STUR_HRD,660.4994908,AT_STUR_HRD,AT,STUR,HRD,0.46,8,8,0.017777778,0.017777778,65,0,0,0.3,0.46,2,0.81,,,,,,,,,1 -AT_PHOT_SUN,1031,AT_PHOT_SUN,AT,PHOT,SUN,1,0,0,0.02,0.02,0,0,0,0,1,0,0,,,,,,,,,1 -AT_HROR_WAT,5574.7,AT_HROR_WAT,AT,HROR,WAT,1,0,0,0.02,0.02,0,0,0,0,1,0,0,,,,,,,,,1 -AT_HPHS_WAT,5936,AT_HPHS_WAT,AT,HPHS,WAT,0.8,0,0,0.066666667,0.066666667,0,0,0,0,1,0,0,,,,1735630.76,0,2971.1,0.8,,1 -AT_WTON_WIN,2730,AT_WTON_WIN,AT,WTON,WIN,1,0,0,0.02,0.02,0,0,0,0,1,0,0,,,,,,,,,1 -AT_STUR_WST,36.025,AT_STUR_WST,AT,STUR,WST,0.2,0,0,0.02,0.02,0,0,0,0,0.2,0,0,,,,,,,,,4 +,PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost_pu,NoLoadCost_pu,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,CHPPowerLossFactor,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,CHPMaxHeat,Nunits,Extendable,Investment,FixedCost,EconomicLifetime +AT_STUR_BIO,145.4718892,AT_STUR_BIO,AT,STUR,BIO,0.46,4,6,0.02,0.02,120,12.5,1.3,0.35,0.35,1.0,0.0,back-pressure,1.0,0.0,,,,,145.4718892,2,,,, +AT_COMC_GAS,406.1605294,AT_COMC_GAS,AT,COMC,GAS,0.57,2,4,0.03,0.03,55,0.0,0.0,0.36,0.57,1.0,0.42,,,,,,,,,9,,,, +AT_GTUR_GAS,52.77463649,AT_GTUR_GAS,AT,GTUR,GAS,0.425,0,0,0.166666667,0.166666667,0,0.0,0.0,0.2,0.425,0.166666667,0.564705882,,,,,,,,,3,,,, +AT_STUR_HRD,660.4994908,AT_STUR_HRD,AT,STUR,HRD,0.46,8,8,0.017777778,0.017777778,65,0.0,0.0,0.3,0.46,2.0,0.81,,,,,,,,,1,,,, +AT_PHOT_SUN,1031.0,AT_PHOT_SUN,AT,PHOT,SUN,1.0,0,0,0.02,0.02,0,0.0,0.0,0.0,1.0,0.0,0.0,,,,,,,,,1,,,, +AT_HROR_WAT,5574.7,AT_HROR_WAT,AT,HROR,WAT,1.0,0,0,0.02,0.02,0,0.0,0.0,0.0,1.0,0.0,0.0,,,,,,,,,1,,,, +AT_HPHS_WAT,5936.0,AT_HPHS_WAT,AT,HPHS,WAT,0.8,0,0,0.066666667,0.066666667,0,0.0,0.0,0.0,1.0,0.0,0.0,,,,1735630.76,0.0,2971.1,0.8,,1,,,, +AT_WTON_WIN,2730.0,AT_WTON_WIN,AT,WTON,WIN,1.0,0,0,0.02,0.02,0,0.0,0.0,0.0,1.0,0.0,0.0,,,,,,,,,1,,,, +AT_STUR_WST,36.025,AT_STUR_WST,AT,STUR,WST,0.2,0,0,0.02,0.02,0,0.0,0.0,0.0,0.2,0.0,0.0,,,,,,,,,4,,,, diff --git a/Database/PowerPlants/BE/2015.csv b/Database/PowerPlants/BE/2015.csv index e762702d..e453038e 100644 --- a/Database/PowerPlants/BE/2015.csv +++ b/Database/PowerPlants/BE/2015.csv @@ -1,37 +1,37 @@ -PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost,NoLoadCost,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency -1046,TIHANGE 3,BE,STUR,NUC,0.405,24,24,0.0032791587,0.0032791587,200000,0,0,0.9,0.405,0,0,,,,,, -1038,DOEL 4,BE,STUR,NUC,0.405,24,24,0.0033044316,0.0033044316,200000,0,0,0.9,0.405,0,0,,,,,, -1008,TIHANGE 2,BE,STUR,NUC,0.405,24,24,0.0034027778,0.0034027778,200000,0,0,0.9,0.405,0,0,,,,,, -1006,DOEL 3,BE,STUR,NUC,0.405,24,24,0.0034095427,0.0034095427,200000,0,0,0.9,0.405,0,0,,,,,, -690,COO II T,BE,HPHS,WAT,0.86,0,0,0.4347826087,0.4347826087,0,0,0,0,0.86,0,0,,,3105,0,690,0.86 -481,TIHANGE 1N,BE,STUR,NUC,0.405,24,24,0.0071309771,0.0071309771,200000,0,0,0.9,0.405,0,0,,,,,, -481,TIHANGE 1S,BE,STUR,NUC,0.405,24,24,0.0071309771,0.0071309771,200000,0,0,0.9,0.405,0,0,,,,,, -474,COO I T,BE,HPHS,WAT,0.86,0,0,0.6329113924,0.6329113924,0,0,0,0,0.86,0,0,,,2133,0,474,0.86 -465,DROGENBOS TGV,BE,COMC,GAS,0.525,5,1,0.0240215054,0.0240215054,112542.12,0,0,0.4,0.525,0,0.45,,,,,, -465,HERDERSBRUG STEG,BE,COMC,GAS,0.525,5,1,0.0240215054,0.0240215054,112542.12,0,0,0.4,0.525,0,0.45,,,,,, -451,Amercoeur 1 R TGV,BE,COMC,GAS,0.525,5,1,0.024767184,0.024767184,112542.12,0,0,0.4,0.525,0,0.45,,,,,, -433,DOEL 1,BE,STUR,NUC,0.405,24,24,0.0079214781,0.0079214781,200000,0,0,0.9,0.405,0,0,,,,,, -433,DOEL 2,BE,STUR,NUC,0.405,24,24,0.0079214781,0.0079214781,200000,0,0,0.9,0.405,0,0,,,,,, -422,T-power Beringen,BE,COMC,GAS,0.525,5,1,0.0264691943,0.0264691943,112542.12,0,0,0.4,0.525,0,0.45,,,,,, -405,Marcinelle Energie (Carsid),BE,COMC,GAS,0.525,5,1,0.0275802469,0.0275802469,112542.12,0,0,0.4,0.525,0,0.45,,,,,, -384,Zandvliet Power,BE,COMC,GAS,0.525,5,1,0.0290885417,0.0290885417,112542.12,0,0,0.4,0.525,0,0.45,,,,,, -376,ESCH-SUR-ALZETTE STEG,BE,COMC,GAS,0.525,5,1,0.0297074468,0.0297074468,112542.12,0,0,0.4,0.525,0,0.45,,,,,, -357,RINGVAART STEG,BE,COMC,GAS,0.525,5,1,0.0312885154,0.0312885154,112542.12,0,0,0.4,0.525,0,0.45,,,,,, -350,SAINT-GHISLAIN STEG,BE,COMC,GAS,0.525,5,1,0.0319142857,0.0319142857,112542.12,0,0,0.4,0.525,0,0.45,,,,,, -315,Zelzate 2 Knippegroen,BE,COMC,GAS,0.525,5,1,0.0354603175,0.0354603175,112542.12,0,0,0.4,0.525,0,0.45,,,,,, -268,RODENHUIZE 4,BE,STUR,BIO,0.45,8,6,0.0186567164,0.0186567164,2000,0,0,0.2,0.45,0,0,,,,,, -235,LANGERLO 1,BE,STUR,HRD,0.395,8,6,0.0212765957,0.0212765957,117242.17,0,0,0.3,0.395,0,0.95,,,,,, -235,LANGERLO 2,BE,STUR,HRD,0.395,8,6,0.0212765957,0.0212765957,117242.17,0,0,0.3,0.395,0,0.95,,,,,, -214,Northwind,BE,WTOF,WIN,1,0,0,0.6542056075,0.6542056075,0,0,0,0,1,0,0,,,,,, -178,Thorntonbank - C-Power - Area SW,BE,WTOF,WIN,1,0,0,0.7865168539,0.7865168539,0,0,0,0,1,0,0,,,,,, -171,Belwind Phase 1,BE,WTOF,WIN,1,0,0,0.8187134503,0.8187134503,0,0,0,0,1,0,0,,,,,, -150,Thorntonbank - C-Power - Area NE,BE,WTOF,WIN,1,0,0,0.9333333333,0.9333333333,0,0,0,0,1,0,0,,,,,, -144,PLATE TAILLE T,BE,HPHS,WAT,0.86,0,0,2.0833333333,2.0833333333,0,0,0,0,0.86,0,0,,,648,0,144,0.86 -140,Scheldelaan Exxonmobil,BE,COMC,GAS,0.525,5,1,0.0797857143,0.0797857143,112542.12,0,0,0.4,0.525,0,0.45,,,,,, -138,INESCO WKK,BE,COMC,GAS,0.525,5,1,0.080942029,0.080942029,112542.12,0,0,0.4,0.525,0,0.45,,,,,, -2953,DispaSET PHOT_BE,BE,PHOT,SUN,1,0,0,0.3047748053,0.3047748053,0,0,0,0,1,0,0,,,,,, -1249,DispaSET WindOn_BE,BE,WTON,WIN,1,0,0,0.1080864692,0.1080864692,0,0,0,0,1,0,0,,,,,, -1412,DispaSET FossilGas_BE1,BE,COMC,GAS,0.525,5,1,0.0079107649,0.0079107649,112542.12,0,0,0.4,0.525,0,0.45,,,,,, -448,DispaSET Biomass_BE,BE,STUR,BIO,0.45,8,6,0.0111607143,0.0111607143,2000,0,0,0.2,0.45,0,0,,,,,, -500,DispaSET FossilGas_BE2,BE,COMC,GAS,0.525,5,1,0.02234,0.02234,112542.12,0,0,0.4,0.525,0,0.45,,,,,, -500,DispaSET FossilGas_BE3,BE,COMC,GAS,0.525,5,1,0.02234,0.02234,112542.12,0,0,0.4,0.525,0,0.45,,,,,, +PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost,NoLoadCost,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,Extendable,Investment,FixedCost,EconomicLifetime +1046,TIHANGE 3,BE,STUR,NUC,0.405,24,24,0.0032791587,0.0032791587,200000.0,0,0,0.9,0.405,0,0.0,,,,,,,,,, +1038,DOEL 4,BE,STUR,NUC,0.405,24,24,0.0033044316,0.0033044316,200000.0,0,0,0.9,0.405,0,0.0,,,,,,,,,, +1008,TIHANGE 2,BE,STUR,NUC,0.405,24,24,0.0034027778000000003,0.0034027778000000003,200000.0,0,0,0.9,0.405,0,0.0,,,,,,,,,, +1006,DOEL 3,BE,STUR,NUC,0.405,24,24,0.0034095427,0.0034095427,200000.0,0,0,0.9,0.405,0,0.0,,,,,,,,,, +690,COO II T,BE,HPHS,WAT,0.86,0,0,0.43478260869999996,0.43478260869999996,0.0,0,0,0.0,0.86,0,0.0,,,3105.0,0.0,690.0,0.86,,,, +481,TIHANGE 1N,BE,STUR,NUC,0.405,24,24,0.0071309771,0.0071309771,200000.0,0,0,0.9,0.405,0,0.0,,,,,,,,,, +481,TIHANGE 1S,BE,STUR,NUC,0.405,24,24,0.0071309771,0.0071309771,200000.0,0,0,0.9,0.405,0,0.0,,,,,,,,,, +474,COO I T,BE,HPHS,WAT,0.86,0,0,0.6329113924,0.6329113924,0.0,0,0,0.0,0.86,0,0.0,,,2133.0,0.0,474.0,0.86,,,, +465,DROGENBOS TGV,BE,COMC,GAS,0.525,5,1,0.0240215054,0.0240215054,112542.12,0,0,0.4,0.525,0,0.45,,,,,,,,,, +465,HERDERSBRUG STEG,BE,COMC,GAS,0.525,5,1,0.0240215054,0.0240215054,112542.12,0,0,0.4,0.525,0,0.45,,,,,,,,,, +451,Amercoeur 1 R TGV,BE,COMC,GAS,0.525,5,1,0.024767183999999998,0.024767183999999998,112542.12,0,0,0.4,0.525,0,0.45,,,,,,,,,, +433,DOEL 1,BE,STUR,NUC,0.405,24,24,0.0079214781,0.0079214781,200000.0,0,0,0.9,0.405,0,0.0,,,,,,,,,, +433,DOEL 2,BE,STUR,NUC,0.405,24,24,0.0079214781,0.0079214781,200000.0,0,0,0.9,0.405,0,0.0,,,,,,,,,, +422,T-power Beringen,BE,COMC,GAS,0.525,5,1,0.026469194300000002,0.026469194300000002,112542.12,0,0,0.4,0.525,0,0.45,,,,,,,,,, +405,Marcinelle Energie (Carsid),BE,COMC,GAS,0.525,5,1,0.0275802469,0.0275802469,112542.12,0,0,0.4,0.525,0,0.45,,,,,,,,,, +384,Zandvliet Power,BE,COMC,GAS,0.525,5,1,0.029088541699999998,0.029088541699999998,112542.12,0,0,0.4,0.525,0,0.45,,,,,,,,,, +376,ESCH-SUR-ALZETTE STEG,BE,COMC,GAS,0.525,5,1,0.029707446800000002,0.029707446800000002,112542.12,0,0,0.4,0.525,0,0.45,,,,,,,,,, +357,RINGVAART STEG,BE,COMC,GAS,0.525,5,1,0.0312885154,0.0312885154,112542.12,0,0,0.4,0.525,0,0.45,,,,,,,,,, +350,SAINT-GHISLAIN STEG,BE,COMC,GAS,0.525,5,1,0.031914285699999996,0.031914285699999996,112542.12,0,0,0.4,0.525,0,0.45,,,,,,,,,, +315,Zelzate 2 Knippegroen,BE,COMC,GAS,0.525,5,1,0.0354603175,0.0354603175,112542.12,0,0,0.4,0.525,0,0.45,,,,,,,,,, +268,RODENHUIZE 4,BE,STUR,BIO,0.45,8,6,0.0186567164,0.0186567164,2000.0,0,0,0.2,0.45,0,0.0,,,,,,,,,, +235,LANGERLO 1,BE,STUR,HRD,0.395,8,6,0.021276595699999998,0.021276595699999998,117242.17,0,0,0.3,0.395,0,0.95,,,,,,,,,, +235,LANGERLO 2,BE,STUR,HRD,0.395,8,6,0.021276595699999998,0.021276595699999998,117242.17,0,0,0.3,0.395,0,0.95,,,,,,,,,, +214,Northwind,BE,WTOF,WIN,1.0,0,0,0.6542056075,0.6542056075,0.0,0,0,0.0,1.0,0,0.0,,,,,,,,,, +178,Thorntonbank - C-Power - Area SW,BE,WTOF,WIN,1.0,0,0,0.7865168539,0.7865168539,0.0,0,0,0.0,1.0,0,0.0,,,,,,,,,, +171,Belwind Phase 1,BE,WTOF,WIN,1.0,0,0,0.8187134503,0.8187134503,0.0,0,0,0.0,1.0,0,0.0,,,,,,,,,, +150,Thorntonbank - C-Power - Area NE,BE,WTOF,WIN,1.0,0,0,0.9333333333,0.9333333333,0.0,0,0,0.0,1.0,0,0.0,,,,,,,,,, +144,PLATE TAILLE T,BE,HPHS,WAT,0.86,0,0,2.0833333333,2.0833333333,0.0,0,0,0.0,0.86,0,0.0,,,648.0,0.0,144.0,0.86,,,, +140,Scheldelaan Exxonmobil,BE,COMC,GAS,0.525,5,1,0.07978571429999999,0.07978571429999999,112542.12,0,0,0.4,0.525,0,0.45,,,,,,,,,, +138,INESCO WKK,BE,COMC,GAS,0.525,5,1,0.080942029,0.080942029,112542.12,0,0,0.4,0.525,0,0.45,,,,,,,,,, +2953,DispaSET PHOT_BE,BE,PHOT,SUN,1.0,0,0,0.3047748053,0.3047748053,0.0,0,0,0.0,1.0,0,0.0,,,,,,,,,, +1249,DispaSET WindOn_BE,BE,WTON,WIN,1.0,0,0,0.1080864692,0.1080864692,0.0,0,0,0.0,1.0,0,0.0,,,,,,,,,, +1412,DispaSET FossilGas_BE1,BE,COMC,GAS,0.525,5,1,0.0079107649,0.0079107649,112542.12,0,0,0.4,0.525,0,0.45,,,,,,,,,, +448,DispaSET Biomass_BE,BE,STUR,BIO,0.45,8,6,0.0111607143,0.0111607143,2000.0,0,0,0.2,0.45,0,0.0,,,,,,,,,, +500,DispaSET FossilGas_BE2,BE,COMC,GAS,0.525,5,1,0.022340000000000002,0.022340000000000002,112542.12,0,0,0.4,0.525,0,0.45,,,,,,,,,, +500,DispaSET FossilGas_BE3,BE,COMC,GAS,0.525,5,1,0.022340000000000002,0.022340000000000002,112542.12,0,0,0.4,0.525,0,0.45,,,,,,,,,, diff --git a/Database/PowerPlants/BE/clustered.csv b/Database/PowerPlants/BE/clustered.csv index 089607e5..1d5d3e9b 100644 --- a/Database/PowerPlants/BE/clustered.csv +++ b/Database/PowerPlants/BE/clustered.csv @@ -1,11 +1,11 @@ -,PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost_pu,NoLoadCost_pu,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,CHPPowerLossFactor,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,CHPMaxHeat,Nunits -BE_STUR_BIO,177.3825,BE_STUR_BIO,BE,STUR,BIO,0.46,4,6,0.02,0.02,120,12.5,1.3,0.35,0.35,1,0,back-pressure,1,0,,,,,177.3825,4 -BE_COMC_GAS,419.3196257,BE_COMC_GAS,BE,COMC,GAS,0.57,2,4,0.03,0.03,55,0,0,0.36,0.57,1,0.42,,,,,,,,,10 -BE_GTUR_GAS,62.14423604,BE_GTUR_GAS,BE,GTUR,GAS,0.425,0,0,0.166666667,0.166666667,0,0,0,0.2,0.425,0.166666667,0.564705882,,,,,,,,,18 -BE_STUR_HRD,121.6621253,BE_STUR_HRD,BE,STUR,HRD,0.46,8,8,0.017777778,0.017777778,65,0,0,0.3,0.46,2,0.81,,,,,,,,,1 -BE_STUR_NUC,986.5,BE_STUR_NUC,BE,STUR,NUC,1,24,24,0.003333333,0.003333333,300,0,0,0.5,1,12,0,,,,,,,,,6 -BE_PHOT_SUN,3087,BE_PHOT_SUN,BE,PHOT,SUN,1,0,0,0.02,0.02,0,0,0,0,1,0,0,,,,,,,,,1 -BE_HPHS_WAT,1308,BE_HPHS_WAT,BE,HPHS,WAT,0.8,0,0,0.066666667,0.066666667,0,0,0,0,1,0,0,,,,6000,0,1308,0.8,,1 -BE_WTOF_WIN,712.2,BE_WTOF_WIN,BE,WTOF,WIN,1,0,0,0.02,0.02,0,0,0,0,1,0,0,,,,,,,,,1 -BE_WTON_WIN,1580,BE_WTON_WIN,BE,WTON,WIN,1,0,0,0.02,0.02,0,0,0,0,1,0,0,,,,,,,,,1 -BE_STUR_WST,42.70363094,BE_STUR_WST,BE,STUR,WST,0.2,0,0,0.02,0.02,0,0,0,0,0.2,0,0,,,,,,,,,4 +,PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost_pu,NoLoadCost_pu,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,CHPPowerLossFactor,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,CHPMaxHeat,Nunits,Extendable,Investment,FixedCost,EconomicLifetime +BE_STUR_BIO,177.3825,BE_STUR_BIO,BE,STUR,BIO,0.46,4,6,0.02,0.02,120,12.5,1.3,0.35,0.35,1.0,0.0,back-pressure,1.0,0.0,,,,,177.3825,4,,,, +BE_COMC_GAS,419.31962569999996,BE_COMC_GAS,BE,COMC,GAS,0.57,2,4,0.03,0.03,55,0.0,0.0,0.36,0.57,1.0,0.42,,,,,,,,,10,,,, +BE_GTUR_GAS,62.14423604,BE_GTUR_GAS,BE,GTUR,GAS,0.425,0,0,0.166666667,0.166666667,0,0.0,0.0,0.2,0.425,0.166666667,0.564705882,,,,,,,,,18,,,, +BE_STUR_HRD,121.6621253,BE_STUR_HRD,BE,STUR,HRD,0.46,8,8,0.017777778,0.017777778,65,0.0,0.0,0.3,0.46,2.0,0.81,,,,,,,,,1,,,, +BE_STUR_NUC,986.5,BE_STUR_NUC,BE,STUR,NUC,1.0,24,24,0.003333333,0.003333333,300,0.0,0.0,0.5,1.0,12.0,0.0,,,,,,,,,6,,,, +BE_PHOT_SUN,3087.0,BE_PHOT_SUN,BE,PHOT,SUN,1.0,0,0,0.02,0.02,0,0.0,0.0,0.0,1.0,0.0,0.0,,,,,,,,,1,,,, +BE_HPHS_WAT,1308.0,BE_HPHS_WAT,BE,HPHS,WAT,0.8,0,0,0.066666667,0.066666667,0,0.0,0.0,0.0,1.0,0.0,0.0,,,,6000.0,0.0,1308.0,0.8,,1,,,, +BE_WTOF_WIN,712.2,BE_WTOF_WIN,BE,WTOF,WIN,1.0,0,0,0.02,0.02,0,0.0,0.0,0.0,1.0,0.0,0.0,,,,,,,,,1,,,, +BE_WTON_WIN,1580.0,BE_WTON_WIN,BE,WTON,WIN,1.0,0,0,0.02,0.02,0,0.0,0.0,0.0,1.0,0.0,0.0,,,,,,,,,1,,,, +BE_STUR_WST,42.70363094,BE_STUR_WST,BE,STUR,WST,0.2,0,0,0.02,0.02,0,0.0,0.0,0.0,0.2,0.0,0.0,,,,,,,,,4,,,, diff --git a/Database/PowerPlants/BE/simplified.csv b/Database/PowerPlants/BE/simplified.csv index 2b8829df..bc2cb486 100644 --- a/Database/PowerPlants/BE/simplified.csv +++ b/Database/PowerPlants/BE/simplified.csv @@ -1,29 +1,29 @@ -PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost,NoLoadCost,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency -1046,TIHANGE 3,BE,STUR,NUC,0.405,24,24,0.0032791587,0.0032791587,200000,0,0,0.9,0.405,0,0,,,,,, -1038,DOEL 4,BE,STUR,NUC,0.405,24,24,0.0033044316,0.0033044316,200000,0,0,0.9,0.405,0,0,,,,,, -1008,TIHANGE 2,BE,STUR,NUC,0.405,24,24,0.0034027778,0.0034027778,200000,0,0,0.9,0.405,0,0,,,,,, -1006,DOEL 3,BE,STUR,NUC,0.405,24,24,0.0034095427,0.0034095427,200000,0,0,0.9,0.405,0,0,,,,,, -690,COO II T,BE,HPHS,WAT,0.86,0,0,0.4347826087,0.4347826087,0,0,0,0,0.86,0,0,,,3105,0,690,0.86 -481,TIHANGE 1N,BE,STUR,NUC,0.405,24,24,0.0071309771,0.0071309771,200000,0,0,0.9,0.405,0,0,,,,,, -481,TIHANGE 1S,BE,STUR,NUC,0.405,24,24,0.0071309771,0.0071309771,200000,0,0,0.9,0.405,0,0,,,,,, -474,COO I T,BE,HPHS,WAT,0.86,0,0,0.6329113924,0.6329113924,0,0,0,0,0.86,0,0,,,2133,0,474,0.86 -465,DROGENBOS TGV,BE,COMC,GAS,0.525,5,1,0.0240215054,0.0240215054,112542.12,0,0,0.4,0.525,0,0.45,,,,,, -465,HERDERSBRUG STEG,BE,COMC,GAS,0.525,5,1,0.0240215054,0.0240215054,112542.12,0,0,0.4,0.525,0,0.45,,,,,, -451,Amercoeur 1 R TGV,BE,COMC,GAS,0.525,5,1,0.024767184,0.024767184,112542.12,0,0,0.4,0.525,0,0.45,,,,,, -433,DOEL 1,BE,STUR,NUC,0.405,24,24,0.0079214781,0.0079214781,200000,0,0,0.9,0.405,0,0,,,,,, -433,DOEL 2,BE,STUR,NUC,0.405,24,24,0.0079214781,0.0079214781,200000,0,0,0.9,0.405,0,0,,,,,, -422,T-power Beringen,BE,COMC,GAS,0.525,5,1,0.0264691943,0.0264691943,112542.12,0,0,0.4,0.525,0,0.45,,,,,, -405,Marcinelle Energie (Carsid),BE,COMC,GAS,0.525,5,1,0.0275802469,0.0275802469,112542.12,0,0,0.4,0.525,0,0.45,,,,,, -384,Zandvliet Power,BE,COMC,GAS,0.525,5,1,0.0290885417,0.0290885417,112542.12,0,0,0.4,0.525,0,0.45,,,,,, -376,ESCH-SUR-ALZETTE STEG,BE,COMC,GAS,0.525,5,1,0.0297074468,0.0297074468,112542.12,0,0,0.4,0.525,0,0.45,,,,,, -357,RINGVAART STEG,BE,COMC,GAS,0.525,5,1,0.0312885154,0.0312885154,112542.12,0,0,0.4,0.525,0,0.45,,,,,, -350,SAINT-GHISLAIN STEG,BE,COMC,GAS,0.525,5,1,0.0319142857,0.0319142857,112542.12,0,0,0.4,0.525,0,0.45,,,,,, -315,Zelzate 2 Knippegroen,BE,COMC,GAS,0.525,5,1,0.0354603175,0.0354603175,112542.12,0,0,0.4,0.525,0,0.45,,,,,, -144,PLATE TAILLE T,BE,HPHS,WAT,0.86,0,0,2.0833333333,2.0833333333,0,0,0,0,0.86,0,0,,,648,0,144,0.86 -140,Scheldelaan Exxonmobil,BE,COMC,GAS,0.525,5,1,0.0797857143,0.0797857143,112542.12,0,0,0.4,0.525,0,0.45,,,,,, -138,INESCO WKK,BE,COMC,GAS,0.525,5,1,0.080942029,0.080942029,112542.12,0,0,0.4,0.525,0,0.45,,,,,, -2953,DispaSET PHOT_BE,BE,PHOT,SUN,1,0,0,0.3047748053,0.3047748053,0,0,0,0,1,0,0,,,,,, -1249,DispaSET WindOn_BE,BE,WTON,WIN,1,0,0,0.1080864692,0.1080864692,0,0,0,0,1,0,0,,,,,, -1412,DispaSET FossilGas_BE1,BE,COMC,GAS,0.525,5,1,0.0079107649,0.0079107649,112542.12,0,0,0.4,0.525,0,0.45,,,,,, -500,DispaSET FossilGas_BE2,BE,COMC,GAS,0.525,5,1,0.02234,0.02234,112542.12,0,0,0.4,0.525,0,0.45,,,,,, -500,DispaSET FossilGas_BE3,BE,COMC,GAS,0.525,5,1,0.02234,0.02234,112542.12,0,0,0.4,0.525,0,0.45,,,,,, +PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost,NoLoadCost,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,Extendable,Investment,FixedCost,EconomicLifetime +1046,TIHANGE 3,BE,STUR,NUC,0.405,24,24,0.0032791587,0.0032791587,200000.0,0,0,0.9,0.405,0,0.0,,,,,,,,,, +1038,DOEL 4,BE,STUR,NUC,0.405,24,24,0.0033044316,0.0033044316,200000.0,0,0,0.9,0.405,0,0.0,,,,,,,,,, +1008,TIHANGE 2,BE,STUR,NUC,0.405,24,24,0.0034027778000000003,0.0034027778000000003,200000.0,0,0,0.9,0.405,0,0.0,,,,,,,,,, +1006,DOEL 3,BE,STUR,NUC,0.405,24,24,0.0034095427,0.0034095427,200000.0,0,0,0.9,0.405,0,0.0,,,,,,,,,, +690,COO II T,BE,HPHS,WAT,0.86,0,0,0.43478260869999996,0.43478260869999996,0.0,0,0,0.0,0.86,0,0.0,,,3105.0,0.0,690.0,0.86,,,, +481,TIHANGE 1N,BE,STUR,NUC,0.405,24,24,0.0071309771,0.0071309771,200000.0,0,0,0.9,0.405,0,0.0,,,,,,,,,, +481,TIHANGE 1S,BE,STUR,NUC,0.405,24,24,0.0071309771,0.0071309771,200000.0,0,0,0.9,0.405,0,0.0,,,,,,,,,, +474,COO I T,BE,HPHS,WAT,0.86,0,0,0.6329113924,0.6329113924,0.0,0,0,0.0,0.86,0,0.0,,,2133.0,0.0,474.0,0.86,,,, +465,DROGENBOS TGV,BE,COMC,GAS,0.525,5,1,0.0240215054,0.0240215054,112542.12,0,0,0.4,0.525,0,0.45,,,,,,,,,, +465,HERDERSBRUG STEG,BE,COMC,GAS,0.525,5,1,0.0240215054,0.0240215054,112542.12,0,0,0.4,0.525,0,0.45,,,,,,,,,, +451,Amercoeur 1 R TGV,BE,COMC,GAS,0.525,5,1,0.024767183999999998,0.024767183999999998,112542.12,0,0,0.4,0.525,0,0.45,,,,,,,,,, +433,DOEL 1,BE,STUR,NUC,0.405,24,24,0.0079214781,0.0079214781,200000.0,0,0,0.9,0.405,0,0.0,,,,,,,,,, +433,DOEL 2,BE,STUR,NUC,0.405,24,24,0.0079214781,0.0079214781,200000.0,0,0,0.9,0.405,0,0.0,,,,,,,,,, +422,T-power Beringen,BE,COMC,GAS,0.525,5,1,0.026469194300000002,0.026469194300000002,112542.12,0,0,0.4,0.525,0,0.45,,,,,,,,,, +405,Marcinelle Energie (Carsid),BE,COMC,GAS,0.525,5,1,0.0275802469,0.0275802469,112542.12,0,0,0.4,0.525,0,0.45,,,,,,,,,, +384,Zandvliet Power,BE,COMC,GAS,0.525,5,1,0.029088541699999998,0.029088541699999998,112542.12,0,0,0.4,0.525,0,0.45,,,,,,,,,, +376,ESCH-SUR-ALZETTE STEG,BE,COMC,GAS,0.525,5,1,0.029707446800000002,0.029707446800000002,112542.12,0,0,0.4,0.525,0,0.45,,,,,,,,,, +357,RINGVAART STEG,BE,COMC,GAS,0.525,5,1,0.0312885154,0.0312885154,112542.12,0,0,0.4,0.525,0,0.45,,,,,,,,,, +350,SAINT-GHISLAIN STEG,BE,COMC,GAS,0.525,5,1,0.031914285699999996,0.031914285699999996,112542.12,0,0,0.4,0.525,0,0.45,,,,,,,,,, +315,Zelzate 2 Knippegroen,BE,COMC,GAS,0.525,5,1,0.0354603175,0.0354603175,112542.12,0,0,0.4,0.525,0,0.45,,,,,,,,,, +144,PLATE TAILLE T,BE,HPHS,WAT,0.86,0,0,2.0833333333,2.0833333333,0.0,0,0,0.0,0.86,0,0.0,,,648.0,0.0,144.0,0.86,,,, +140,Scheldelaan Exxonmobil,BE,COMC,GAS,0.525,5,1,0.07978571429999999,0.07978571429999999,112542.12,0,0,0.4,0.525,0,0.45,,,,,,,,,, +138,INESCO WKK,BE,COMC,GAS,0.525,5,1,0.080942029,0.080942029,112542.12,0,0,0.4,0.525,0,0.45,,,,,,,,,, +2953,DispaSET PHOT_BE,BE,PHOT,SUN,1.0,0,0,0.3047748053,0.3047748053,0.0,0,0,0.0,1.0,0,0.0,,,,,,,,,, +1249,DispaSET WindOn_BE,BE,WTON,WIN,1.0,0,0,0.1080864692,0.1080864692,0.0,0,0,0.0,1.0,0,0.0,,,,,,,,,, +1412,DispaSET FossilGas_BE1,BE,COMC,GAS,0.525,5,1,0.0079107649,0.0079107649,112542.12,0,0,0.4,0.525,0,0.45,,,,,,,,,, +500,DispaSET FossilGas_BE2,BE,COMC,GAS,0.525,5,1,0.022340000000000002,0.022340000000000002,112542.12,0,0,0.4,0.525,0,0.45,,,,,,,,,, +500,DispaSET FossilGas_BE3,BE,COMC,GAS,0.525,5,1,0.022340000000000002,0.022340000000000002,112542.12,0,0,0.4,0.525,0,0.45,,,,,,,,,, diff --git a/Database/PowerPlants/BG/clustered.csv b/Database/PowerPlants/BG/clustered.csv index 40841556..1d42fd74 100644 --- a/Database/PowerPlants/BG/clustered.csv +++ b/Database/PowerPlants/BG/clustered.csv @@ -1,10 +1,10 @@ -,PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost_pu,NoLoadCost_pu,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,CHPPowerLossFactor,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,CHPMaxHeat,Nunits -BG_STUR_BIO,47,BG_STUR_BIO,BG,STUR,BIO,0.35,4,6,0.02,0.02,65,,0,0.5,0.35,,0,,,,,,,,,1 -BG_COMC_GAS,53.95920986,BG_COMC_GAS,BG,COMC,GAS,0.57,2,4,0.03,0.03,55,0,0,0.36,0.57,1,0.42,,,,,,,,,1 -BG_GTUR_GAS,54.49880195,BG_GTUR_GAS,BG,GTUR,GAS,0.425,0,0,0.166666667,0.166666667,0,0,0,0.2,0.425,0.166666667,0.564705882,,,,,,,,,1 -BG_STUR_GAS,110.8861763,BG_STUR_GAS,BG,STUR,GAS,0.38,0,0,0.02,0.02,0,0,0,0.4,0.38,0,0,,,,,,,,,4 -BG_STUR_LIG,697.4285714,BG_STUR_LIG,BG,STUR,LIG,0.393,8,8,0.01520979,0.017482517,65,12.56164384,0,0.389,0.4075,5,1.05,,,,,,,,,7 -BG_STUR_NUC,1000,BG_STUR_NUC,BG,STUR,NUC,1,24,24,0.003333333,0.003333333,300,0,0,0.5,1,12,0,,,,,,,,,2 -BG_PHOT_SUN,1043,BG_PHOT_SUN,BG,PHOT,SUN,1,0,0,0.02,0.02,0,0,0,0,1,0,0,,,,,,,,,1 -BG_HPHS_WAT,2943,BG_HPHS_WAT,BG,HPHS,WAT,0.8,0,0,0.066666667,0.066666667,0,0,0,0,1,0,0,,,,2240914,0,1399,0.8,,1 -BG_WTON_WIN,701,BG_WTON_WIN,BG,WTON,WIN,1,0,0,0.02,0.02,0,0,0,0,1,0,0,,,,,,,,,1 +,PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost_pu,NoLoadCost_pu,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,CHPPowerLossFactor,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,CHPMaxHeat,Nunits,Extendable,Investment,FixedCost,EconomicLifetime +BG_STUR_BIO,47.0,BG_STUR_BIO,BG,STUR,BIO,0.35,4,6,0.02,0.02,65,,0,0.5,0.35,,0.0,,,,,,,,,1,,,, +BG_COMC_GAS,53.95920986,BG_COMC_GAS,BG,COMC,GAS,0.57,2,4,0.03,0.03,55,0.0,0,0.36,0.57,1.0,0.42,,,,,,,,,1,,,, +BG_GTUR_GAS,54.49880195,BG_GTUR_GAS,BG,GTUR,GAS,0.425,0,0,0.166666667,0.166666667,0,0.0,0,0.2,0.425,0.166666667,0.564705882,,,,,,,,,1,,,, +BG_STUR_GAS,110.8861763,BG_STUR_GAS,BG,STUR,GAS,0.38,0,0,0.02,0.02,0,0.0,0,0.4,0.38,0.0,0.0,,,,,,,,,4,,,, +BG_STUR_LIG,697.4285714,BG_STUR_LIG,BG,STUR,LIG,0.39299999999999996,8,8,0.01520979,0.017482517,65,12.56164384,0,0.389,0.4075,5.0,1.05,,,,,,,,,7,,,, +BG_STUR_NUC,1000.0,BG_STUR_NUC,BG,STUR,NUC,1.0,24,24,0.003333333,0.003333333,300,0.0,0,0.5,1.0,12.0,0.0,,,,,,,,,2,,,, +BG_PHOT_SUN,1043.0,BG_PHOT_SUN,BG,PHOT,SUN,1.0,0,0,0.02,0.02,0,0.0,0,0.0,1.0,0.0,0.0,,,,,,,,,1,,,, +BG_HPHS_WAT,2943.0,BG_HPHS_WAT,BG,HPHS,WAT,0.8,0,0,0.066666667,0.066666667,0,0.0,0,0.0,1.0,0.0,0.0,,,,2240914.0,0.0,1399.0,0.8,,1,,,, +BG_WTON_WIN,701.0,BG_WTON_WIN,BG,WTON,WIN,1.0,0,0,0.02,0.02,0,0.0,0,0.0,1.0,0.0,0.0,,,,,,,,,1,,,, diff --git a/Database/PowerPlants/CH/2015.csv b/Database/PowerPlants/CH/2015.csv index 553b5780..cf64126c 100644 --- a/Database/PowerPlants/CH/2015.csv +++ b/Database/PowerPlants/CH/2015.csv @@ -1,34 +1,28 @@ -PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost,NoLoadCost,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency -1926,Gde-Dixence (GD),CH,HDAM,WAT,0.85,0,0,0.046728972,0.046728972,0,0,0,0,0.85,0.3,0,,,2008818,0,0,0.86 -1245,KKL - KernKW Leibstadt AG,CH,STUR,NUC,0.405,24,24,0.0027550201,0.0027550201,200000,0,0,0.9,0.405,72,0,,,,,, -1020,Kernkraftwerk Gasgen,CH,STUR,NUC,0.405,24,24,0.0033627451,0.0033627451,200000,0,0,0.9,0.405,72,0,,,,,, -986,KW Oberhasli AG (KWO),CH,HPHS,WAT,0.86,0,0,0.3042596349,0.3042596349,0,0,0,0,0.86,0.3,0,,,259318,0,986,0.86 -732,KLL - KW Linth-Limmern AG,CH,HPHS,WAT,0.86,0,0,0.4098360656,0.4098360656,0,0,0,0,0.86,0.3,0,,,192516,0,732,0.86 -730,KKB - KernKW Beznau,CH,STUR,NUC,0.405,24,24,0.0046986301,0.0046986301,200000,0,0,0.9,0.405,72,0,,,,,, -640,KHR - KW Hinterrhein AG,CH,HPHS,WAT,0.86,0,0,0.46875,0.46875,0,0,0,0,0.86,0.3,0,,,168320,0,640,0.86 -547,Maggia (OFIMA),CH,HDAM,WAT,0.85,0,0,0.1645338208,0.1645338208,0,0,0,0,0.85,0.3,0,,,570521,0,0,0.86 -421,Kraftwerke Mauvoisin AG,CH,HDAM,WAT,0.85,0,0,0.2137767221,0.2137767221,0,0,0,0,0.85,0.3,0,,,439103,0,0,0.86 -420,Emosson (ESA),CH,HDAM,WAT,0.85,0,0,0.2142857143,0.2142857143,0,0,0,0,0.85,0.3,0,,,438060,0,0,0.86 -416,EKW - Engadiner KW AG,CH,HPHS,WAT,0.86,0,0,0.7211538462,0.7211538462,0,0,0,0,0.86,0.3,0,,,109408,0,416,0.86 -383,KSL - KW Sarganserland AG,CH,HPHS,WAT,0.86,0,0,0.7832898172,0.7832898172,0,0,0,0,0.86,0.3,0,,,100729,0,383,0.86 -380,KKW Mahleberg (KKM),CH,STUR,NUC,0.405,24,24,0.0090263158,0.0090263158,200000,0,0,0.9,0.405,72,0,,,,,, -340,Electra-Massa (EM),CH,HDAM,WAT,0.85,0,0,0.2647058824,0.2647058824,0,0,0,0,0.85,0.3,0,,,354620,0,0,0.86 -335,KVR - KW Vorderrhein AG,CH,HDAM,WAT,0.85,0,0,0.2686567164,0.2686567164,0,0,0,0,0.85,0.3,0,,,349405,0,0,0.86 -306,Blenio (OFIBLE),CH,HDAM,WAT,0.85,0,0,0.2941176471,0.2941176471,0,0,0,0,0.85,0.3,0,,,319158,0,0,0.86 -259,KWM - KW Mattmark AG,CH,HPHS,WAT,0.86,0,0,1.1583011583,1.1583011583,0,0,0,0,0.86,0.3,0,,,68117,0,259,0.86 -258,KWZ - KW Zervreila AG,CH,HDAM,WAT,0.85,0,0,0.3488372093,0.3488372093,0,0,0,0,0.85,0.3,0,,,269094,0,0,0.86 -240,Hongrin-Laman (FMHL),CH,HPHS,WAT,0.86,0,0,1.25,1.25,0,0,0,0,0.86,0.3,0,,,63120,0,240,0.86 -226,AET Leventina,CH,HDAM,WAT,0.85,0,0,0.3982300885,0.3982300885,0,0,0,0,0.85,0.3,0,,,235718,0,0,0.86 -108,AKW - AG KW W??gital,CH,HPHS,WAT,0.86,0,0,2.7777777778,2.7777777778,0,0,0,0,0.86,0.3,0,,,28404,0,108,0.86 -100,KW Rheinfelden CH,CH,HROR,WAT,1,0,0,2.2,2.2,0,0,0,0,1,0.3,0,,,,,, -1057,DispaSET PHOT_CH,CH,PHOT,SUN,1,0,0,0.8514664144,0.8514664144,0,0,0,0,1,0,0,,,,,, -75,DispaSET WindOn_CH,CH,WTON,WIN,1,0,0,1.8,1.8,0,0,0,0,1,0,0,,,,,, -3000,DispaSET HydroRiver_CH,CH,HROR,WAT,1,0,0,2.4444444444,2.4444444444,0,0,0,0,1,0.3,0,,,,,, -1600,DispaSET HydroRes_CH,CH,HDAM,WAT,0.85,0,0,3.9130434783,3.9130434783,0,0,0,0,0.85,0.3,0,,,1668800,0,0,0.86 -1000,DispaSET FossilGas_CH,CH,COMC,GAS,0.525,5,1,0.01117,0.01117,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -1000,DispaSET FossilGas_CH,CH,COMC,GAS,0.525,5,1,0.01117,0.01117,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -500,DispaSET FossilGas_CH,CH,COMC,GAS,0.525,5,1,0.02234,0.02234,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -500,DispaSET FossilGas_CH,CH,COMC,GAS,0.525,5,1,0.02234,0.02234,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -500,DispaSET FossilGas_CH,CH,COMC,GAS,0.525,5,1,0.02234,0.02234,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -500,DispaSET FossilGas_CH,CH,COMC,GAS,0.525,5,1,0.02234,0.02234,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -500,DispaSET FossilGas_CH,CH,COMC,GAS,0.525,5,1,0.02234,0.02234,112542.12,0,0,0.4,0.525,1,0.45,,,,,, +PowerCapacity;Unit;Zone;Technology;Fuel;Efficiency;MinUpTime;MinDownTime;RampUpRate;RampDownRate;StartUpCost;NoLoadCost;RampingCost;PartLoadMin;MinEfficiency;StartUpTime;CO2Intensity;CHPType;CHPPowerToHeat;STOCapacity;STOSelfDischarge;STOMaxChargingPower;STOChargingEfficiency,Extendable,Investment,FixedCost,EconomicLifetime +1926;Gde-Dixence (GD);CH;HDAM;WAT;0.85;0;0;0.046728972;0.046728972;0;0;0;0;0.85;0.3;0;;;2008818;0;0;0.86,,,, +1245;KKL - KernKW Leibstadt AG;CH;STUR;NUC;0.405;24;24;0.00275502;0.00275502;200000;0;0;0.9;0.405;72;0;;;;;;,,,, +1020;Kernkraftwerk Gasgen;CH;STUR;NUC;0.405;24;24;0.003362745;0.003362745;200000;0;0;0.9;0.405;72;0;;;;;;,,,, +986;KW Oberhasli AG (KWO);CH;HPHS;WAT;0.86;0;0;0.304259635;0.304259635;0;0;0;0;0.86;0.3;0;;;259318;0;986;0.86,,,, +732;KLL - KW Linth-Limmern AG;CH;HPHS;WAT;0.86;0;0;0.409836066;0.409836066;0;0;0;0;0.86;0.3;0;;;192516;0;732;0.86,,,, +730;KKB - KernKW Beznau;CH;STUR;NUC;0.405;24;24;0.00469863;0.00469863;200000;0;0;0.9;0.405;72;0;;;;;;,,,, +640;KHR - KW Hinterrhein AG;CH;HPHS;WAT;0.86;0;0;0.46875;0.46875;0;0;0;0;0.86;0.3;0;;;168320;0;640;0.86,,,, +547;Maggia (OFIMA);CH;HDAM;WAT;0.85;0;0;0.164533821;0.164533821;0;0;0;0;0.85;0.3;0;;;570521;0;0;0.86,,,, +421;Kraftwerke Mauvoisin AG;CH;HDAM;WAT;0.85;0;0;0.213776722;0.213776722;0;0;0;0;0.85;0.3;0;;;439103;0;0;0.86,,,, +420;Emosson (ESA);CH;HDAM;WAT;0.85;0;0;0.214285714;0.214285714;0;0;0;0;0.85;0.3;0;;;438060;0;0;0.86,,,, +416;EKW - Engadiner KW AG;CH;HPHS;WAT;0.86;0;0;0.721153846;0.721153846;0;0;0;0;0.86;0.3;0;;;109408;0;416;0.86,,,, +383;KSL - KW Sarganserland AG;CH;HPHS;WAT;0.86;0;0;0.783289817;0.783289817;0;0;0;0;0.86;0.3;0;;;100729;0;383;0.86,,,, +380;KKW Mahleberg (KKM);CH;STUR;NUC;0.405;24;24;0.009026316;0.009026316;200000;0;0;0.9;0.405;72;0;;;;;;,,,, +340;Electra-Massa (EM);CH;HDAM;WAT;0.85;0;0;0.264705882;0.264705882;0;0;0;0;0.85;0.3;0;;;354620;0;0;0.86,,,, +335;KVR - KW Vorderrhein AG;CH;HDAM;WAT;0.85;0;0;0.268656716;0.268656716;0;0;0;0;0.85;0.3;0;;;349405;0;0;0.86,,,, +306;Blenio (OFIBLE);CH;HDAM;WAT;0.85;0;0;0.294117647;0.294117647;0;0;0;0;0.85;0.3;0;;;319158;0;0;0.86,,,, +259;KWM - KW Mattmark AG;CH;HPHS;WAT;0.86;0;0;1.158301158;1.158301158;0;0;0;0;0.86;0.3;0;;;68117;0;259;0.86,,,, +258;KWZ - KW Zervreila AG;CH;HDAM;WAT;0.85;0;0;0.348837209;0.348837209;0;0;0;0;0.85;0.3;0;;;269094;0;0;0.86,,,, +240;Hongrin-Laman (FMHL);CH;HPHS;WAT;0.86;0;0;1.25;1.25;0;0;0;0;0.86;0.3;0;;;63120;0;240;0.86,,,, +226;AET Leventina;CH;HDAM;WAT;0.85;0;0;0.398230089;0.398230089;0;0;0;0;0.85;0.3;0;;;235718;0;0;0.86,,,, +108;AKW - AG KW W??gital;CH;HPHS;WAT;0.86;0;0;2.777777778;2.777777778;0;0;0;0;0.86;0.3;0;;;28404;0;108;0.86,,,, +100;KW Rheinfelden CH;CH;HROR;WAT;1;0;0;2.2;2.2;0;0;0;0;1;0.3;0;;;;;;,,,, +1057;DispaSET PHOT_CH;CH;PHOT;SUN;1;0;0;0.851466414;0.851466414;0;0;0;0;1;0;0;;;;;;,,,, +75;DispaSET WindOn_CH;CH;WTON;WIN;1;0;0;1.8;1.8;0;0;0;0;1;0;0;;;;;;,,,, +3000;DispaSET HydroRiver_CH;CH;HROR;WAT;1;0;0;2.444444444;2.444444444;0;0;0;0;1;0.3;0;;;;;;,,,, +1600;DispaSET HydroRes_CH;CH;HDAM;WAT;0.85;0;0;3.913043478;3.913043478;0;0;0;0;0.85;0.3;0;;;1668800;0;0;0.86,,,, +1000;DispaSET FossilGas_CH;CH;COMC;GAS;0.525;5;1;0.01117;0.01117;112542.12;0;0;0.4;0.525;1;0.45;;;;;;,,,, diff --git a/Database/PowerPlants/CH/clustered.csv b/Database/PowerPlants/CH/clustered.csv index 319254bc..e18ccdaf 100644 --- a/Database/PowerPlants/CH/clustered.csv +++ b/Database/PowerPlants/CH/clustered.csv @@ -1,4 +1,4 @@ -,PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost_pu,NoLoadCost_pu,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,Nunits -CH_STUR_NUC,843.7500000000001,CH_STUR_NUC,CH,STUR,NUC,1.0,24,24,0.00333333333333333,0.00333333333333333,300,0.0,0,0.5,1.0,12.0,0.0,,,,,,,4.0 -CH_PHOT_SUN,1394.0,CH_PHOT_SUN,CH,PHOT,SUN,1.0,0,0,0.02,0.02,0,0.0,0,0.0,1.0,0.0,0.0,,,,,,,1 -CH_HPHS_WAT,8979.8,CH_HPHS_WAT,CH,HPHS,WAT,0.8,0,0,0.0666666666666667,0.0666666666666667,0,0.0,0,0.0,1.0,0.0,0.0,,,5732197.1,0.0,4178.0,0.8,1 +,PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost_pu,NoLoadCost_pu,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,Nunits,Extendable,Investment,FixedCost,EconomicLifetime +CH_STUR_NUC,843.7500000000001,CH_STUR_NUC,CH,STUR,NUC,1.0,24,24,0.00333333333333333,0.00333333333333333,300,0.0,0,0.5,1.0,12.0,0.0,,,,,,,4.0,,,, +CH_PHOT_SUN,1394.0,CH_PHOT_SUN,CH,PHOT,SUN,1.0,0,0,0.02,0.02,0,0.0,0,0.0,1.0,0.0,0.0,,,,,,,1.0,,,, +CH_HPHS_WAT,8979.8,CH_HPHS_WAT,CH,HPHS,WAT,0.8,0,0,0.0666666666666667,0.0666666666666667,0,0.0,0,0.0,1.0,0.0,0.0,,,5732197.1,0.0,4178.0,0.8,1.0,,,, diff --git a/Database/PowerPlants/CY/2015.csv b/Database/PowerPlants/CY/2015.csv index ac393fbb..105f2089 100644 --- a/Database/PowerPlants/CY/2015.csv +++ b/Database/PowerPlants/CY/2015.csv @@ -1,25 +1,25 @@ -,PowerCapacity,Type,Unit,Zone,Technology,Fuel,JRC_id,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost,NoLoadCost,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,RampUpMax,RampDownMax,RampStartUpMaximum,RampShutDownMaximum,CO2Intensity,CHPType,CHPPowerToHeat,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,CostFixed -1,37.5,Fossil Gas,M07GTG_1-37.5MW,CY,GTUR,OIL,0,0.306,,,0.13333,0.13333,2500,,0,0.106,0.1522,0,,,,,0,,,,,,,240 -2,37.5,Fossil Gas,M08GTG_2-37.5MW,CY,GTUR,OIL,0,0.306,,,0.13333,0.13333,2500,,0,0.106,0.1522,0,,,,,0,,,,,,,240 -3,37.5,Fossil Gas,M09GTG_3-37.5MW,CY,GTUR,OIL,0,0.306,,,0.13333,0.13333,2500,,0,0.106,0.1522,0,,,,,0,,,,,,,240 -4,37.5,Fossil Gas,M10GTG_4-37.5MW,CY,GTUR,OIL,0,0.306,,,0.13333,0.13333,2500,,0,0.106,0.1522,0,,,,,0,,,,,,,240 -5,60,Fossil Gas,D1STG-60MW,CY,STUR,OIL,0,0.316,,,0.025,0.0333,10000,,0,0.4833,0.2867,0,,,,,0,,,,,,,30 -6,60,Fossil Gas,D2STG-60MW,CY,STUR,OIL,0,0.316,,,0.025,0.0333,10000,,0,0.4833,0.2867,0,,,,,0,,,,,,,30 -7,60,Fossil Gas,D3STG-60MW,CY,STUR,OIL,0,0.316,,,0.025,0.0333,10000,,0,0.4833,0.2867,0,,,,,0,,,,,,,30 -8,60,Fossil Gas,D4STG-60MW,CY,STUR,OIL,0,0.316,,,0.025,0.0333,10000,,0,0.4833,0.2867,0,,,,,0,,,,,,,30 -9,60,Fossil Gas,D5STG-60MW,CY,STUR,OIL,0,0.316,,,0.025,0.0333,10000,,0,0.4833,0.2867,0,,,,,0,,,,,,,30 -10,60,Fossil Gas,D6STG-60MW,CY,STUR,OIL,0,0.316,,,0.025,0.0333,10000,,0,0.4833,0.2867,0,,,,,0,,,,,,,30 -11,17.48,Internal Combustion Engine,DICE1-17.48MW,CY,ICEN,OIL,0,0.421,,,0.0572,0.0572,1200,,0,0.8581,0.4063,0,,,,,0,,,,,,,85 -12,17.48,Internal Combustion Engine,DICE2-17.48MW,CY,ICEN,OIL,0,0.421,,,0.0572,0.0572,1200,,0,0.8581,0.4063,0,,,,,0,,,,,,,85 -13,17.48,Internal Combustion Engine,DICE3-17.48MW,CY,ICEN,OIL,0,0.421,,,0.0572,0.0572,1200,,0,0.8581,0.4063,0,,,,,0,,,,,,,85 -14,17.07,Internal Combustion Engine,DICE4-17.07MW,CY,ICEN,OIL,0,0.421,,,0.0586,0.0586,600,,0,0.8787,0.4063,0,,,,,0,,,,,,,85 -15,17.07,Internal Combustion Engine,DICE5-17.07MW,CY,ICEN,OIL,0,0.421,,,0.0586,0.0586,600,,0,0.8787,0.4063,0,,,,,0,,,,,,,85 -16,17.07,Internal Combustion Engine,DICE6-17.07MW,CY,ICEN,OIL,0,0.421,,,0.0586,0.0586,600,,0,0.8787,0.4063,0,,,,,0,,,,,,,85 -17,130,Fossil Gas,V1STG1-130MW,CY,STUR,OIL,0,0.4012,,,0.0277,0.0277,20000,,0,0.4435,0.3676,0,,,,,0,,,,,,,60 -18,130,Fossil Gas,V2STG1-130MW,CY,STUR,OIL,0,0.4012,,,0.0277,0.0277,20000,,0,0.4435,0.3676,0,,,,,0,,,,,,,60 -19,130,Fossil Gas,V3STG1-130MW,CY,STUR,OIL,0,0.4012,,,0.0277,0.0277,20000,,0,0.4435,0.3676,0,,,,,0,,,,,,,60 -20,37.5,Fossil Gas,V-GTG-37.5MW,CY,GTUR,OIL,0,0.306,,,0.1333,0.1333,2500,,0,0.106,0.1522,0,,,,,0,,,,,,,240 -21,216,Fossil Gas,Vasilikos CCCP1,CY,COMC,OIL,0,0.4868,6,,0.027272727,0.027272727,17500,,0,0.272727273,0.4793,0,,,,,0,,,,,,,870 -22,216,Fossil Gas,Vasilikos CCCP2,CY,COMC,OIL,0,0.4868,6,,0.027272727,0.027272727,17500,,0,0.272727273,0.4793,0,,,,,0,,,,,,,870 -23,147,Wind Onshore,DispaSET WindOn_CY,CY,WTON,WIN,0,1,0,0,0.1080864692,0.1080864692,0,0,0,0,1,0,0,0,0,0,0,,,,,,, -24,61,Photovoltaic,DispaSET PHOT_CY,BE,PHOT,SUN,0,1,0,0,0.3047748053,0.3047748053,0,0,0,0,1,0,0,0,0,0,0,,,,,,, \ No newline at end of file +,PowerCapacity,Type,Unit,Zone,Technology,Fuel,JRC_id,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost,NoLoadCost,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,RampUpMax,RampDownMax,RampStartUpMaximum,RampShutDownMaximum,CO2Intensity,CHPType,CHPPowerToHeat,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,CostFixed,Extendable,Investment,FixedCost,EconomicLifetime +1,37.5,Fossil Gas,M07GTG_1-37.5MW,CY,GTUR,OIL,0,0.306,,,0.13333,0.13333,2500,,0,0.106,0.1522,0,,,,,0,,,,,,,240.0,,,, +2,37.5,Fossil Gas,M08GTG_2-37.5MW,CY,GTUR,OIL,0,0.306,,,0.13333,0.13333,2500,,0,0.106,0.1522,0,,,,,0,,,,,,,240.0,,,, +3,37.5,Fossil Gas,M09GTG_3-37.5MW,CY,GTUR,OIL,0,0.306,,,0.13333,0.13333,2500,,0,0.106,0.1522,0,,,,,0,,,,,,,240.0,,,, +4,37.5,Fossil Gas,M10GTG_4-37.5MW,CY,GTUR,OIL,0,0.306,,,0.13333,0.13333,2500,,0,0.106,0.1522,0,,,,,0,,,,,,,240.0,,,, +5,60.0,Fossil Gas,D1STG-60MW,CY,STUR,OIL,0,0.316,,,0.025,0.0333,10000,,0,0.4833,0.2867,0,,,,,0,,,,,,,30.0,,,, +6,60.0,Fossil Gas,D2STG-60MW,CY,STUR,OIL,0,0.316,,,0.025,0.0333,10000,,0,0.4833,0.2867,0,,,,,0,,,,,,,30.0,,,, +7,60.0,Fossil Gas,D3STG-60MW,CY,STUR,OIL,0,0.316,,,0.025,0.0333,10000,,0,0.4833,0.2867,0,,,,,0,,,,,,,30.0,,,, +8,60.0,Fossil Gas,D4STG-60MW,CY,STUR,OIL,0,0.316,,,0.025,0.0333,10000,,0,0.4833,0.2867,0,,,,,0,,,,,,,30.0,,,, +9,60.0,Fossil Gas,D5STG-60MW,CY,STUR,OIL,0,0.316,,,0.025,0.0333,10000,,0,0.4833,0.2867,0,,,,,0,,,,,,,30.0,,,, +10,60.0,Fossil Gas,D6STG-60MW,CY,STUR,OIL,0,0.316,,,0.025,0.0333,10000,,0,0.4833,0.2867,0,,,,,0,,,,,,,30.0,,,, +11,17.48,Internal Combustion Engine,DICE1-17.48MW,CY,ICEN,OIL,0,0.42100000000000004,,,0.0572,0.0572,1200,,0,0.8581,0.4063,0,,,,,0,,,,,,,85.0,,,, +12,17.48,Internal Combustion Engine,DICE2-17.48MW,CY,ICEN,OIL,0,0.42100000000000004,,,0.0572,0.0572,1200,,0,0.8581,0.4063,0,,,,,0,,,,,,,85.0,,,, +13,17.48,Internal Combustion Engine,DICE3-17.48MW,CY,ICEN,OIL,0,0.42100000000000004,,,0.0572,0.0572,1200,,0,0.8581,0.4063,0,,,,,0,,,,,,,85.0,,,, +14,17.07,Internal Combustion Engine,DICE4-17.07MW,CY,ICEN,OIL,0,0.42100000000000004,,,0.0586,0.0586,600,,0,0.8787,0.4063,0,,,,,0,,,,,,,85.0,,,, +15,17.07,Internal Combustion Engine,DICE5-17.07MW,CY,ICEN,OIL,0,0.42100000000000004,,,0.0586,0.0586,600,,0,0.8787,0.4063,0,,,,,0,,,,,,,85.0,,,, +16,17.07,Internal Combustion Engine,DICE6-17.07MW,CY,ICEN,OIL,0,0.42100000000000004,,,0.0586,0.0586,600,,0,0.8787,0.4063,0,,,,,0,,,,,,,85.0,,,, +17,130.0,Fossil Gas,V1STG1-130MW,CY,STUR,OIL,0,0.4012,,,0.0277,0.0277,20000,,0,0.4435,0.3676,0,,,,,0,,,,,,,60.0,,,, +18,130.0,Fossil Gas,V2STG1-130MW,CY,STUR,OIL,0,0.4012,,,0.0277,0.0277,20000,,0,0.4435,0.3676,0,,,,,0,,,,,,,60.0,,,, +19,130.0,Fossil Gas,V3STG1-130MW,CY,STUR,OIL,0,0.4012,,,0.0277,0.0277,20000,,0,0.4435,0.3676,0,,,,,0,,,,,,,60.0,,,, +20,37.5,Fossil Gas,V-GTG-37.5MW,CY,GTUR,OIL,0,0.306,,,0.1333,0.1333,2500,,0,0.106,0.1522,0,,,,,0,,,,,,,240.0,,,, +21,216.0,Fossil Gas,Vasilikos CCCP1,CY,COMC,OIL,0,0.4868,6.0,,0.027272727000000004,0.027272727000000004,17500,,0,0.272727273,0.4793,0,,,,,0,,,,,,,870.0,,,, +22,216.0,Fossil Gas,Vasilikos CCCP2,CY,COMC,OIL,0,0.4868,6.0,,0.027272727000000004,0.027272727000000004,17500,,0,0.272727273,0.4793,0,,,,,0,,,,,,,870.0,,,, +23,147.0,Wind Onshore,DispaSET WindOn_CY,CY,WTON,WIN,0,1.0,0.0,0.0,0.1080864692,0.1080864692,0,0.0,0,0.0,1.0,0,0.0,0.0,0.0,0.0,0,,,,,,,,,,, +24,61.0,Photovoltaic,DispaSET PHOT_CY,BE,PHOT,SUN,0,1.0,0.0,0.0,0.3047748053,0.3047748053,0,0.0,0,0.0,1.0,0,0.0,0.0,0.0,0.0,0,,,,,,,,,,, diff --git a/Database/PowerPlants/CY/2015_heat.csv b/Database/PowerPlants/CY/2015_heat.csv index ef339ccc..fb951bbd 100644 --- a/Database/PowerPlants/CY/2015_heat.csv +++ b/Database/PowerPlants/CY/2015_heat.csv @@ -1,25 +1,25 @@ -,PowerCapacity,Type,Unit,Zone,Technology,Fuel,JRC_id,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost,NoLoadCost,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,CHPPowerLossFactor,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,CHPMaxHeat -1,37.5,Fossil Gas,M07GTG_1-37.5MW,CY,GTUR,OIL,0,0.306,,,0.13333,0.13333,2500,240,0,0.106,0.1522,0,0,,,,,,,, -2,37.5,Fossil Gas,M08GTG_2-37.5MW,CY,GTUR,OIL,0,0.306,,,0.13333,0.13333,2500,240,0,0.106,0.1522,0,0,,,,,,,, -3,37.5,Fossil Gas,M09GTG_3-37.5MW,CY,GTUR,OIL,0,0.306,,,0.13333,0.13333,2500,240,0,0.106,0.1522,0,0,,,,,,,, -4,37.5,Fossil Gas,M10GTG_4-37.5MW,CY,GTUR,OIL,0,0.306,,,0.13333,0.13333,2500,240,0,0.106,0.1522,0,0,,,,,,,, -5,60,Fossil Gas,D1STG-60MW,CY,STUR,OIL,0,0.316,,,0.025,0.0333,10000,30,0,0.4833,0.2867,0,0,,,,,,,, -6,60,Fossil Gas,D2STG-60MW,CY,STUR,OIL,0,0.316,,,0.025,0.0333,10000,30,0,0.4833,0.2867,0,0,,,,,,,, -7,60,Fossil Gas,D3STG-60MW,CY,STUR,OIL,0,0.316,,,0.025,0.0333,10000,30,0,0.4833,0.2867,0,0,,,,,,,, -8,60,Fossil Gas,D4STG-60MW,CY,STUR,OIL,0,0.316,,,0.025,0.0333,10000,30,0,0.4833,0.2867,0,0,,,,,,,, -9,60,Fossil Gas,D5STG-60MW,CY,STUR,OIL,0,0.316,,,0.025,0.0333,10000,30,0,0.4833,0.2867,0,0,,,,,,,, -10,60,Fossil Gas,D6STG-60MW,CY,STUR,OIL,0,0.316,,,0.025,0.0333,10000,30,0,0.4833,0.2867,0,0,,,,,,,, -11,17.48,Internal Combustion Engine,DICE1-17.48MW,CY,ICEN,OIL,0,0.421,,,0.0572,0.0572,1200,85,0,0.8581,0.4063,0,0,,,,,,,, -12,17.48,Internal Combustion Engine,DICE2-17.48MW,CY,ICEN,OIL,0,0.421,,,0.0572,0.0572,1200,85,0,0.8581,0.4063,0,0,,,,,,,, -13,17.48,Internal Combustion Engine,DICE3-17.48MW,CY,ICEN,OIL,0,0.421,,,0.0572,0.0572,1200,85,0,0.8581,0.4063,0,0,,,,,,,, -14,17.07,Internal Combustion Engine,DICE4-17.07MW,CY,ICEN,OIL,0,0.421,,,0.0586,0.0586,600,85,0,0.8787,0.4063,0,0,,,,,,,, -15,17.07,Internal Combustion Engine,DICE5-17.07MW,CY,ICEN,OIL,0,0.421,,,0.0586,0.0586,600,85,0,0.8787,0.4063,0,0,,,,,,,, -16,17.07,Internal Combustion Engine,DICE6-17.07MW,CY,ICEN,OIL,0,0.421,,,0.0586,0.0586,600,85,0,0.8787,0.4063,0,0,,,,,,,, -17,130,Fossil Gas,V1STG1-130MW,CY,STUR,OIL,0,0.4012,,,0.0277,0.0277,20000,60,0,0.4435,0.3676,0,0,,,,,,,, -18,130,Fossil Gas,V2STG1-130MW,CY,STUR,OIL,0,0.4012,,,0.0277,0.0277,20000,60,0,0.4435,0.3676,0,0,,,,,,,, -19,130,Fossil Gas,V3STG1-130MW,CY,STUR,OIL,0,0.4012,,,0.0277,0.0277,20000,60,0,0.4435,0.3676,0,0,,,,,,,, -20,37.5,Fossil Gas,V-GTG-37.5MW,CY,GTUR,OIL,0,0.306,,,0.1333,0.1333,2500,240,0,0.106,0.1522,0,0,,,,,,,, -21,216,Fossil Gas,Vasilikos CCCP1,CY,COMC,OIL,0,0.4868,6,,0.027272727,0.027272727,17500,870,0,0.272727273,0.4793,0,0,,,,,,,, -22,216,Fossil Gas,Vasilikos CCCP2,CY,COMC,OIL,0,0.4868,6,,0.027272727,0.027272727,17500,870,0,0.272727273,0.4793,0,0,Extraction,1,0.18,1500,0.03,,,150 -23,147,Wind Onshore,DispaSET WindOn_CY,CY,WTON,WIN,0,1,0,0,0.1080864692,0.1080864692,0,0,0,0,1,0,0,,,,,,,, -24,61,Photovoltaic,DispaSET PHOT_CY,CY,PHOT,SUN,0,1,0,0,0.3047748053,0.3047748053,0,0,0,0,1,0,0,,,,,,,, +,PowerCapacity,Type,Unit,Zone,Technology,Fuel,JRC_id,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost,NoLoadCost,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,CHPPowerLossFactor,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,CHPMaxHeat,Extendable,Investment,FixedCost,EconomicLifetime +1,37.5,Fossil Gas,M07GTG_1-37.5MW,CY,GTUR,OIL,0,0.306,,,0.13333,0.13333,2500,240,0,0.106,0.1522,0,0,,,,,,,,,,,, +2,37.5,Fossil Gas,M08GTG_2-37.5MW,CY,GTUR,OIL,0,0.306,,,0.13333,0.13333,2500,240,0,0.106,0.1522,0,0,,,,,,,,,,,, +3,37.5,Fossil Gas,M09GTG_3-37.5MW,CY,GTUR,OIL,0,0.306,,,0.13333,0.13333,2500,240,0,0.106,0.1522,0,0,,,,,,,,,,,, +4,37.5,Fossil Gas,M10GTG_4-37.5MW,CY,GTUR,OIL,0,0.306,,,0.13333,0.13333,2500,240,0,0.106,0.1522,0,0,,,,,,,,,,,, +5,60.0,Fossil Gas,D1STG-60MW,CY,STUR,OIL,0,0.316,,,0.025,0.0333,10000,30,0,0.4833,0.2867,0,0,,,,,,,,,,,, +6,60.0,Fossil Gas,D2STG-60MW,CY,STUR,OIL,0,0.316,,,0.025,0.0333,10000,30,0,0.4833,0.2867,0,0,,,,,,,,,,,, +7,60.0,Fossil Gas,D3STG-60MW,CY,STUR,OIL,0,0.316,,,0.025,0.0333,10000,30,0,0.4833,0.2867,0,0,,,,,,,,,,,, +8,60.0,Fossil Gas,D4STG-60MW,CY,STUR,OIL,0,0.316,,,0.025,0.0333,10000,30,0,0.4833,0.2867,0,0,,,,,,,,,,,, +9,60.0,Fossil Gas,D5STG-60MW,CY,STUR,OIL,0,0.316,,,0.025,0.0333,10000,30,0,0.4833,0.2867,0,0,,,,,,,,,,,, +10,60.0,Fossil Gas,D6STG-60MW,CY,STUR,OIL,0,0.316,,,0.025,0.0333,10000,30,0,0.4833,0.2867,0,0,,,,,,,,,,,, +11,17.48,Internal Combustion Engine,DICE1-17.48MW,CY,ICEN,OIL,0,0.42100000000000004,,,0.0572,0.0572,1200,85,0,0.8581,0.4063,0,0,,,,,,,,,,,, +12,17.48,Internal Combustion Engine,DICE2-17.48MW,CY,ICEN,OIL,0,0.42100000000000004,,,0.0572,0.0572,1200,85,0,0.8581,0.4063,0,0,,,,,,,,,,,, +13,17.48,Internal Combustion Engine,DICE3-17.48MW,CY,ICEN,OIL,0,0.42100000000000004,,,0.0572,0.0572,1200,85,0,0.8581,0.4063,0,0,,,,,,,,,,,, +14,17.07,Internal Combustion Engine,DICE4-17.07MW,CY,ICEN,OIL,0,0.42100000000000004,,,0.0586,0.0586,600,85,0,0.8787,0.4063,0,0,,,,,,,,,,,, +15,17.07,Internal Combustion Engine,DICE5-17.07MW,CY,ICEN,OIL,0,0.42100000000000004,,,0.0586,0.0586,600,85,0,0.8787,0.4063,0,0,,,,,,,,,,,, +16,17.07,Internal Combustion Engine,DICE6-17.07MW,CY,ICEN,OIL,0,0.42100000000000004,,,0.0586,0.0586,600,85,0,0.8787,0.4063,0,0,,,,,,,,,,,, +17,130.0,Fossil Gas,V1STG1-130MW,CY,STUR,OIL,0,0.4012,,,0.0277,0.0277,20000,60,0,0.4435,0.3676,0,0,,,,,,,,,,,, +18,130.0,Fossil Gas,V2STG1-130MW,CY,STUR,OIL,0,0.4012,,,0.0277,0.0277,20000,60,0,0.4435,0.3676,0,0,,,,,,,,,,,, +19,130.0,Fossil Gas,V3STG1-130MW,CY,STUR,OIL,0,0.4012,,,0.0277,0.0277,20000,60,0,0.4435,0.3676,0,0,,,,,,,,,,,, +20,37.5,Fossil Gas,V-GTG-37.5MW,CY,GTUR,OIL,0,0.306,,,0.1333,0.1333,2500,240,0,0.106,0.1522,0,0,,,,,,,,,,,, +21,216.0,Fossil Gas,Vasilikos CCCP1,CY,COMC,OIL,0,0.4868,6.0,,0.027272727000000004,0.027272727000000004,17500,870,0,0.272727273,0.4793,0,0,,,,,,,,,,,, +22,216.0,Fossil Gas,Vasilikos CCCP2,CY,COMC,OIL,0,0.4868,6.0,,0.027272727000000004,0.027272727000000004,17500,870,0,0.272727273,0.4793,0,0,Extraction,1.0,0.18,1500.0,0.03,,,150.0,,,, +23,147.0,Wind Onshore,DispaSET WindOn_CY,CY,WTON,WIN,0,1.0,0.0,0.0,0.1080864692,0.1080864692,0,0,0,0.0,1.0,0,0,,,,,,,,,,,, +24,61.0,Photovoltaic,DispaSET PHOT_CY,CY,PHOT,SUN,0,1.0,0.0,0.0,0.3047748053,0.3047748053,0,0,0,0.0,1.0,0,0,,,,,,,,,,,, diff --git a/Database/PowerPlants/CY/2015_heatpump.csv b/Database/PowerPlants/CY/2015_heatpump.csv index f504984f..bc7a2131 100644 --- a/Database/PowerPlants/CY/2015_heatpump.csv +++ b/Database/PowerPlants/CY/2015_heatpump.csv @@ -1,25 +1,25 @@ -,PowerCapacity,Type,Unit,Zone,Technology,Fuel,JRC_id,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost,NoLoadCost,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,CHPPowerLossFactor,CHPMaxHeat,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency -1,37.5,Fossil Gas,M07GTG_1-37.5MW,CY,GTUR,OIL,0,0.306,,,0.13333,0.13333,2500,240,0,0.106,0.1522,0,0,,,,,,,, -2,37.5,Fossil Gas,M08GTG_2-37.5MW,CY,GTUR,OIL,0,0.306,,,0.13333,0.13333,2500,240,0,0.106,0.1522,0,0,,,,,,,, -3,37.5,Fossil Gas,M09GTG_3-37.5MW,CY,GTUR,OIL,0,0.306,,,0.13333,0.13333,2500,240,0,0.106,0.1522,0,0,,,,,,,, -4,37.5,Fossil Gas,M10GTG_4-37.5MW,CY,GTUR,OIL,0,0.306,,,0.13333,0.13333,2500,240,0,0.106,0.1522,0,0,,,,,,,, -5,60,Fossil Gas,D1STG-60MW,CY,STUR,OIL,0,0.316,,,0.025,0.0333,10000,30,0,0.4833,0.2867,0,0,,,,,,,, -6,60,Fossil Gas,D2STG-60MW,CY,STUR,OIL,0,0.316,,,0.025,0.0333,10000,30,0,0.4833,0.2867,0,0,,,,,,,, -7,60,Fossil Gas,D3STG-60MW,CY,STUR,OIL,0,0.316,,,0.025,0.0333,10000,30,0,0.4833,0.2867,0,0,,,,,,,, -8,60,Fossil Gas,D4STG-60MW,CY,STUR,OIL,0,0.316,,,0.025,0.0333,10000,30,0,0.4833,0.2867,0,0,,,,,,,, -9,60,Fossil Gas,D5STG-60MW,CY,STUR,OIL,0,0.316,,,0.025,0.0333,10000,30,0,0.4833,0.2867,0,0,,,,,,,, -10,60,Fossil Gas,D6STG-60MW,CY,STUR,OIL,0,0.316,,,0.025,0.0333,10000,30,0,0.4833,0.2867,0,0,,,,,,,, -11,17.48,Internal Combustion Engine,DICE1-17.48MW,CY,ICEN,OIL,0,0.421,,,0.0572,0.0572,1200,85,0,0.8581,0.4063,0,0,,,,,,,, -12,17.48,Internal Combustion Engine,DICE2-17.48MW,CY,ICEN,OIL,0,0.421,,,0.0572,0.0572,1200,85,0,0.8581,0.4063,0,0,,,,,,,, -13,17.48,Internal Combustion Engine,DICE3-17.48MW,CY,ICEN,OIL,0,0.421,,,0.0572,0.0572,1200,85,0,0.8581,0.4063,0,0,,,,,,,, -14,17.07,Internal Combustion Engine,DICE4-17.07MW,CY,ICEN,OIL,0,0.421,,,0.0586,0.0586,600,85,0,0.8787,0.4063,0,0,,,,,,,, -15,17.07,Internal Combustion Engine,DICE5-17.07MW,CY,ICEN,OIL,0,0.421,,,0.0586,0.0586,600,85,0,0.8787,0.4063,0,0,,,,,,,, -16,17.07,Internal Combustion Engine,DICE6-17.07MW,CY,ICEN,OIL,0,0.421,,,0.0586,0.0586,600,85,0,0.8787,0.4063,0,0,,,,,,,, -17,130,Fossil Gas,V1STG1-130MW,CY,STUR,OIL,0,0.4012,,,0.0277,0.0277,20000,60,0,0.4435,0.3676,0,0,,,,,,,, -18,130,Fossil Gas,V2STG1-130MW,CY,STUR,OIL,0,0.4012,,,0.0277,0.0277,20000,60,0,0.4435,0.3676,0,0,,,,,,,, -19,130,Fossil Gas,V3STG1-130MW,CY,STUR,OIL,0,0.4012,,,0.0277,0.0277,20000,60,0,0.4435,0.3676,0,0,,,,,,,, -20,37.5,Fossil Gas,V-GTG-37.5MW,CY,GTUR,OIL,0,0.306,,,0.1333,0.1333,2500,240,0,0.106,0.1522,0,0,,,,,,,, -21,216,Fossil Gas,Vasilikos CCCP1,CY,COMC,OIL,0,0.4868,6,,0.027272727,0.027272727,17500,870,0,0.272727273,0.4793,0,0,p2h,0,0.25,100,800,0.03,, -22,216,Fossil Gas,Vasilikos CCCP2,CY,COMC,OIL,0,0.4868,6,,0.027272727,0.027272727,17500,870,0,0.272727273,0.4793,0,0,Extraction,1,0.18,,800,0.03,, -23,147,Wind Onshore,DispaSET WindOn_CY,CY,WTON,WIN,0,1,0,0,0.108086469,0.108086469,0,0,0,0,1,0,0,,,,,,,, -24,61,Photovoltaic,DispaSET PHOT_CY,CY,PHOT,SUN,0,1,0,0,0.304774805,0.304774805,0,0,0,0,1,0,0,,,,,,,, +,PowerCapacity,Type,Unit,Zone,Technology,Fuel,JRC_id,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost,NoLoadCost,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,CHPPowerLossFactor,CHPMaxHeat,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,Extendable,Investment,FixedCost,EconomicLifetime +1,37.5,Fossil Gas,M07GTG_1-37.5MW,CY,GTUR,OIL,0,0.306,,,0.13333,0.13333,2500,240,0,0.106,0.1522,0,0,,,,,,,,,,,, +2,37.5,Fossil Gas,M08GTG_2-37.5MW,CY,GTUR,OIL,0,0.306,,,0.13333,0.13333,2500,240,0,0.106,0.1522,0,0,,,,,,,,,,,, +3,37.5,Fossil Gas,M09GTG_3-37.5MW,CY,GTUR,OIL,0,0.306,,,0.13333,0.13333,2500,240,0,0.106,0.1522,0,0,,,,,,,,,,,, +4,37.5,Fossil Gas,M10GTG_4-37.5MW,CY,GTUR,OIL,0,0.306,,,0.13333,0.13333,2500,240,0,0.106,0.1522,0,0,,,,,,,,,,,, +5,60.0,Fossil Gas,D1STG-60MW,CY,STUR,OIL,0,0.316,,,0.025,0.0333,10000,30,0,0.4833,0.2867,0,0,,,,,,,,,,,, +6,60.0,Fossil Gas,D2STG-60MW,CY,STUR,OIL,0,0.316,,,0.025,0.0333,10000,30,0,0.4833,0.2867,0,0,,,,,,,,,,,, +7,60.0,Fossil Gas,D3STG-60MW,CY,STUR,OIL,0,0.316,,,0.025,0.0333,10000,30,0,0.4833,0.2867,0,0,,,,,,,,,,,, +8,60.0,Fossil Gas,D4STG-60MW,CY,STUR,OIL,0,0.316,,,0.025,0.0333,10000,30,0,0.4833,0.2867,0,0,,,,,,,,,,,, +9,60.0,Fossil Gas,D5STG-60MW,CY,STUR,OIL,0,0.316,,,0.025,0.0333,10000,30,0,0.4833,0.2867,0,0,,,,,,,,,,,, +10,60.0,Fossil Gas,D6STG-60MW,CY,STUR,OIL,0,0.316,,,0.025,0.0333,10000,30,0,0.4833,0.2867,0,0,,,,,,,,,,,, +11,17.48,Internal Combustion Engine,DICE1-17.48MW,CY,ICEN,OIL,0,0.42100000000000004,,,0.0572,0.0572,1200,85,0,0.8581,0.4063,0,0,,,,,,,,,,,, +12,17.48,Internal Combustion Engine,DICE2-17.48MW,CY,ICEN,OIL,0,0.42100000000000004,,,0.0572,0.0572,1200,85,0,0.8581,0.4063,0,0,,,,,,,,,,,, +13,17.48,Internal Combustion Engine,DICE3-17.48MW,CY,ICEN,OIL,0,0.42100000000000004,,,0.0572,0.0572,1200,85,0,0.8581,0.4063,0,0,,,,,,,,,,,, +14,17.07,Internal Combustion Engine,DICE4-17.07MW,CY,ICEN,OIL,0,0.42100000000000004,,,0.0586,0.0586,600,85,0,0.8787,0.4063,0,0,,,,,,,,,,,, +15,17.07,Internal Combustion Engine,DICE5-17.07MW,CY,ICEN,OIL,0,0.42100000000000004,,,0.0586,0.0586,600,85,0,0.8787,0.4063,0,0,,,,,,,,,,,, +16,17.07,Internal Combustion Engine,DICE6-17.07MW,CY,ICEN,OIL,0,0.42100000000000004,,,0.0586,0.0586,600,85,0,0.8787,0.4063,0,0,,,,,,,,,,,, +17,130.0,Fossil Gas,V1STG1-130MW,CY,STUR,OIL,0,0.4012,,,0.0277,0.0277,20000,60,0,0.4435,0.3676,0,0,,,,,,,,,,,, +18,130.0,Fossil Gas,V2STG1-130MW,CY,STUR,OIL,0,0.4012,,,0.0277,0.0277,20000,60,0,0.4435,0.3676,0,0,,,,,,,,,,,, +19,130.0,Fossil Gas,V3STG1-130MW,CY,STUR,OIL,0,0.4012,,,0.0277,0.0277,20000,60,0,0.4435,0.3676,0,0,,,,,,,,,,,, +20,37.5,Fossil Gas,V-GTG-37.5MW,CY,GTUR,OIL,0,0.306,,,0.1333,0.1333,2500,240,0,0.106,0.1522,0,0,,,,,,,,,,,, +21,216.0,Fossil Gas,Vasilikos CCCP1,CY,COMC,OIL,0,0.4868,6.0,,0.027272727000000004,0.027272727000000004,17500,870,0,0.272727273,0.4793,0,0,p2h,0.0,0.25,100.0,800.0,0.03,,,,,, +22,216.0,Fossil Gas,Vasilikos CCCP2,CY,COMC,OIL,0,0.4868,6.0,,0.027272727000000004,0.027272727000000004,17500,870,0,0.272727273,0.4793,0,0,Extraction,1.0,0.18,,800.0,0.03,,,,,, +23,147.0,Wind Onshore,DispaSET WindOn_CY,CY,WTON,WIN,0,1.0,0.0,0.0,0.108086469,0.108086469,0,0,0,0.0,1.0,0,0,,,,,,,,,,,, +24,61.0,Photovoltaic,DispaSET PHOT_CY,CY,PHOT,SUN,0,1.0,0.0,0.0,0.304774805,0.304774805,0,0,0,0.0,1.0,0,0,,,,,,,,,,,, diff --git a/Database/PowerPlants/CZ/clustered.csv b/Database/PowerPlants/CZ/clustered.csv index 5bf2118b..70f78698 100644 --- a/Database/PowerPlants/CZ/clustered.csv +++ b/Database/PowerPlants/CZ/clustered.csv @@ -1,10 +1,10 @@ -,PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost_pu,NoLoadCost_pu,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,CHPPowerLossFactor,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,CHPMaxHeat,Nunits -CZ_STUR_BIO,175,CZ_STUR_BIO,CZ,STUR,BIO,0.46,4,6,0.02,0.02,120,12.5,1.3,0.35,0.35,1,0,back-pressure,1,0,,,,,175,4 -CZ_COMC_GAS,245.9706691,CZ_COMC_GAS,CZ,COMC,GAS,0.57,2,4,0.03,0.03,55,0,0,0.36,0.57,1,0.42,,,,,,,,,2 -CZ_STUR_HRD,600,CZ_STUR_HRD,CZ,STUR,HRD,0.46,8,8,0.017777778,0.017777778,65,0,0,0.3,0.46,2,0.81,,,,,,,,,2 -CZ_STUR_LIG,757.6363636,CZ_STUR_LIG,CZ,STUR,LIG,0.393,8,8,0.01520979,0.017482517,65,12.56164384,0,0.389,0.4075,5,1.05,,,,,,,,,11 -CZ_STUR_NUC,808,CZ_STUR_NUC,CZ,STUR,NUC,1,24,24,0.003333333,0.003333333,300,0,0,0.5,1,12,0,,,,,,,,,5 -CZ_PHOT_SUN,2027,CZ_PHOT_SUN,CZ,PHOT,SUN,1,0,0,0.02,0.02,0,0,0,0,1,0,0,,,,,,,,,1 -CZ_HROR_WAT,431,CZ_HROR_WAT,CZ,HROR,WAT,1,0,0,0.02,0.02,0,0,0,0,1,0,0,,,,,,,,,1 -CZ_HPHS_WAT,1822,CZ_HPHS_WAT,CZ,HPHS,WAT,0.8,0,0,0.066666667,0.066666667,0,0,0,0,1,0,0,,,,9110,0,1172,0.8,,1 -CZ_WTON_WIN,277,CZ_WTON_WIN,CZ,WTON,WIN,1,0,0,0.02,0.02,0,0,0,0,1,0,0,,,,,,,,,1 +,PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost_pu,NoLoadCost_pu,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,CHPPowerLossFactor,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,CHPMaxHeat,Nunits,Extendable,Investment,FixedCost,EconomicLifetime +CZ_STUR_BIO,175.0,CZ_STUR_BIO,CZ,STUR,BIO,0.46,4,6,0.02,0.02,120,12.5,1.3,0.35,0.35,1,0.0,back-pressure,1.0,0.0,,,,,175.0,4,,,, +CZ_COMC_GAS,245.9706691,CZ_COMC_GAS,CZ,COMC,GAS,0.57,2,4,0.03,0.03,55,0.0,0.0,0.36,0.57,1,0.42,,,,,,,,,2,,,, +CZ_STUR_HRD,600.0,CZ_STUR_HRD,CZ,STUR,HRD,0.46,8,8,0.017777778,0.017777778,65,0.0,0.0,0.3,0.46,2,0.81,,,,,,,,,2,,,, +CZ_STUR_LIG,757.6363636,CZ_STUR_LIG,CZ,STUR,LIG,0.39299999999999996,8,8,0.01520979,0.017482517,65,12.56164384,0.0,0.389,0.4075,5,1.05,,,,,,,,,11,,,, +CZ_STUR_NUC,808.0,CZ_STUR_NUC,CZ,STUR,NUC,1.0,24,24,0.003333333,0.003333333,300,0.0,0.0,0.5,1.0,12,0.0,,,,,,,,,5,,,, +CZ_PHOT_SUN,2027.0,CZ_PHOT_SUN,CZ,PHOT,SUN,1.0,0,0,0.02,0.02,0,0.0,0.0,0.0,1.0,0,0.0,,,,,,,,,1,,,, +CZ_HROR_WAT,431.0,CZ_HROR_WAT,CZ,HROR,WAT,1.0,0,0,0.02,0.02,0,0.0,0.0,0.0,1.0,0,0.0,,,,,,,,,1,,,, +CZ_HPHS_WAT,1822.0,CZ_HPHS_WAT,CZ,HPHS,WAT,0.8,0,0,0.066666667,0.066666667,0,0.0,0.0,0.0,1.0,0,0.0,,,,9110.0,0.0,1172.0,0.8,,1,,,, +CZ_WTON_WIN,277.0,CZ_WTON_WIN,CZ,WTON,WIN,1.0,0,0,0.02,0.02,0,0.0,0.0,0.0,1.0,0,0.0,,,,,,,,,1,,,, diff --git a/Database/PowerPlants/DE/2015.csv b/Database/PowerPlants/DE/2015.csv index e3a3a99d..6e60c893 100644 --- a/Database/PowerPlants/DE/2015.csv +++ b/Database/PowerPlants/DE/2015.csv @@ -1,141 +1,141 @@ -PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost,NoLoadCost,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency -3000,KW Janschwalde,DE,STUR,LIG,0.385,8,6,0.0016666667,0.0016666667,136849.915,0,0,0.3,0.385,7,1,,,,,, -2484,KW Boxberg,DE,STUR,LIG,0.385,8,6,0.0020128824,0.0020128824,136849.915,0,0,0.3,0.385,7,1,,,,,, -1782,KW Lippendorf,DE,STUR,LIG,0.385,8,6,0.0028058361,0.0028058361,136849.915,0,0,0.3,0.385,7,1,,,,,, -1600,KW Moorburg,DE,STUR,HRD,0.395,8,6,0.003125,0.003125,117242.17,0,0,0.3,0.395,7,0.95,,,,,, -1524,KW Schwarze Pumpe,DE,STUR,LIG,0.385,8,6,0.0032808399,0.0032808399,136849.915,0,0,0.3,0.385,7,1,,,,,, -1060,PSW Goldisthal,DE,HPHS,WAT,0.86,0,0,0.2830188679,0.2830188679,0,0,0,0,0.86,0.3,0,,,6678,0,1060,0.86 -900,Schkopau,DE,STUR,LIG,0.385,8,6,0.0055555556,0.0055555556,136849.915,0,0,0.3,0.385,7,1,,,,,, -870,PSW Markersbach,DE,HPHS,WAT,0.86,0,0,0.3448275862,0.3448275862,0,0,0,0,0.86,0.3,0,,,5481,0,870,0.86 -564,HKW Reuter West,DE,STUR,HRD,0.395,8,6,0.0088652482,0.0088652482,117242.17,0,0,0.3,0.395,7,0.95,,,,,, -514,Kraftwerk Rostock,DE,STUR,HRD,0.395,8,6,0.0097276265,0.0097276265,117242.17,0,0,0.3,0.395,7,0.95,,,,,, -444,Heizkraftwerk Mitte,DE,COMC,GAS,0.525,5,1,0.0251576577,0.0251576577,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -359,Industriekraftwerk PCK,DE,STUR,OIL,0.41,8,6,0.0139275766,0.0139275766,35280.965,0,0,0.3,0.41,7,0.79,,,,,, -336,Windpark Baltic 1 and 2,DE,WTOF,WIN,1,0,0,0.4166666667,0.4166666667,0,0,0,0,1,0,0,,,,,, -320,PSW Hohenwarte II,DE,HPHS,WAT,0.86,0,0,0.9375,0.9375,0,0,0,0,0.86,0.3,0,,,2016,0,320,0.86 -314,HKW Tiefstack,DE,STUR,HRD,0.395,8,6,0.0159235669,0.0159235669,117242.17,0,0,0.3,0.395,7,0.95,,,,,, -300,Thyrow,DE,COMC,GAS,0.525,5,1,0.0372333333,0.0372333333,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -288,HKW Lichterfelde,DE,COMC,GAS,0.525,5,1,0.0387847222,0.0387847222,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -276,Wilmersdorf,DE,STUR,OIL,0.41,8,6,0.018115942,0.018115942,35280.965,0,0,0.3,0.41,7,0.79,,,,,, -270,Heizkraftwerk Nossener Bruecke,DE,COMC,GAS,0.525,5,1,0.0413703704,0.0413703704,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -256,Brunsb??ttel,DE,STUR,OIL,0.41,8,6,0.01953125,0.01953125,35280.965,0,0,0.3,0.41,7,0.79,,,,,, -250,HKW Wedel,DE,STUR,HRD,0.395,8,6,0.02,0.02,117242.17,0,0,0.3,0.395,7,0.95,,,,,, -213,Charlottenburg,DE,COMC,GAS,0.525,5,1,0.0524413146,0.0524413146,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -167,HKW Nord 2,DE,COMC,GAS,0.525,5,1,0.0668862275,0.0668862275,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -164,HKW Klingenberg,DE,STUR,LIG,0.385,8,6,0.0304878049,0.0304878049,136849.915,0,0,0.3,0.385,7,1,,,,,, -160,HKW Reuter,DE,STUR,HRD,0.395,8,6,0.03125,0.03125,117242.17,0,0,0.3,0.395,7,0.95,,,,,, -152,Ahrensfelde,DE,COMC,GAS,0.525,5,1,0.0734868421,0.0734868421,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -140,Moabit,DE,STUR,HRD,0.395,8,6,0.0357142857,0.0357142857,117242.17,0,0,0.3,0.395,7,0.95,,,,,, -120,PSW Geesthacht,DE,HPHS,WAT,0.86,0,0,2.5,2.5,0,0,0,0,0.86,0.3,0,,,756,0,120,0.86 -1824,Vorarlberger Illwerke AG,DE,HPHS,WAT,0.86,0,0,0.1644736842,0.1644736842,0,0,0,0,0.86,0.3,0,,,11491.2,0,1824,0.86 -1402,Kernkraftwerk Philippsburg,DE,STUR,NUC,0.405,24,24,0.002446505,0.002446505,200000,0,0,0.9,0.405,72,0,,,,,, -1347,Rheinhafen-Dampfkraftwerk Karlsruhe,DE,STUR,HRD,0.395,8,6,0.0037119525,0.0037119525,117242.17,0,0,0.3,0.395,7,0.95,,,,,, -1310,Kernkraftwerk Neckarwestheim,DE,STUR,NUC,0.405,24,24,0.0026183206,0.0026183206,200000,0,0,0.9,0.405,72,0,,,,,, -1022,HKW Altbach/Deizisau,DE,STUR,HRD,0.395,8,6,0.0048923679,0.0048923679,117242.17,0,0,0.3,0.395,7,0.95,,,,,, -778,Heizkraftwerk Heilbronn,DE,STUR,HRD,0.395,8,6,0.0064267352,0.0064267352,117242.17,0,0,0.3,0.395,7,0.95,,,,,, -455,Schluchseewerk AG 1,DE,HPHS,WAT,0.86,0,0,0.6593406593,0.6593406593,0,0,0,0,0.86,0.3,0,,,2866.5,0,455,0.86 -353,Rheinhafen-Dampfkraftwerk Karlsruhe 2,DE,COMC,GAS,0.525,5,1,0.0316430595,0.0316430595,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -235,Schluchseewerk AG 2,DE,HPHS,WAT,0.86,0,0,1.2765957447,1.2765957447,0,0,0,0,0.86,0.3,0,,,1480.5,0,235,0.86 -180,Schluchseewerk AG 3,DE,HPHS,WAT,0.86,0,0,1.6666666667,1.6666666667,0,0,0,0,0.86,0.3,0,,,1134,0,180,0.86 -178,Heizkraftwerk Stuttgart-Manster,DE,STUR,WST,0.465,7.335,7.335,1.8134831461,1.8134831461,0,0,0,0.3,0.465,0,0,,,,,, -146,Rheinkraftwerk Iffezheim,DE,HROR,WAT,1,0,0,1.5068493151,1.5068493151,0,0,0,0,1,0.3,0,,,,,, -136,Kraftwerk Walheim,DE,STUR,OIL,0.41,8,6,0.0367647059,0.0367647059,35280.965,0,0,0.3,0.41,7,0.79,,,,,, -106,KW Laufenburg,DE,HROR,WAT,1,0,0,2.0754716981,2.0754716981,0,0,0,0,1,0.3,0,,,,,, -100,KW Rheinfelden DE,DE,HROR,WAT,1,0,0,2.2,2.2,0,0,0,0,1,0.3,0,,,,,, -1811,Irsching,DE,COMC,GAS,0.525,5,1,0.0061678631,0.0061678631,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -1410,Isar 2,DE,STUR,NUC,0.405,24,24,0.0024326241,0.0024326241,200000,0,0,0.9,0.405,72,0,,,,,, -1410,Brokdorf,DE,STUR,NUC,0.405,24,24,0.0024326241,0.0024326241,200000,0,0,0.9,0.405,72,0,,,,,, -1360,Grohnde,DE,STUR,NUC,0.405,24,24,0.0025220588,0.0025220588,200000,0,0,0.9,0.405,72,0,,,,,, -1132,Staudinger,DE,STUR,HRD,0.395,8,6,0.0044169611,0.0044169611,117242.17,0,0,0.3,0.395,7,0.95,,,,,, -875,Heyden,DE,STUR,HRD,0.395,8,6,0.0057142857,0.0057142857,117242.17,0,0,0.3,0.395,7,0.95,,,,,, -823,Franken I,DE,COMC,GAS,0.525,5,1,0.0135722965,0.0135722965,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -772,Ingolstadt,DE,STUR,OIL,0.41,8,6,0.0064766839,0.0064766839,35280.965,0,0,0.3,0.41,7,0.79,,,,,, -757,Wilhelmshaven,DE,STUR,HRD,0.395,8,6,0.0066050198,0.0066050198,117242.17,0,0,0.3,0.395,7,0.95,,,,,, -720,Kraftwerk Wilhelmshaven,DE,STUR,HRD,0.395,8,6,0.0069444444,0.0069444444,117242.17,0,0,0.3,0.395,7,0.95,,,,,, -690,KW Mehrum (KWM),DE,STUR,HRD,0.395,8,6,0.0072463768,0.0072463768,117242.17,0,0,0.3,0.395,7,0.95,,,,,, -500,KW Silz,DE,HDAM,WAT,0.85,0,0,0.18,0.18,0,0,0,0,0.85,0.3,0,,,295000,0,0,0.86 -480,Waldeck II,DE,HPHS,WAT,0.86,0,0,0.625,0.625,0,0,0,0,0.86,0.3,0,,,3024,0,480,0.86 -472,Kraftwerk Zolling,DE,STUR,HRD,0.395,8,6,0.0105932203,0.0105932203,117242.17,0,0,0.3,0.395,7,0.95,,,,,, -427,KW Hafen,DE,STUR,HRD,0.395,8,6,0.0117096019,0.0117096019,117242.17,0,0,0.3,0.395,7,0.95,,,,,, -400,Sued GuD2,DE,COMC,GAS,0.525,5,1,0.027925,0.027925,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -400,Global Tech I,DE,WTOF,WIN,1,0,0,0.35,0.35,0,0,0,0,1,0,0,,,,,, -352,Kraftwerk Buschhaus,DE,STUR,LIG,0.385,8,6,0.0142045455,0.0142045455,136849.915,0,0,0.3,0.385,7,1,,,,,, -345,Kraftwerk Farge,DE,STUR,HRD,0.395,8,6,0.0144927536,0.0144927536,117242.17,0,0,0.3,0.395,7,0.95,,,,,, -333,Nord 2,DE,STUR,HRD,0.395,8,6,0.015015015,0.015015015,117242.17,0,0,0.3,0.395,7,0.95,,,,,, -323,Kiel,DE,STUR,HRD,0.395,8,6,0.0154798762,0.0154798762,117242.17,0,0,0.3,0.395,7,0.95,,,,,, -321,Huntorf,DE,COMC,GAS,0.525,5,1,0.0347975078,0.0347975078,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -312,Borkum Riffgrund I,DE,WTOF,WIN,1,0,0,0.4487179487,0.4487179487,0,0,0,0,1,0,0,,,,,, -298,Sued GuD1,DE,COMC,GAS,0.525,5,1,0.0374832215,0.0374832215,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -289,KW Kahtai,DE,HPHS,WAT,0.86,0,0,1.0380622837,1.0380622837,0,0,0,0,0.86,0.3,0,,,1820.7,0,289,0.86 -288,OWP Butendiek,DE,WTOF,WIN,1,0,0,0.4861111111,0.4861111111,0,0,0,0,1,0,0,,,,,, -288,DanTysk,DE,WTOF,WIN,1,0,0,0.4861111111,0.4861111111,0,0,0,0,1,0,0,,,,,, -288,Offshore Windpark,DE,WTOF,WIN,1,0,0,0.4861111111,0.4861111111,0,0,0,0,1,0,0,,,,,, -288,Amrumbank West,DE,WTOF,WIN,1,0,0,0.4861111111,0.4861111111,0,0,0,0,1,0,0,,,,,, -277,HKW West,DE,STUR,HRD,0.395,8,6,0.0180505415,0.0180505415,117242.17,0,0,0.3,0.395,7,0.95,,,,,, -272,GKW Hannover (GKH),DE,STUR,HRD,0.395,8,6,0.0183823529,0.0183823529,117242.17,0,0,0.3,0.395,7,0.95,,,,,, -267,KW Hastedt,DE,COMC,GAS,0.525,5,1,0.041835206,0.041835206,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -230,Heizkraftwerk Linden (GKL),DE,COMC,GAS,0.525,5,1,0.0485652174,0.0485652174,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -228,PSW Erzhausen,DE,HPHS,WAT,0.86,0,0,1.3157894737,1.3157894737,0,0,0,0,0.86,0.3,0,,,1436.4,0,228,0.86 -227,Kraftwerk HKW West,DE,STUR,HRD,0.395,8,6,0.0220264317,0.0220264317,117242.17,0,0,0.3,0.395,7,0.95,,,,,, -200,Windpark Trianel Borkum West,DE,WTOF,WIN,1,0,0,0.7,0.7,0,0,0,0,1,0,0,,,,,, -160,Gemeinschaftskraftwerk Burghausen,DE,COMC,GAS,0.525,5,1,0.0698125,0.0698125,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -150,KW Mittelsbueren,DE,COMC,GAS,0.525,5,1,0.0744666667,0.0744666667,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -147,Windpark Havelland,DE,WTON,WIN,1,0,0,0.9183673469,0.9183673469,0,0,0,0,1,0,0,,,,,, -124,HKW Niederrad,DE,COMC,GAS,0.525,5,1,0.0900806452,0.0900806452,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -123,HKW Nord 1,DE,STUR,HRD,0.395,8,6,0.0406504065,0.0406504065,117242.17,0,0,0.3,0.395,7,0.95,,,,,, -113,Offshore-Windpark RIFFGAT,DE,WTOF,WIN,1,0,0,1.2389380531,1.2389380531,0,0,0,0,1,0,0,,,,,, -100,KW Herrenhausen (KWH),DE,COMC,GAS,0.525,5,1,0.1117,0.1117,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -4179,Neurath,DE,STUR,LIG,0.385,8,6,0.0011964585,0.0011964585,136849.915,0,0,0.3,0.385,7,1,,,,,, -3366,Niederau??em,DE,STUR,LIG,0.385,8,6,0.0014854427,0.0014854427,136849.915,0,0,0.3,0.385,7,1,,,,,, -2572,Gundremmingen,DE,STUR,NUC,0.405,24,24,0.0013335925,0.0013335925,200000,0,0,0.9,0.405,72,0,,,,,, -2426,Weisweiler,DE,STUR,LIG,0.385,8,6,0.0020610058,0.0020610058,136849.915,0,0,0.3,0.385,7,1,,,,,, -2005,Gersteinwerk,DE,COMC,GAS,0.525,5,1,0.0055710723,0.0055710723,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -1820,Emsland 1,DE,COMC,GAS,0.525,5,1,0.0061373626,0.0061373626,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -1390,Kraftwerk Voerde,DE,STUR,HRD,0.395,8,6,0.0035971223,0.0035971223,117242.17,0,0,0.3,0.395,7,0.95,,,,,, -1184,Emsland 2,DE,STUR,NUC,0.405,24,24,0.0028969595,0.0028969595,200000,0,0,0.9,0.405,72,0,,,,,, -1291,Vianden,DE,HPHS,WAT,0.86,0,0,0.2323780015,0.2323780015,0,0,0,0,0.86,0.3,0,,,8133.3,0,1291,0.86 -1095,Walsum,DE,STUR,HRD,0.395,8,6,0.00456621,0.00456621,117242.17,0,0,0.3,0.395,7,0.95,,,,,, -1014,Westfalen,DE,STUR,HRD,0.395,8,6,0.0049309665,0.0049309665,117242.17,0,0,0.3,0.395,7,0.95,,,,,, -995,Kraftwerk Lausward,DE,COMC,GAS,0.525,5,1,0.0112261307,0.0112261307,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -870,Schluchsee,DE,HPHS,WAT,0.86,0,0,0.3448275862,0.3448275862,0,0,0,0,0.86,0.3,0,,,5481,0,870,0.86 -866,HKW Niehl,DE,COMC,GAS,0.525,5,1,0.0128983834,0.0128983834,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -834,KW Hamm-Uentrop,DE,COMC,GAS,0.525,5,1,0.0133932854,0.0133932854,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -792,Ibbenbaren,DE,STUR,HRD,0.395,8,6,0.0063131313,0.0063131313,117242.17,0,0,0.3,0.395,7,0.95,,,,,, -785,KW Mainz-Wiesbaden,DE,COMC,GAS,0.525,5,1,0.0142292994,0.0142292994,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -784,Knapsack 1,DE,COMC,GAS,0.525,5,1,0.014247449,0.014247449,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -750,KW Lanen,DE,STUR,HRD,0.395,8,6,0.0066666667,0.0066666667,117242.17,0,0,0.3,0.395,7,0.95,,,,,, -740,Herne,DE,STUR,HRD,0.395,8,6,0.0067567568,0.0067567568,117242.17,0,0,0.3,0.395,7,0.95,,,,,, -726,Bexbach,DE,STUR,HRD,0.395,8,6,0.0068870523,0.0068870523,117242.17,0,0,0.3,0.395,7,0.95,,,,,, -717,Bergkamen,DE,STUR,HRD,0.395,8,6,0.0069735007,0.0069735007,117242.17,0,0,0.3,0.395,7,0.95,,,,,, -690,Scholven,DE,STUR,HRD,0.395,8,6,0.0072463768,0.0072463768,117242.17,0,0,0.3,0.395,7,0.95,,,,,, -656,Weiher,DE,STUR,HRD,0.395,8,6,0.0076219512,0.0076219512,117242.17,0,0,0.3,0.395,7,0.95,,,,,, -640,GK-West,DE,STUR,HRD,0.395,8,6,0.0078125,0.0078125,117242.17,0,0,0.3,0.395,7,0.95,,,,,, -587,GuD Dormagen,DE,COMC,GAS,0.525,5,1,0.0190289608,0.0190289608,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -580,Frimmersdorf,DE,STUR,LIG,0.385,8,6,0.0086206897,0.0086206897,136849.915,0,0,0.3,0.385,7,1,,,,,, -473,Luenen,DE,STUR,HRD,0.395,8,6,0.0105708245,0.0105708245,117242.17,0,0,0.3,0.395,7,0.95,,,,,, -426,Knapsack 2,DE,COMC,GAS,0.525,5,1,0.0262206573,0.0262206573,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -424,HERDECKE,DE,COMC,GAS,0.525,5,1,0.0263443396,0.0263443396,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -412,GuD Ludwigshafen Mitte,DE,COMC,GAS,0.525,5,1,0.0271116505,0.0271116505,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -390,Voelklingen,DE,STUR,HRD,0.395,8,6,0.0128205128,0.0128205128,117242.17,0,0,0.3,0.395,7,0.95,,,,,, -39,Kaunertal (TIWAG),DE,HDAM,WAT,0.85,0,0,2.3076923077,2.3076923077,0,0,0,0,0.85,0.3,0,,,23010,0,0,0.86 -325,Elverlingsen,DE,STUR,HRD,0.395,8,6,0.0153846154,0.0153846154,117242.17,0,0,0.3,0.395,7,0.95,,,,,, -71,RUHRORT-KW,DE,STUR,HRD,0.395,8,6,0.0704225352,0.0704225352,117242.17,0,0,0.3,0.395,7,0.95,,,,,, -316,GuD Ludwigshafen Sad,DE,COMC,GAS,0.525,5,1,0.0353481013,0.0353481013,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -310,Ensdorf,DE,STUR,HRD,0.395,8,6,0.0161290323,0.0161290323,117242.17,0,0,0.3,0.395,7,0.95,,,,,, -278,HKW III,DE,COMC,GAS,0.525,5,1,0.0401798561,0.0401798561,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -250,Hagen-Kabel,DE,COMC,GAS,0.525,5,1,0.04468,0.04468,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -153,Koepchenwerk,DE,HPHS,WAT,0.86,0,0,1.9607843137,1.9607843137,0,0,0,0,0.86,0.3,0,,,963.9,0,153,0.86 -123,Kraftwerk Ramerbracke,DE,COMC,GAS,0.525,5,1,0.0908130081,0.0908130081,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -117,Kraftwerk Ensdorf,DE,STUR,HRD,0.395,8,6,0.0427350427,0.0427350427,117242.17,0,0,0.3,0.395,7,0.95,,,,,, -113,Frechen/Wachtberg,DE,STUR,LIG,0.385,8,6,0.0442477876,0.0442477876,136849.915,0,0,0.3,0.385,7,1,,,,,, -110,HKW Merkenich,DE,COMC,GAS,0.525,5,1,0.1015454545,0.1015454545,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -38994,DispaSET PHOT_DE,DE,PHOT,SUN,1,0,0,0.0230804739,0.0230804739,0,0,0,0,1,0,0,,,,,, -39790,DispaSET WindOn_DE,DE,WTON,WIN,1,0,0,0.0033928123,0.0033928123,0,0,0,0,1,0,0,,,,,, -6609,DispaSET Biomass_DE,DE,STUR,BIO,0.45,8,6,0.0007565441,0.0007565441,2000,0,0,0.2,0.45,7,0,,,,,, -1145,DispaSET FossilBrownCoal_DE,DE,STUR,LIG,0.385,8,6,0.0043668122,0.0043668122,136849.915,0,0,0.3,0.385,7,1,,,,,, -8808,DispaSET FossilGas_DE,DE,COMC,GAS,0.525,5,1,0.0012681653,0.0012681653,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -4183,DispaSET FossilHardCoal_DE,DE,STUR,HRD,0.395,8,6,0.0011953144,0.0011953144,117242.17,0,0,0.3,0.395,7,0.95,,,,,, -1946,DispaSET FossilOil_DE,DE,STUR,OIL,0.41,8,6,0.0025693731,0.0025693731,35280.965,0,0,0.3,0.41,7,0.79,,,,,, -3397,DispaSET HydroRiver_DE,DE,HROR,WAT,1,0,0,0.0647630262,0.0647630262,0,0,0,0,1,0.3,0,,,,,, -1403,DispaSET Waste_DE,DE,STUR,WST,0.465,7.335,7.335,0.2300784034,0.2300784034,0,0,0,0.3,0.465,0,0,,,,,, -1000,DispaSET FossilGas_DE2,DE,COMC,GAS,0.525,5,1,0.01117,0.01117,112542.12,0,0,0.4,0.525,1,0.45,,,,,, +PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost,NoLoadCost,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,Extendable,Investment,FixedCost,EconomicLifetime +3000,KW Janschwalde,DE,STUR,LIG,0.385,8.0,6.0,0.0016666667,0.0016666667,136849.915,0,0,0.3,0.385,7.0,1.0,,,,,,,,,, +2484,KW Boxberg,DE,STUR,LIG,0.385,8.0,6.0,0.0020128824,0.0020128824,136849.915,0,0,0.3,0.385,7.0,1.0,,,,,,,,,, +1782,KW Lippendorf,DE,STUR,LIG,0.385,8.0,6.0,0.0028058361,0.0028058361,136849.915,0,0,0.3,0.385,7.0,1.0,,,,,,,,,, +1600,KW Moorburg,DE,STUR,HRD,0.395,8.0,6.0,0.003125,0.003125,117242.17,0,0,0.3,0.395,7.0,0.95,,,,,,,,,, +1524,KW Schwarze Pumpe,DE,STUR,LIG,0.385,8.0,6.0,0.0032808399,0.0032808399,136849.915,0,0,0.3,0.385,7.0,1.0,,,,,,,,,, +1060,PSW Goldisthal,DE,HPHS,WAT,0.86,0.0,0.0,0.28301886789999997,0.28301886789999997,0.0,0,0,0.0,0.86,0.3,0.0,,,6678.0,0.0,1060.0,0.86,,,, +900,Schkopau,DE,STUR,LIG,0.385,8.0,6.0,0.0055555556,0.0055555556,136849.915,0,0,0.3,0.385,7.0,1.0,,,,,,,,,, +870,PSW Markersbach,DE,HPHS,WAT,0.86,0.0,0.0,0.3448275862,0.3448275862,0.0,0,0,0.0,0.86,0.3,0.0,,,5481.0,0.0,870.0,0.86,,,, +564,HKW Reuter West,DE,STUR,HRD,0.395,8.0,6.0,0.0088652482,0.0088652482,117242.17,0,0,0.3,0.395,7.0,0.95,,,,,,,,,, +514,Kraftwerk Rostock,DE,STUR,HRD,0.395,8.0,6.0,0.0097276265,0.0097276265,117242.17,0,0,0.3,0.395,7.0,0.95,,,,,,,,,, +444,Heizkraftwerk Mitte,DE,COMC,GAS,0.525,5.0,1.0,0.0251576577,0.0251576577,112542.12,0,0,0.4,0.525,1.0,0.45,,,,,,,,,, +359,Industriekraftwerk PCK,DE,STUR,OIL,0.41,8.0,6.0,0.0139275766,0.0139275766,35280.965,0,0,0.3,0.41,7.0,0.79,,,,,,,,,, +336,Windpark Baltic 1 and 2,DE,WTOF,WIN,1.0,0.0,0.0,0.4166666667,0.4166666667,0.0,0,0,0.0,1.0,0.0,0.0,,,,,,,,,, +320,PSW Hohenwarte II,DE,HPHS,WAT,0.86,0.0,0.0,0.9375,0.9375,0.0,0,0,0.0,0.86,0.3,0.0,,,2016.0,0.0,320.0,0.86,,,, +314,HKW Tiefstack,DE,STUR,HRD,0.395,8.0,6.0,0.015923566899999998,0.015923566899999998,117242.17,0,0,0.3,0.395,7.0,0.95,,,,,,,,,, +300,Thyrow,DE,COMC,GAS,0.525,5.0,1.0,0.0372333333,0.0372333333,112542.12,0,0,0.4,0.525,1.0,0.45,,,,,,,,,, +288,HKW Lichterfelde,DE,COMC,GAS,0.525,5.0,1.0,0.0387847222,0.0387847222,112542.12,0,0,0.4,0.525,1.0,0.45,,,,,,,,,, +276,Wilmersdorf,DE,STUR,OIL,0.41,8.0,6.0,0.018115942,0.018115942,35280.965,0,0,0.3,0.41,7.0,0.79,,,,,,,,,, +270,Heizkraftwerk Nossener Bruecke,DE,COMC,GAS,0.525,5.0,1.0,0.0413703704,0.0413703704,112542.12,0,0,0.4,0.525,1.0,0.45,,,,,,,,,, +256,Brunsb??ttel,DE,STUR,OIL,0.41,8.0,6.0,0.01953125,0.01953125,35280.965,0,0,0.3,0.41,7.0,0.79,,,,,,,,,, +250,HKW Wedel,DE,STUR,HRD,0.395,8.0,6.0,0.02,0.02,117242.17,0,0,0.3,0.395,7.0,0.95,,,,,,,,,, +213,Charlottenburg,DE,COMC,GAS,0.525,5.0,1.0,0.0524413146,0.0524413146,112542.12,0,0,0.4,0.525,1.0,0.45,,,,,,,,,, +167,HKW Nord 2,DE,COMC,GAS,0.525,5.0,1.0,0.0668862275,0.0668862275,112542.12,0,0,0.4,0.525,1.0,0.45,,,,,,,,,, +164,HKW Klingenberg,DE,STUR,LIG,0.385,8.0,6.0,0.030487804900000002,0.030487804900000002,136849.915,0,0,0.3,0.385,7.0,1.0,,,,,,,,,, +160,HKW Reuter,DE,STUR,HRD,0.395,8.0,6.0,0.03125,0.03125,117242.17,0,0,0.3,0.395,7.0,0.95,,,,,,,,,, +152,Ahrensfelde,DE,COMC,GAS,0.525,5.0,1.0,0.0734868421,0.0734868421,112542.12,0,0,0.4,0.525,1.0,0.45,,,,,,,,,, +140,Moabit,DE,STUR,HRD,0.395,8.0,6.0,0.0357142857,0.0357142857,117242.17,0,0,0.3,0.395,7.0,0.95,,,,,,,,,, +120,PSW Geesthacht,DE,HPHS,WAT,0.86,0.0,0.0,2.5,2.5,0.0,0,0,0.0,0.86,0.3,0.0,,,756.0,0.0,120.0,0.86,,,, +1824,Vorarlberger Illwerke AG,DE,HPHS,WAT,0.86,0.0,0.0,0.1644736842,0.1644736842,0.0,0,0,0.0,0.86,0.3,0.0,,,11491.2,0.0,1824.0,0.86,,,, +1402,Kernkraftwerk Philippsburg,DE,STUR,NUC,0.405,24.0,24.0,0.002446505,0.002446505,200000.0,0,0,0.9,0.405,72.0,0.0,,,,,,,,,, +1347,Rheinhafen-Dampfkraftwerk Karlsruhe,DE,STUR,HRD,0.395,8.0,6.0,0.0037119525,0.0037119525,117242.17,0,0,0.3,0.395,7.0,0.95,,,,,,,,,, +1310,Kernkraftwerk Neckarwestheim,DE,STUR,NUC,0.405,24.0,24.0,0.0026183206,0.0026183206,200000.0,0,0,0.9,0.405,72.0,0.0,,,,,,,,,, +1022,HKW Altbach/Deizisau,DE,STUR,HRD,0.395,8.0,6.0,0.0048923679,0.0048923679,117242.17,0,0,0.3,0.395,7.0,0.95,,,,,,,,,, +778,Heizkraftwerk Heilbronn,DE,STUR,HRD,0.395,8.0,6.0,0.0064267352,0.0064267352,117242.17,0,0,0.3,0.395,7.0,0.95,,,,,,,,,, +455,Schluchseewerk AG 1,DE,HPHS,WAT,0.86,0.0,0.0,0.6593406593,0.6593406593,0.0,0,0,0.0,0.86,0.3,0.0,,,2866.5,0.0,455.0,0.86,,,, +353,Rheinhafen-Dampfkraftwerk Karlsruhe 2,DE,COMC,GAS,0.525,5.0,1.0,0.0316430595,0.0316430595,112542.12,0,0,0.4,0.525,1.0,0.45,,,,,,,,,, +235,Schluchseewerk AG 2,DE,HPHS,WAT,0.86,0.0,0.0,1.2765957447,1.2765957447,0.0,0,0,0.0,0.86,0.3,0.0,,,1480.5,0.0,235.0,0.86,,,, +180,Schluchseewerk AG 3,DE,HPHS,WAT,0.86,0.0,0.0,1.6666666666999999,1.6666666666999999,0.0,0,0,0.0,0.86,0.3,0.0,,,1134.0,0.0,180.0,0.86,,,, +178,Heizkraftwerk Stuttgart-Manster,DE,STUR,WST,0.465,7.335,7.335,1.8134831461,1.8134831461,0.0,0,0,0.3,0.465,0.0,0.0,,,,,,,,,, +146,Rheinkraftwerk Iffezheim,DE,HROR,WAT,1.0,0.0,0.0,1.5068493151,1.5068493151,0.0,0,0,0.0,1.0,0.3,0.0,,,,,,,,,, +136,Kraftwerk Walheim,DE,STUR,OIL,0.41,8.0,6.0,0.0367647059,0.0367647059,35280.965,0,0,0.3,0.41,7.0,0.79,,,,,,,,,, +106,KW Laufenburg,DE,HROR,WAT,1.0,0.0,0.0,2.0754716981,2.0754716981,0.0,0,0,0.0,1.0,0.3,0.0,,,,,,,,,, +100,KW Rheinfelden DE,DE,HROR,WAT,1.0,0.0,0.0,2.2,2.2,0.0,0,0,0.0,1.0,0.3,0.0,,,,,,,,,, +1811,Irsching,DE,COMC,GAS,0.525,5.0,1.0,0.0061678631000000005,0.0061678631000000005,112542.12,0,0,0.4,0.525,1.0,0.45,,,,,,,,,, +1410,Isar 2,DE,STUR,NUC,0.405,24.0,24.0,0.0024326241,0.0024326241,200000.0,0,0,0.9,0.405,72.0,0.0,,,,,,,,,, +1410,Brokdorf,DE,STUR,NUC,0.405,24.0,24.0,0.0024326241,0.0024326241,200000.0,0,0,0.9,0.405,72.0,0.0,,,,,,,,,, +1360,Grohnde,DE,STUR,NUC,0.405,24.0,24.0,0.0025220588,0.0025220588,200000.0,0,0,0.9,0.405,72.0,0.0,,,,,,,,,, +1132,Staudinger,DE,STUR,HRD,0.395,8.0,6.0,0.0044169611,0.0044169611,117242.17,0,0,0.3,0.395,7.0,0.95,,,,,,,,,, +875,Heyden,DE,STUR,HRD,0.395,8.0,6.0,0.005714285699999999,0.005714285699999999,117242.17,0,0,0.3,0.395,7.0,0.95,,,,,,,,,, +823,Franken I,DE,COMC,GAS,0.525,5.0,1.0,0.013572296499999999,0.013572296499999999,112542.12,0,0,0.4,0.525,1.0,0.45,,,,,,,,,, +772,Ingolstadt,DE,STUR,OIL,0.41,8.0,6.0,0.0064766839,0.0064766839,35280.965,0,0,0.3,0.41,7.0,0.79,,,,,,,,,, +757,Wilhelmshaven,DE,STUR,HRD,0.395,8.0,6.0,0.0066050198,0.0066050198,117242.17,0,0,0.3,0.395,7.0,0.95,,,,,,,,,, +720,Kraftwerk Wilhelmshaven,DE,STUR,HRD,0.395,8.0,6.0,0.006944444399999999,0.006944444399999999,117242.17,0,0,0.3,0.395,7.0,0.95,,,,,,,,,, +690,KW Mehrum (KWM),DE,STUR,HRD,0.395,8.0,6.0,0.007246376800000002,0.007246376800000002,117242.17,0,0,0.3,0.395,7.0,0.95,,,,,,,,,, +500,KW Silz,DE,HDAM,WAT,0.85,0.0,0.0,0.18,0.18,0.0,0,0,0.0,0.85,0.3,0.0,,,295000.0,0.0,0.0,0.86,,,, +480,Waldeck II,DE,HPHS,WAT,0.86,0.0,0.0,0.625,0.625,0.0,0,0,0.0,0.86,0.3,0.0,,,3024.0,0.0,480.0,0.86,,,, +472,Kraftwerk Zolling,DE,STUR,HRD,0.395,8.0,6.0,0.010593220300000001,0.010593220300000001,117242.17,0,0,0.3,0.395,7.0,0.95,,,,,,,,,, +427,KW Hafen,DE,STUR,HRD,0.395,8.0,6.0,0.0117096019,0.0117096019,117242.17,0,0,0.3,0.395,7.0,0.95,,,,,,,,,, +400,Sued GuD2,DE,COMC,GAS,0.525,5.0,1.0,0.027925,0.027925,112542.12,0,0,0.4,0.525,1.0,0.45,,,,,,,,,, +400,Global Tech I,DE,WTOF,WIN,1.0,0.0,0.0,0.35,0.35,0.0,0,0,0.0,1.0,0.0,0.0,,,,,,,,,, +352,Kraftwerk Buschhaus,DE,STUR,LIG,0.385,8.0,6.0,0.0142045455,0.0142045455,136849.915,0,0,0.3,0.385,7.0,1.0,,,,,,,,,, +345,Kraftwerk Farge,DE,STUR,HRD,0.395,8.0,6.0,0.014492753600000003,0.014492753600000003,117242.17,0,0,0.3,0.395,7.0,0.95,,,,,,,,,, +333,Nord 2,DE,STUR,HRD,0.395,8.0,6.0,0.015015015,0.015015015,117242.17,0,0,0.3,0.395,7.0,0.95,,,,,,,,,, +323,Kiel,DE,STUR,HRD,0.395,8.0,6.0,0.015479876200000001,0.015479876200000001,117242.17,0,0,0.3,0.395,7.0,0.95,,,,,,,,,, +321,Huntorf,DE,COMC,GAS,0.525,5.0,1.0,0.034797507799999995,0.034797507799999995,112542.12,0,0,0.4,0.525,1.0,0.45,,,,,,,,,, +312,Borkum Riffgrund I,DE,WTOF,WIN,1.0,0.0,0.0,0.4487179487,0.4487179487,0.0,0,0,0.0,1.0,0.0,0.0,,,,,,,,,, +298,Sued GuD1,DE,COMC,GAS,0.525,5.0,1.0,0.0374832215,0.0374832215,112542.12,0,0,0.4,0.525,1.0,0.45,,,,,,,,,, +289,KW Kahtai,DE,HPHS,WAT,0.86,0.0,0.0,1.0380622837,1.0380622837,0.0,0,0,0.0,0.86,0.3,0.0,,,1820.7,0.0,289.0,0.86,,,, +288,OWP Butendiek,DE,WTOF,WIN,1.0,0.0,0.0,0.4861111111,0.4861111111,0.0,0,0,0.0,1.0,0.0,0.0,,,,,,,,,, +288,DanTysk,DE,WTOF,WIN,1.0,0.0,0.0,0.4861111111,0.4861111111,0.0,0,0,0.0,1.0,0.0,0.0,,,,,,,,,, +288,Offshore Windpark,DE,WTOF,WIN,1.0,0.0,0.0,0.4861111111,0.4861111111,0.0,0,0,0.0,1.0,0.0,0.0,,,,,,,,,, +288,Amrumbank West,DE,WTOF,WIN,1.0,0.0,0.0,0.4861111111,0.4861111111,0.0,0,0,0.0,1.0,0.0,0.0,,,,,,,,,, +277,HKW West,DE,STUR,HRD,0.395,8.0,6.0,0.0180505415,0.0180505415,117242.17,0,0,0.3,0.395,7.0,0.95,,,,,,,,,, +272,GKW Hannover (GKH),DE,STUR,HRD,0.395,8.0,6.0,0.0183823529,0.0183823529,117242.17,0,0,0.3,0.395,7.0,0.95,,,,,,,,,, +267,KW Hastedt,DE,COMC,GAS,0.525,5.0,1.0,0.041835206,0.041835206,112542.12,0,0,0.4,0.525,1.0,0.45,,,,,,,,,, +230,Heizkraftwerk Linden (GKL),DE,COMC,GAS,0.525,5.0,1.0,0.0485652174,0.0485652174,112542.12,0,0,0.4,0.525,1.0,0.45,,,,,,,,,, +228,PSW Erzhausen,DE,HPHS,WAT,0.86,0.0,0.0,1.3157894737,1.3157894737,0.0,0,0,0.0,0.86,0.3,0.0,,,1436.4,0.0,228.0,0.86,,,, +227,Kraftwerk HKW West,DE,STUR,HRD,0.395,8.0,6.0,0.022026431699999998,0.022026431699999998,117242.17,0,0,0.3,0.395,7.0,0.95,,,,,,,,,, +200,Windpark Trianel Borkum West,DE,WTOF,WIN,1.0,0.0,0.0,0.7,0.7,0.0,0,0,0.0,1.0,0.0,0.0,,,,,,,,,, +160,Gemeinschaftskraftwerk Burghausen,DE,COMC,GAS,0.525,5.0,1.0,0.0698125,0.0698125,112542.12,0,0,0.4,0.525,1.0,0.45,,,,,,,,,, +150,KW Mittelsbueren,DE,COMC,GAS,0.525,5.0,1.0,0.0744666667,0.0744666667,112542.12,0,0,0.4,0.525,1.0,0.45,,,,,,,,,, +147,Windpark Havelland,DE,WTON,WIN,1.0,0.0,0.0,0.9183673469,0.9183673469,0.0,0,0,0.0,1.0,0.0,0.0,,,,,,,,,, +124,HKW Niederrad,DE,COMC,GAS,0.525,5.0,1.0,0.09008064519999999,0.09008064519999999,112542.12,0,0,0.4,0.525,1.0,0.45,,,,,,,,,, +123,HKW Nord 1,DE,STUR,HRD,0.395,8.0,6.0,0.0406504065,0.0406504065,117242.17,0,0,0.3,0.395,7.0,0.95,,,,,,,,,, +113,Offshore-Windpark RIFFGAT,DE,WTOF,WIN,1.0,0.0,0.0,1.2389380531,1.2389380531,0.0,0,0,0.0,1.0,0.0,0.0,,,,,,,,,, +100,KW Herrenhausen (KWH),DE,COMC,GAS,0.525,5.0,1.0,0.1117,0.1117,112542.12,0,0,0.4,0.525,1.0,0.45,,,,,,,,,, +4179,Neurath,DE,STUR,LIG,0.385,8.0,6.0,0.0011964585,0.0011964585,136849.915,0,0,0.3,0.385,7.0,1.0,,,,,,,,,, +3366,Niederau??em,DE,STUR,LIG,0.385,8.0,6.0,0.0014854426999999998,0.0014854426999999998,136849.915,0,0,0.3,0.385,7.0,1.0,,,,,,,,,, +2572,Gundremmingen,DE,STUR,NUC,0.405,24.0,24.0,0.0013335925,0.0013335925,200000.0,0,0,0.9,0.405,72.0,0.0,,,,,,,,,, +2426,Weisweiler,DE,STUR,LIG,0.385,8.0,6.0,0.0020610057999999997,0.0020610057999999997,136849.915,0,0,0.3,0.385,7.0,1.0,,,,,,,,,, +2005,Gersteinwerk,DE,COMC,GAS,0.525,5.0,1.0,0.0055710722999999995,0.0055710722999999995,112542.12,0,0,0.4,0.525,1.0,0.45,,,,,,,,,, +1820,Emsland 1,DE,COMC,GAS,0.525,5.0,1.0,0.0061373626,0.0061373626,112542.12,0,0,0.4,0.525,1.0,0.45,,,,,,,,,, +1390,Kraftwerk Voerde,DE,STUR,HRD,0.395,8.0,6.0,0.0035971223,0.0035971223,117242.17,0,0,0.3,0.395,7.0,0.95,,,,,,,,,, +1184,Emsland 2,DE,STUR,NUC,0.405,24.0,24.0,0.0028969595,0.0028969595,200000.0,0,0,0.9,0.405,72.0,0.0,,,,,,,,,, +1291,Vianden,DE,HPHS,WAT,0.86,0.0,0.0,0.2323780015,0.2323780015,0.0,0,0,0.0,0.86,0.3,0.0,,,8133.3,0.0,1291.0,0.86,,,, +1095,Walsum,DE,STUR,HRD,0.395,8.0,6.0,0.00456621,0.00456621,117242.17,0,0,0.3,0.395,7.0,0.95,,,,,,,,,, +1014,Westfalen,DE,STUR,HRD,0.395,8.0,6.0,0.0049309665,0.0049309665,117242.17,0,0,0.3,0.395,7.0,0.95,,,,,,,,,, +995,Kraftwerk Lausward,DE,COMC,GAS,0.525,5.0,1.0,0.011226130700000002,0.011226130700000002,112542.12,0,0,0.4,0.525,1.0,0.45,,,,,,,,,, +870,Schluchsee,DE,HPHS,WAT,0.86,0.0,0.0,0.3448275862,0.3448275862,0.0,0,0,0.0,0.86,0.3,0.0,,,5481.0,0.0,870.0,0.86,,,, +866,HKW Niehl,DE,COMC,GAS,0.525,5.0,1.0,0.012898383400000001,0.012898383400000001,112542.12,0,0,0.4,0.525,1.0,0.45,,,,,,,,,, +834,KW Hamm-Uentrop,DE,COMC,GAS,0.525,5.0,1.0,0.0133932854,0.0133932854,112542.12,0,0,0.4,0.525,1.0,0.45,,,,,,,,,, +792,Ibbenbaren,DE,STUR,HRD,0.395,8.0,6.0,0.0063131313,0.0063131313,117242.17,0,0,0.3,0.395,7.0,0.95,,,,,,,,,, +785,KW Mainz-Wiesbaden,DE,COMC,GAS,0.525,5.0,1.0,0.0142292994,0.0142292994,112542.12,0,0,0.4,0.525,1.0,0.45,,,,,,,,,, +784,Knapsack 1,DE,COMC,GAS,0.525,5.0,1.0,0.014247448999999999,0.014247448999999999,112542.12,0,0,0.4,0.525,1.0,0.45,,,,,,,,,, +750,KW Lanen,DE,STUR,HRD,0.395,8.0,6.0,0.006666666700000001,0.006666666700000001,117242.17,0,0,0.3,0.395,7.0,0.95,,,,,,,,,, +740,Herne,DE,STUR,HRD,0.395,8.0,6.0,0.0067567568,0.0067567568,117242.17,0,0,0.3,0.395,7.0,0.95,,,,,,,,,, +726,Bexbach,DE,STUR,HRD,0.395,8.0,6.0,0.0068870523,0.0068870523,117242.17,0,0,0.3,0.395,7.0,0.95,,,,,,,,,, +717,Bergkamen,DE,STUR,HRD,0.395,8.0,6.0,0.0069735006999999995,0.0069735006999999995,117242.17,0,0,0.3,0.395,7.0,0.95,,,,,,,,,, +690,Scholven,DE,STUR,HRD,0.395,8.0,6.0,0.007246376800000002,0.007246376800000002,117242.17,0,0,0.3,0.395,7.0,0.95,,,,,,,,,, +656,Weiher,DE,STUR,HRD,0.395,8.0,6.0,0.0076219512,0.0076219512,117242.17,0,0,0.3,0.395,7.0,0.95,,,,,,,,,, +640,GK-West,DE,STUR,HRD,0.395,8.0,6.0,0.0078125,0.0078125,117242.17,0,0,0.3,0.395,7.0,0.95,,,,,,,,,, +587,GuD Dormagen,DE,COMC,GAS,0.525,5.0,1.0,0.0190289608,0.0190289608,112542.12,0,0,0.4,0.525,1.0,0.45,,,,,,,,,, +580,Frimmersdorf,DE,STUR,LIG,0.385,8.0,6.0,0.0086206897,0.0086206897,136849.915,0,0,0.3,0.385,7.0,1.0,,,,,,,,,, +473,Luenen,DE,STUR,HRD,0.395,8.0,6.0,0.0105708245,0.0105708245,117242.17,0,0,0.3,0.395,7.0,0.95,,,,,,,,,, +426,Knapsack 2,DE,COMC,GAS,0.525,5.0,1.0,0.0262206573,0.0262206573,112542.12,0,0,0.4,0.525,1.0,0.45,,,,,,,,,, +424,HERDECKE,DE,COMC,GAS,0.525,5.0,1.0,0.0263443396,0.0263443396,112542.12,0,0,0.4,0.525,1.0,0.45,,,,,,,,,, +412,GuD Ludwigshafen Mitte,DE,COMC,GAS,0.525,5.0,1.0,0.027111650499999997,0.027111650499999997,112542.12,0,0,0.4,0.525,1.0,0.45,,,,,,,,,, +390,Voelklingen,DE,STUR,HRD,0.395,8.0,6.0,0.0128205128,0.0128205128,117242.17,0,0,0.3,0.395,7.0,0.95,,,,,,,,,, +39,Kaunertal (TIWAG),DE,HDAM,WAT,0.85,0.0,0.0,2.3076923077,2.3076923077,0.0,0,0,0.0,0.85,0.3,0.0,,,23010.0,0.0,0.0,0.86,,,, +325,Elverlingsen,DE,STUR,HRD,0.395,8.0,6.0,0.015384615400000001,0.015384615400000001,117242.17,0,0,0.3,0.395,7.0,0.95,,,,,,,,,, +71,RUHRORT-KW,DE,STUR,HRD,0.395,8.0,6.0,0.0704225352,0.0704225352,117242.17,0,0,0.3,0.395,7.0,0.95,,,,,,,,,, +316,GuD Ludwigshafen Sad,DE,COMC,GAS,0.525,5.0,1.0,0.0353481013,0.0353481013,112542.12,0,0,0.4,0.525,1.0,0.45,,,,,,,,,, +310,Ensdorf,DE,STUR,HRD,0.395,8.0,6.0,0.0161290323,0.0161290323,117242.17,0,0,0.3,0.395,7.0,0.95,,,,,,,,,, +278,HKW III,DE,COMC,GAS,0.525,5.0,1.0,0.0401798561,0.0401798561,112542.12,0,0,0.4,0.525,1.0,0.45,,,,,,,,,, +250,Hagen-Kabel,DE,COMC,GAS,0.525,5.0,1.0,0.044680000000000004,0.044680000000000004,112542.12,0,0,0.4,0.525,1.0,0.45,,,,,,,,,, +153,Koepchenwerk,DE,HPHS,WAT,0.86,0.0,0.0,1.9607843137,1.9607843137,0.0,0,0,0.0,0.86,0.3,0.0,,,963.9,0.0,153.0,0.86,,,, +123,Kraftwerk Ramerbracke,DE,COMC,GAS,0.525,5.0,1.0,0.09081300810000001,0.09081300810000001,112542.12,0,0,0.4,0.525,1.0,0.45,,,,,,,,,, +117,Kraftwerk Ensdorf,DE,STUR,HRD,0.395,8.0,6.0,0.042735042699999996,0.042735042699999996,117242.17,0,0,0.3,0.395,7.0,0.95,,,,,,,,,, +113,Frechen/Wachtberg,DE,STUR,LIG,0.385,8.0,6.0,0.0442477876,0.0442477876,136849.915,0,0,0.3,0.385,7.0,1.0,,,,,,,,,, +110,HKW Merkenich,DE,COMC,GAS,0.525,5.0,1.0,0.1015454545,0.1015454545,112542.12,0,0,0.4,0.525,1.0,0.45,,,,,,,,,, +38994,DispaSET PHOT_DE,DE,PHOT,SUN,1.0,0.0,0.0,0.023080473900000002,0.023080473900000002,0.0,0,0,0.0,1.0,0.0,0.0,,,,,,,,,, +39790,DispaSET WindOn_DE,DE,WTON,WIN,1.0,0.0,0.0,0.0033928123,0.0033928123,0.0,0,0,0.0,1.0,0.0,0.0,,,,,,,,,, +6609,DispaSET Biomass_DE,DE,STUR,BIO,0.45,8.0,6.0,0.0007565441000000001,0.0007565441000000001,2000.0,0,0,0.2,0.45,7.0,0.0,,,,,,,,,, +1145,DispaSET FossilBrownCoal_DE,DE,STUR,LIG,0.385,8.0,6.0,0.0043668121999999995,0.0043668121999999995,136849.915,0,0,0.3,0.385,7.0,1.0,,,,,,,,,, +8808,DispaSET FossilGas_DE,DE,COMC,GAS,0.525,5.0,1.0,0.0012681653,0.0012681653,112542.12,0,0,0.4,0.525,1.0,0.45,,,,,,,,,, +4183,DispaSET FossilHardCoal_DE,DE,STUR,HRD,0.395,8.0,6.0,0.0011953144,0.0011953144,117242.17,0,0,0.3,0.395,7.0,0.95,,,,,,,,,, +1946,DispaSET FossilOil_DE,DE,STUR,OIL,0.41,8.0,6.0,0.0025693731,0.0025693731,35280.965,0,0,0.3,0.41,7.0,0.79,,,,,,,,,, +3397,DispaSET HydroRiver_DE,DE,HROR,WAT,1.0,0.0,0.0,0.0647630262,0.0647630262,0.0,0,0,0.0,1.0,0.3,0.0,,,,,,,,,, +1403,DispaSET Waste_DE,DE,STUR,WST,0.465,7.335,7.335,0.2300784034,0.2300784034,0.0,0,0,0.3,0.465,0.0,0.0,,,,,,,,,, +1000,DispaSET FossilGas_DE2,DE,COMC,GAS,0.525,5.0,1.0,0.011170000000000001,0.011170000000000001,112542.12,0,0,0.4,0.525,1.0,0.45,,,,,,,,,, diff --git a/Database/PowerPlants/DE/clustered.csv b/Database/PowerPlants/DE/clustered.csv index 30914d28..c1a7a39a 100644 --- a/Database/PowerPlants/DE/clustered.csv +++ b/Database/PowerPlants/DE/clustered.csv @@ -1,14 +1,14 @@ -,PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost_pu,NoLoadCost_pu,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,CHPPowerLossFactor,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,CHPMaxHeat,Nunits -DE_STUR_BIO,179.6842299,DE_STUR_BIO,DE,STUR,BIO,0.46,4,6,0.02,0.02,120,12.5,1.3,0.35,0.35,1,0,back-pressure,1,0,,,,,179.6842299,33 -DE_COMC_GAS,413.3209324,DE_COMC_GAS,DE,COMC,GAS,0.57,2,4,0.03,0.03,55,0,0,0.36,0.57,1,0.42,,,,,,,,,40 -DE_GTUR_GAS,63.89669551,DE_GTUR_GAS,DE,GTUR,GAS,0.425,0,0,0.166666667,0.166666667,0,0,0,0.2,0.425,0.166666667,0.564705882,,,,,,,,,56 -DE_STUR_GAS,112.9776875,DE_STUR_GAS,DE,STUR,GAS,0.38,0,0,0.02,0.02,0,0,0,0.4,0.38,0,0,,,,,,,,,13 -DE_STUR_HRD,754.4736842,DE_STUR_HRD,DE,STUR,HRD,0.46,8,8,0.017777778,0.017777778,65,0,0,0.3,0.46,2,0.81,,,,,,,,,38 -DE_STUR_LIG,759.137931,DE_STUR_LIG,DE,STUR,LIG,0.393,8,8,0.01520979,0.017482517,65,12.56164384,0,0.389,0.4075,5,1.05,,,,,,,,,29 -DE_STUR_NUC,995.6363636,DE_STUR_NUC,DE,STUR,NUC,1,24,24,0.003333333,0.003333333,300,0,0,0.5,1,12,0,,,,,,,,,11 -DE_PHOT_SUN,40020,DE_PHOT_SUN,DE,PHOT,SUN,1,0,0,0.02,0.02,0,0,0,0,1,0,0,,,,,,,,,1 -DE_HROR_WAT,3904,DE_HROR_WAT,DE,HROR,WAT,1,0,0,0.02,0.02,0,0,0,0,1,0,0,,,,,,,,,1 -DE_HPHS_WAT,8567,DE_HPHS_WAT,DE,HPHS,WAT,0.8,0,0,0.066666667,0.066666667,0,0,0,0,1,0,0,,,,718728,0,8567,0.8,,1 -DE_WTOF_WIN,4125,DE_WTOF_WIN,DE,WTOF,WIN,1,0,0,0.02,0.02,0,0,0,0,1,0,0,,,,,,,,,1 -DE_WTON_WIN,45403,DE_WTON_WIN,DE,WTON,WIN,1,0,0,0.02,0.02,0,0,0,0,1,0,0,,,,,,,,,1 -DE_STUR_WST,47.26265685,DE_STUR_WST,DE,STUR,WST,0.2,0,0,0.02,0.02,0,0,0,0,0.2,0,0,,,,,,,,,29 +,PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost_pu,NoLoadCost_pu,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,CHPPowerLossFactor,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,CHPMaxHeat,Nunits,Extendable,Investment,FixedCost,EconomicLifetime +DE_STUR_BIO,100000,DE_STUR_BIO,DE,STUR,BIO,0.46,4,6,0.02,0.02,120,12.5,1.3,0.35,0.35,1,0,back-pressure,1,0,,,,,179.6842299,33,x,2400000,100000, +DE_COMC_GAS,100000,DE_COMC_GAS,DE,COMC,GAS,0.57,2,4,0.03,0.03,55,0,0,0.36,0.57,1,0.42,,,,,,,,,40,x,550000,15000,30 +DE_GTUR_GAS,100000,DE_GTUR_GAS,DE,GTUR,GAS,0.425,0,0,0.166666667,0.166666667,0,0,0,0.2,0.425,0.166666667,0.564705882,,,,,,,,,56,x,550000,15000,30 +DE_STUR_GAS,100000,DE_STUR_GAS,DE,STUR,GAS,0.38,0,0,0.02,0.02,0,0,0,0.4,0.38,0,0,,,,,,,,,13,x,550000,15000,30 +DE_STUR_HRD,100000,DE_STUR_HRD,DE,STUR,HRD,0.46,8,8,0.017777778,0.017777778,65,0,0,0.3,0.46,2,0.81,,,,,,,,,38,x,1800000,50000,30 +DE_STUR_LIG,100000,DE_STUR_LIG,DE,STUR,LIG,0.393,8,8,0.01520979,0.017482517,65,12.56164384,0,0.389,0.4075,5,1.05,,,,,,,,,29,x,1800000,60000,30 +DE_STUR_NUC,100000,DE_STUR_NUC,DE,STUR,NUC,1,24,24,0.003333333,0.003333333,300,0,0,0.5,1,12,0,,,,,,,,,11,x,6000000,100000,30 +DE_PHOT_SUN,50000,DE_PHOT_SUN,DE,PHOT,SUN,1,0,0,0.02,0.02,0,0,0,0,1,0,0,,,,,,,,,1,x,998000,25000,20 +DE_HROR_WAT,100000,DE_HROR_WAT,DE,HROR,WAT,1,0,0,0.02,0.02,0,0,0,0,1,0,0,,,,,,,,,1,x,3000000,60000,30 +DE_HPHS_WAT,2000,DE_HPHS_WAT,DE,HPHS,WAT,0.8,0,0,0.066666667,0.066666667,0,0,0,0,1,0,0,,,,718728,0,8567,0.8,,1,x,2000000,20000,30 +DE_WTOF_WIN,100000,DE_WTOF_WIN,DE,WTOF,WIN,1,0,0,0.02,0.02,0,0,0,0,1,0,0,,,,,,,,,1,x,3500000,35000,20 +DE_WTON_WIN,50000,DE_WTON_WIN,DE,WTON,WIN,1,0,0,0.02,0.02,0,0,0,0,1,0,0,,,,,,,,,1,x,1063000,35000,20 +DE_STUR_WST,2000,DE_STUR_WST,DE,STUR,WST,0.2,0,0,0.02,0.02,0,0,0,0,0.2,0,0,,,,,,,,,29,x,2424000,100000,30 diff --git a/Database/PowerPlants/DK/clustered.csv b/Database/PowerPlants/DK/clustered.csv index 9ccb6950..051e9dee 100644 --- a/Database/PowerPlants/DK/clustered.csv +++ b/Database/PowerPlants/DK/clustered.csv @@ -1,11 +1,11 @@ -,PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost_pu,NoLoadCost_pu,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,CHPPowerLossFactor,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,CHPMaxHeat,Nunits -DK_STUR_BIO,117.8,DK_STUR_BIO,DK,STUR,BIO,0.46,4,6,0.02,0.02,120,12.5,1.3,0.35,0.35,1,0,back-pressure,1,0,,,,,117.8,10 -DK_COMC_GAS,297.0546704,DK_COMC_GAS,DK,COMC,GAS,0.57,2,4,0.03,0.03,55,0,0,0.36,0.57,1,0.42,,,,,,,,,2 -DK_GTUR_GAS,60.99289894,DK_GTUR_GAS,DK,GTUR,GAS,0.425,0,0,0.166666667,0.166666667,0,0,0,0.2,0.425,0.166666667,0.564705882,,,,,,,,,11 -DK_STUR_GAS,112.2555989,DK_STUR_GAS,DK,STUR,GAS,0.38,0,0,0.02,0.02,0,0,0,0.4,0.38,0,0,,,,,,,,,13 -DK_STUR_HRD,692.4285714,DK_STUR_HRD,DK,STUR,HRD,0.46,8,8,0.017777778,0.017777778,65,0,0,0.3,0.46,2,0.81,,,,,,,,,7 -DK_STUR_OIL,350.3333333,DK_STUR_OIL,DK,STUR,OIL,0.33,4,4,0.02,0.02,65,0,0,0.4,0.33,0,0.799636364,,,,,,,,,3 -DK_PHOT_SUN,851,DK_PHOT_SUN,DK,PHOT,SUN,1,0,0,0.02,0.02,0,0,0,0,1,0,0,,,,,,,,,1 -DK_WTOF_WIN,1271,DK_WTOF_WIN,DK,WTOF,WIN,1,0,0,0.02,0.02,0,0,0,0,1,0,0,,,,,,,,,1 -DK_WTON_WIN,3978,DK_WTON_WIN,DK,WTON,WIN,1,0,0,0.02,0.02,0,0,0,0,1,0,0,,,,,,,,,1 -DK_STUR_WST,47.23770415,DK_STUR_WST,DK,STUR,WST,0.2,0,0,0.02,0.02,0,0,0,0,0.2,0,0,,,,,,,,,7 +,PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost_pu,NoLoadCost_pu,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,CHPPowerLossFactor,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,CHPMaxHeat,Nunits,Extendable,Investment,FixedCost,EconomicLifetime +DK_STUR_BIO,117.8,DK_STUR_BIO,DK,STUR,BIO,0.46,4,6,0.02,0.02,120,12.5,1.3,0.35,0.35,1.0,0.0,back-pressure,1.0,0.0,,,,,117.8,10,,,, +DK_COMC_GAS,297.0546704,DK_COMC_GAS,DK,COMC,GAS,0.57,2,4,0.03,0.03,55,0.0,0.0,0.36,0.57,1.0,0.42,,,,,,,,,2,,,, +DK_GTUR_GAS,60.99289894,DK_GTUR_GAS,DK,GTUR,GAS,0.425,0,0,0.166666667,0.166666667,0,0.0,0.0,0.2,0.425,0.166666667,0.564705882,,,,,,,,,11,,,, +DK_STUR_GAS,112.2555989,DK_STUR_GAS,DK,STUR,GAS,0.38,0,0,0.02,0.02,0,0.0,0.0,0.4,0.38,0.0,0.0,,,,,,,,,13,,,, +DK_STUR_HRD,692.4285714,DK_STUR_HRD,DK,STUR,HRD,0.46,8,8,0.017777778,0.017777778,65,0.0,0.0,0.3,0.46,2.0,0.81,,,,,,,,,7,,,, +DK_STUR_OIL,350.3333333,DK_STUR_OIL,DK,STUR,OIL,0.33,4,4,0.02,0.02,65,0.0,0.0,0.4,0.33,0.0,0.799636364,,,,,,,,,3,,,, +DK_PHOT_SUN,851.0,DK_PHOT_SUN,DK,PHOT,SUN,1.0,0,0,0.02,0.02,0,0.0,0.0,0.0,1.0,0.0,0.0,,,,,,,,,1,,,, +DK_WTOF_WIN,1271.0,DK_WTOF_WIN,DK,WTOF,WIN,1.0,0,0,0.02,0.02,0,0.0,0.0,0.0,1.0,0.0,0.0,,,,,,,,,1,,,, +DK_WTON_WIN,3978.0,DK_WTON_WIN,DK,WTON,WIN,1.0,0,0,0.02,0.02,0,0.0,0.0,0.0,1.0,0.0,0.0,,,,,,,,,1,,,, +DK_STUR_WST,47.23770415,DK_STUR_WST,DK,STUR,WST,0.2,0,0,0.02,0.02,0,0.0,0.0,0.0,0.2,0.0,0.0,,,,,,,,,7,,,, diff --git a/Database/PowerPlants/EE/clustered.csv b/Database/PowerPlants/EE/clustered.csv index 8b75a902..3db63cb9 100644 --- a/Database/PowerPlants/EE/clustered.csv +++ b/Database/PowerPlants/EE/clustered.csv @@ -1,6 +1,6 @@ -,PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost_pu,NoLoadCost_pu,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,Nunits -EE_STUR_BIO,77,EE_STUR_BIO,EE,STUR,BIO,0.46,4,6,0.02,0.02,120,12.5,1.3,0.35,0.35,1,0,,,,,,,1 -EE_ICEN_GAS,10,EE_ICEN_GAS,EE,ICEN,GAS,0.49,0,0,1,1,0,0,0,0.3,0.49,0,0.489795918,,,,,,,25 -EE_WTON_WIN,375,EE_WTON_WIN,EE,WTON,WIN,1,0,0,0.02,0.02,0,0,0,0,1,0,0,,,,,,,1 -EE_STUR_WST,20,EE_STUR_WST,EE,STUR,WST,0.2,0,0,0.02,0.02,0,0,0,0,0.2,0,0,,,,,,,1 -EE_STUR_OTH,141.0714286,EE_STUR_OTH,EE,STUR,OTH,0.3,4,4,0.02,0.02,65,0,0,0.5,0.3,0,0,,,,,,,14 +,PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost_pu,NoLoadCost_pu,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,Nunits,Extendable,Investment,FixedCost,EconomicLifetime +EE_STUR_BIO,77.0,EE_STUR_BIO,EE,STUR,BIO,0.46,4,6,0.02,0.02,120,12.5,1.3,0.35,0.35,1,0.0,,,,,,,1,,,, +EE_ICEN_GAS,10.0,EE_ICEN_GAS,EE,ICEN,GAS,0.49,0,0,1.0,1.0,0,0.0,0.0,0.3,0.49,0,0.489795918,,,,,,,25,,,, +EE_WTON_WIN,375.0,EE_WTON_WIN,EE,WTON,WIN,1.0,0,0,0.02,0.02,0,0.0,0.0,0.0,1.0,0,0.0,,,,,,,1,,,, +EE_STUR_WST,20.0,EE_STUR_WST,EE,STUR,WST,0.2,0,0,0.02,0.02,0,0.0,0.0,0.0,0.2,0,0.0,,,,,,,1,,,, +EE_STUR_OTH,141.0714286,EE_STUR_OTH,EE,STUR,OTH,0.3,4,4,0.02,0.02,65,0.0,0.0,0.5,0.3,0,0.0,,,,,,,14,,,, diff --git a/Database/PowerPlants/EL/2015.csv b/Database/PowerPlants/EL/2015.csv index 5c15e7f1..b2b14fd0 100644 --- a/Database/PowerPlants/EL/2015.csv +++ b/Database/PowerPlants/EL/2015.csv @@ -1,54 +1,54 @@ -PowerCapacity,InitialPower,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost,NoLoadCost,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency -274,274,AGIOS DIMITRIOS 1,EL,STUR,LIG,0.3574,6,6,0.010948905,0.01459854,60000,0,0,0.547445255,0.3284,6,1.34,,,,,, -274,274,AGIOS DIMITRIOS 2,EL,STUR,LIG,0.3574,6,6,0.010948905,0.01459854,60000,0,0,0.547445255,0.3284,6,1.34,,,,,, -283,283,AGIOS DIMITRIOS 3,EL,STUR,LIG,0.3588,6,6,0.010600707,0.014134276,60000,0,0,0.54770318,0.3297,6,1.34,,,,,, -283,283,AGIOS DIMITRIOS 4,EL,STUR,LIG,0.3594,6,6,0.010600707,0.014134276,60000,0,0,0.54770318,0.3303,6,1.34,,,,,, -342,342,AGIOS DIMITRIOS 5,EL,STUR,LIG,0.37,6,6,0.00877193,0.011695906,60000,0,0,0.549707602,0.34,6,1.34,,,,,, -417,417,ALIVERI 5 CC 1,EL,COMC,GAS,0.585,2,2,0.032142857,0.032142857,15000,0,0,0.436450839,0.43875,2,0.44,,,,,, -273,273,AMYNTAIO 2,EL,STUR,LIG,0.3591,6,6,0.010989011,0.014652015,60000,0,0,0.549450549,0.33,6,1.31,,,,,, -273,273,AMYNTAIO 1,EL,STUR,LIG,0.3597,6,6,0.010989011,0.014652015,60000,0,0,0.549450549,0.3305,6,1.31,,,,,, -275,275,KARDIA 1,EL,STUR,LIG,0.3517,6,6,0.010909091,0.018181818,60000,0,0,0.549090909,0.3232,6,1.32,,,,,, -280,280,KARDIA 3,EL,STUR,LIG,0.3517,6,6,0.010909091,0.018181818,60000,0,0,0.55,0.3232,6,1.32,,,,,, -275,275,KARDIA 2,EL,STUR,LIG,0.3549,6,6,0.010714286,0.017857143,60000,0,0,0.549090909,0.3261,6,1.32,,,,,, -280,280,KARDIA 4,EL,STUR,LIG,0.3555,6,6,0.010714286,0.017857143,60000,0,0,0.55,0.3267,6,1.32,,,,,, -476,476,[KOMOTINI-1 GT 1;KOMOTINI-1 GT 2;KOMOTINI-1 SC 1],EL,COMC,GAS,0.52,2,2,0.021008403,0.021008403,15000,0,0,0.273109244,0.39,2,0.44,,,,,, -550,550,[LAVRIO-IV GT 1;LAVRIO-IV GT 2;LAVRIO-IV GT 3;LAVRIO-IV SC 1],EL,COMC,GAS,0.51,2,2,0.021818182,0.021818182,15000,0,0,0.170909091,0.3825,2,0.44,,,,,, -378,378,LAVRIO-V CC 1,EL,COMC,GAS,0.562,2,2,0.027777778,0.027777778,15000,0,0,0.582010582,0.4215,2,0.44,,,,,, -255,255,MEGALOPOLIS-A NO 3,EL,STUR,LIG,0.3517,6,6,0.011764706,0.019607843,60000,0,0,0.603921569,0.3232,6,1.49,,,,,, -256,256,MEGALOPOLIS-A NO 4,EL,STUR,LIG,0.3623,6,6,0.01171875,0.01953125,60000,0,0,0.76171875,0.3329,6,1.49,,,,,, -845,845,MEGALOPOLIS-A NO 5,EL,STUR,LIG,0.38,6,6,0.01171875,0.01953125,60000,0,0,0.295857988,0.35,6,1.49,,,,,, -289,289,FLORINA 1,EL,STUR,LIG,0.3701,6,6,0.010380623,0.01384083,60000,0,0,0.522491349,0.3401,6,0.94,,,,,, -274,274,PTOLEMAIS 4,EL,STUR,LIG,0.3504,6,6,0.010948905,0.016423358,60000,0,0,0.547445255,0.322,6,1.31,,,,,, -334,334,[AGIOS NIKOLAOS POWER CC-1 GT 1;AGIOS NIKOLAOS POWER CC-1 GT 2;AGIOS NIKOLAOS POWER CC-1 SC 1],EL,COMC,GAS,0.4493,2,2,0.038709677,0.038709677,15000,0,0,0.389221557,0.336975,2,0.44,,,,,, -410,410,[THISVI ELPEDISON GT 1;THISVI ELPEDISON SC 1],EL,COMC,GAS,0.56,2,2,0.024390244,0.024390244,15000,0,0,0.56097561,0.42,2,0.44,,,,,, -400,400,[THESSALONIKI POWER GT 1;THESSALONIKI POWER SC 1],EL,COMC,GAS,0.561,2,2,0.023076923,0.023076923,15000,0,0,0.55,0.42075,2,0.44,,,,,, -422,422,THIVA HERON-2 CC 1,EL,COMC,GAS,0.57,2,2,0.028436019,0.028436019,15000,0,0,0.462085308,0.4275,2,0.44,,,,,, -49,0,THIVA HERON-1 GT 1,EL,GTUR,GAS,0.39,1,1,0.06122449,0.163265306,4000,0,0,0.204081633,0.273,2,0.44,,,,,, -49,0,THIVA HERON-1 GT 2,EL,GTUR,GAS,0.39,1,1,0.06122449,0.163265306,4000,0,0,0.204081633,0.273,2,0.44,,,,,, -49,0,THIVA HERON-1 GT 3,EL,GTUR,GAS,0.39,1,1,0.06122449,0.163265306,4000,0,0,0.204081633,0.273,2,0.44,,,,,, -154,0,[ILARIONAS 1;ILARIONAS 2;ILARIONAS A1],EL,HDAM,WAT,1,0,0,1,1,0,0,0,0,0.5,1,0,,,95550,,, -433,0,KORINTHOS POWER CC 1,EL,COMC,GAS,0.58,2,2,0.032258065,0.032258065,15000,0,0,0.45034642,0.435,2,0.44,,,,,, -432,0,AGIOS NIKOLAOS POWER CC-2 CC 1,EL,COMC,GAS,0.58,2,2,0.03235498,0.03235498,15000,0,0,0.451388889,0.435,2,0.44,,,,,, -384,0,THISAVROS,EL,HPHS,WAT,1,0,0,1,1,0,0,0,0,0.5,1,0,,,264545.5556,,100,0.8 -50,0,[AGRAS 1;AGRAS 2],EL,HROR,WAT,1,0,0,1,1,0,0,0,0,0.5,1,0,,,0,,, -108,0,[ASSOMATA 1;ASSOMATA 2],EL,HDAM,WAT,1,0,0,1,1,0,0,0,0,0.5,1,0,,,1415.555556,,, -19,0,EDESSAIOS 1,EL,HROR,WAT,1,0,0,1,1,0,0,0,0,0.5,1,0,,,0,,, -8.5,0,GHIONA 1,EL,HROR,WAT,1,0,0,1,1,0,0,0,0,0.5,1,0,,,0,,, -4.8,0,[GLAFKOS-II NO1;GLAFKOS-II NO2],EL,HROR,WAT,1,0,0,1,1,0,0,0,0,0.5,1,0,,,0,,, -320,0,[KASTRAKI 1;KASTRAKI 2;KASTRAKI 3;KASTRAKI 4],EL,HDAM,WAT,1,0,0,1,1,0,0,0,0,0.5,1,0,,,13850.66667,,, -437,0,[KREMASTA 1;KREMASTA 2;KREMASTA 3;KREMASTA 4],EL,HDAM,WAT,1,0,0,1,1,0,0,0,0,0.5,1,0,,,1482250,,, -70,0,LADONAS,EL,HDAM,WAT,1,0,0,1,1,0,0,0,0,0.5,1,0,,,7012.444444,,, -10.3,0,[LOUROS 1;LOUROS 2;LOUROS 3],EL,HROR,WAT,1,0,0,1,1,0,0,0,0,0.5,1,0,,,0,,, -10.8,0,[MAKROHORI-I NO 1;MAKROHORI-I NO 2;MAKROHORI-I NO 3],EL,HROR,WAT,1,0,0,1,1,0,0,0,0,0.5,1,0,,,0,,, -130,0,[PLASTIRA 1;PLASTIRA 2;PLASTIRA 3],EL,HDAM,WAT,1,0,0,1,1,0,0,0,0,0.5,1,0,,,67783.33333,,, -210,0,[PIGAI AOOS 1;PIGAI AOOS 2],EL,HDAM,WAT,1,0,0,1,1,0,0,0,0,0.5,1,0,,,30576,,, -116,0,[PLATANOVRISI 1;PLATANOVRISI 2],EL,HDAM,WAT,1,0,0,1,1,0,0,0,0,0.5,1,0,,,14740.83333,,, -375,0,[POLYPHYTON 1;POLYPHYTON 2;POLYPHYTON 3],EL,HDAM,WAT,1,0,0,1,1,0,0,0,0,0.5,1,0,,,371964.4444,,, -34,0,[POURNARI-II NO 1;POURNARI-II NO 2],EL,HDAM,WAT,1,0,0,1,1,0,0,0,0,0.5,1,0,,,163.3333333,,, -300,0,[POURNARI-I NO 1;POURNARI-I NO 2;POURNARI-I NO 3;POURNARI-I NO A1],EL,HDAM,WAT,1,0,0,1,1,0,0,0,0,0.5,1,0,,,71760.5,,, -315,0,[SFIKIA 1;SFIKIA 2;SFIKIA 3],EL,HPHS,WAT,1,0,0,1,1,0,0,0,0,0.5,1,0,,,4018,,315,0.8 -6,0,[STRATOS-II NO 1;STRATOS-II NO 2],EL,HDAM,WAT,1,0,0,1,1,0,0,0,0,0.5,1,0,,,0,,, -150,0,[STRATOS-I NO 1;STRATOS-I NO 2],EL,HROR,WAT,1,0,0,1,1,0,0,0,0,0.5,1,0,,,778.5555556,,, -1613,0,Cluster Wind Onshore,EL,WTON,WIN,1,0,0,1,1,0,0,0,0,0.5,1,0,,,,,, -2429,0,Cluster Solar,EL,PHOT,SUN,1,0,0,1,1,0,0,0,0,0.5,1,0,,,,,, -298,0,Cluster Other renewable,EL,STUR,BIO,0.39,1,1,0.04,0.05,10728,0,0,0.2,0.195,1,0,,,,,, +PowerCapacity,InitialPower,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost,NoLoadCost,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,Extendable,Investment,FixedCost,EconomicLifetime +274.0,274,AGIOS DIMITRIOS 1,EL,STUR,LIG,0.3574,6,6,0.010948905,0.01459854,60000,0,0,0.547445255,0.3284,6,1.34,,,,,,,,,, +274.0,274,AGIOS DIMITRIOS 2,EL,STUR,LIG,0.3574,6,6,0.010948905,0.01459854,60000,0,0,0.547445255,0.3284,6,1.34,,,,,,,,,, +283.0,283,AGIOS DIMITRIOS 3,EL,STUR,LIG,0.3588,6,6,0.010600707,0.014134276000000001,60000,0,0,0.54770318,0.3297,6,1.34,,,,,,,,,, +283.0,283,AGIOS DIMITRIOS 4,EL,STUR,LIG,0.3594,6,6,0.010600707,0.014134276000000001,60000,0,0,0.54770318,0.3303,6,1.34,,,,,,,,,, +342.0,342,AGIOS DIMITRIOS 5,EL,STUR,LIG,0.37,6,6,0.00877193,0.011695906,60000,0,0,0.549707602,0.34,6,1.34,,,,,,,,,, +417.0,417,ALIVERI 5 CC 1,EL,COMC,GAS,0.585,2,2,0.032142857000000004,0.032142857000000004,15000,0,0,0.436450839,0.43875,2,0.44,,,,,,,,,, +273.0,273,AMYNTAIO 2,EL,STUR,LIG,0.3591,6,6,0.010989011000000002,0.014652015,60000,0,0,0.549450549,0.33,6,1.31,,,,,,,,,, +273.0,273,AMYNTAIO 1,EL,STUR,LIG,0.3597,6,6,0.010989011000000002,0.014652015,60000,0,0,0.549450549,0.3305,6,1.31,,,,,,,,,, +275.0,275,KARDIA 1,EL,STUR,LIG,0.3517,6,6,0.010909091000000001,0.018181818,60000,0,0,0.549090909,0.3232,6,1.32,,,,,,,,,, +280.0,280,KARDIA 3,EL,STUR,LIG,0.3517,6,6,0.010909091000000001,0.018181818,60000,0,0,0.55,0.3232,6,1.32,,,,,,,,,, +275.0,275,KARDIA 2,EL,STUR,LIG,0.3549,6,6,0.010714286000000002,0.017857143,60000,0,0,0.549090909,0.3261,6,1.32,,,,,,,,,, +280.0,280,KARDIA 4,EL,STUR,LIG,0.3555,6,6,0.010714286000000002,0.017857143,60000,0,0,0.55,0.3267,6,1.32,,,,,,,,,, +476.0,476,[KOMOTINI-1 GT 1;KOMOTINI-1 GT 2;KOMOTINI-1 SC 1],EL,COMC,GAS,0.52,2,2,0.021008403,0.021008403,15000,0,0,0.273109244,0.39,2,0.44,,,,,,,,,, +550.0,550,[LAVRIO-IV GT 1;LAVRIO-IV GT 2;LAVRIO-IV GT 3;LAVRIO-IV SC 1],EL,COMC,GAS,0.51,2,2,0.021818182000000002,0.021818182000000002,15000,0,0,0.170909091,0.3825,2,0.44,,,,,,,,,, +378.0,378,LAVRIO-V CC 1,EL,COMC,GAS,0.562,2,2,0.027777778,0.027777778,15000,0,0,0.582010582,0.4215,2,0.44,,,,,,,,,, +255.0,255,MEGALOPOLIS-A NO 3,EL,STUR,LIG,0.3517,6,6,0.011764706000000002,0.019607843,60000,0,0,0.6039215689999999,0.3232,6,1.49,,,,,,,,,, +256.0,256,MEGALOPOLIS-A NO 4,EL,STUR,LIG,0.3623,6,6,0.01171875,0.01953125,60000,0,0,0.76171875,0.3329,6,1.49,,,,,,,,,, +845.0,845,MEGALOPOLIS-A NO 5,EL,STUR,LIG,0.38,6,6,0.01171875,0.01953125,60000,0,0,0.295857988,0.35,6,1.49,,,,,,,,,, +289.0,289,FLORINA 1,EL,STUR,LIG,0.3701,6,6,0.010380623,0.01384083,60000,0,0,0.5224913489999999,0.3401,6,0.94,,,,,,,,,, +274.0,274,PTOLEMAIS 4,EL,STUR,LIG,0.3504,6,6,0.010948905,0.016423358,60000,0,0,0.547445255,0.322,6,1.31,,,,,,,,,, +334.0,334,[AGIOS NIKOLAOS POWER CC-1 GT 1;AGIOS NIKOLAOS POWER CC-1 GT 2;AGIOS NIKOLAOS POWER CC-1 SC 1],EL,COMC,GAS,0.4493,2,2,0.038709677000000005,0.038709677000000005,15000,0,0,0.3892215570000001,0.336975,2,0.44,,,,,,,,,, +410.0,410,[THISVI ELPEDISON GT 1;THISVI ELPEDISON SC 1],EL,COMC,GAS,0.56,2,2,0.024390244,0.024390244,15000,0,0,0.56097561,0.42,2,0.44,,,,,,,,,, +400.0,400,[THESSALONIKI POWER GT 1;THESSALONIKI POWER SC 1],EL,COMC,GAS,0.561,2,2,0.023076923,0.023076923,15000,0,0,0.55,0.42075,2,0.44,,,,,,,,,, +422.0,422,THIVA HERON-2 CC 1,EL,COMC,GAS,0.57,2,2,0.028436019,0.028436019,15000,0,0,0.462085308,0.4275,2,0.44,,,,,,,,,, +49.0,0,THIVA HERON-1 GT 1,EL,GTUR,GAS,0.39,1,1,0.06122449,0.163265306,4000,0,0,0.204081633,0.273,2,0.44,,,,,,,,,, +49.0,0,THIVA HERON-1 GT 2,EL,GTUR,GAS,0.39,1,1,0.06122449,0.163265306,4000,0,0,0.204081633,0.273,2,0.44,,,,,,,,,, +49.0,0,THIVA HERON-1 GT 3,EL,GTUR,GAS,0.39,1,1,0.06122449,0.163265306,4000,0,0,0.204081633,0.273,2,0.44,,,,,,,,,, +154.0,0,[ILARIONAS 1;ILARIONAS 2;ILARIONAS A1],EL,HDAM,WAT,1.0,0,0,1.0,1.0,0,0,0,0.0,0.5,1,0.0,,,95550.0,,,,,,, +433.0,0,KORINTHOS POWER CC 1,EL,COMC,GAS,0.58,2,2,0.032258065,0.032258065,15000,0,0,0.45034642,0.435,2,0.44,,,,,,,,,, +432.0,0,AGIOS NIKOLAOS POWER CC-2 CC 1,EL,COMC,GAS,0.58,2,2,0.03235498,0.03235498,15000,0,0,0.45138888899999996,0.435,2,0.44,,,,,,,,,, +384.0,0,THISAVROS,EL,HPHS,WAT,1.0,0,0,1.0,1.0,0,0,0,0.0,0.5,1,0.0,,,264545.5556,,100.0,0.8,,,, +50.0,0,[AGRAS 1;AGRAS 2],EL,HROR,WAT,1.0,0,0,1.0,1.0,0,0,0,0.0,0.5,1,0.0,,,0.0,,,,,,, +108.0,0,[ASSOMATA 1;ASSOMATA 2],EL,HDAM,WAT,1.0,0,0,1.0,1.0,0,0,0,0.0,0.5,1,0.0,,,1415.555556,,,,,,, +19.0,0,EDESSAIOS 1,EL,HROR,WAT,1.0,0,0,1.0,1.0,0,0,0,0.0,0.5,1,0.0,,,0.0,,,,,,, +8.5,0,GHIONA 1,EL,HROR,WAT,1.0,0,0,1.0,1.0,0,0,0,0.0,0.5,1,0.0,,,0.0,,,,,,, +4.8,0,[GLAFKOS-II NO1;GLAFKOS-II NO2],EL,HROR,WAT,1.0,0,0,1.0,1.0,0,0,0,0.0,0.5,1,0.0,,,0.0,,,,,,, +320.0,0,[KASTRAKI 1;KASTRAKI 2;KASTRAKI 3;KASTRAKI 4],EL,HDAM,WAT,1.0,0,0,1.0,1.0,0,0,0,0.0,0.5,1,0.0,,,13850.666669999999,,,,,,, +437.0,0,[KREMASTA 1;KREMASTA 2;KREMASTA 3;KREMASTA 4],EL,HDAM,WAT,1.0,0,0,1.0,1.0,0,0,0,0.0,0.5,1,0.0,,,1482250.0,,,,,,, +70.0,0,LADONAS,EL,HDAM,WAT,1.0,0,0,1.0,1.0,0,0,0,0.0,0.5,1,0.0,,,7012.444444,,,,,,, +10.3,0,[LOUROS 1;LOUROS 2;LOUROS 3],EL,HROR,WAT,1.0,0,0,1.0,1.0,0,0,0,0.0,0.5,1,0.0,,,0.0,,,,,,, +10.8,0,[MAKROHORI-I NO 1;MAKROHORI-I NO 2;MAKROHORI-I NO 3],EL,HROR,WAT,1.0,0,0,1.0,1.0,0,0,0,0.0,0.5,1,0.0,,,0.0,,,,,,, +130.0,0,[PLASTIRA 1;PLASTIRA 2;PLASTIRA 3],EL,HDAM,WAT,1.0,0,0,1.0,1.0,0,0,0,0.0,0.5,1,0.0,,,67783.33333,,,,,,, +210.0,0,[PIGAI AOOS 1;PIGAI AOOS 2],EL,HDAM,WAT,1.0,0,0,1.0,1.0,0,0,0,0.0,0.5,1,0.0,,,30576.0,,,,,,, +116.0,0,[PLATANOVRISI 1;PLATANOVRISI 2],EL,HDAM,WAT,1.0,0,0,1.0,1.0,0,0,0,0.0,0.5,1,0.0,,,14740.833330000001,,,,,,, +375.0,0,[POLYPHYTON 1;POLYPHYTON 2;POLYPHYTON 3],EL,HDAM,WAT,1.0,0,0,1.0,1.0,0,0,0,0.0,0.5,1,0.0,,,371964.4444,,,,,,, +34.0,0,[POURNARI-II NO 1;POURNARI-II NO 2],EL,HDAM,WAT,1.0,0,0,1.0,1.0,0,0,0,0.0,0.5,1,0.0,,,163.33333330000005,,,,,,, +300.0,0,[POURNARI-I NO 1;POURNARI-I NO 2;POURNARI-I NO 3;POURNARI-I NO A1],EL,HDAM,WAT,1.0,0,0,1.0,1.0,0,0,0,0.0,0.5,1,0.0,,,71760.5,,,,,,, +315.0,0,[SFIKIA 1;SFIKIA 2;SFIKIA 3],EL,HPHS,WAT,1.0,0,0,1.0,1.0,0,0,0,0.0,0.5,1,0.0,,,4018.0,,315.0,0.8,,,, +6.0,0,[STRATOS-II NO 1;STRATOS-II NO 2],EL,HDAM,WAT,1.0,0,0,1.0,1.0,0,0,0,0.0,0.5,1,0.0,,,0.0,,,,,,, +150.0,0,[STRATOS-I NO 1;STRATOS-I NO 2],EL,HROR,WAT,1.0,0,0,1.0,1.0,0,0,0,0.0,0.5,1,0.0,,,778.5555555999997,,,,,,, +1613.0,0,Cluster Wind Onshore,EL,WTON,WIN,1.0,0,0,1.0,1.0,0,0,0,0.0,0.5,1,0.0,,,,,,,,,, +2429.0,0,Cluster Solar,EL,PHOT,SUN,1.0,0,0,1.0,1.0,0,0,0,0.0,0.5,1,0.0,,,,,,,,,, +298.0,0,Cluster Other renewable,EL,STUR,BIO,0.39,1,1,0.04,0.05,10728,0,0,0.2,0.195,1,0.0,,,,,,,,,, diff --git a/Database/PowerPlants/EL/clustered.csv b/Database/PowerPlants/EL/clustered.csv index 332b2fca..bc2f484c 100644 --- a/Database/PowerPlants/EL/clustered.csv +++ b/Database/PowerPlants/EL/clustered.csv @@ -1,9 +1,9 @@ -,PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost_pu,NoLoadCost_pu,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,Nunits -EL_COMC_GAS,393.6382465749885,EL_COMC_GAS,EL,COMC,GAS,0.57,2,4,0.03,0.03,55,0.0,0,0.36,0.57,1.0,0.42,,,,,,,10.0 -EL_GTUR_GAS,63.448220136321126,EL_GTUR_GAS,EL,GTUR,GAS,0.425,0,0,0.166666666666667,0.166666666666667,0,0.0,0,0.2,0.425,0.166666666666667,0.564705882352941,,,,,,,14.0 -EL_ICEN_GAS,9.15232414123038,EL_ICEN_GAS,EL,ICEN,GAS,0.49,0,0,1.0,1.0,0,0.0,0,0.3,0.49,0.0,0.489795918367347,,,,,,,10.0 -EL_STUR_GAS,119.95238199488148,EL_STUR_GAS,EL,STUR,GAS,0.38,0,0,0.02,0.02,0,0.0,0,0.4,0.38,0.0,0.0,,,,,,,4.0 -EL_STUR_LIG,652.0,EL_STUR_LIG,EL,STUR,LIG,0.393,8.0,8.0,0.015209790209790195,0.017482517482517494,65.0,12.56164383561645,0.0,0.389,0.4075,5.0,1.0499999999999998,,,,,,,6.0 -EL_PHOT_SUN,2650.0,EL_PHOT_SUN,EL,PHOT,SUN,1.0,0,0,0.02,0.02,0,0.0,0,0.0,1.0,0.0,0.0,,,,,,,1 -EL_HPHS_WAT,3102.0,EL_HPHS_WAT,EL,HPHS,WAT,0.8,0,0,0.0666666666666667,0.0666666666666667,0,0.0,0,0.0,1.0,0.0,0.0,,,1700000.0,0.0,698.9999999999999,0.8,1 -EL_WTON_WIN,2092.0,EL_WTON_WIN,EL,WTON,WIN,1.0,0,0,0.02,0.02,0,0.0,0,0.0,1.0,0.0,0.0,,,,,,,1 +,PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost_pu,NoLoadCost_pu,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,Nunits,Extendable,Investment,FixedCost,EconomicLifetime +EL_COMC_GAS,393.6382465749885,EL_COMC_GAS,EL,COMC,GAS,0.57,2.0,4.0,0.03,0.03,55.0,0.0,0.0,0.36,0.57,1.0,0.42,,,,,,,10.0,,,, +EL_GTUR_GAS,63.44822013632113,EL_GTUR_GAS,EL,GTUR,GAS,0.425,0.0,0.0,0.166666666666667,0.166666666666667,0.0,0.0,0.0,0.2,0.425,0.166666666666667,0.5647058823529411,,,,,,,14.0,,,, +EL_ICEN_GAS,9.15232414123038,EL_ICEN_GAS,EL,ICEN,GAS,0.49,0.0,0.0,1.0,1.0,0.0,0.0,0.0,0.3,0.49,0.0,0.48979591836734704,,,,,,,10.0,,,, +EL_STUR_GAS,119.95238199488148,EL_STUR_GAS,EL,STUR,GAS,0.38,0.0,0.0,0.02,0.02,0.0,0.0,0.0,0.4,0.38,0.0,0.0,,,,,,,4.0,,,, +EL_STUR_LIG,652.0,EL_STUR_LIG,EL,STUR,LIG,0.39299999999999996,8.0,8.0,0.015209790209790196,0.017482517482517494,65.0,12.56164383561645,0.0,0.389,0.4075,5.0,1.0499999999999998,,,,,,,6.0,,,, +EL_PHOT_SUN,2650.0,EL_PHOT_SUN,EL,PHOT,SUN,1.0,0.0,0.0,0.02,0.02,0.0,0.0,0.0,0.0,1.0,0.0,0.0,,,,,,,1.0,,,, +EL_HPHS_WAT,3102.0,EL_HPHS_WAT,EL,HPHS,WAT,0.8,0.0,0.0,0.0666666666666667,0.0666666666666667,0.0,0.0,0.0,0.0,1.0,0.0,0.0,,,1700000.0,0.0,698.9999999999999,0.8,1.0,,,, +EL_WTON_WIN,2092.0,EL_WTON_WIN,EL,WTON,WIN,1.0,0.0,0.0,0.02,0.02,0.0,0.0,0.0,0.0,1.0,0.0,0.0,,,,,,,1.0,,,, diff --git a/Database/PowerPlants/ES/clustered.csv b/Database/PowerPlants/ES/clustered.csv index 0ca021a5..b2056b40 100644 --- a/Database/PowerPlants/ES/clustered.csv +++ b/Database/PowerPlants/ES/clustered.csv @@ -1,12 +1,12 @@ -,PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost_pu,NoLoadCost_pu,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,CHPPowerLossFactor,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,CHPMaxHeat,Nunits -ES_STUR_BIO,153.8018787,ES_STUR_BIO,ES,STUR,BIO,0.46,4,6,0.02,0.02,120,12.5,1.3,0.35,0.35,1,0,back-pressure,1,0,,,,,153.8018787,4 -ES_COMC_GAS,414.346826,ES_COMC_GAS,ES,COMC,GAS,0.57,2,4,0.03,0.03,55,0,0,0.36,0.57,1,0.42,,,,,,,,,64 -ES_GTUR_GAS,63.16975697,ES_GTUR_GAS,ES,GTUR,GAS,0.425,0,0,0.166666667,0.166666667,0,0,0,0.2,0.425,0.166666667,0.564705882,,,,,,,,,27 -ES_ICEN_GAS,9.941612802,ES_ICEN_GAS,ES,ICEN,GAS,0.49,0,0,1,1,0,0,0,0.3,0.49,0,0.489795918,,,,,,,,,72 -ES_STUR_HRD,721.278871,ES_STUR_HRD,ES,STUR,HRD,0.46,8,8,0.017777778,0.017777778,65,0,0,0.3,0.46,2,0.81,,,,,,,,,13 -ES_STUR_NUC,946.55,ES_STUR_NUC,ES,STUR,NUC,1,24,24,0.003333333,0.003333333,300,0,0,0.5,1,12,0,,,,,,,,,8 -ES_PHOT_SUN,6970,ES_PHOT_SUN,ES,PHOT,SUN,1,0,0,0.02,0.02,0,0,0,0,1,0,0,,,,,,,,,1 -ES_HROR_WAT,2723,ES_HROR_WAT,ES,HROR,WAT,1,0,0,0.02,0.02,0,0,0,0,1,0,0,,,,,,,,,1 -ES_HPHS_WAT,24669.7,ES_HPHS_WAT,ES,HPHS,WAT,0.8,0,0,0.066666667,0.066666667,0,0,0,0,1,0,0,,,,13674197.4,0,5593.4,0.8,,1 -ES_WTON_WIN,22772.1,ES_WTON_WIN,ES,WTON,WIN,1,0,0,0.02,0.02,0,0,0,0,1,0,0,,,,,,,,,1 -ES_STUR_WST,39.17908676,ES_STUR_WST,ES,STUR,WST,0.2,0,0,0.02,0.02,0,0,0,0,0.2,0,0,,,,,,,,,5 +,PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost_pu,NoLoadCost_pu,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,CHPPowerLossFactor,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,CHPMaxHeat,Nunits,Extendable,Investment,FixedCost,EconomicLifetime +ES_STUR_BIO,153.80187869999997,ES_STUR_BIO,ES,STUR,BIO,0.46,4,6,0.02,0.02,120,12.5,1.3,0.35,0.35,1.0,0.0,back-pressure,1.0,0.0,,,,,153.80187869999997,4,,,, +ES_COMC_GAS,414.34682599999996,ES_COMC_GAS,ES,COMC,GAS,0.57,2,4,0.03,0.03,55,0.0,0.0,0.36,0.57,1.0,0.42,,,,,,,,,64,,,, +ES_GTUR_GAS,63.16975697,ES_GTUR_GAS,ES,GTUR,GAS,0.425,0,0,0.166666667,0.166666667,0,0.0,0.0,0.2,0.425,0.166666667,0.564705882,,,,,,,,,27,,,, +ES_ICEN_GAS,9.941612802,ES_ICEN_GAS,ES,ICEN,GAS,0.49,0,0,1.0,1.0,0,0.0,0.0,0.3,0.49,0.0,0.489795918,,,,,,,,,72,,,, +ES_STUR_HRD,721.278871,ES_STUR_HRD,ES,STUR,HRD,0.46,8,8,0.017777778,0.017777778,65,0.0,0.0,0.3,0.46,2.0,0.81,,,,,,,,,13,,,, +ES_STUR_NUC,946.55,ES_STUR_NUC,ES,STUR,NUC,1.0,24,24,0.003333333,0.003333333,300,0.0,0.0,0.5,1.0,12.0,0.0,,,,,,,,,8,,,, +ES_PHOT_SUN,6970.0,ES_PHOT_SUN,ES,PHOT,SUN,1.0,0,0,0.02,0.02,0,0.0,0.0,0.0,1.0,0.0,0.0,,,,,,,,,1,,,, +ES_HROR_WAT,2723.0,ES_HROR_WAT,ES,HROR,WAT,1.0,0,0,0.02,0.02,0,0.0,0.0,0.0,1.0,0.0,0.0,,,,,,,,,1,,,, +ES_HPHS_WAT,24669.7,ES_HPHS_WAT,ES,HPHS,WAT,0.8,0,0,0.066666667,0.066666667,0,0.0,0.0,0.0,1.0,0.0,0.0,,,,13674197.4,0.0,5593.4,0.8,,1,,,, +ES_WTON_WIN,22772.1,ES_WTON_WIN,ES,WTON,WIN,1.0,0,0,0.02,0.02,0,0.0,0.0,0.0,1.0,0.0,0.0,,,,,,,,,1,,,, +ES_STUR_WST,39.17908676,ES_STUR_WST,ES,STUR,WST,0.2,0,0,0.02,0.02,0,0.0,0.0,0.0,0.2,0.0,0.0,,,,,,,,,5,,,, diff --git a/Database/PowerPlants/FI/clustered.csv b/Database/PowerPlants/FI/clustered.csv index bb614e44..af00b7f7 100644 --- a/Database/PowerPlants/FI/clustered.csv +++ b/Database/PowerPlants/FI/clustered.csv @@ -1,11 +1,11 @@ -,PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost_pu,NoLoadCost_pu,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,CHPPowerLossFactor,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,CHPMaxHeat,Nunits -FI_STUR_BIO,170.4444444,FI_STUR_BIO,FI,STUR,BIO,0.46,4,6,0.02,0.02,120,12.5,1.3,0.35,0.35,1,0,back-pressure,1,0,,,,,170.4444444,9 -FI_COMC_GAS,391,FI_COMC_GAS,FI,COMC,GAS,0.57,2,4,0.03,0.03,55,0,0,0.36,0.57,1,0.42,,,,,,,,,2 -FI_GTUR_GAS,63.30563846,FI_GTUR_GAS,FI,GTUR,GAS,0.425,0,0,0.166666667,0.166666667,0,0,0,0.2,0.425,0.166666667,0.564705882,,,,,,,,,16 -FI_STUR_HRD,683.2,FI_STUR_HRD,FI,STUR,HRD,0.46,8,8,0.017777778,0.017777778,65,0,0,0.3,0.46,2,0.81,,,,,,,,,5 -FI_STUR_NUC,927.3333333,FI_STUR_NUC,FI,STUR,NUC,1,24,24,0.003333333,0.003333333,300,0,0,0.5,1,12,0,,,,,,,,,3 -FI_STUR_OIL,297.6666667,FI_STUR_OIL,FI,STUR,OIL,0.33,4,4,0.02,0.02,65,0,0,0.4,0.33,0,0.799636364,,,,,,,,,3 -FI_STUR_PEA,141.0469661,FI_STUR_PEA,FI,STUR,PEA,0.3,4,4,0.02,0.02,65,0,0,0.5,0.3,0,0,,,,,,,,,6 -FI_HROR_WAT,3112,FI_HROR_WAT,FI,HROR,WAT,1,0,0,0.02,0.02,0,0,0,0,1,0,0,,,,,,,,,1 -FI_WTON_WIN,1432,FI_WTON_WIN,FI,WTON,WIN,1,0,0,0.02,0.02,0,0,0,0,1,0,0,,,,,,,,,1 -FI_STUR_OTH,136.4705882,FI_STUR_OTH,FI,STUR,OTH,0.3,4,4,0.02,0.02,65,0,0,0.5,0.3,0,0,,,,,,,,,9 +,PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost_pu,NoLoadCost_pu,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,CHPPowerLossFactor,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,CHPMaxHeat,Nunits,Extendable,Investment,FixedCost,EconomicLifetime +FI_STUR_BIO,170.4444444,FI_STUR_BIO,FI,STUR,BIO,0.46,4,6,0.02,0.02,120,12.5,1.3,0.35,0.35,1.0,0.0,back-pressure,1.0,0.0,,,,,170.4444444,9,,,, +FI_COMC_GAS,391.0,FI_COMC_GAS,FI,COMC,GAS,0.57,2,4,0.03,0.03,55,0.0,0.0,0.36,0.57,1.0,0.42,,,,,,,,,2,,,, +FI_GTUR_GAS,63.30563846,FI_GTUR_GAS,FI,GTUR,GAS,0.425,0,0,0.166666667,0.166666667,0,0.0,0.0,0.2,0.425,0.166666667,0.564705882,,,,,,,,,16,,,, +FI_STUR_HRD,683.2,FI_STUR_HRD,FI,STUR,HRD,0.46,8,8,0.017777778,0.017777778,65,0.0,0.0,0.3,0.46,2.0,0.81,,,,,,,,,5,,,, +FI_STUR_NUC,927.3333332999997,FI_STUR_NUC,FI,STUR,NUC,1.0,24,24,0.003333333,0.003333333,300,0.0,0.0,0.5,1.0,12.0,0.0,,,,,,,,,3,,,, +FI_STUR_OIL,297.6666667,FI_STUR_OIL,FI,STUR,OIL,0.33,4,4,0.02,0.02,65,0.0,0.0,0.4,0.33,0.0,0.799636364,,,,,,,,,3,,,, +FI_STUR_PEA,141.0469661,FI_STUR_PEA,FI,STUR,PEA,0.3,4,4,0.02,0.02,65,0.0,0.0,0.5,0.3,0.0,0.0,,,,,,,,,6,,,, +FI_HROR_WAT,3112.0,FI_HROR_WAT,FI,HROR,WAT,1.0,0,0,0.02,0.02,0,0.0,0.0,0.0,1.0,0.0,0.0,,,,,,,,,1,,,, +FI_WTON_WIN,1432.0,FI_WTON_WIN,FI,WTON,WIN,1.0,0,0,0.02,0.02,0,0.0,0.0,0.0,1.0,0.0,0.0,,,,,,,,,1,,,, +FI_STUR_OTH,136.4705882,FI_STUR_OTH,FI,STUR,OTH,0.3,4,4,0.02,0.02,65,0.0,0.0,0.5,0.3,0.0,0.0,,,,,,,,,9,,,, diff --git a/Database/PowerPlants/FR/2015.csv b/Database/PowerPlants/FR/2015.csv index 98f1ec0a..576267c0 100644 --- a/Database/PowerPlants/FR/2015.csv +++ b/Database/PowerPlants/FR/2015.csv @@ -1,163 +1,163 @@ -PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost,NoLoadCost,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,RampUpMax,CO2Intensity,CHPType,CHPPowerToHeat,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency -1690,GRAND MAISON,FR,HPHS,WAT,0.86,0,0,0.1775147929,0.1775147929,0,0,0,0,0.86,0.3,18000,0,,,62530,0,1690,0.86 -1500,CHOOZ 1,FR,STUR,NUC,0.405,24,24,0.0022866667,0.0022866667,200000,0,0,0.9,0.405,72,205.8,0,,,,,, -1500,CHOOZ 2,FR,STUR,NUC,0.405,24,24,0.0022866667,0.0022866667,200000,0,0,0.9,0.405,72,205.8,0,,,,,, -1495,CIVAUX 2,FR,STUR,NUC,0.405,24,24,0.0022943144,0.0022943144,200000,0,0,0.9,0.405,72,205.8,0,,,,,, -1495,CIVAUX 1,FR,STUR,NUC,0.405,24,24,0.0022943144,0.0022943144,200000,0,0,0.9,0.405,72,205.8,0,,,,,, -1335,ST ALBAN 2,FR,STUR,NUC,0.405,24,24,0.0025692884,0.0025692884,200000,0,0,0.9,0.405,72,205.8,0,,,,,, -1335,ST ALBAN 1,FR,STUR,NUC,0.405,24,24,0.0025692884,0.0025692884,200000,0,0,0.9,0.405,72,205.8,0,,,,,, -1330,PENLY 2,FR,STUR,NUC,0.405,24,24,0.0025789474,0.0025789474,200000,0,0,0.9,0.405,72,205.8,0,,,,,, -1330,PENLY 1,FR,STUR,NUC,0.405,24,24,0.0025789474,0.0025789474,200000,0,0,0.9,0.405,72,205.8,0,,,,,, -1330,FLAMANVILLE 2,FR,STUR,NUC,0.405,24,24,0.0025789474,0.0025789474,200000,0,0,0.9,0.405,72,205.8,0,,,,,, -1330,PALUEL 1,FR,STUR,NUC,0.405,24,24,0.0025789474,0.0025789474,200000,0,0,0.9,0.405,72,205.8,0,,,,,, -1330,FLAMANVILLE 1,FR,STUR,NUC,0.405,24,24,0.0025789474,0.0025789474,200000,0,0,0.9,0.405,72,205.8,0,,,,,, -1330,PALUEL 4,FR,STUR,NUC,0.405,24,24,0.0025789474,0.0025789474,200000,0,0,0.9,0.405,72,205.8,0,,,,,, -1330,PALUEL 2,FR,STUR,NUC,0.405,24,24,0.0025789474,0.0025789474,200000,0,0,0.9,0.405,72,205.8,0,,,,,, -1330,PALUEL 3,FR,STUR,NUC,0.405,24,24,0.0025789474,0.0025789474,200000,0,0,0.9,0.405,72,205.8,0,,,,,, -1310,GOLFECH 1,FR,STUR,NUC,0.405,24,24,0.0026183206,0.0026183206,200000,0,0,0.9,0.405,72,205.8,0,,,,,, -1310,BELLEVILLE 1,FR,STUR,NUC,0.405,24,24,0.0026183206,0.0026183206,200000,0,0,0.9,0.405,72,205.8,0,,,,,, -1310,NOGENT 1,FR,STUR,NUC,0.405,24,24,0.0026183206,0.0026183206,200000,0,0,0.9,0.405,72,205.8,0,,,,,, -1310,BELLEVILLE 2,FR,STUR,NUC,0.405,24,24,0.0026183206,0.0026183206,200000,0,0,0.9,0.405,72,205.8,0,,,,,, -1310,NOGENT 2,FR,STUR,NUC,0.405,24,24,0.0026183206,0.0026183206,200000,0,0,0.9,0.405,72,205.8,0,,,,,, -1310,GOLFECH 2,FR,STUR,NUC,0.405,24,24,0.0026183206,0.0026183206,200000,0,0,0.9,0.405,72,205.8,0,,,,,, -1300,CATTENOM 1,FR,STUR,NUC,0.405,24,24,0.0026384615,0.0026384615,200000,0,0,0.9,0.405,72,205.8,0,,,,,, -1300,CATTENOM 2,FR,STUR,NUC,0.405,24,24,0.0026384615,0.0026384615,200000,0,0,0.9,0.405,72,205.8,0,,,,,, -1300,CATTENOM 4,FR,STUR,NUC,0.405,24,24,0.0026384615,0.0026384615,200000,0,0,0.9,0.405,72,205.8,0,,,,,, -1300,CATTENOM 3,FR,STUR,NUC,0.405,24,24,0.0026384615,0.0026384615,200000,0,0,0.9,0.405,72,205.8,0,,,,,, -915,TRICASTIN 1,FR,STUR,NUC,0.405,24,24,0.0037486339,0.0037486339,200000,0,0,0.9,0.405,72,205.8,0,,,,,, -915,TRICASTIN 2,FR,STUR,NUC,0.405,24,24,0.0037486339,0.0037486339,200000,0,0,0.9,0.405,72,205.8,0,,,,,, -915,ST LAURENT 2,FR,STUR,NUC,0.405,24,24,0.0037486339,0.0037486339,200000,0,0,0.9,0.405,72,205.8,0,,,,,, -915,CRUAS 2,FR,STUR,NUC,0.405,24,24,0.0037486339,0.0037486339,200000,0,0,0.9,0.405,72,205.8,0,,,,,, -915,CRUAS 1,FR,STUR,NUC,0.405,24,24,0.0037486339,0.0037486339,200000,0,0,0.9,0.405,72,205.8,0,,,,,, -915,CRUAS 3,FR,STUR,NUC,0.405,24,24,0.0037486339,0.0037486339,200000,0,0,0.9,0.405,72,205.8,0,,,,,, -915,ST LAURENT 1,FR,STUR,NUC,0.405,24,24,0.0037486339,0.0037486339,200000,0,0,0.9,0.405,72,205.8,0,,,,,, -915,TRICASTIN 4,FR,STUR,NUC,0.405,24,24,0.0037486339,0.0037486339,200000,0,0,0.9,0.405,72,205.8,0,,,,,, -915,CRUAS 4,FR,STUR,NUC,0.405,24,24,0.0037486339,0.0037486339,200000,0,0,0.9,0.405,72,205.8,0,,,,,, -915,TRICASTIN 3,FR,STUR,NUC,0.405,24,24,0.0037486339,0.0037486339,200000,0,0,0.9,0.405,72,205.8,0,,,,,, -910,MONTEZIC,FR,HPHS,WAT,0.86,0,0,0.3296703297,0.3296703297,0,0,0,0,0.86,0.3,18000,0,,,33670,0,910,0.86 -910,GRAVELINES 6,FR,STUR,NUC,0.405,24,24,0.0037692308,0.0037692308,200000,0,0,0.9,0.405,72,205.8,0,,,,,, -910,GRAVELINES 5,FR,STUR,NUC,0.405,24,24,0.0037692308,0.0037692308,200000,0,0,0.9,0.405,72,205.8,0,,,,,, -910,BLAYAIS 2,FR,STUR,NUC,0.405,24,24,0.0037692308,0.0037692308,200000,0,0,0.9,0.405,72,205.8,0,,,,,, -910,GRAVELINES 4,FR,STUR,NUC,0.405,24,24,0.0037692308,0.0037692308,200000,0,0,0.9,0.405,72,205.8,0,,,,,, -910,BUGEY 2,FR,STUR,NUC,0.405,24,24,0.0037692308,0.0037692308,200000,0,0,0.9,0.405,72,205.8,0,,,,,, -910,BLAYAIS 3,FR,STUR,NUC,0.405,24,24,0.0037692308,0.0037692308,200000,0,0,0.9,0.405,72,205.8,0,,,,,, -910,BLAYAIS 4,FR,STUR,NUC,0.405,24,24,0.0037692308,0.0037692308,200000,0,0,0.9,0.405,72,205.8,0,,,,,, -910,GRAVELINES 3,FR,STUR,NUC,0.405,24,24,0.0037692308,0.0037692308,200000,0,0,0.9,0.405,72,205.8,0,,,,,, -910,GRAVELINES 1,FR,STUR,NUC,0.405,24,24,0.0037692308,0.0037692308,200000,0,0,0.9,0.405,72,205.8,0,,,,,, -910,BUGEY 3,FR,STUR,NUC,0.405,24,24,0.0037692308,0.0037692308,200000,0,0,0.9,0.405,72,205.8,0,,,,,, -910,GRAVELINES 2,FR,STUR,NUC,0.405,24,24,0.0037692308,0.0037692308,200000,0,0,0.9,0.405,72,205.8,0,,,,,, -910,BLAYAIS 1,FR,STUR,NUC,0.405,24,24,0.0037692308,0.0037692308,200000,0,0,0.9,0.405,72,205.8,0,,,,,, -905,CHINON 4,FR,STUR,NUC,0.405,24,24,0.0037900552,0.0037900552,200000,0,0,0.9,0.405,72,205.8,0,,,,,, -905,CHINON 3,FR,STUR,NUC,0.405,24,24,0.0037900552,0.0037900552,200000,0,0,0.9,0.405,72,205.8,0,,,,,, -905,CHINON 2,FR,STUR,NUC,0.405,24,24,0.0037900552,0.0037900552,200000,0,0,0.9,0.405,72,205.8,0,,,,,, -905,CHINON 1,FR,STUR,NUC,0.405,24,24,0.0037900552,0.0037900552,200000,0,0,0.9,0.405,72,205.8,0,,,,,, -890,DAMPIERRE 4,FR,STUR,NUC,0.405,24,24,0.0038539326,0.0038539326,200000,0,0,0.9,0.405,72,205.8,0,,,,,, -890,DAMPIERRE 3,FR,STUR,NUC,0.405,24,24,0.0038539326,0.0038539326,200000,0,0,0.9,0.405,72,205.8,0,,,,,, -890,DAMPIERRE 1,FR,STUR,NUC,0.405,24,24,0.0038539326,0.0038539326,200000,0,0,0.9,0.405,72,205.8,0,,,,,, -890,DAMPIERRE 2,FR,STUR,NUC,0.405,24,24,0.0038539326,0.0038539326,200000,0,0,0.9,0.405,72,205.8,0,,,,,, -880,BUGEY 5,FR,STUR,NUC,0.405,24,24,0.0038977273,0.0038977273,200000,0,0,0.9,0.405,72,205.8,0,,,,,, -880,FESSENHEIM 2,FR,STUR,NUC,0.405,24,24,0.0038977273,0.0038977273,200000,0,0,0.9,0.405,72,205.8,0,,,,,, -880,FESSENHEIM 1,FR,STUR,NUC,0.405,24,24,0.0038977273,0.0038977273,200000,0,0,0.9,0.405,72,205.8,0,,,,,, -880,BUGEY 4,FR,STUR,NUC,0.405,24,24,0.0038977273,0.0038977273,200000,0,0,0.9,0.405,72,205.8,0,,,,,, -808,REVIN,FR,HPHS,WAT,0.86,0,0,0.3712871287,0.3712871287,0,0,0,0,0.86,0.3,18000,0,,,29896,0,808,0.86 -796,DK6,FR,COMC,GAS,0.525,5,1,0.0140326633,0.0140326633,112542.12,0,0,0.4,0.525,1,670.2,0.45,,,,,, -742,SUPER BISSORTE,FR,HPHS,WAT,0.86,0,0,0.4043126685,0.4043126685,0,0,0,0,0.86,0.3,18000,0,,,27454,0,742,0.86 -685,CORDEMAIS 3,FR,STUR,OIL,0.41,8,6,0.0072992701,0.0072992701,35280.965,0,0,0.3,0.41,7,300,0.79,,,,,, -685,ARAMON 1,FR,STUR,OIL,0.41,8,6,0.0072992701,0.0072992701,35280.965,0,0,0.3,0.41,7,300,0.79,,,,,, -685,ARAMON 2,FR,STUR,OIL,0.41,8,6,0.0072992701,0.0072992701,35280.965,0,0,0.3,0.41,7,300,0.79,,,,,, -685,CORDEMAIS 2,FR,STUR,OIL,0.41,8,6,0.0072992701,0.0072992701,35280.965,0,0,0.3,0.41,7,300,0.79,,,,,, -595,EMILE HUCHET 6,FR,STUR,HRD,0.395,8,6,0.0084033613,0.0084033613,117242.17,0,0,0.3,0.395,7,300,0.95,,,,,, -595,PROVENCE 5,FR,STUR,HRD,0.395,8,6,0.0084033613,0.0084033613,117242.17,0,0,0.3,0.395,7,300,0.95,,,,,, -585,PORCHEVILLE 2,FR,STUR,OIL,0.41,8,6,0.0085470085,0.0085470085,35280.965,0,0,0.3,0.41,7,300,0.79,,,,,, -585,PORCHEVILLE 1,FR,STUR,OIL,0.41,8,6,0.0085470085,0.0085470085,35280.965,0,0,0.3,0.41,7,300,0.79,,,,,, -585,PORCHEVILLE 4,FR,STUR,OIL,0.41,8,6,0.0085470085,0.0085470085,35280.965,0,0,0.3,0.41,7,300,0.79,,,,,, -580,HAVRE 4,FR,STUR,HRD,0.395,8,6,0.0086206897,0.0086206897,117242.17,0,0,0.3,0.395,7,300,0.95,,,,,, -580,CORDEMAIS 5,FR,STUR,HRD,0.395,8,6,0.0086206897,0.0086206897,117242.17,0,0,0.3,0.395,7,300,0.95,,,,,, -580,CORDEMAIS 4,FR,STUR,HRD,0.395,8,6,0.0086206897,0.0086206897,117242.17,0,0,0.3,0.395,7,300,0.95,,,,,, -546,BATHIE,FR,HDAM,WAT,0.85,0,0,0.1648351648,0.1648351648,0,0,0,0,0.85,0.3,5400,0,,,226044,0,0,0.86 -535,PORCHEVILLE 3,FR,STUR,OIL,0.41,8,6,0.0093457944,0.0093457944,35280.965,0,0,0.3,0.41,7,300,0.79,,,,,, -485,CHEYLAS,FR,HPHS,WAT,0.86,0,0,0.618556701,0.618556701,0,0,0,0,0.86,0.3,18000,0,,,17945,0,485,0.86 -465,MARTIGUES PONTEAU 5,FR,COMC,GAS,0.525,5,1,0.0240215054,0.0240215054,112542.12,0,0,0.4,0.525,1,670.2,0.45,,,,,, -465,MARTIGUES PONTEAU 6,FR,COMC,GAS,0.525,5,1,0.0240215054,0.0240215054,112542.12,0,0,0.4,0.525,1,670.2,0.45,,,,,, -447,POUGET,FR,HDAM,WAT,0.85,0,0,0.2013422819,0.2013422819,0,0,0,0,0.85,0.3,5400,0,,,185058,0,0,0.86 -435,SPEM,FR,COMC,GAS,0.525,5,1,0.0256781609,0.0256781609,112542.12,0,0,0.4,0.525,1,670.2,0.45,,,,,, -428,CYCOFOS,FR,COMC,GAS,0.525,5,1,0.0260981308,0.0260981308,112542.12,0,0,0.4,0.525,1,670.2,0.45,,,,,, -427,BLENOD 5,FR,COMC,GAS,0.525,5,1,0.0261592506,0.0261592506,112542.12,0,0,0.4,0.525,1,670.2,0.45,,,,,, -425,COMBIGOLFE,FR,COMC,GAS,0.525,5,1,0.0262823529,0.0262823529,112542.12,0,0,0.4,0.525,1,670.2,0.45,,,,,, -420,GENISSIAT,FR,HROR,WAT,1,0,0,0.5238095238,0.5238095238,0,0,0,0,1,0.3,13200,0,,,,,, -413,EMILE HUCHET 8,FR,COMC,GAS,0.525,5,1,0.0270460048,0.0270460048,112542.12,0,0,0.4,0.525,1,670.2,0.45,,,,,, -413,EMILE HUCHET 7,FR,COMC,GAS,0.525,5,1,0.0270460048,0.0270460048,112542.12,0,0,0.4,0.525,1,670.2,0.45,,,,,, -413,Croix-de-Metz,FR,COMC,GAS,0.525,5,1,0.0270460048,0.0270460048,112542.12,0,0,0.4,0.525,1,670.2,0.45,,,,,, -412,Pont-sur-Sambre,FR,COMC,GAS,0.525,5,1,0.0271116505,0.0271116505,112542.12,0,0,0.4,0.525,1,670.2,0.45,,,,,, -406,BROMMAT,FR,HDAM,WAT,0.85,0,0,0.2216748768,0.2216748768,0,0,0,0,0.85,0.3,5400,0,,,168084,0,0,0.86 -401,FR-GA-MORANT1,FR,COMC,GAS,0.525,5,1,0.0278553616,0.0278553616,112542.12,0,0,0.4,0.525,1,670.2,0.45,,,,,, -384,SERRE PONCON,FR,HDAM,WAT,0.85,0,0,0.234375,0.234375,0,0,0,0,0.85,0.3,5400,0,,,158976,0,0,0.86 -366,MONTEYNARD,FR,HDAM,WAT,0.85,0,0,0.2459016393,0.2459016393,0,0,0,0,0.85,0.3,5400,0,,,151524,0,0,0.86 -360,AIGLE,FR,HDAM,WAT,0.85,0,0,0.25,0.25,0,0,0,0,0.85,0.3,5400,0,,,149040,0,0,0.86 -357,VILLARODIN,FR,HDAM,WAT,0.85,0,0,0.2521008403,0.2521008403,0,0,0,0,0.85,0.3,5400,0,,,147798,0,0,0.86 -348,DONZERE MONDRAGON,FR,HROR,WAT,1,0,0,0.632183908,0.632183908,0,0,0,0,1,0.3,13200,0,,,,,, -320,COCHE,FR,HPHS,WAT,0.86,0,0,0.9375,0.9375,0,0,0,0,0.86,0.3,18000,0,,,11840,0,320,0.86 -297,MALGOVERT,FR,HDAM,WAT,0.85,0,0,0.303030303,0.303030303,0,0,0,0,0.85,0.3,5400,0,,,122958,0,0,0.86 -295,MONTELIMAR,FR,HROR,WAT,1,0,0,0.7457627119,0.7457627119,0,0,0,0,1,0.3,13200,0,,,,,, -293,CHASTANG,FR,HROR,WAT,1,0,0,0.7508532423,0.7508532423,0,0,0,0,1,0.3,13200,0,,,,,, -285,VOUGLANS,FR,HDAM,WAT,0.85,0,0,0.3157894737,0.3157894737,0,0,0,0,0.85,0.3,5400,0,,,117990,0,0,0.86 -240,RANCE,FR,Other,Other,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,, -235,BORT,FR,HDAM,WAT,0.85,0,0,0.3829787234,0.3829787234,0,0,0,0,0.85,0.3,5400,0,,,97290,0,0,0.86 -214,SISTERON,FR,HDAM,WAT,0.85,0,0,0.4205607477,0.4205607477,0,0,0,0,0.85,0.3,5400,0,,,88596,0,0,0.86 -210,VALLABREGUES,FR,HROR,WAT,1,0,0,1.0476190476,1.0476190476,0,0,0,0,1,0.3,13200,0,,,,,, -203,GENNEVILLIERS 1,FR,COMC,GAS,0.525,5,1,0.0550246305,0.0550246305,112542.12,0,0,0.4,0.525,1,670.2,0.45,,,,,, -198,BEAUCHASTEL,FR,HROR,WAT,1,0,0,1.1111111111,1.1111111111,0,0,0,0,1,0.3,13200,0,,,,,, -189,PRAGNERES,FR,HDAM,WAT,0.85,0,0,0.4761904762,0.4761904762,0,0,0,0,0.85,0.3,5400,0,,,78246,0,0,0.86 -187,ORAISON,FR,HDAM,WAT,0.85,0,0,0.4812834225,0.4812834225,0,0,0,0,0.85,0.3,5400,0,,,77418,0,0,0.86 -185,MONTEREAU 6,FR,STUR,OIL,0.41,8,6,0.027027027,0.027027027,35280.965,0,0,0.3,0.41,7,300,0.79,,,,,, -185,MONTEREAU 5,FR,STUR,OIL,0.41,8,6,0.027027027,0.027027027,35280.965,0,0,0.3,0.41,7,300,0.79,,,,,, -183,SARRANS,FR,HDAM,WAT,0.85,0,0,0.4918032787,0.4918032787,0,0,0,0,0.85,0.3,5400,0,,,75762,0,0,0.86 -182,VAIRES 3,FR,STUR,OIL,0.41,8,6,0.0274725275,0.0274725275,35280.965,0,0,0.3,0.41,7,300,0.79,,,,,, -181,VAIRES 1,FR,STUR,OIL,0.41,8,6,0.0276243094,0.0276243094,35280.965,0,0,0.3,0.41,7,300,0.79,,,,,, -180,BOURG les VALENCE,FR,HROR,WAT,1,0,0,1.2222222222,1.2222222222,0,0,0,0,1,0.3,13200,0,,,,,, -179,VAIRES 2,FR,STUR,OIL,0.41,8,6,0.0279329609,0.0279329609,35280.965,0,0,0.3,0.41,7,300,0.79,,,,,, -175,FESSENHEIM,FR,HROR,WAT,1,0,0,1.2571428571,1.2571428571,0,0,0,0,1,0.3,13200,0,,,,,, -168,RHINAU,FR,HROR,WAT,1,0,0,1.3095238095,1.3095238095,0,0,0,0,1,0.3,13200,0,,,,,, -159,SAINT CHAMAS,FR,HDAM,WAT,0.85,0,0,0.5660377358,0.5660377358,0,0,0,0,0.85,0.3,5400,0,,,65826,0,0,0.86 -156,MARCKOLSHEIM,FR,HROR,WAT,1,0,0,1.4102564103,1.4102564103,0,0,0,0,1,0.3,13200,0,,,,,, -156,CADEROUSSE,FR,HROR,WAT,1,0,0,1.4102564103,1.4102564103,0,0,0,0,1,0.3,13200,0,,,,,, -156,OTTMARSHEIM,FR,HROR,WAT,1,0,0,1.4102564103,1.4102564103,0,0,0,0,1,0.3,13200,0,,,,,, -154,KEMBS,FR,HROR,WAT,1,0,0,1.4285714286,1.4285714286,0,0,0,0,1,0.3,13200,0,,,,,, -150,MAREGES,FR,HROR,WAT,1,0,0,1.4666666667,1.4666666667,0,0,0,0,1,0.3,13200,0,,,,,, -148,STRASBOURG,FR,HROR,WAT,1,0,0,1.4864864865,1.4864864865,0,0,0,0,1,0.3,13200,0,,,,,, -145,SAUSSAZ,FR,HROR,WAT,1,0,0,1.5172413793,1.5172413793,0,0,0,0,1,0.3,13200,0,,,,,, -141,SAINT ESTEVE,FR,HDAM,WAT,0.85,0,0,0.6382978723,0.6382978723,0,0,0,0,0.85,0.3,5400,0,,,58374,0,0,0.86 -141,VOGELGRUN,FR,HROR,WAT,1,0,0,1.5602836879,1.5602836879,0,0,0,0,1,0.3,13200,0,,,,,, -141,GERSTHEIM,FR,HROR,WAT,1,0,0,1.5602836879,1.5602836879,0,0,0,0,1,0.3,13200,0,,,,,, -140,BAIX LOGIS NEUF 1,FR,HROR,WAT,1,0,0,1.5714285714,1.5714285714,0,0,0,0,1,0.3,13200,0,,,,,, -139,CURBANS,FR,HDAM,WAT,0.85,0,0,0.6474820144,0.6474820144,0,0,0,0,0.85,0.3,5400,0,,,57546,0,0,0.86 -134,BRENNILIS 3,FR,STUR,OIL,0.41,8,6,0.0373134328,0.0373134328,35280.965,0,0,0.3,0.41,7,300,0.79,,,,,, -132,SAINTE CROIX,FR,HDAM,WAT,0.85,0,0,0.6818181818,0.6818181818,0,0,0,0,0.85,0.3,5400,0,,,54648,0,0,0.86 -132,MONTPEZAT,FR,HDAM,WAT,0.85,0,0,0.6818181818,0.6818181818,0,0,0,0,0.85,0.3,5400,0,,,54648,0,0,0.86 -130,AMFARD15,FR,COMC,GAS,0.525,5,1,0.0859230769,0.0859230769,112542.12,0,0,0.4,0.525,1,670.2,0.45,,,,,, -130,AMFARD14,FR,COMC,GAS,0.525,5,1,0.0859230769,0.0859230769,112542.12,0,0,0.4,0.525,1,670.2,0.45,,,,,, -129,ARRIGHI 2,FR,STUR,OIL,0.41,8,6,0.0387596899,0.0387596899,35280.965,0,0,0.3,0.41,7,300,0.79,,,,,, -126,AVIGNON,FR,HROR,WAT,1,0,0,1.746031746,1.746031746,0,0,0,0,1,0.3,13200,0,,,,,, -125,ARRIGHI 1,FR,STUR,OIL,0.41,8,6,0.04,0.04,35280.965,0,0,0.3,0.41,7,300,0.79,,,,,, -124,RANDENS,FR,HROR,WAT,1,0,0,1.7741935484,1.7741935484,0,0,0,0,1,0.3,13200,0,,,,,, -123,COMBE D'AVRIEUX,FR,HDAM,WAT,0.85,0,0,0.7317073171,0.7317073171,0,0,0,0,0.85,0.3,5400,0,,,50922,0,0,0.86 -122,SAINT-PIERRE,FR,HROR,WAT,1,0,0,1.8032786885,1.8032786885,0,0,0,0,1,0.3,13200,0,,,,,, -119,COUESQUE,FR,HROR,WAT,1,0,0,1.8487394958,1.8487394958,0,0,0,0,1,0.3,13200,0,,,,,, -116,SAINT GUILLERME,FR,HDAM,WAT,0.85,0,0,0.775862069,0.775862069,0,0,0,0,0.85,0.3,5400,0,,,48024,0,0,0.86 -116,HERMILLON,FR,HROR,WAT,1,0,0,1.8965517241,1.8965517241,0,0,0,0,1,0.3,13200,0,,,,,, -109,PIED DE BORNE,FR,HDAM,WAT,0.85,0,0,0.8256880734,0.8256880734,0,0,0,0,0.85,0.3,5400,0,,,45126,0,0,0.86 -107,ST ETIENNE CANTALES,FR,HDAM,WAT,0.85,0,0,0.8411214953,0.8411214953,0,0,0,0,0.85,0.3,5400,0,,,44298,0,0,0.86 -104,PASSY,FR,HROR,WAT,1,0,0,2.1153846154,2.1153846154,0,0,0,0,1,0.3,13200,0,,,,,, -104,ASTON,FR,HROR,WAT,1,0,0,2.1153846154,2.1153846154,0,0,0,0,1,0.3,13200,0,,,,,, -101,SAINT PIERRE COGNET,FR,HROR,WAT,1,0,0,2.1782178218,2.1782178218,0,0,0,0,1,0.3,13200,0,,,,,, -85,DIRINON 2,FR,STUR,OIL,0.41,8,6,0.0588235294,0.0588235294,35280.965,0,0,0.3,0.41,7,300,0.79,,,,,, -85,BRENNILIS 2,FR,STUR,OIL,0.41,8,6,0.0588235294,0.0588235294,35280.965,0,0,0.3,0.41,7,300,0.79,,,,,, -85,BRENNILIS 1,FR,STUR,OIL,0.41,8,6,0.0588235294,0.0588235294,35280.965,0,0,0.3,0.41,7,300,0.79,,,,,, -85,DIRINON 1,FR,STUR,OIL,0.41,8,6,0.0588235294,0.0588235294,35280.965,0,0,0.3,0.41,7,300,0.79,,,,,, -62,CYCOFOS TV2,FR,Other,Other,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,, -45,SPEM Pointe,FR,COMC,GAS,0.525,5,1,0.2482222222,0.2482222222,112542.12,0,0,0.4,0.525,1,670.2,0.45,,,,,, -5292,DispaSET PHOT_FR,FR,PHOT,SUN,1,0,0,0.1700680272,0.1700680272,0,0,0,0,1,0,54000,0,,,,,, -10358,DispaSET WindOn_FR,FR,WTON,WIN,1,0,0,0.0130334041,0.0130334041,0,0,0,0,1,0,8100,0,,,,,, -119.4,DispaSET FossilGas_FR,FR,COMC,GAS,0.525,5,1,0.0935510888,0.0935510888,112542.12,0,0,0.4,0.525,1,670.2,0.45,,,,,, -5636,DispaSET HydroRiver_FR,FR,HROR,WAT,1,0,0,0.0390347764,0.0390347764,0,0,0,0,1,0.3,13200,0,,,,,, -2590,DispaSET HydroRes_FR,FR,HDAM,WAT,0.85,0,0,0.0347490347,0.0347490347,0,0,0,0,0.85,0.3,5400,0,,,1072260,0,0,0.86 +PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost,NoLoadCost,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,RampUpMax,CO2Intensity,CHPType,CHPPowerToHeat,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,Extendable,Investment,FixedCost,EconomicLifetime +1690.0,GRAND MAISON,FR,HPHS,WAT,0.86,0,0,0.1775147929,0.1775147929,0.0,0,0,0.0,0.86,0.3,18000.0,0.0,,,62530.0,0.0,1690.0,0.86,,,, +1500.0,CHOOZ 1,FR,STUR,NUC,0.405,24,24,0.0022866667,0.0022866667,200000.0,0,0,0.9,0.405,72.0,205.8,0.0,,,,,,,,,, +1500.0,CHOOZ 2,FR,STUR,NUC,0.405,24,24,0.0022866667,0.0022866667,200000.0,0,0,0.9,0.405,72.0,205.8,0.0,,,,,,,,,, +1495.0,CIVAUX 2,FR,STUR,NUC,0.405,24,24,0.0022943144,0.0022943144,200000.0,0,0,0.9,0.405,72.0,205.8,0.0,,,,,,,,,, +1495.0,CIVAUX 1,FR,STUR,NUC,0.405,24,24,0.0022943144,0.0022943144,200000.0,0,0,0.9,0.405,72.0,205.8,0.0,,,,,,,,,, +1335.0,ST ALBAN 2,FR,STUR,NUC,0.405,24,24,0.0025692884,0.0025692884,200000.0,0,0,0.9,0.405,72.0,205.8,0.0,,,,,,,,,, +1335.0,ST ALBAN 1,FR,STUR,NUC,0.405,24,24,0.0025692884,0.0025692884,200000.0,0,0,0.9,0.405,72.0,205.8,0.0,,,,,,,,,, +1330.0,PENLY 2,FR,STUR,NUC,0.405,24,24,0.0025789474,0.0025789474,200000.0,0,0,0.9,0.405,72.0,205.8,0.0,,,,,,,,,, +1330.0,PENLY 1,FR,STUR,NUC,0.405,24,24,0.0025789474,0.0025789474,200000.0,0,0,0.9,0.405,72.0,205.8,0.0,,,,,,,,,, +1330.0,FLAMANVILLE 2,FR,STUR,NUC,0.405,24,24,0.0025789474,0.0025789474,200000.0,0,0,0.9,0.405,72.0,205.8,0.0,,,,,,,,,, +1330.0,PALUEL 1,FR,STUR,NUC,0.405,24,24,0.0025789474,0.0025789474,200000.0,0,0,0.9,0.405,72.0,205.8,0.0,,,,,,,,,, +1330.0,FLAMANVILLE 1,FR,STUR,NUC,0.405,24,24,0.0025789474,0.0025789474,200000.0,0,0,0.9,0.405,72.0,205.8,0.0,,,,,,,,,, +1330.0,PALUEL 4,FR,STUR,NUC,0.405,24,24,0.0025789474,0.0025789474,200000.0,0,0,0.9,0.405,72.0,205.8,0.0,,,,,,,,,, +1330.0,PALUEL 2,FR,STUR,NUC,0.405,24,24,0.0025789474,0.0025789474,200000.0,0,0,0.9,0.405,72.0,205.8,0.0,,,,,,,,,, +1330.0,PALUEL 3,FR,STUR,NUC,0.405,24,24,0.0025789474,0.0025789474,200000.0,0,0,0.9,0.405,72.0,205.8,0.0,,,,,,,,,, +1310.0,GOLFECH 1,FR,STUR,NUC,0.405,24,24,0.0026183206,0.0026183206,200000.0,0,0,0.9,0.405,72.0,205.8,0.0,,,,,,,,,, +1310.0,BELLEVILLE 1,FR,STUR,NUC,0.405,24,24,0.0026183206,0.0026183206,200000.0,0,0,0.9,0.405,72.0,205.8,0.0,,,,,,,,,, +1310.0,NOGENT 1,FR,STUR,NUC,0.405,24,24,0.0026183206,0.0026183206,200000.0,0,0,0.9,0.405,72.0,205.8,0.0,,,,,,,,,, +1310.0,BELLEVILLE 2,FR,STUR,NUC,0.405,24,24,0.0026183206,0.0026183206,200000.0,0,0,0.9,0.405,72.0,205.8,0.0,,,,,,,,,, +1310.0,NOGENT 2,FR,STUR,NUC,0.405,24,24,0.0026183206,0.0026183206,200000.0,0,0,0.9,0.405,72.0,205.8,0.0,,,,,,,,,, +1310.0,GOLFECH 2,FR,STUR,NUC,0.405,24,24,0.0026183206,0.0026183206,200000.0,0,0,0.9,0.405,72.0,205.8,0.0,,,,,,,,,, +1300.0,CATTENOM 1,FR,STUR,NUC,0.405,24,24,0.0026384615,0.0026384615,200000.0,0,0,0.9,0.405,72.0,205.8,0.0,,,,,,,,,, +1300.0,CATTENOM 2,FR,STUR,NUC,0.405,24,24,0.0026384615,0.0026384615,200000.0,0,0,0.9,0.405,72.0,205.8,0.0,,,,,,,,,, +1300.0,CATTENOM 4,FR,STUR,NUC,0.405,24,24,0.0026384615,0.0026384615,200000.0,0,0,0.9,0.405,72.0,205.8,0.0,,,,,,,,,, +1300.0,CATTENOM 3,FR,STUR,NUC,0.405,24,24,0.0026384615,0.0026384615,200000.0,0,0,0.9,0.405,72.0,205.8,0.0,,,,,,,,,, +915.0,TRICASTIN 1,FR,STUR,NUC,0.405,24,24,0.0037486339000000002,0.0037486339000000002,200000.0,0,0,0.9,0.405,72.0,205.8,0.0,,,,,,,,,, +915.0,TRICASTIN 2,FR,STUR,NUC,0.405,24,24,0.0037486339000000002,0.0037486339000000002,200000.0,0,0,0.9,0.405,72.0,205.8,0.0,,,,,,,,,, +915.0,ST LAURENT 2,FR,STUR,NUC,0.405,24,24,0.0037486339000000002,0.0037486339000000002,200000.0,0,0,0.9,0.405,72.0,205.8,0.0,,,,,,,,,, +915.0,CRUAS 2,FR,STUR,NUC,0.405,24,24,0.0037486339000000002,0.0037486339000000002,200000.0,0,0,0.9,0.405,72.0,205.8,0.0,,,,,,,,,, +915.0,CRUAS 1,FR,STUR,NUC,0.405,24,24,0.0037486339000000002,0.0037486339000000002,200000.0,0,0,0.9,0.405,72.0,205.8,0.0,,,,,,,,,, +915.0,CRUAS 3,FR,STUR,NUC,0.405,24,24,0.0037486339000000002,0.0037486339000000002,200000.0,0,0,0.9,0.405,72.0,205.8,0.0,,,,,,,,,, +915.0,ST LAURENT 1,FR,STUR,NUC,0.405,24,24,0.0037486339000000002,0.0037486339000000002,200000.0,0,0,0.9,0.405,72.0,205.8,0.0,,,,,,,,,, +915.0,TRICASTIN 4,FR,STUR,NUC,0.405,24,24,0.0037486339000000002,0.0037486339000000002,200000.0,0,0,0.9,0.405,72.0,205.8,0.0,,,,,,,,,, +915.0,CRUAS 4,FR,STUR,NUC,0.405,24,24,0.0037486339000000002,0.0037486339000000002,200000.0,0,0,0.9,0.405,72.0,205.8,0.0,,,,,,,,,, +915.0,TRICASTIN 3,FR,STUR,NUC,0.405,24,24,0.0037486339000000002,0.0037486339000000002,200000.0,0,0,0.9,0.405,72.0,205.8,0.0,,,,,,,,,, +910.0,MONTEZIC,FR,HPHS,WAT,0.86,0,0,0.3296703297,0.3296703297,0.0,0,0,0.0,0.86,0.3,18000.0,0.0,,,33670.0,0.0,910.0,0.86,,,, +910.0,GRAVELINES 6,FR,STUR,NUC,0.405,24,24,0.0037692308,0.0037692308,200000.0,0,0,0.9,0.405,72.0,205.8,0.0,,,,,,,,,, +910.0,GRAVELINES 5,FR,STUR,NUC,0.405,24,24,0.0037692308,0.0037692308,200000.0,0,0,0.9,0.405,72.0,205.8,0.0,,,,,,,,,, +910.0,BLAYAIS 2,FR,STUR,NUC,0.405,24,24,0.0037692308,0.0037692308,200000.0,0,0,0.9,0.405,72.0,205.8,0.0,,,,,,,,,, +910.0,GRAVELINES 4,FR,STUR,NUC,0.405,24,24,0.0037692308,0.0037692308,200000.0,0,0,0.9,0.405,72.0,205.8,0.0,,,,,,,,,, +910.0,BUGEY 2,FR,STUR,NUC,0.405,24,24,0.0037692308,0.0037692308,200000.0,0,0,0.9,0.405,72.0,205.8,0.0,,,,,,,,,, +910.0,BLAYAIS 3,FR,STUR,NUC,0.405,24,24,0.0037692308,0.0037692308,200000.0,0,0,0.9,0.405,72.0,205.8,0.0,,,,,,,,,, +910.0,BLAYAIS 4,FR,STUR,NUC,0.405,24,24,0.0037692308,0.0037692308,200000.0,0,0,0.9,0.405,72.0,205.8,0.0,,,,,,,,,, +910.0,GRAVELINES 3,FR,STUR,NUC,0.405,24,24,0.0037692308,0.0037692308,200000.0,0,0,0.9,0.405,72.0,205.8,0.0,,,,,,,,,, +910.0,GRAVELINES 1,FR,STUR,NUC,0.405,24,24,0.0037692308,0.0037692308,200000.0,0,0,0.9,0.405,72.0,205.8,0.0,,,,,,,,,, +910.0,BUGEY 3,FR,STUR,NUC,0.405,24,24,0.0037692308,0.0037692308,200000.0,0,0,0.9,0.405,72.0,205.8,0.0,,,,,,,,,, +910.0,GRAVELINES 2,FR,STUR,NUC,0.405,24,24,0.0037692308,0.0037692308,200000.0,0,0,0.9,0.405,72.0,205.8,0.0,,,,,,,,,, +910.0,BLAYAIS 1,FR,STUR,NUC,0.405,24,24,0.0037692308,0.0037692308,200000.0,0,0,0.9,0.405,72.0,205.8,0.0,,,,,,,,,, +905.0,CHINON 4,FR,STUR,NUC,0.405,24,24,0.0037900552,0.0037900552,200000.0,0,0,0.9,0.405,72.0,205.8,0.0,,,,,,,,,, +905.0,CHINON 3,FR,STUR,NUC,0.405,24,24,0.0037900552,0.0037900552,200000.0,0,0,0.9,0.405,72.0,205.8,0.0,,,,,,,,,, +905.0,CHINON 2,FR,STUR,NUC,0.405,24,24,0.0037900552,0.0037900552,200000.0,0,0,0.9,0.405,72.0,205.8,0.0,,,,,,,,,, +905.0,CHINON 1,FR,STUR,NUC,0.405,24,24,0.0037900552,0.0037900552,200000.0,0,0,0.9,0.405,72.0,205.8,0.0,,,,,,,,,, +890.0,DAMPIERRE 4,FR,STUR,NUC,0.405,24,24,0.0038539326000000002,0.0038539326000000002,200000.0,0,0,0.9,0.405,72.0,205.8,0.0,,,,,,,,,, +890.0,DAMPIERRE 3,FR,STUR,NUC,0.405,24,24,0.0038539326000000002,0.0038539326000000002,200000.0,0,0,0.9,0.405,72.0,205.8,0.0,,,,,,,,,, +890.0,DAMPIERRE 1,FR,STUR,NUC,0.405,24,24,0.0038539326000000002,0.0038539326000000002,200000.0,0,0,0.9,0.405,72.0,205.8,0.0,,,,,,,,,, +890.0,DAMPIERRE 2,FR,STUR,NUC,0.405,24,24,0.0038539326000000002,0.0038539326000000002,200000.0,0,0,0.9,0.405,72.0,205.8,0.0,,,,,,,,,, +880.0,BUGEY 5,FR,STUR,NUC,0.405,24,24,0.0038977273,0.0038977273,200000.0,0,0,0.9,0.405,72.0,205.8,0.0,,,,,,,,,, +880.0,FESSENHEIM 2,FR,STUR,NUC,0.405,24,24,0.0038977273,0.0038977273,200000.0,0,0,0.9,0.405,72.0,205.8,0.0,,,,,,,,,, +880.0,FESSENHEIM 1,FR,STUR,NUC,0.405,24,24,0.0038977273,0.0038977273,200000.0,0,0,0.9,0.405,72.0,205.8,0.0,,,,,,,,,, +880.0,BUGEY 4,FR,STUR,NUC,0.405,24,24,0.0038977273,0.0038977273,200000.0,0,0,0.9,0.405,72.0,205.8,0.0,,,,,,,,,, +808.0,REVIN,FR,HPHS,WAT,0.86,0,0,0.37128712869999997,0.37128712869999997,0.0,0,0,0.0,0.86,0.3,18000.0,0.0,,,29896.0,0.0,808.0,0.86,,,, +796.0,DK6,FR,COMC,GAS,0.525,5,1,0.014032663300000001,0.014032663300000001,112542.12,0,0,0.4,0.525,1.0,670.2,0.45,,,,,,,,,, +742.0,SUPER BISSORTE,FR,HPHS,WAT,0.86,0,0,0.4043126685,0.4043126685,0.0,0,0,0.0,0.86,0.3,18000.0,0.0,,,27454.0,0.0,742.0,0.86,,,, +685.0,CORDEMAIS 3,FR,STUR,OIL,0.41,8,6,0.0072992701,0.0072992701,35280.965,0,0,0.3,0.41,7.0,300.0,0.79,,,,,,,,,, +685.0,ARAMON 1,FR,STUR,OIL,0.41,8,6,0.0072992701,0.0072992701,35280.965,0,0,0.3,0.41,7.0,300.0,0.79,,,,,,,,,, +685.0,ARAMON 2,FR,STUR,OIL,0.41,8,6,0.0072992701,0.0072992701,35280.965,0,0,0.3,0.41,7.0,300.0,0.79,,,,,,,,,, +685.0,CORDEMAIS 2,FR,STUR,OIL,0.41,8,6,0.0072992701,0.0072992701,35280.965,0,0,0.3,0.41,7.0,300.0,0.79,,,,,,,,,, +595.0,EMILE HUCHET 6,FR,STUR,HRD,0.395,8,6,0.0084033613,0.0084033613,117242.17,0,0,0.3,0.395,7.0,300.0,0.95,,,,,,,,,, +595.0,PROVENCE 5,FR,STUR,HRD,0.395,8,6,0.0084033613,0.0084033613,117242.17,0,0,0.3,0.395,7.0,300.0,0.95,,,,,,,,,, +585.0,PORCHEVILLE 2,FR,STUR,OIL,0.41,8,6,0.0085470085,0.0085470085,35280.965,0,0,0.3,0.41,7.0,300.0,0.79,,,,,,,,,, +585.0,PORCHEVILLE 1,FR,STUR,OIL,0.41,8,6,0.0085470085,0.0085470085,35280.965,0,0,0.3,0.41,7.0,300.0,0.79,,,,,,,,,, +585.0,PORCHEVILLE 4,FR,STUR,OIL,0.41,8,6,0.0085470085,0.0085470085,35280.965,0,0,0.3,0.41,7.0,300.0,0.79,,,,,,,,,, +580.0,HAVRE 4,FR,STUR,HRD,0.395,8,6,0.0086206897,0.0086206897,117242.17,0,0,0.3,0.395,7.0,300.0,0.95,,,,,,,,,, +580.0,CORDEMAIS 5,FR,STUR,HRD,0.395,8,6,0.0086206897,0.0086206897,117242.17,0,0,0.3,0.395,7.0,300.0,0.95,,,,,,,,,, +580.0,CORDEMAIS 4,FR,STUR,HRD,0.395,8,6,0.0086206897,0.0086206897,117242.17,0,0,0.3,0.395,7.0,300.0,0.95,,,,,,,,,, +546.0,BATHIE,FR,HDAM,WAT,0.85,0,0,0.16483516480000002,0.16483516480000002,0.0,0,0,0.0,0.85,0.3,5400.0,0.0,,,226044.0,0.0,0.0,0.86,,,, +535.0,PORCHEVILLE 3,FR,STUR,OIL,0.41,8,6,0.0093457944,0.0093457944,35280.965,0,0,0.3,0.41,7.0,300.0,0.79,,,,,,,,,, +485.0,CHEYLAS,FR,HPHS,WAT,0.86,0,0,0.618556701,0.618556701,0.0,0,0,0.0,0.86,0.3,18000.0,0.0,,,17945.0,0.0,485.0,0.86,,,, +465.0,MARTIGUES PONTEAU 5,FR,COMC,GAS,0.525,5,1,0.0240215054,0.0240215054,112542.12,0,0,0.4,0.525,1.0,670.2,0.45,,,,,,,,,, +465.0,MARTIGUES PONTEAU 6,FR,COMC,GAS,0.525,5,1,0.0240215054,0.0240215054,112542.12,0,0,0.4,0.525,1.0,670.2,0.45,,,,,,,,,, +447.0,POUGET,FR,HDAM,WAT,0.85,0,0,0.2013422819,0.2013422819,0.0,0,0,0.0,0.85,0.3,5400.0,0.0,,,185058.0,0.0,0.0,0.86,,,, +435.0,SPEM,FR,COMC,GAS,0.525,5,1,0.0256781609,0.0256781609,112542.12,0,0,0.4,0.525,1.0,670.2,0.45,,,,,,,,,, +428.0,CYCOFOS,FR,COMC,GAS,0.525,5,1,0.0260981308,0.0260981308,112542.12,0,0,0.4,0.525,1.0,670.2,0.45,,,,,,,,,, +427.0,BLENOD 5,FR,COMC,GAS,0.525,5,1,0.0261592506,0.0261592506,112542.12,0,0,0.4,0.525,1.0,670.2,0.45,,,,,,,,,, +425.0,COMBIGOLFE,FR,COMC,GAS,0.525,5,1,0.0262823529,0.0262823529,112542.12,0,0,0.4,0.525,1.0,670.2,0.45,,,,,,,,,, +420.0,GENISSIAT,FR,HROR,WAT,1.0,0,0,0.5238095238,0.5238095238,0.0,0,0,0.0,1.0,0.3,13200.0,0.0,,,,,,,,,, +413.0,EMILE HUCHET 8,FR,COMC,GAS,0.525,5,1,0.0270460048,0.0270460048,112542.12,0,0,0.4,0.525,1.0,670.2,0.45,,,,,,,,,, +413.0,EMILE HUCHET 7,FR,COMC,GAS,0.525,5,1,0.0270460048,0.0270460048,112542.12,0,0,0.4,0.525,1.0,670.2,0.45,,,,,,,,,, +413.0,Croix-de-Metz,FR,COMC,GAS,0.525,5,1,0.0270460048,0.0270460048,112542.12,0,0,0.4,0.525,1.0,670.2,0.45,,,,,,,,,, +412.0,Pont-sur-Sambre,FR,COMC,GAS,0.525,5,1,0.027111650499999997,0.027111650499999997,112542.12,0,0,0.4,0.525,1.0,670.2,0.45,,,,,,,,,, +406.0,BROMMAT,FR,HDAM,WAT,0.85,0,0,0.2216748768,0.2216748768,0.0,0,0,0.0,0.85,0.3,5400.0,0.0,,,168084.0,0.0,0.0,0.86,,,, +401.0,FR-GA-MORANT1,FR,COMC,GAS,0.525,5,1,0.027855361600000003,0.027855361600000003,112542.12,0,0,0.4,0.525,1.0,670.2,0.45,,,,,,,,,, +384.0,SERRE PONCON,FR,HDAM,WAT,0.85,0,0,0.234375,0.234375,0.0,0,0,0.0,0.85,0.3,5400.0,0.0,,,158976.0,0.0,0.0,0.86,,,, +366.0,MONTEYNARD,FR,HDAM,WAT,0.85,0,0,0.2459016393,0.2459016393,0.0,0,0,0.0,0.85,0.3,5400.0,0.0,,,151524.0,0.0,0.0,0.86,,,, +360.0,AIGLE,FR,HDAM,WAT,0.85,0,0,0.25,0.25,0.0,0,0,0.0,0.85,0.3,5400.0,0.0,,,149040.0,0.0,0.0,0.86,,,, +357.0,VILLARODIN,FR,HDAM,WAT,0.85,0,0,0.2521008403,0.2521008403,0.0,0,0,0.0,0.85,0.3,5400.0,0.0,,,147798.0,0.0,0.0,0.86,,,, +348.0,DONZERE MONDRAGON,FR,HROR,WAT,1.0,0,0,0.632183908,0.632183908,0.0,0,0,0.0,1.0,0.3,13200.0,0.0,,,,,,,,,, +320.0,COCHE,FR,HPHS,WAT,0.86,0,0,0.9375,0.9375,0.0,0,0,0.0,0.86,0.3,18000.0,0.0,,,11840.0,0.0,320.0,0.86,,,, +297.0,MALGOVERT,FR,HDAM,WAT,0.85,0,0,0.303030303,0.303030303,0.0,0,0,0.0,0.85,0.3,5400.0,0.0,,,122958.0,0.0,0.0,0.86,,,, +295.0,MONTELIMAR,FR,HROR,WAT,1.0,0,0,0.7457627119,0.7457627119,0.0,0,0,0.0,1.0,0.3,13200.0,0.0,,,,,,,,,, +293.0,CHASTANG,FR,HROR,WAT,1.0,0,0,0.7508532423000001,0.7508532423000001,0.0,0,0,0.0,1.0,0.3,13200.0,0.0,,,,,,,,,, +285.0,VOUGLANS,FR,HDAM,WAT,0.85,0,0,0.3157894737,0.3157894737,0.0,0,0,0.0,0.85,0.3,5400.0,0.0,,,117990.0,0.0,0.0,0.86,,,, +240.0,RANCE,FR,Other,Other,0.0,0,0,0.0,0.0,0.0,0,0,0.0,0.0,0.0,0.0,0.0,,,,,,,,,, +235.0,BORT,FR,HDAM,WAT,0.85,0,0,0.3829787234000001,0.3829787234000001,0.0,0,0,0.0,0.85,0.3,5400.0,0.0,,,97290.0,0.0,0.0,0.86,,,, +214.0,SISTERON,FR,HDAM,WAT,0.85,0,0,0.4205607477,0.4205607477,0.0,0,0,0.0,0.85,0.3,5400.0,0.0,,,88596.0,0.0,0.0,0.86,,,, +210.0,VALLABREGUES,FR,HROR,WAT,1.0,0,0,1.0476190476,1.0476190476,0.0,0,0,0.0,1.0,0.3,13200.0,0.0,,,,,,,,,, +203.0,GENNEVILLIERS 1,FR,COMC,GAS,0.525,5,1,0.0550246305,0.0550246305,112542.12,0,0,0.4,0.525,1.0,670.2,0.45,,,,,,,,,, +198.0,BEAUCHASTEL,FR,HROR,WAT,1.0,0,0,1.1111111111,1.1111111111,0.0,0,0,0.0,1.0,0.3,13200.0,0.0,,,,,,,,,, +189.0,PRAGNERES,FR,HDAM,WAT,0.85,0,0,0.4761904762,0.4761904762,0.0,0,0,0.0,0.85,0.3,5400.0,0.0,,,78246.0,0.0,0.0,0.86,,,, +187.0,ORAISON,FR,HDAM,WAT,0.85,0,0,0.4812834225,0.4812834225,0.0,0,0,0.0,0.85,0.3,5400.0,0.0,,,77418.0,0.0,0.0,0.86,,,, +185.0,MONTEREAU 6,FR,STUR,OIL,0.41,8,6,0.027027027000000002,0.027027027000000002,35280.965,0,0,0.3,0.41,7.0,300.0,0.79,,,,,,,,,, +185.0,MONTEREAU 5,FR,STUR,OIL,0.41,8,6,0.027027027000000002,0.027027027000000002,35280.965,0,0,0.3,0.41,7.0,300.0,0.79,,,,,,,,,, +183.0,SARRANS,FR,HDAM,WAT,0.85,0,0,0.49180327869999996,0.49180327869999996,0.0,0,0,0.0,0.85,0.3,5400.0,0.0,,,75762.0,0.0,0.0,0.86,,,, +182.0,VAIRES 3,FR,STUR,OIL,0.41,8,6,0.0274725275,0.0274725275,35280.965,0,0,0.3,0.41,7.0,300.0,0.79,,,,,,,,,, +181.0,VAIRES 1,FR,STUR,OIL,0.41,8,6,0.027624309399999998,0.027624309399999998,35280.965,0,0,0.3,0.41,7.0,300.0,0.79,,,,,,,,,, +180.0,BOURG les VALENCE,FR,HROR,WAT,1.0,0,0,1.2222222222,1.2222222222,0.0,0,0,0.0,1.0,0.3,13200.0,0.0,,,,,,,,,, +179.0,VAIRES 2,FR,STUR,OIL,0.41,8,6,0.027932960899999998,0.027932960899999998,35280.965,0,0,0.3,0.41,7.0,300.0,0.79,,,,,,,,,, +175.0,FESSENHEIM,FR,HROR,WAT,1.0,0,0,1.2571428570999998,1.2571428570999998,0.0,0,0,0.0,1.0,0.3,13200.0,0.0,,,,,,,,,, +168.0,RHINAU,FR,HROR,WAT,1.0,0,0,1.3095238095000001,1.3095238095000001,0.0,0,0,0.0,1.0,0.3,13200.0,0.0,,,,,,,,,, +159.0,SAINT CHAMAS,FR,HDAM,WAT,0.85,0,0,0.5660377357999999,0.5660377357999999,0.0,0,0,0.0,0.85,0.3,5400.0,0.0,,,65826.0,0.0,0.0,0.86,,,, +156.0,MARCKOLSHEIM,FR,HROR,WAT,1.0,0,0,1.4102564103,1.4102564103,0.0,0,0,0.0,1.0,0.3,13200.0,0.0,,,,,,,,,, +156.0,CADEROUSSE,FR,HROR,WAT,1.0,0,0,1.4102564103,1.4102564103,0.0,0,0,0.0,1.0,0.3,13200.0,0.0,,,,,,,,,, +156.0,OTTMARSHEIM,FR,HROR,WAT,1.0,0,0,1.4102564103,1.4102564103,0.0,0,0,0.0,1.0,0.3,13200.0,0.0,,,,,,,,,, +154.0,KEMBS,FR,HROR,WAT,1.0,0,0,1.4285714286000002,1.4285714286000002,0.0,0,0,0.0,1.0,0.3,13200.0,0.0,,,,,,,,,, +150.0,MAREGES,FR,HROR,WAT,1.0,0,0,1.4666666667,1.4666666667,0.0,0,0,0.0,1.0,0.3,13200.0,0.0,,,,,,,,,, +148.0,STRASBOURG,FR,HROR,WAT,1.0,0,0,1.4864864865,1.4864864865,0.0,0,0,0.0,1.0,0.3,13200.0,0.0,,,,,,,,,, +145.0,SAUSSAZ,FR,HROR,WAT,1.0,0,0,1.5172413793000001,1.5172413793000001,0.0,0,0,0.0,1.0,0.3,13200.0,0.0,,,,,,,,,, +141.0,SAINT ESTEVE,FR,HDAM,WAT,0.85,0,0,0.6382978723,0.6382978723,0.0,0,0,0.0,0.85,0.3,5400.0,0.0,,,58374.0,0.0,0.0,0.86,,,, +141.0,VOGELGRUN,FR,HROR,WAT,1.0,0,0,1.5602836879,1.5602836879,0.0,0,0,0.0,1.0,0.3,13200.0,0.0,,,,,,,,,, +141.0,GERSTHEIM,FR,HROR,WAT,1.0,0,0,1.5602836879,1.5602836879,0.0,0,0,0.0,1.0,0.3,13200.0,0.0,,,,,,,,,, +140.0,BAIX LOGIS NEUF 1,FR,HROR,WAT,1.0,0,0,1.5714285713999998,1.5714285713999998,0.0,0,0,0.0,1.0,0.3,13200.0,0.0,,,,,,,,,, +139.0,CURBANS,FR,HDAM,WAT,0.85,0,0,0.6474820144,0.6474820144,0.0,0,0,0.0,0.85,0.3,5400.0,0.0,,,57546.0,0.0,0.0,0.86,,,, +134.0,BRENNILIS 3,FR,STUR,OIL,0.41,8,6,0.0373134328,0.0373134328,35280.965,0,0,0.3,0.41,7.0,300.0,0.79,,,,,,,,,, +132.0,SAINTE CROIX,FR,HDAM,WAT,0.85,0,0,0.6818181818000001,0.6818181818000001,0.0,0,0,0.0,0.85,0.3,5400.0,0.0,,,54648.0,0.0,0.0,0.86,,,, +132.0,MONTPEZAT,FR,HDAM,WAT,0.85,0,0,0.6818181818000001,0.6818181818000001,0.0,0,0,0.0,0.85,0.3,5400.0,0.0,,,54648.0,0.0,0.0,0.86,,,, +130.0,AMFARD15,FR,COMC,GAS,0.525,5,1,0.08592307689999999,0.08592307689999999,112542.12,0,0,0.4,0.525,1.0,670.2,0.45,,,,,,,,,, +130.0,AMFARD14,FR,COMC,GAS,0.525,5,1,0.08592307689999999,0.08592307689999999,112542.12,0,0,0.4,0.525,1.0,670.2,0.45,,,,,,,,,, +129.0,ARRIGHI 2,FR,STUR,OIL,0.41,8,6,0.038759689900000005,0.038759689900000005,35280.965,0,0,0.3,0.41,7.0,300.0,0.79,,,,,,,,,, +126.0,AVIGNON,FR,HROR,WAT,1.0,0,0,1.7460317459999999,1.7460317459999999,0.0,0,0,0.0,1.0,0.3,13200.0,0.0,,,,,,,,,, +125.0,ARRIGHI 1,FR,STUR,OIL,0.41,8,6,0.04,0.04,35280.965,0,0,0.3,0.41,7.0,300.0,0.79,,,,,,,,,, +124.0,RANDENS,FR,HROR,WAT,1.0,0,0,1.7741935484,1.7741935484,0.0,0,0,0.0,1.0,0.3,13200.0,0.0,,,,,,,,,, +123.0,COMBE D'AVRIEUX,FR,HDAM,WAT,0.85,0,0,0.7317073170999999,0.7317073170999999,0.0,0,0,0.0,0.85,0.3,5400.0,0.0,,,50922.0,0.0,0.0,0.86,,,, +122.0,SAINT-PIERRE,FR,HROR,WAT,1.0,0,0,1.8032786884999998,1.8032786884999998,0.0,0,0,0.0,1.0,0.3,13200.0,0.0,,,,,,,,,, +119.0,COUESQUE,FR,HROR,WAT,1.0,0,0,1.8487394958,1.8487394958,0.0,0,0,0.0,1.0,0.3,13200.0,0.0,,,,,,,,,, +116.0,SAINT GUILLERME,FR,HDAM,WAT,0.85,0,0,0.7758620690000001,0.7758620690000001,0.0,0,0,0.0,0.85,0.3,5400.0,0.0,,,48024.0,0.0,0.0,0.86,,,, +116.0,HERMILLON,FR,HROR,WAT,1.0,0,0,1.8965517241,1.8965517241,0.0,0,0,0.0,1.0,0.3,13200.0,0.0,,,,,,,,,, +109.0,PIED DE BORNE,FR,HDAM,WAT,0.85,0,0,0.8256880734,0.8256880734,0.0,0,0,0.0,0.85,0.3,5400.0,0.0,,,45126.0,0.0,0.0,0.86,,,, +107.0,ST ETIENNE CANTALES,FR,HDAM,WAT,0.85,0,0,0.8411214953,0.8411214953,0.0,0,0,0.0,0.85,0.3,5400.0,0.0,,,44298.0,0.0,0.0,0.86,,,, +104.0,PASSY,FR,HROR,WAT,1.0,0,0,2.1153846154,2.1153846154,0.0,0,0,0.0,1.0,0.3,13200.0,0.0,,,,,,,,,, +104.0,ASTON,FR,HROR,WAT,1.0,0,0,2.1153846154,2.1153846154,0.0,0,0,0.0,1.0,0.3,13200.0,0.0,,,,,,,,,, +101.0,SAINT PIERRE COGNET,FR,HROR,WAT,1.0,0,0,2.1782178218,2.1782178218,0.0,0,0,0.0,1.0,0.3,13200.0,0.0,,,,,,,,,, +85.0,DIRINON 2,FR,STUR,OIL,0.41,8,6,0.05882352940000001,0.05882352940000001,35280.965,0,0,0.3,0.41,7.0,300.0,0.79,,,,,,,,,, +85.0,BRENNILIS 2,FR,STUR,OIL,0.41,8,6,0.05882352940000001,0.05882352940000001,35280.965,0,0,0.3,0.41,7.0,300.0,0.79,,,,,,,,,, +85.0,BRENNILIS 1,FR,STUR,OIL,0.41,8,6,0.05882352940000001,0.05882352940000001,35280.965,0,0,0.3,0.41,7.0,300.0,0.79,,,,,,,,,, +85.0,DIRINON 1,FR,STUR,OIL,0.41,8,6,0.05882352940000001,0.05882352940000001,35280.965,0,0,0.3,0.41,7.0,300.0,0.79,,,,,,,,,, +62.0,CYCOFOS TV2,FR,Other,Other,0.0,0,0,0.0,0.0,0.0,0,0,0.0,0.0,0.0,0.0,0.0,,,,,,,,,, +45.0,SPEM Pointe,FR,COMC,GAS,0.525,5,1,0.24822222219999998,0.24822222219999998,112542.12,0,0,0.4,0.525,1.0,670.2,0.45,,,,,,,,,, +5292.0,DispaSET PHOT_FR,FR,PHOT,SUN,1.0,0,0,0.1700680272,0.1700680272,0.0,0,0,0.0,1.0,0.0,54000.0,0.0,,,,,,,,,, +10358.0,DispaSET WindOn_FR,FR,WTON,WIN,1.0,0,0,0.0130334041,0.0130334041,0.0,0,0,0.0,1.0,0.0,8100.0,0.0,,,,,,,,,, +119.4,DispaSET FossilGas_FR,FR,COMC,GAS,0.525,5,1,0.0935510888,0.0935510888,112542.12,0,0,0.4,0.525,1.0,670.2,0.45,,,,,,,,,, +5636.0,DispaSET HydroRiver_FR,FR,HROR,WAT,1.0,0,0,0.0390347764,0.0390347764,0.0,0,0,0.0,1.0,0.3,13200.0,0.0,,,,,,,,,, +2590.0,DispaSET HydroRes_FR,FR,HDAM,WAT,0.85,0,0,0.0347490347,0.0347490347,0.0,0,0,0.0,0.85,0.3,5400.0,0.0,,,1072260.0,0.0,0.0,0.86,,,, diff --git a/Database/PowerPlants/FR/clustered.csv b/Database/PowerPlants/FR/clustered.csv index 90ea8c04..e7b65cc5 100644 --- a/Database/PowerPlants/FR/clustered.csv +++ b/Database/PowerPlants/FR/clustered.csv @@ -1,12 +1,12 @@ -,PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost_pu,NoLoadCost_pu,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,CHPPowerLossFactor,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,CHPMaxHeat,Nunits -FR_STUR_BIO,151.1204344,FR_STUR_BIO,FR,STUR,BIO,0.46,4,6,0.02,0.02,120,12.5,1.3,0.35,0.35,1,0,back-pressure,1,0,,,,,151.1204344,1 -FR_COMC_GAS,388.3108142,FR_COMC_GAS,FR,COMC,GAS,0.57,2,4,0.03,0.03,55,0,0,0.36,0.57,1,0.42,,,,,,,,,8 -FR_GTUR_GAS,63.65119565,FR_GTUR_GAS,FR,GTUR,GAS,0.425,0,0,0.166666667,0.166666667,0,0,0,0.2,0.425,0.166666667,0.564705882,,,,,,,,,26 -FR_STUR_GAS,97.22207076,FR_STUR_GAS,FR,STUR,GAS,0.38,0,0,0.02,0.02,0,0,0,0.4,0.38,0,0,,,,,,,,,1 -FR_STUR_HRD,732.5,FR_STUR_HRD,FR,STUR,HRD,0.46,8,8,0.017777778,0.017777778,65,0,0,0.3,0.46,2,0.81,,,,,,,,,4 -FR_STUR_NUC,1002.063492,FR_STUR_NUC,FR,STUR,NUC,1,24,24,0.003333333,0.003333333,300,0,0,0.5,1,12,0,,,,,,,,,63 -FR_STUR_OIL,370.5555556,FR_STUR_OIL,FR,STUR,OIL,0.33,4,4,0.02,0.02,65,0,0,0.4,0.33,0,0.799636364,,,,,,,,,18 -FR_PHOT_SUN,6772,FR_PHOT_SUN,FR,PHOT,SUN,1,0,0,0.02,0.02,0,0,0,0,1,0,0,,,,,,,,,1 -FR_HROR_WAT,10325.5,FR_HROR_WAT,FR,HROR,WAT,1,0,0,0.02,0.02,0,0,0,0,1,0,0,,,,,,,,,1 -FR_HPHS_WAT,13169,FR_HPHS_WAT,FR,HPHS,WAT,0.8,0,0,0.066666667,0.066666667,0,0,0,0,1,0,0,,,,2845905,0,4965,0.8,,1 -FR_WTON_WIN,11761,FR_WTON_WIN,FR,WTON,WIN,1,0,0,0.02,0.02,0,0,0,0,1,0,0,,,,,,,,,1 +,PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost_pu,NoLoadCost_pu,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,CHPPowerLossFactor,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,CHPMaxHeat,Nunits,Extendable,Investment,FixedCost,EconomicLifetime +FR_STUR_BIO,151.1204344,FR_STUR_BIO,FR,STUR,BIO,0.46,4,6,0.02,0.02,120,12.5,1.3,0.35,0.35,1.0,0.0,back-pressure,1.0,0.0,,,,,151.1204344,1,,,, +FR_COMC_GAS,388.3108142,FR_COMC_GAS,FR,COMC,GAS,0.57,2,4,0.03,0.03,55,0.0,0.0,0.36,0.57,1.0,0.42,,,,,,,,,8,,,, +FR_GTUR_GAS,63.65119565,FR_GTUR_GAS,FR,GTUR,GAS,0.425,0,0,0.166666667,0.166666667,0,0.0,0.0,0.2,0.425,0.166666667,0.564705882,,,,,,,,,26,,,, +FR_STUR_GAS,97.22207076,FR_STUR_GAS,FR,STUR,GAS,0.38,0,0,0.02,0.02,0,0.0,0.0,0.4,0.38,0.0,0.0,,,,,,,,,1,,,, +FR_STUR_HRD,732.5,FR_STUR_HRD,FR,STUR,HRD,0.46,8,8,0.017777778,0.017777778,65,0.0,0.0,0.3,0.46,2.0,0.81,,,,,,,,,4,,,, +FR_STUR_NUC,1002.063492,FR_STUR_NUC,FR,STUR,NUC,1.0,24,24,0.003333333,0.003333333,300,0.0,0.0,0.5,1.0,12.0,0.0,,,,,,,,,63,,,, +FR_STUR_OIL,370.55555560000005,FR_STUR_OIL,FR,STUR,OIL,0.33,4,4,0.02,0.02,65,0.0,0.0,0.4,0.33,0.0,0.799636364,,,,,,,,,18,,,, +FR_PHOT_SUN,6772.0,FR_PHOT_SUN,FR,PHOT,SUN,1.0,0,0,0.02,0.02,0,0.0,0.0,0.0,1.0,0.0,0.0,,,,,,,,,1,,,, +FR_HROR_WAT,10325.5,FR_HROR_WAT,FR,HROR,WAT,1.0,0,0,0.02,0.02,0,0.0,0.0,0.0,1.0,0.0,0.0,,,,,,,,,1,,,, +FR_HPHS_WAT,13169.0,FR_HPHS_WAT,FR,HPHS,WAT,0.8,0,0,0.066666667,0.066666667,0,0.0,0.0,0.0,1.0,0.0,0.0,,,,2845905.0,0.0,4965.0,0.8,,1,,,, +FR_WTON_WIN,11761.0,FR_WTON_WIN,FR,WTON,WIN,1.0,0,0,0.02,0.02,0,0.0,0.0,0.0,1.0,0.0,0.0,,,,,,,,,1,,,, diff --git a/Database/PowerPlants/HR/clustered.csv b/Database/PowerPlants/HR/clustered.csv index a037e854..ef7836e2 100644 --- a/Database/PowerPlants/HR/clustered.csv +++ b/Database/PowerPlants/HR/clustered.csv @@ -1,10 +1,10 @@ -,PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost_pu,NoLoadCost_pu,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,Nunits -HR_STUR_BIO,26,HR_STUR_BIO,HR,STUR,BIO,0.46,4,6,0.02,0.02,120,12.5,1.3,0.35,0.35,1,0,,,,,,,1 -HR_COMC_GAS,289.6643166,HR_COMC_GAS,HR,COMC,GAS,0.57,2,4,0.03,0.03,55,0,0,0.36,0.57,1,0.42,,,,,,,2 -HR_GTUR_GAS,47.93429808,HR_GTUR_GAS,HR,GTUR,GAS,0.425,0,0,0.166666667,0.166666667,0,0,0,0.2,0.425,0.166666667,0.564705882,,,,,,,3 -HR_STUR_HRD,325,HR_STUR_HRD,HR,STUR,HRD,0.46,8,8,0.017777778,0.017777778,65,0,0,0.3,0.46,2,0.81,,,,,,,1 -HR_STUR_OIL,316.6666667,HR_STUR_OIL,HR,STUR,OIL,0.33,4,4,0.02,0.02,65,0,0,0.4,0.33,0,0.799636364,,,,,,,3 -HR_PHOT_SUN,48,HR_PHOT_SUN,HR,PHOT,SUN,1,0,0,0.02,0.02,0,0,0,0,1,0,0,,,,,,,1 -HR_HROR_WAT,421,HR_HROR_WAT,HR,HROR,WAT,1,0,0,0.02,0.02,0,0,0,0,1,0,0,,,,,,,1 -HR_HPHS_WAT,1669,HR_HPHS_WAT,HR,HPHS,WAT,0.8,0,0,0.066666667,0.066666667,0,0,0,0,1,0,0,,,1247290,0,281,0.8,1 -HR_WTON_WIN,489,HR_WTON_WIN,HR,WTON,WIN,1,0,0,0.02,0.02,0,0,0,0,1,0,0,,,,,,,1 +,PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost_pu,NoLoadCost_pu,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,Nunits,Extendable,Investment,FixedCost,EconomicLifetime +HR_STUR_BIO,26.0,HR_STUR_BIO,HR,STUR,BIO,0.46,4,6,0.02,0.02,120,12.5,1.3,0.35,0.35,1.0,0.0,,,,,,,1,,,, +HR_COMC_GAS,289.6643166,HR_COMC_GAS,HR,COMC,GAS,0.57,2,4,0.03,0.03,55,0.0,0.0,0.36,0.57,1.0,0.42,,,,,,,2,,,, +HR_GTUR_GAS,47.93429808,HR_GTUR_GAS,HR,GTUR,GAS,0.425,0,0,0.166666667,0.166666667,0,0.0,0.0,0.2,0.425,0.166666667,0.564705882,,,,,,,3,,,, +HR_STUR_HRD,325.0,HR_STUR_HRD,HR,STUR,HRD,0.46,8,8,0.017777778,0.017777778,65,0.0,0.0,0.3,0.46,2.0,0.81,,,,,,,1,,,, +HR_STUR_OIL,316.6666667,HR_STUR_OIL,HR,STUR,OIL,0.33,4,4,0.02,0.02,65,0.0,0.0,0.4,0.33,0.0,0.799636364,,,,,,,3,,,, +HR_PHOT_SUN,48.0,HR_PHOT_SUN,HR,PHOT,SUN,1.0,0,0,0.02,0.02,0,0.0,0.0,0.0,1.0,0.0,0.0,,,,,,,1,,,, +HR_HROR_WAT,421.0,HR_HROR_WAT,HR,HROR,WAT,1.0,0,0,0.02,0.02,0,0.0,0.0,0.0,1.0,0.0,0.0,,,,,,,1,,,, +HR_HPHS_WAT,1669.0,HR_HPHS_WAT,HR,HPHS,WAT,0.8,0,0,0.066666667,0.066666667,0,0.0,0.0,0.0,1.0,0.0,0.0,,,1247290.0,0.0,281.0,0.8,1,,,, +HR_WTON_WIN,489.0,HR_WTON_WIN,HR,WTON,WIN,1.0,0,0,0.02,0.02,0,0.0,0.0,0.0,1.0,0.0,0.0,,,,,,,1,,,, diff --git a/Database/PowerPlants/HU/clustered.csv b/Database/PowerPlants/HU/clustered.csv index 9938a754..3ab1c579 100644 --- a/Database/PowerPlants/HU/clustered.csv +++ b/Database/PowerPlants/HU/clustered.csv @@ -1,9 +1,9 @@ -,PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost_pu,NoLoadCost_pu,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,CHPPowerLossFactor,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,CHPMaxHeat,Nunits -HU_STUR_BIO,111.3186019,HU_STUR_BIO,HU,STUR,BIO,0.46,4,6,0.02,0.02,120,12.5,1.3,0.35,0.35,1,0,back-pressure,1,0,,,,,111.3186019,2 -HU_COMC_GAS,405.1801597,HU_COMC_GAS,HU,COMC,GAS,0.57,2,4,0.03,0.03,55,0,0,0.36,0.57,1,0.42,,,,,,,,,7 -HU_GTUR_GAS,63.89085866,HU_GTUR_GAS,HU,GTUR,GAS,0.425,0,0,0.166666667,0.166666667,0,0,0,0.2,0.425,0.166666667,0.564705882,,,,,,,,,17 -HU_ICEN_GAS,9.675118405,HU_ICEN_GAS,HU,ICEN,GAS,0.49,0,0,1,1,0,0,0,0.3,0.49,0,0.489795918,,,,,,,,,15 -HU_STUR_LIG,503.265,HU_STUR_LIG,HU,STUR,LIG,0.393,8,8,0.01520979,0.017482517,65,12.56164384,0,0.389,0.4075,5,1.05,,,,,,,,,2 -HU_STUR_NUC,943.395,HU_STUR_NUC,HU,STUR,NUC,1,24,24,0.003333333,0.003333333,300,0,0,0.5,1,12,0,,,,,,,,,2 -HU_PHOT_SUN,49,HU_PHOT_SUN,HU,PHOT,SUN,1,0,0,0.02,0.02,0,0,0,0,1,0,0,,,,,,,,,1 -HU_WTON_WIN,328,HU_WTON_WIN,HU,WTON,WIN,1,0,0,0.02,0.02,0,0,0,0,1,0,0,,,,,,,,,1 +,PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost_pu,NoLoadCost_pu,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,CHPPowerLossFactor,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,CHPMaxHeat,Nunits,Extendable,Investment,FixedCost,EconomicLifetime +HU_STUR_BIO,111.3186019,HU_STUR_BIO,HU,STUR,BIO,0.46,4,6,0.02,0.02,120,12.5,1.3,0.35,0.35,1.0,0.0,back-pressure,1.0,0.0,,,,,111.3186019,2,,,, +HU_COMC_GAS,405.1801597,HU_COMC_GAS,HU,COMC,GAS,0.57,2,4,0.03,0.03,55,0.0,0.0,0.36,0.57,1.0,0.42,,,,,,,,,7,,,, +HU_GTUR_GAS,63.89085866,HU_GTUR_GAS,HU,GTUR,GAS,0.425,0,0,0.166666667,0.166666667,0,0.0,0.0,0.2,0.425,0.166666667,0.564705882,,,,,,,,,17,,,, +HU_ICEN_GAS,9.675118405,HU_ICEN_GAS,HU,ICEN,GAS,0.49,0,0,1.0,1.0,0,0.0,0.0,0.3,0.49,0.0,0.489795918,,,,,,,,,15,,,, +HU_STUR_LIG,503.265,HU_STUR_LIG,HU,STUR,LIG,0.39299999999999996,8,8,0.01520979,0.017482517,65,12.56164384,0.0,0.389,0.4075,5.0,1.05,,,,,,,,,2,,,, +HU_STUR_NUC,943.395,HU_STUR_NUC,HU,STUR,NUC,1.0,24,24,0.003333333,0.003333333,300,0.0,0.0,0.5,1.0,12.0,0.0,,,,,,,,,2,,,, +HU_PHOT_SUN,49.0,HU_PHOT_SUN,HU,PHOT,SUN,1.0,0,0,0.02,0.02,0,0.0,0.0,0.0,1.0,0.0,0.0,,,,,,,,,1,,,, +HU_WTON_WIN,328.0,HU_WTON_WIN,HU,WTON,WIN,1.0,0,0,0.02,0.02,0,0.0,0.0,0.0,1.0,0.0,0.0,,,,,,,,,1,,,, diff --git a/Database/PowerPlants/IE/2015_Lucy.csv b/Database/PowerPlants/IE/2015_Lucy.csv index 7376655c..956be64a 100644 --- a/Database/PowerPlants/IE/2015_Lucy.csv +++ b/Database/PowerPlants/IE/2015_Lucy.csv @@ -1,77 +1,77 @@ -PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost,NoLoadCost,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency -258,Aghada Unit 1,IE,STUR,GAS,0.38,4,4,0.015,0.01496124,63696.23098,2880.400082,0,0.139534884,0.38,0,0.542339093,,,,,, -444,Aghada Unit 2,IE,COMC,GAS,0.53,4,1,0.019887387,0.027882883,110787.8241,4514.599863,0,0.486486487,0.52,0,0.388490083,,,,,, -90,Aghada CT 1,IE,GTUR,GAS,0.27,4,1,0.055555556,0.055555556,6343.840659,3006.106511,0,0.166666667,0.13,0,0.763212915,,,,,, -90,Aghada CT 2,IE,GTUR,GAS,0.26,4,1,0.055555556,0.055555556,6454.140247,3527.681511,0,0.166666667,0.13,0,0.790146537,,,,,, -90,Aghada CT 4,IE,GTUR,GAS,0.27,4,1,0.055555556,0.055555556,6377.773489,3125.988242,0,0.166666667,0.13,0,0.764188097,,,,,, -21,Ardnacrusha 1,IE,HROR,WAT,1,0,0,0.02,0.02,203.03,0,0,0,1.00,0,0,,,,,, -22,Ardnacrusha 2,IE,HROR,WAT,1,0,0,0.021363636,0.021363636,147.4,0,0,0,1.00,0,0,,,,,, -19,Ardnacrusha 3,IE,HROR,WAT,1,0,0,0.017368421,0.017368421,146.23,0,0,0,1.00,0,0,,,,,, -24,Ardnacrusha 4,IE,HROR,WAT,1,0,0,0.022916667,0.022916667,128.7,0,0,0,1.00,0,0,,,,,, -58,Ballylumford GT1,IE,GTUR,OIL,0.25,0,0,0.086206897,0.110862069,3675.461612,1513.279258,0,0.137931035,0.11,0,1.034182121,,,,,, -58,Ballylumford GT2,IE,GTUR,OIL,0.25,0,0,0.086206897,0.110862069,3596.50206,1514.158956,0,0.137931035,0.11,0,1.034182121,,,,,, -101,Ballylumford Unit 10,IE,COMC,GAS,0.51,0,0,0.01,0.03960396,12294.79632,473.6446703,0,0.623762376,0.49,0,0.399746673,,,,,, -247,Ballylumford CCGT Unit 31,IE,COMC,GAS,0.48,0,0,0.012550607,0.024574899,16291.73448,1885.96544,0,0.457489879,0.41,0,0.422636453,,,,,, -247,Ballylumford CCGT Unit 32,IE,COMC,GAS,0.48,0,0,0.012550607,0.024574899,16197.25548,1904.372582,0,0.457489879,0.41,0,0.422636453,,,,,, -170,Ballylumford Unit 4,IE,STUR,GAS,0.31,0,0,0.011647059,0.056882353,31367.85556,985.6411813,0,0.317647059,0.26,0,0.665282752,,,,,, -170,Ballylumford Unit 5,IE,STUR,GAS,0.31,0,0,0.011647059,0.056882353,31194.86648,1001.569505,0,0.317647059,0.26,0,0.662903985,,,,,, -170,Ballylumford Unit 6,IE,STUR,GAS,0.31,0,0,0.011647059,0.056882353,32975.0175,961.8922802,0,0.317647059,0.27,0,0.659023614,,,,,, -12.084,Contour Global Agg Unit,IE,STUR,GAS,0.38,1,1,0.33366435,0.33366435,1.108186813,42.68538462,0,0.49652433,0.39,0,0,,,,,, -412,Coolkeeragh CCGT,IE,COMC,GAS,0.51,4,4,0.036407767,0.02026699,68516.27564,3723.178571,0,0.631067961,0.53,0,0.405133848,,,,,, -58,Coolkeeragh CGT8,IE,GTUR,OIL,0.25,4,1,0.862068966,0.862068966,5493.054945,1432.214286,0,0.137931035,0.11,0,1.03641224,,,,,, -58,Cushaling,IE,GTUR,OIL,0.33,0,1,0.086206897,0.086206897,68516.27564,1155.532967,0,0.344827586,0.33,0,0.782937931,,,,,, -58,Cushaling Unit 2,IE,GTUR,OIL,0.33,0,1,0.086206897,0.086206897,5493.054945,1155.532967,0,0.344827586,0.33,0,0.782937931,,,,,, -415,Dublin Bay Gen,IE,COMC,GAS,0.51,4,1,0.024096386,0.021686747,121659.9542,3301.802198,0,0.489156627,0.52,0,0.40524105,,,,,, -117.6,Edenderry Unit 1,IE,STUR,BIO,0.29,4,0,0.014965986,0.014965986,38689.8544,2871.925824,0,0.348639456,0.38,0,1.448689655,,,,,, -10,ERNE UNIT 1,IE,HROR,WAT,1,0,0,0.5,1,67.27,0,0,0,1.00,0,0,,,,,, -10,ERNE UNIT 2,IE,HROR,WAT,1,0,0,0.5,1,56.65914835,0,0,0,1.00,0,0,,,,,, -22.5,ERNE UNIT 3,IE,HROR,WAT,1,0,0,0.444444444,1,134.9,0,0,0,1.00,0,0,,,,,, -22.5,ERNE UNIT 4,IE,HROR,WAT,1,0,0,0.444444444,1,143.85,0,0,0,1.00,0,0,,,,,, -464,Great Island CCGT,IE,COMC,GAS,0.51,4,4,0.03700431,0.03987069,76411.66484,3160.013699,0,0.4375,0.51,0,0.40108227,,,,,, -54,Great Island Unit 1,IE,STUR,OIL,0.24,4,2,0.012962963,0.018518519,8845.440726,439.4027419,0,0.462962963,0.23,0,1.054665589,,,,,, -49,Great Island Unit 2,IE,STUR,OIL,0.24,4,2,0.014285714,0.020408163,8845.440726,439.4027419,0,0.510204082,0.23,0,1.059051038,,,,,, -113,Great Island Unit 3,IE,STUR,OIL,0.3,4,4,0.00619469,0.013274336,18215.78637,698.3668548,0,0.265486726,0.25,0,0.856514495,,,,,, -343,Huntstown CCGT Unit 1,IE,COMC,GAS,0.48,4,4,0.020408163,0.020408163,151325.2689,6940.947033,0,0.498542274,0.47,0,0.429795688,,,,,, -404,Huntstown CCGT Unit 2,IE,COMC,GAS,0.48,4,4,0.049504951,0.049504951,73910.7859,6145.330659,0,0.420792079,0.47,0,0.424998642,,,,,, -72,iPower Solutions ltd,IE,GTUR,OIL,0.27,1,1,0.111111111,0.111111111,6917.330385,1499.446209,0,0.375,0.00,0,0,,,,,, -29,Kilroot KGT1,IE,GTUR,OIL,0.24,0,0,0.092068966,0.092068966,1866.996374,868.0702473,0,0.172413793,0.11,0,0.856535385,,,,,, -29,Kilroot KGT2,IE,GTUR,OIL,0.24,0,0,0.092068966,0.092068966,1866.996374,868.0702473,0,0.172413793,0.11,0,0.53932183,,,,,, -42,Kilroot KGT3,IE,GTUR,OIL,0.29,0,0,0.238095238,0.238095238,1881.510549,972.5134615,0,0.305238095,0.20,0,0.533302338,,,,,, -42,Kilroot KGT4,IE,GTUR,OIL,0.29,0,0,0.238095238,0.238095238,1881.509505,972.4999451,0,0.305238095,0.20,0,0.940695,,,,,, -238,Kilroot K1,IE,STUR,HRD,0.32,4,1,0.024327731,0.024327731,22032.74968,986.4209341,0,0.390756303,0.27,0,1.085270544,,,,,, -238,Kilroot K2,IE,STUR,HRD,0.32,4,1,0.024327731,0.024327731,22032.74968,986.4209341,0,0.390756303,0.27,0,1.085270544,,,,,, -15,LEE UNIT 1,IE,HROR,WAT,1,0,0,0.16,1,117.1,0,0,0,1.00,0,0,,,,,, -4,LEE UNIT 2,IE,HROR,WAT,1,0,0,0.15,1,27.98,0,0,0,1.00,0,0,,,,,, -8,LEE UNIT 3,IE,HROR,WAT,1,0,0,0.1875,1,62.49,0,0,0,1.00,0,0,,,,,, -15,Liffey Unit 1,IE,HROR,WAT,1,0,0,0.333333333,0.666666667,177.2703297,0,0,0,1.00,0,0,,,,,, -15,Liffey Unit 2,IE,HROR,WAT,1,0,0,0.333333333,0.666666667,170.1499451,0,0,0,1.00,0,0,,,,,, -4,Liffey Unit 4,IE,HROR,WAT,1,0,0,0.5,0.5,43.14,0,0,0,1.00,0,0,,,,,, -4,Liffey Unit 5,IE,HROR,WAT,1,0,0,0.0075,0.5,31.8,0,0,0,1.00,0,0,,,,,, -18.2,Lisahally / Maydown,IE,STUR,WST,0.3,4,1,0.002197802,0.002197802,2375.985321,45.40012422,0,0.700549451,0.00,0,0,,,,,, -93,Lanesboro,IE,STUR,BIO,0.36,4,4,0.014731183,0.005376344,4303.568141,502.2834066,0,0.978494624,0.36,0,1.167,,,,,, -95,Marina,IE,GTUR,GAS,0.26,4,1,0.052631579,0.052631579,33300.59533,2999.112033,0,0.210526316,0.25,0,0.776917678,,,,,, -17,Meath waste to energy,IE,STUR,WST,0.85,0,0,0.021176471,0.038235294,0,0,0,0.058823529,0.00,0,0,,,,,, -285,Moneypoint Unit 1,IE,STUR,HRD,0.3,6,5,0.010526316,0.015929825,113198.3976,858.2935165,0,0.347368421,0.32,0,1.064982097,,,,,, -285,Moneypoint Unit 2,IE,STUR,HRD,0.3,6,5,0.010526316,0.015754386,107583.3316,817.8710989,0,0.347368421,0.32,0,1.064982097,,,,,, -285,Moneypoint Unit 3,IE,STUR,HRD,0.3,6,5,0.010526316,0.015929825,113195.0652,858.2794505,0,0.347368421,0.32,0,1.064982097,,,,,, -163,North Wall 4,IE,COMC,GAS,0.35,4,0,0.023213397,0.073619632,4896.97,3104.21,0,0.535582822,0.36,0,0.580714574,,,,,, -109,North Wall CT5,IE,GTUR,GAS,0.27,4,1,0.073394495,0.073394495,9528.195,3564.425082,0,0.174311927,0.14,0,0.761832884,,,,,, -512,Poolbeg CCGT Unit,IE,COMC,GAS,0.47,4,4,0.021484375,0.021484375,97478.30877,4830.52544,0,0.453125,0.44,0,0.439182633,,,,,, -52,Rhode Unit 1,IE,GTUR,OIL,0.31,0,0,0.192307692,0.192307692,2256.095357,1005.010467,0,0.096153846,0.21,0,0.837731707,,,,,, -52,Rhode Unit 2,IE,GTUR,OIL,0.31,0,0,0.192307692,0.192307692,2256.095357,1005.010467,0,0.096153846,0.21,0,0.837731707,,,,,, -83,Sealrock 3,IE,GTUR,GAS,0.56,4,4,0.072289157,0.072289157,6255.604112,1323.492692,0,0.481927711,0.48,0,0.36694434,,,,,, -83,Sealrock 4,IE,GTUR,GAS,0.56,4,4,0.072289157,0.072289157,6267.130266,1326.287198,0,0.481927711,0.48,0,0.36694434,,,,,, -54,Tarbert Unit 1,IE,STUR,OIL,0.28,2,2,0.018518519,0.018518519,10621.7833,363.3217582,0,0.333333333,0.26,0,0.905424557,,,,,, -54,Tarbert Unit 2,IE,STUR,OIL,0.28,2,2,0.018518519,0.018518519,10779.05342,367.1825824,0,0.333333333,0.26,0,0.905424557,,,,,, -243,Tarbert Unit 3,IE,STUR,OIL,0.35,4,4,0.008230453,0.009053498,69483.56252,2009.666703,0,0.143415638,0.24,0,0.739817532,,,,,, -243,Tarbert Unit 4,IE,STUR,OIL,0.33,4,4,0.008230453,0.009053498,69489.6693,2012.109258,0,0.143415638,0.23,0,0.770557597,,,,,, -52,Tawnaghmore Unit 1,IE,GTUR,OIL,0.31,0,1,0.192307692,0.192307692,2250.715027,1046.954808,0,0.096153846,0.21,0,0.823469184,,,,,, -52,Tawnaghmore Unit 3,IE,GTUR,OIL,0.31,0,1,0.192307692,0.192307692,2250.715027,1046.954808,0,0.096153846,0.21,0,0.823469184,,,,,, -73,Turlough Hill Unit 1,IE,HPHS,WAT,0.85,0,0,1,1,0,0,0,0,0.85,0,0,,,452.6,0,73,0.7 -73,Turlough Hill Unit 2,IE,HPHS,WAT,0.85,0,0,1,1,0,0,0,0,0.85,0,0,,,452.6,0,73,0.7 -73,Turlough Hill Unit 3,IE,HPHS,WAT,0.85,0,0,1,1,0,0,0,0,0.85,0,0,,,452.6,0,73,0.7 -73,Turlough Hill Unit 4,IE,HPHS,WAT,0.85,0,0,1,1,0,0,0,0,0.85,0,0,,,452.6,0,73,0.7 -404,Tynagh Generator Unit,IE,COMC,GAS,0.50443962,4,4,0.030940594,0.025074257,97995.99542,4176.769231,0,0.48019802,0.52,0,1.370290248,,,,,, -140,West Offaly,IE,STUR,BIO,0.38,4,4,0.005,0.005,6445.958846,668.9261264,0,0.978571429,0.38,0,1.105578947,,,,,, -445,Whitegate Unit 1,IE,COMC,GAS,0.52,4,4,0.046292135,0.060224719,103972.0394,4467.756538,0,0.404494382,0.48,0,0.390842917,,,,,, -3039,Windfarms,IE,WTON,WIN,1,0,0,1,1,0,0,0,0,1.00,0,0,,,,,, +PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost,NoLoadCost,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,Extendable,Investment,FixedCost,EconomicLifetime +258.0,Aghada Unit 1,IE,STUR,GAS,0.38,4,4,0.015,0.01496124,63696.23097999999,2880.400082,0,0.139534884,0.38,0,0.5423390929999999,,,,,,,,,, +444.0,Aghada Unit 2,IE,COMC,GAS,0.53,4,1,0.019887387,0.027882882999999997,110787.8241,4514.599863,0,0.486486487,0.52,0,0.388490083,,,,,,,,,, +90.0,Aghada CT 1,IE,GTUR,GAS,0.27,4,1,0.055555556,0.055555556,6343.840659,3006.106511,0,0.166666667,0.13,0,0.763212915,,,,,,,,,, +90.0,Aghada CT 2,IE,GTUR,GAS,0.26,4,1,0.055555556,0.055555556,6454.140247,3527.681511,0,0.166666667,0.13,0,0.790146537,,,,,,,,,, +90.0,Aghada CT 4,IE,GTUR,GAS,0.27,4,1,0.055555556,0.055555556,6377.773489,3125.9882420000013,0,0.166666667,0.13,0,0.764188097,,,,,,,,,, +21.0,Ardnacrusha 1,IE,HROR,WAT,1.0,0,0,0.02,0.02,203.03,0.0,0,0.0,1.0,0,0.0,,,,,,,,,, +22.0,Ardnacrusha 2,IE,HROR,WAT,1.0,0,0,0.021363636000000002,0.021363636000000002,147.4,0.0,0,0.0,1.0,0,0.0,,,,,,,,,, +19.0,Ardnacrusha 3,IE,HROR,WAT,1.0,0,0,0.017368421000000002,0.017368421000000002,146.23,0.0,0,0.0,1.0,0,0.0,,,,,,,,,, +24.0,Ardnacrusha 4,IE,HROR,WAT,1.0,0,0,0.022916667,0.022916667,128.7,0.0,0,0.0,1.0,0,0.0,,,,,,,,,, +58.0,Ballylumford GT1,IE,GTUR,OIL,0.25,0,0,0.08620689699999999,0.11086206900000001,3675.4616119999996,1513.279258,0,0.137931035,0.11,0,1.034182121,,,,,,,,,, +58.0,Ballylumford GT2,IE,GTUR,OIL,0.25,0,0,0.08620689699999999,0.11086206900000001,3596.502060000001,1514.158956,0,0.137931035,0.11,0,1.034182121,,,,,,,,,, +101.0,Ballylumford Unit 10,IE,COMC,GAS,0.51,0,0,0.01,0.03960396,12294.79632,473.6446703,0,0.6237623760000001,0.49,0,0.399746673,,,,,,,,,, +247.0,Ballylumford CCGT Unit 31,IE,COMC,GAS,0.48,0,0,0.012550607,0.024574899,16291.734480000001,1885.96544,0,0.457489879,0.41,0,0.42263645299999997,,,,,,,,,, +247.0,Ballylumford CCGT Unit 32,IE,COMC,GAS,0.48,0,0,0.012550607,0.024574899,16197.255480000002,1904.372582,0,0.457489879,0.41,0,0.42263645299999997,,,,,,,,,, +170.0,Ballylumford Unit 4,IE,STUR,GAS,0.31,0,0,0.011647059,0.056882353,31367.855560000004,985.6411813,0,0.317647059,0.26,0,0.665282752,,,,,,,,,, +170.0,Ballylumford Unit 5,IE,STUR,GAS,0.31,0,0,0.011647059,0.056882353,31194.86648,1001.569505,0,0.317647059,0.26,0,0.662903985,,,,,,,,,, +170.0,Ballylumford Unit 6,IE,STUR,GAS,0.31,0,0,0.011647059,0.056882353,32975.0175,961.8922802000001,0,0.317647059,0.27,0,0.659023614,,,,,,,,,, +12.084000000000001,Contour Global Agg Unit,IE,STUR,GAS,0.38,1,1,0.33366435,0.33366435,1.1081868129999999,42.68538462,0,0.49652433,0.39,0,0.0,,,,,,,,,, +412.0,Coolkeeragh CCGT,IE,COMC,GAS,0.51,4,4,0.036407767,0.02026699,68516.27563999999,3723.178571,0,0.6310679610000001,0.53,0,0.40513384799999996,,,,,,,,,, +58.0,Coolkeeragh CGT8,IE,GTUR,OIL,0.25,4,1,0.8620689659999999,0.8620689659999999,5493.054945,1432.214286,0,0.137931035,0.11,0,1.03641224,,,,,,,,,, +58.0,Cushaling,IE,GTUR,OIL,0.33,0,1,0.08620689699999999,0.08620689699999999,68516.27563999999,1155.532967,0,0.344827586,0.33,0,0.782937931,,,,,,,,,, +58.0,Cushaling Unit 2,IE,GTUR,OIL,0.33,0,1,0.08620689699999999,0.08620689699999999,5493.054945,1155.532967,0,0.344827586,0.33,0,0.782937931,,,,,,,,,, +415.0,Dublin Bay Gen,IE,COMC,GAS,0.51,4,1,0.024096386,0.021686747000000003,121659.9542,3301.802198,0,0.489156627,0.52,0,0.40524105,,,,,,,,,, +117.6,Edenderry Unit 1,IE,STUR,BIO,0.29,4,0,0.014965986,0.014965986,38689.8544,2871.925824,0,0.348639456,0.38,0,1.448689655,,,,,,,,,, +10.0,ERNE UNIT 1,IE,HROR,WAT,1.0,0,0,0.5,1.0,67.27,0.0,0,0.0,1.0,0,0.0,,,,,,,,,, +10.0,ERNE UNIT 2,IE,HROR,WAT,1.0,0,0,0.5,1.0,56.65914835,0.0,0,0.0,1.0,0,0.0,,,,,,,,,, +22.5,ERNE UNIT 3,IE,HROR,WAT,1.0,0,0,0.444444444,1.0,134.9,0.0,0,0.0,1.0,0,0.0,,,,,,,,,, +22.5,ERNE UNIT 4,IE,HROR,WAT,1.0,0,0,0.444444444,1.0,143.85,0.0,0,0.0,1.0,0,0.0,,,,,,,,,, +464.0,Great Island CCGT,IE,COMC,GAS,0.51,4,4,0.03700431,0.03987069,76411.66484,3160.0136989999996,0,0.4375,0.51,0,0.40108227,,,,,,,,,, +54.0,Great Island Unit 1,IE,STUR,OIL,0.24,4,2,0.012962963000000001,0.018518519,8845.440726,439.40274189999997,0,0.46296296299999995,0.23,0,1.054665589,,,,,,,,,, +49.0,Great Island Unit 2,IE,STUR,OIL,0.24,4,2,0.014285714,0.020408163,8845.440726,439.40274189999997,0,0.510204082,0.23,0,1.059051038,,,,,,,,,, +113.0,Great Island Unit 3,IE,STUR,OIL,0.3,4,4,0.00619469,0.013274336000000001,18215.786369999998,698.3668547999997,0,0.265486726,0.25,0,0.856514495,,,,,,,,,, +343.0,Huntstown CCGT Unit 1,IE,COMC,GAS,0.48,4,4,0.020408163,0.020408163,151325.2689,6940.9470329999995,0,0.498542274,0.47,0,0.42979568799999995,,,,,,,,,, +404.0,Huntstown CCGT Unit 2,IE,COMC,GAS,0.48,4,4,0.049504951,0.049504951,73910.7859,6145.330659,0,0.420792079,0.47,0,0.42499864200000004,,,,,,,,,, +72.0,iPower Solutions ltd,IE,GTUR,OIL,0.27,1,1,0.111111111,0.111111111,6917.3303849999975,1499.446209,0,0.375,0.0,0,0.0,,,,,,,,,, +29.0,Kilroot KGT1,IE,GTUR,OIL,0.24,0,0,0.092068966,0.092068966,1866.9963739999998,868.0702472999999,0,0.172413793,0.11,0,0.856535385,,,,,,,,,, +29.0,Kilroot KGT2,IE,GTUR,OIL,0.24,0,0,0.092068966,0.092068966,1866.9963739999998,868.0702472999999,0,0.172413793,0.11,0,0.53932183,,,,,,,,,, +42.0,Kilroot KGT3,IE,GTUR,OIL,0.29,0,0,0.23809523800000001,0.23809523800000001,1881.5105489999999,972.5134615000001,0,0.305238095,0.2,0,0.5333023379999999,,,,,,,,,, +42.0,Kilroot KGT4,IE,GTUR,OIL,0.29,0,0,0.23809523800000001,0.23809523800000001,1881.509505,972.4999451,0,0.305238095,0.2,0,0.9406950000000001,,,,,,,,,, +238.0,Kilroot K1,IE,STUR,HRD,0.32,4,1,0.024327731000000002,0.024327731000000002,22032.74968,986.4209341,0,0.39075630299999997,0.27,0,1.0852705440000001,,,,,,,,,, +238.0,Kilroot K2,IE,STUR,HRD,0.32,4,1,0.024327731000000002,0.024327731000000002,22032.74968,986.4209341,0,0.39075630299999997,0.27,0,1.0852705440000001,,,,,,,,,, +15.0,LEE UNIT 1,IE,HROR,WAT,1.0,0,0,0.16,1.0,117.1,0.0,0,0.0,1.0,0,0.0,,,,,,,,,, +4.0,LEE UNIT 2,IE,HROR,WAT,1.0,0,0,0.15,1.0,27.98,0.0,0,0.0,1.0,0,0.0,,,,,,,,,, +8.0,LEE UNIT 3,IE,HROR,WAT,1.0,0,0,0.1875,1.0,62.49,0.0,0,0.0,1.0,0,0.0,,,,,,,,,, +15.0,Liffey Unit 1,IE,HROR,WAT,1.0,0,0,0.333333333,0.666666667,177.2703297,0.0,0,0.0,1.0,0,0.0,,,,,,,,,, +15.0,Liffey Unit 2,IE,HROR,WAT,1.0,0,0,0.333333333,0.666666667,170.1499451,0.0,0,0.0,1.0,0,0.0,,,,,,,,,, +4.0,Liffey Unit 4,IE,HROR,WAT,1.0,0,0,0.5,0.5,43.14,0.0,0,0.0,1.0,0,0.0,,,,,,,,,, +4.0,Liffey Unit 5,IE,HROR,WAT,1.0,0,0,0.0075,0.5,31.8,0.0,0,0.0,1.0,0,0.0,,,,,,,,,, +18.2,Lisahally / Maydown,IE,STUR,WST,0.3,4,1,0.002197802,0.002197802,2375.985321,45.40012422,0,0.700549451,0.0,0,0.0,,,,,,,,,, +93.0,Lanesboro,IE,STUR,BIO,0.36,4,4,0.014731183,0.005376344,4303.568141,502.28340660000003,0,0.9784946240000001,0.36,0,1.167,,,,,,,,,, +95.0,Marina,IE,GTUR,GAS,0.26,4,1,0.052631579000000005,0.052631579000000005,33300.595330000004,2999.112033,0,0.21052631600000002,0.25,0,0.776917678,,,,,,,,,, +17.0,Meath waste to energy,IE,STUR,WST,0.85,0,0,0.021176471000000002,0.038235293999999996,0.0,0.0,0,0.05882352900000001,0.0,0,0.0,,,,,,,,,, +285.0,Moneypoint Unit 1,IE,STUR,HRD,0.3,6,5,0.010526316,0.015929825,113198.3976,858.2935164999999,0,0.34736842100000004,0.32,0,1.0649820970000001,,,,,,,,,, +285.0,Moneypoint Unit 2,IE,STUR,HRD,0.3,6,5,0.010526316,0.015754386000000002,107583.3316,817.8710989,0,0.34736842100000004,0.32,0,1.0649820970000001,,,,,,,,,, +285.0,Moneypoint Unit 3,IE,STUR,HRD,0.3,6,5,0.010526316,0.015929825,113195.0652,858.2794505,0,0.34736842100000004,0.32,0,1.0649820970000001,,,,,,,,,, +163.0,North Wall 4,IE,COMC,GAS,0.35,4,0,0.023213397,0.073619632,4896.97,3104.21,0,0.5355828220000001,0.36,0,0.580714574,,,,,,,,,, +109.0,North Wall CT5,IE,GTUR,GAS,0.27,4,1,0.073394495,0.073394495,9528.195,3564.425082,0,0.174311927,0.14,0,0.761832884,,,,,,,,,, +512.0,Poolbeg CCGT Unit,IE,COMC,GAS,0.47,4,4,0.021484375,0.021484375,97478.30877,4830.5254399999985,0,0.453125,0.44,0,0.439182633,,,,,,,,,, +52.0,Rhode Unit 1,IE,GTUR,OIL,0.31,0,0,0.192307692,0.192307692,2256.095357,1005.010467,0,0.096153846,0.21,0,0.837731707,,,,,,,,,, +52.0,Rhode Unit 2,IE,GTUR,OIL,0.31,0,0,0.192307692,0.192307692,2256.095357,1005.010467,0,0.096153846,0.21,0,0.837731707,,,,,,,,,, +83.0,Sealrock 3,IE,GTUR,GAS,0.56,4,4,0.072289157,0.072289157,6255.604112,1323.492692,0,0.48192771100000004,0.48,0,0.36694434,,,,,,,,,, +83.0,Sealrock 4,IE,GTUR,GAS,0.56,4,4,0.072289157,0.072289157,6267.130265999999,1326.287198,0,0.48192771100000004,0.48,0,0.36694434,,,,,,,,,, +54.0,Tarbert Unit 1,IE,STUR,OIL,0.28,2,2,0.018518519,0.018518519,10621.7833,363.3217582,0,0.333333333,0.26,0,0.905424557,,,,,,,,,, +54.0,Tarbert Unit 2,IE,STUR,OIL,0.28,2,2,0.018518519,0.018518519,10779.05342,367.18258239999994,0,0.333333333,0.26,0,0.905424557,,,,,,,,,, +243.0,Tarbert Unit 3,IE,STUR,OIL,0.35,4,4,0.008230453,0.009053498,69483.56252,2009.666703,0,0.143415638,0.24,0,0.739817532,,,,,,,,,, +243.0,Tarbert Unit 4,IE,STUR,OIL,0.33,4,4,0.008230453,0.009053498,69489.6693,2012.1092579999997,0,0.143415638,0.23,0,0.770557597,,,,,,,,,, +52.0,Tawnaghmore Unit 1,IE,GTUR,OIL,0.31,0,1,0.192307692,0.192307692,2250.7150269999997,1046.954808,0,0.096153846,0.21,0,0.823469184,,,,,,,,,, +52.0,Tawnaghmore Unit 3,IE,GTUR,OIL,0.31,0,1,0.192307692,0.192307692,2250.7150269999997,1046.954808,0,0.096153846,0.21,0,0.823469184,,,,,,,,,, +73.0,Turlough Hill Unit 1,IE,HPHS,WAT,0.85,0,0,1.0,1.0,0.0,0.0,0,0.0,0.85,0,0.0,,,452.6,0.0,73.0,0.7,,,, +73.0,Turlough Hill Unit 2,IE,HPHS,WAT,0.85,0,0,1.0,1.0,0.0,0.0,0,0.0,0.85,0,0.0,,,452.6,0.0,73.0,0.7,,,, +73.0,Turlough Hill Unit 3,IE,HPHS,WAT,0.85,0,0,1.0,1.0,0.0,0.0,0,0.0,0.85,0,0.0,,,452.6,0.0,73.0,0.7,,,, +73.0,Turlough Hill Unit 4,IE,HPHS,WAT,0.85,0,0,1.0,1.0,0.0,0.0,0,0.0,0.85,0,0.0,,,452.6,0.0,73.0,0.7,,,, +404.0,Tynagh Generator Unit,IE,COMC,GAS,0.50443962,4,4,0.030940594,0.025074257000000003,97995.99542,4176.769231,0,0.48019802,0.52,0,1.370290248,,,,,,,,,, +140.0,West Offaly,IE,STUR,BIO,0.38,4,4,0.005,0.005,6445.958846,668.9261263999998,0,0.978571429,0.38,0,1.105578947,,,,,,,,,, +445.0,Whitegate Unit 1,IE,COMC,GAS,0.52,4,4,0.046292135,0.060224719,103972.0394,4467.7565380000015,0,0.40449438200000004,0.48,0,0.390842917,,,,,,,,,, +3039.0,Windfarms,IE,WTON,WIN,1.0,0,0,1.0,1.0,0.0,0.0,0,0.0,1.0,0,0.0,,,,,,,,,, diff --git a/Database/PowerPlants/IE/clustered.csv b/Database/PowerPlants/IE/clustered.csv index 0482232b..38fecf8b 100644 --- a/Database/PowerPlants/IE/clustered.csv +++ b/Database/PowerPlants/IE/clustered.csv @@ -1,10 +1,10 @@ -,PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost_pu,NoLoadCost_pu,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,Nunits -IE_COMC_GAS,364.8309790259226,IE_COMC_GAS,IE,COMC,GAS,0.57,2,4,0.03,0.03,55,0.0,0,0.36,0.57,1.0,0.42,,,,,,,7.0 -IE_GTUR_GAS,62.16318621268099,IE_GTUR_GAS,IE,GTUR,GAS,0.425,0,0,0.166666666666667,0.166666666666667,0,0.0,0,0.2,0.425,0.166666666666667,0.564705882352941,,,,,,,11.0 -IE_STUR_GAS,112.67581630566443,IE_STUR_GAS,IE,STUR,GAS,0.38,0,0,0.02,0.02,0,0.0,0,0.4,0.38,0.0,0.0,,,,,,,5.0 -IE_STUR_HRD,427.5,IE_STUR_HRD,IE,STUR,HRD,0.46,8,8,0.0177777777777778,0.0177777777777778,65,0.0,0,0.3,0.46,2.0,0.81,,,,,,,2.0 -IE_STUR_OIL,270.3333333333333,IE_STUR_OIL,IE,STUR,OIL,0.33,4,4,0.02,0.02,65,0.0,0,0.4,0.33,0.0,0.799636363636364,,,,,,,3.0 -IE_STUR_PEA,114.53333333333335,IE_STUR_PEA,IE,STUR,PEA,0.3,4,4,0.02,0.02,65,0.0,0,0.5,0.3,0.0,0.0,,,,,,,3.0 -IE_HPHS_WAT,292.0,IE_HPHS_WAT,IE,HPHS,WAT,0.8,0,0,0.0666666666666667,0.0666666666666667,0,0.0,0,0.0,1.0,0.0,0.0,,,1460.0,0.0,292.0,0.8,1 -IE_WTON_WIN,2740.0,IE_WTON_WIN,IE,WTON,WIN,1.0,0,0,0.02,0.02,0,0.0,0,0.0,1.0,0.0,0.0,,,,,,,1 -IE_STUR_OTH,121.78823529411768,IE_STUR_OTH,IE,STUR,OTH,0.3,4,4,0.02,0.02,65,0.0,0,0.5,0.3,0.0,0.0,,,,,,,5.0 +,PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost_pu,NoLoadCost_pu,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,Nunits,Extendable,Investment,FixedCost,EconomicLifetime +IE_COMC_GAS,364.8309790259226,IE_COMC_GAS,IE,COMC,GAS,0.57,2,4,0.03,0.03,55,0.0,0,0.36,0.57,1.0,0.42,,,,,,,7.0,,,, +IE_GTUR_GAS,62.16318621268099,IE_GTUR_GAS,IE,GTUR,GAS,0.425,0,0,0.166666666666667,0.166666666666667,0,0.0,0,0.2,0.425,0.166666666666667,0.5647058823529411,,,,,,,11.0,,,, +IE_STUR_GAS,112.67581630566444,IE_STUR_GAS,IE,STUR,GAS,0.38,0,0,0.02,0.02,0,0.0,0,0.4,0.38,0.0,0.0,,,,,,,5.0,,,, +IE_STUR_HRD,427.5,IE_STUR_HRD,IE,STUR,HRD,0.46,8,8,0.0177777777777778,0.0177777777777778,65,0.0,0,0.3,0.46,2.0,0.81,,,,,,,2.0,,,, +IE_STUR_OIL,270.3333333333333,IE_STUR_OIL,IE,STUR,OIL,0.33,4,4,0.02,0.02,65,0.0,0,0.4,0.33,0.0,0.799636363636364,,,,,,,3.0,,,, +IE_STUR_PEA,114.53333333333336,IE_STUR_PEA,IE,STUR,PEA,0.3,4,4,0.02,0.02,65,0.0,0,0.5,0.3,0.0,0.0,,,,,,,3.0,,,, +IE_HPHS_WAT,292.0,IE_HPHS_WAT,IE,HPHS,WAT,0.8,0,0,0.0666666666666667,0.0666666666666667,0,0.0,0,0.0,1.0,0.0,0.0,,,1460.0,0.0,292.0,0.8,1.0,,,, +IE_WTON_WIN,2740.0,IE_WTON_WIN,IE,WTON,WIN,1.0,0,0,0.02,0.02,0,0.0,0,0.0,1.0,0.0,0.0,,,,,,,1.0,,,, +IE_STUR_OTH,121.78823529411768,IE_STUR_OTH,IE,STUR,OTH,0.3,4,4,0.02,0.02,65,0.0,0,0.5,0.3,0.0,0.0,,,,,,,5.0,,,, diff --git a/Database/PowerPlants/IT/clustered.csv b/Database/PowerPlants/IT/clustered.csv index a97e47cc..e99f0dcb 100644 --- a/Database/PowerPlants/IT/clustered.csv +++ b/Database/PowerPlants/IT/clustered.csv @@ -1,13 +1,13 @@ -,PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost_pu,NoLoadCost_pu,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,CHPPowerLossFactor,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,CHPMaxHeat,Nunits -IT_STUR_BIO,167.1359652,IT_STUR_BIO,IT,STUR,BIO,0.46,4,6,0.02,0.02,120,12.5,1.3,0.35,0.35,1,0,back-pressure,1,0,,,,,167.1359652,4 -IT_COMC_GAS,417.8142394,IT_COMC_GAS,IT,COMC,GAS,0.57,2,4,0.03,0.03,55,0,0,0.36,0.57,1,0.42,,,,,,,,,66 -IT_GTUR_GAS,61.93996401,IT_GTUR_GAS,IT,GTUR,GAS,0.425,0,0,0.166666667,0.166666667,0,0,0,0.2,0.425,0.166666667,0.564705882,,,,,,,,,15 -IT_ICEN_GAS,9.892696143,IT_ICEN_GAS,IT,ICEN,GAS,0.49,0,0,1,1,0,0,0,0.3,0.49,0,0.489795918,,,,,,,,,30 -IT_STUR_HRD,687.592691,IT_STUR_HRD,IT,STUR,HRD,0.46,8,8,0.017777778,0.017777778,65,0,0,0.3,0.46,2,0.81,,,,,,,,,9 -IT_STUR_OIL,382.6956522,IT_STUR_OIL,IT,STUR,OIL,0.33,4,4,0.02,0.02,65,0,0,0.4,0.33,0,0.799636364,,,,,,,,,23 -IT_PHOT_SUN,19288,IT_PHOT_SUN,IT,PHOT,SUN,1,0,0,0.02,0.02,0,0,0,0,1,0,0,,,,,,,,,1 -IT_HROR_WAT,10482,IT_HROR_WAT,IT,HROR,WAT,1,0,0,0.02,0.02,0,0,0,0,1,0,0,,,,,,,,,1 -IT_HPHS_WAT,11290,IT_HPHS_WAT,IT,HPHS,WAT,0.8,0,0,0.066666667,0.066666667,0,0,0,0,1,0,0,,,,4485036,0,7064,0.8,,1 -IT_WTON_WIN,9416,IT_WTON_WIN,IT,WTON,WIN,1,0,0,0.02,0.02,0,0,0,0,1,0,0,,,,,,,,,1 -IT_STUR_OTH,148.7807487,IT_STUR_OTH,IT,STUR,OTH,0.3,4,4,0.02,0.02,65,0,0,0.5,0.3,0,0,,,,,,,,,88 -IT_STUR_GEO,120,IT_STUR_GEO,IT,STUR,GEO,0.1,0,0,0.02,0.02,0,0,0,0,0.1,0,0,,,,,,,,,8 +,PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost_pu,NoLoadCost_pu,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,CHPPowerLossFactor,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,CHPMaxHeat,Nunits,Extendable,Investment,FixedCost,EconomicLifetime +IT_STUR_BIO,167.1359652,IT_STUR_BIO,IT,STUR,BIO,0.46,4,6,0.02,0.02,120,12.5,1.3,0.35,0.35,1.0,0.0,back-pressure,1.0,0.0,,,,,167.1359652,4,,,, +IT_COMC_GAS,417.81423939999996,IT_COMC_GAS,IT,COMC,GAS,0.57,2,4,0.03,0.03,55,0.0,0.0,0.36,0.57,1.0,0.42,,,,,,,,,66,,,, +IT_GTUR_GAS,61.93996401,IT_GTUR_GAS,IT,GTUR,GAS,0.425,0,0,0.166666667,0.166666667,0,0.0,0.0,0.2,0.425,0.166666667,0.564705882,,,,,,,,,15,,,, +IT_ICEN_GAS,9.892696143,IT_ICEN_GAS,IT,ICEN,GAS,0.49,0,0,1.0,1.0,0,0.0,0.0,0.3,0.49,0.0,0.489795918,,,,,,,,,30,,,, +IT_STUR_HRD,687.5926910000003,IT_STUR_HRD,IT,STUR,HRD,0.46,8,8,0.017777778,0.017777778,65,0.0,0.0,0.3,0.46,2.0,0.81,,,,,,,,,9,,,, +IT_STUR_OIL,382.6956522,IT_STUR_OIL,IT,STUR,OIL,0.33,4,4,0.02,0.02,65,0.0,0.0,0.4,0.33,0.0,0.799636364,,,,,,,,,23,,,, +IT_PHOT_SUN,19288.0,IT_PHOT_SUN,IT,PHOT,SUN,1.0,0,0,0.02,0.02,0,0.0,0.0,0.0,1.0,0.0,0.0,,,,,,,,,1,,,, +IT_HROR_WAT,10482.0,IT_HROR_WAT,IT,HROR,WAT,1.0,0,0,0.02,0.02,0,0.0,0.0,0.0,1.0,0.0,0.0,,,,,,,,,1,,,, +IT_HPHS_WAT,11290.0,IT_HPHS_WAT,IT,HPHS,WAT,0.8,0,0,0.066666667,0.066666667,0,0.0,0.0,0.0,1.0,0.0,0.0,,,,4485036.0,0.0,7064.0,0.8,,1,,,, +IT_WTON_WIN,9416.0,IT_WTON_WIN,IT,WTON,WIN,1.0,0,0,0.02,0.02,0,0.0,0.0,0.0,1.0,0.0,0.0,,,,,,,,,1,,,, +IT_STUR_OTH,148.7807487,IT_STUR_OTH,IT,STUR,OTH,0.3,4,4,0.02,0.02,65,0.0,0.0,0.5,0.3,0.0,0.0,,,,,,,,,88,,,, +IT_STUR_GEO,120.0,IT_STUR_GEO,IT,STUR,GEO,0.1,0,0,0.02,0.02,0,0.0,0.0,0.0,0.1,0.0,0.0,,,,,,,,,8,,,, diff --git a/Database/PowerPlants/LT/clustered.csv b/Database/PowerPlants/LT/clustered.csv index c06f257b..e90637dc 100644 --- a/Database/PowerPlants/LT/clustered.csv +++ b/Database/PowerPlants/LT/clustered.csv @@ -1,9 +1,9 @@ -,PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost_pu,NoLoadCost_pu,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,Nunits -LT_STUR_BIO,65,LT_STUR_BIO,LT,STUR,BIO,0.46,4,6,0.02,0.02,120,12.5,1.3,0.35,0.35,1,0,,,,,,,1 -LT_COMC_GAS,225.7432639,LT_COMC_GAS,LT,COMC,GAS,0.57,2,4,0.03,0.03,55,0,0,0.36,0.57,1,0.42,,,,,,,2 -LT_STUR_GAS,113.5753797,LT_STUR_GAS,LT,STUR,GAS,0.38,0,0,0.02,0.02,0,0,0,0.4,0.38,0,0,,,,,,,11 -LT_STUR_OIL,160,LT_STUR_OIL,LT,STUR,OIL,0.33,4,4,0.02,0.02,65,0,0,0.4,0.33,0,0.799636364,,,,,,,1 -LT_PHOT_SUN,80,LT_PHOT_SUN,LT,PHOT,SUN,1,0,0,0.02,0.02,0,0,0,0,1,0,0,,,,,,,1 -LT_HROR_WAT,128,LT_HROR_WAT,LT,HROR,WAT,1,0,0,0.02,0.02,0,0,0,0,1,0,0,,,,,,,1 -LT_HPHS_WAT,900,LT_HPHS_WAT,LT,HPHS,WAT,0.8,0,0,0.066666667,0.066666667,0,0,0,0,1,0,0,,,12096.7,0,900,0.8,1 -LT_WTON_WIN,509,LT_WTON_WIN,LT,WTON,WIN,1,0,0,0.02,0.02,0,0,0,0,1,0,0,,,,,,,1 +,PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost_pu,NoLoadCost_pu,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,Nunits,Extendable,Investment,FixedCost,EconomicLifetime +LT_STUR_BIO,65.0,LT_STUR_BIO,LT,STUR,BIO,0.46,4,6,0.02,0.02,120,12.5,1.3,0.35,0.35,1,0.0,,,,,,,1,,,, +LT_COMC_GAS,225.7432639,LT_COMC_GAS,LT,COMC,GAS,0.57,2,4,0.03,0.03,55,0.0,0.0,0.36,0.57,1,0.42,,,,,,,2,,,, +LT_STUR_GAS,113.5753797,LT_STUR_GAS,LT,STUR,GAS,0.38,0,0,0.02,0.02,0,0.0,0.0,0.4,0.38,0,0.0,,,,,,,11,,,, +LT_STUR_OIL,160.0,LT_STUR_OIL,LT,STUR,OIL,0.33,4,4,0.02,0.02,65,0.0,0.0,0.4,0.33,0,0.799636364,,,,,,,1,,,, +LT_PHOT_SUN,80.0,LT_PHOT_SUN,LT,PHOT,SUN,1.0,0,0,0.02,0.02,0,0.0,0.0,0.0,1.0,0,0.0,,,,,,,1,,,, +LT_HROR_WAT,128.0,LT_HROR_WAT,LT,HROR,WAT,1.0,0,0,0.02,0.02,0,0.0,0.0,0.0,1.0,0,0.0,,,,,,,1,,,, +LT_HPHS_WAT,900.0,LT_HPHS_WAT,LT,HPHS,WAT,0.8,0,0,0.066666667,0.066666667,0,0.0,0.0,0.0,1.0,0,0.0,,,12096.7,0.0,900.0,0.8,1,,,, +LT_WTON_WIN,509.0,LT_WTON_WIN,LT,WTON,WIN,1.0,0,0,0.02,0.02,0,0.0,0.0,0.0,1.0,0,0.0,,,,,,,1,,,, diff --git a/Database/PowerPlants/LU/clustered.csv b/Database/PowerPlants/LU/clustered.csv index fa756cc7..68255bba 100644 --- a/Database/PowerPlants/LU/clustered.csv +++ b/Database/PowerPlants/LU/clustered.csv @@ -1,6 +1,6 @@ -,PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost_pu,NoLoadCost_pu,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,Nunits -LU_GTUR_GAS,34.533508541392905,LU_GTUR_GAS,LU,GTUR,GAS,0.425,0,0,0.166666666666667,0.166666666666667,0,0.0,0,0.2,0.425,0.166666666666667,0.564705882352941,,,,,,,2.0 -LU_HDAM_WAT,11.0,LU_HDAM_WAT,LU,HDAM,WAT,0.8,0,0,0.0666666666666667,0.0666666666666667,0,0.0,0,0.0,1.0,0.0,0.0,,,55.0,0.0,0.0,0.8,1 -LU_HROR_WAT,25.0,LU_HROR_WAT,LU,HROR,WAT,1.0,0,0,0.02,0.02,0,0.0,0,0.0,1.0,0.0,0.0,,,,,,,1 -LU_WTON_WIN,124.0,LU_WTON_WIN,LU,WTON,WIN,1.0,0,0,0.02,0.02,0,0.0,0,0.0,1.0,0.0,0.0,,,,,,,1 -LU_STUR_WST,21.0,LU_STUR_WST,LU,STUR,WST,0.2,0,0,0.02,0.02,0,0.0,0,0.0,0.2,0.0,0.0,,,,,,,1.0 +,PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost_pu,NoLoadCost_pu,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,Nunits,Extendable,Investment,FixedCost,EconomicLifetime +LU_GTUR_GAS,34.533508541392905,LU_GTUR_GAS,LU,GTUR,GAS,0.425,0,0,0.166666666666667,0.166666666666667,0,0.0,0,0.2,0.425,0.166666666666667,0.5647058823529411,,,,,,,2.0,,,, +LU_HDAM_WAT,11.0,LU_HDAM_WAT,LU,HDAM,WAT,0.8,0,0,0.0666666666666667,0.0666666666666667,0,0.0,0,0.0,1.0,0.0,0.0,,,55.0,0.0,0.0,0.8,1.0,,,, +LU_HROR_WAT,25.0,LU_HROR_WAT,LU,HROR,WAT,1.0,0,0,0.02,0.02,0,0.0,0,0.0,1.0,0.0,0.0,,,,,,,1.0,,,, +LU_WTON_WIN,124.0,LU_WTON_WIN,LU,WTON,WIN,1.0,0,0,0.02,0.02,0,0.0,0,0.0,1.0,0.0,0.0,,,,,,,1.0,,,, +LU_STUR_WST,21.0,LU_STUR_WST,LU,STUR,WST,0.2,0,0,0.02,0.02,0,0.0,0,0.0,0.2,0.0,0.0,,,,,,,1.0,,,, diff --git a/Database/PowerPlants/LV/clustered.csv b/Database/PowerPlants/LV/clustered.csv index d5714600..d13dd840 100644 --- a/Database/PowerPlants/LV/clustered.csv +++ b/Database/PowerPlants/LV/clustered.csv @@ -1,6 +1,6 @@ -,PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost_pu,NoLoadCost_pu,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,CHPPowerLossFactor,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,CHPMaxHeat,Nunits -LV_STUR_BIO,101.67,LV_STUR_BIO,LV,STUR,BIO,0.46,4,6,0.02,0.02,120,12.5,1.3,0.35,0.35,1,0,back-pressure,1,0,,,,,101.67,1 -LV_COMC_GAS,353.0543585,LV_COMC_GAS,LV,COMC,GAS,0.57,2,4,0.03,0.03,55,0,0,0.36,0.57,1,0.42,,,,,,,,,3 -LV_STUR_GAS,31.40541677,LV_STUR_GAS,LV,STUR,GAS,0.38,0,0,0.02,0.02,0,0,0,0.4,0.38,0,0,,,,,,,,,1 -LV_HROR_WAT,1537.2,LV_HROR_WAT,LV,HROR,WAT,1,0,0,0.02,0.02,0,0,0,0,1,0,0,,,,,,,,,1 -LV_WTON_WIN,54.75,LV_WTON_WIN,LV,WTON,WIN,1,0,0,0.02,0.02,0,0,0,0,1,0,0,,,,,,,,,1 +,PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost_pu,NoLoadCost_pu,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,CHPPowerLossFactor,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,CHPMaxHeat,Nunits,Extendable,Investment,FixedCost,EconomicLifetime +LV_STUR_BIO,101.67,LV_STUR_BIO,LV,STUR,BIO,0.46,4,6,0.02,0.02,120,12.5,1.3,0.35,0.35,1,0.0,back-pressure,1.0,0.0,,,,,101.67,1,,,, +LV_COMC_GAS,353.0543585,LV_COMC_GAS,LV,COMC,GAS,0.57,2,4,0.03,0.03,55,0.0,0.0,0.36,0.57,1,0.42,,,,,,,,,3,,,, +LV_STUR_GAS,31.40541677,LV_STUR_GAS,LV,STUR,GAS,0.38,0,0,0.02,0.02,0,0.0,0.0,0.4,0.38,0,0.0,,,,,,,,,1,,,, +LV_HROR_WAT,1537.2,LV_HROR_WAT,LV,HROR,WAT,1.0,0,0,0.02,0.02,0,0.0,0.0,0.0,1.0,0,0.0,,,,,,,,,1,,,, +LV_WTON_WIN,54.75,LV_WTON_WIN,LV,WTON,WIN,1.0,0,0,0.02,0.02,0,0.0,0.0,0.0,1.0,0,0.0,,,,,,,,,1,,,, diff --git a/Database/PowerPlants/NL/2015.csv b/Database/PowerPlants/NL/2015.csv index 1731eafc..0399808c 100644 --- a/Database/PowerPlants/NL/2015.csv +++ b/Database/PowerPlants/NL/2015.csv @@ -1,47 +1,47 @@ -PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost,NoLoadCost,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency -1914,Claus,NL,COMC,GAS,0.525,5,1,0.0058359457,0.0058359457,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -1554,Eemshaven 1,NL,STUR,HRD,0.395,8,6,0.0032175032,0.0032175032,117242.17,0,0,0.3,0.395,7,0.95,,,,,, -1326,Eemshaven 2,NL,COMC,GAS,0.525,5,1,0.0084238311,0.0084238311,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -1090,Hemweg,NL,STUR,HRD,0.395,8,6,0.004587156,0.004587156,117242.17,0,0,0.3,0.395,7,0.95,,,,,, -1070,Maasvlakte,NL,STUR,HRD,0.395,8,6,0.0046728972,0.0046728972,117242.17,0,0,0.3,0.395,7,0.95,,,,,, -869,Velsen,NL,COMC,GAS,0.525,5,1,0.012853855,0.012853855,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -864,Sloecentrale,NL,COMC,GAS,0.525,5,1,0.0129282407,0.0129282407,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -860,Enecogen,NL,COMC,GAS,0.525,5,1,0.0129883721,0.0129883721,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -840,Rijnmond,NL,COMC,GAS,0.525,5,1,0.013297619,0.013297619,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -774,Moerdijk,NL,COMC,GAS,0.525,5,1,0.0144315245,0.0144315245,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -731,MVL380 CR10,NL,STUR,HRD,0.395,8,6,0.0068399453,0.0068399453,117242.17,0,0,0.3,0.395,7,0.95,,,,,, -684,Diemen,NL,COMC,GAS,0.525,5,1,0.0163304094,0.0163304094,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -643,Amer,NL,STUR,HRD,0.395,8,6,0.0077760498,0.0077760498,117242.17,0,0,0.3,0.395,7,0.95,,,,,, -66,Maasvlakte 1,NL,STUR,HRD,0.395,8,6,0.0757575758,0.0757575758,117242.17,0,0,0.3,0.395,7,0.95,,,,,, -66,Maasvlakte 2,NL,STUR,HRD,0.395,8,6,0.0757575758,0.0757575758,117242.17,0,0,0.3,0.395,7,0.95,,,,,, -492,Borssele 30,NL,STUR,NUC,0.405,24,24,0.0069715447,0.0069715447,200000,0,0,0.9,0.405,72,0,,,,,, -456,TNZ150 ELSTA,NL,COMC,GAS,0.525,5,1,0.024495614,0.024495614,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -437,LLS150FL-5,NL,COMC,GAS,0.525,5,1,0.0255606407,0.0255606407,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -435,LLS380 FL-4,NL,COMC,GAS,0.525,5,1,0.0256781609,0.0256781609,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -427,Rijnmond II,NL,COMC,GAS,0.525,5,1,0.0261592506,0.0261592506,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -408,Borssele 12,NL,STUR,HRD,0.395,8,6,0.012254902,0.012254902,117242.17,0,0,0.3,0.395,7,0.95,,,,,, -361,eem220-ec-5,NL,COMC,GAS,0.525,5,1,0.0309418283,0.0309418283,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -360,eem380-ec-7,NL,COMC,GAS,0.525,5,1,0.0310277778,0.0310277778,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -359,eem220-ec-4,NL,COMC,GAS,0.525,5,1,0.0311142061,0.0311142061,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -359,eem220-ec-3,NL,COMC,GAS,0.525,5,1,0.0311142061,0.0311142061,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -359,eem380-ec-6,NL,COMC,GAS,0.525,5,1,0.0311142061,0.0311142061,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -247,Centrale Lage Weide,NL,COMC,GAS,0.525,5,1,0.0452226721,0.0452226721,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -224,ASP003,NL,COMC,GAS,0.525,5,1,0.0498660714,0.0498660714,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -220,RoCa,NL,COMC,GAS,0.525,5,1,0.0507727273,0.0507727273,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -209,Swentibold,NL,COMC,GAS,0.525,5,1,0.0534449761,0.0534449761,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -131,GDFSUEZ_NL_EC-22,NL,COMC,GAS,0.525,5,1,0.0852671756,0.0852671756,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -130,Pergen 2,NL,COMC,GAS,0.525,5,1,0.0859230769,0.0859230769,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -130,Pergen 1,NL,COMC,GAS,0.525,5,1,0.0859230769,0.0859230769,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -122,Prinses Alexia Windpark,NL,WTON,WIN,1,0,0,1.1065573771,1.1065573771,0,0,0,0,1,0,0,,,,,, -120,Westereems,NL,WTON,WIN,1,0,0,1.125,1.125,0,0,0,0,1,0,0,,,,,, -112,Den Haag,NL,COMC,GAS,0.525,5,1,0.0997321429,0.0997321429,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -108,Windpark Egmond aan Zee,NL,WTOF,WIN,1,0,0,1.2962962963,1.2962962963,0,0,0,0,1,0,0,,,,,, -103,Merwedekanaal 11,NL,COMC,GAS,0.525,5,1,0.1084466019,0.1084466019,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -1429,DispaSET PHOT_NL,NL,PHOT,SUN,1,0,0,0.6298110567,0.6298110567,0,0,0,0,1,0,0,,,,,, -249,DispaSET WindOff_NL,NL,WTOF,WIN,1,0,0,0.562248996,0.562248996,0,0,0,0,1,0,0,,,,,, -3042,DispaSET WindOn_NL,NL,WTON,WIN,1,0,0,0.0443786982,0.0443786982,0,0,0,0,1,0,0,,,,,, -398,DispaSET Biomass_NL,NL,STUR,BIO,0.45,8,6,0.0125628141,0.0125628141,2000,0,0,0.2,0.45,7,0,,,,,, -8500,DispaSET FossilGas_NL 1,NL,COMC,GAS,0.525,5,1,0.0013141176,0.0013141176,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -2000,DispaSET FossilGas_NL 2,NL,COMC,GAS,0.525,5,1,0.005585,0.005585,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -2000,DispaSET FossilGas_NL 3,NL,COMC,GAS,0.525,5,1,0.005585,0.005585,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -2000,DispaSET FossilGas_NL 4,NL,COMC,GAS,0.525,5,1,0.005585,0.005585,112542.12,0,0,0.4,0.525,1,0.45,,,,,, +PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost,NoLoadCost,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,Extendable,Investment,FixedCost,EconomicLifetime +1914,Claus,NL,COMC,GAS,0.525,5,1,0.005835945699999999,0.005835945699999999,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +1554,Eemshaven 1,NL,STUR,HRD,0.395,8,6,0.0032175032,0.0032175032,117242.17,0,0,0.3,0.395,7,0.95,,,,,,,,,, +1326,Eemshaven 2,NL,COMC,GAS,0.525,5,1,0.0084238311,0.0084238311,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +1090,Hemweg,NL,STUR,HRD,0.395,8,6,0.004587155999999999,0.004587155999999999,117242.17,0,0,0.3,0.395,7,0.95,,,,,,,,,, +1070,Maasvlakte,NL,STUR,HRD,0.395,8,6,0.0046728972,0.0046728972,117242.17,0,0,0.3,0.395,7,0.95,,,,,,,,,, +869,Velsen,NL,COMC,GAS,0.525,5,1,0.012853855,0.012853855,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +864,Sloecentrale,NL,COMC,GAS,0.525,5,1,0.012928240700000001,0.012928240700000001,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +860,Enecogen,NL,COMC,GAS,0.525,5,1,0.0129883721,0.0129883721,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +840,Rijnmond,NL,COMC,GAS,0.525,5,1,0.013297618999999998,0.013297618999999998,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +774,Moerdijk,NL,COMC,GAS,0.525,5,1,0.014431524499999999,0.014431524499999999,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +731,MVL380 CR10,NL,STUR,HRD,0.395,8,6,0.006839945300000001,0.006839945300000001,117242.17,0,0,0.3,0.395,7,0.95,,,,,,,,,, +684,Diemen,NL,COMC,GAS,0.525,5,1,0.0163304094,0.0163304094,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +643,Amer,NL,STUR,HRD,0.395,8,6,0.007776049799999999,0.007776049799999999,117242.17,0,0,0.3,0.395,7,0.95,,,,,,,,,, +66,Maasvlakte 1,NL,STUR,HRD,0.395,8,6,0.0757575758,0.0757575758,117242.17,0,0,0.3,0.395,7,0.95,,,,,,,,,, +66,Maasvlakte 2,NL,STUR,HRD,0.395,8,6,0.0757575758,0.0757575758,117242.17,0,0,0.3,0.395,7,0.95,,,,,,,,,, +492,Borssele 30,NL,STUR,NUC,0.405,24,24,0.0069715446999999995,0.0069715446999999995,200000.0,0,0,0.9,0.405,72,0.0,,,,,,,,,, +456,TNZ150 ELSTA,NL,COMC,GAS,0.525,5,1,0.024495614,0.024495614,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +437,LLS150FL-5,NL,COMC,GAS,0.525,5,1,0.025560640699999998,0.025560640699999998,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +435,LLS380 FL-4,NL,COMC,GAS,0.525,5,1,0.0256781609,0.0256781609,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +427,Rijnmond II,NL,COMC,GAS,0.525,5,1,0.0261592506,0.0261592506,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +408,Borssele 12,NL,STUR,HRD,0.395,8,6,0.012254902,0.012254902,117242.17,0,0,0.3,0.395,7,0.95,,,,,,,,,, +361,eem220-ec-5,NL,COMC,GAS,0.525,5,1,0.0309418283,0.0309418283,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +360,eem380-ec-7,NL,COMC,GAS,0.525,5,1,0.031027777799999996,0.031027777799999996,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +359,eem220-ec-4,NL,COMC,GAS,0.525,5,1,0.0311142061,0.0311142061,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +359,eem220-ec-3,NL,COMC,GAS,0.525,5,1,0.0311142061,0.0311142061,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +359,eem380-ec-6,NL,COMC,GAS,0.525,5,1,0.0311142061,0.0311142061,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +247,Centrale Lage Weide,NL,COMC,GAS,0.525,5,1,0.0452226721,0.0452226721,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +224,ASP003,NL,COMC,GAS,0.525,5,1,0.049866071399999996,0.049866071399999996,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +220,RoCa,NL,COMC,GAS,0.525,5,1,0.05077272730000002,0.05077272730000002,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +209,Swentibold,NL,COMC,GAS,0.525,5,1,0.053444976100000006,0.053444976100000006,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +131,GDFSUEZ_NL_EC-22,NL,COMC,GAS,0.525,5,1,0.08526717560000001,0.08526717560000001,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +130,Pergen 2,NL,COMC,GAS,0.525,5,1,0.08592307689999999,0.08592307689999999,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +130,Pergen 1,NL,COMC,GAS,0.525,5,1,0.08592307689999999,0.08592307689999999,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +122,Prinses Alexia Windpark,NL,WTON,WIN,1.0,0,0,1.1065573771,1.1065573771,0.0,0,0,0.0,1.0,0,0.0,,,,,,,,,, +120,Westereems,NL,WTON,WIN,1.0,0,0,1.125,1.125,0.0,0,0,0.0,1.0,0,0.0,,,,,,,,,, +112,Den Haag,NL,COMC,GAS,0.525,5,1,0.09973214289999999,0.09973214289999999,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +108,Windpark Egmond aan Zee,NL,WTOF,WIN,1.0,0,0,1.2962962963,1.2962962963,0.0,0,0,0.0,1.0,0,0.0,,,,,,,,,, +103,Merwedekanaal 11,NL,COMC,GAS,0.525,5,1,0.1084466019,0.1084466019,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +1429,DispaSET PHOT_NL,NL,PHOT,SUN,1.0,0,0,0.6298110567,0.6298110567,0.0,0,0,0.0,1.0,0,0.0,,,,,,,,,, +249,DispaSET WindOff_NL,NL,WTOF,WIN,1.0,0,0,0.562248996,0.562248996,0.0,0,0,0.0,1.0,0,0.0,,,,,,,,,, +3042,DispaSET WindOn_NL,NL,WTON,WIN,1.0,0,0,0.044378698200000004,0.044378698200000004,0.0,0,0,0.0,1.0,0,0.0,,,,,,,,,, +398,DispaSET Biomass_NL,NL,STUR,BIO,0.45,8,6,0.0125628141,0.0125628141,2000.0,0,0,0.2,0.45,7,0.0,,,,,,,,,, +8500,DispaSET FossilGas_NL 1,NL,COMC,GAS,0.525,5,1,0.0013141176,0.0013141176,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +2000,DispaSET FossilGas_NL 2,NL,COMC,GAS,0.525,5,1,0.0055850000000000006,0.0055850000000000006,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +2000,DispaSET FossilGas_NL 3,NL,COMC,GAS,0.525,5,1,0.0055850000000000006,0.0055850000000000006,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +2000,DispaSET FossilGas_NL 4,NL,COMC,GAS,0.525,5,1,0.0055850000000000006,0.0055850000000000006,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, diff --git a/Database/PowerPlants/NL/2015_BEVS.csv b/Database/PowerPlants/NL/2015_BEVS.csv index 0f37129d..78e8bf1c 100644 --- a/Database/PowerPlants/NL/2015_BEVS.csv +++ b/Database/PowerPlants/NL/2015_BEVS.csv @@ -1,58 +1,58 @@ -PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost,NoLoadCost,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency -640,Claus A,NL,COMC,GAS,0.525,5,1,0.016330409,0.016330409,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -1280,Claus C,NL,COMC,GAS,0.585,5,1,0.008423831,0.008423831,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -777,Eemshaven 1,NL,STUR,HRD,0.46,8,6,0.006839945,0.006839945,117242.17,0,0,0.5,0.395,7,0.8,,,,,, -777,Eemshaven 2,NL,STUR,HRD,0.46,8,6,0.006839945,0.006839945,117242.17,0,0,0.5,0.395,7,0.8,,,,,, -430,Eemshaven 3,NL,COMC,GAS,0.58,5,1,0.025678161,0.025678161,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -430,Eemshaven 4,NL,COMC,GAS,0.58,5,1,0.025678161,0.025678161,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -430,Eemshaven 5,NL,COMC,GAS,0.58,5,1,0.025678161,0.025678161,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -800,Maasvlakte,NL,STUR,HRD,0.395,8,6,0.006839945,0.006839945,117242.17,0,0,0.5,0.395,7,0.95,,,,,, -459,Velsen 1,NL,COMC,GAS,0.525,5,1,0.024495614,0.024495614,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -361,Velsen 2,NL,COMC,GAS,0.525,5,1,0.030941828,0.030941828,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -435,Sloecentrale 1,NL,COMC,GAS,0.587,5,1,0.025678161,0.025678161,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -435,Sloecentrale 2,NL,COMC,GAS,0.587,5,1,0.025678161,0.025678161,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -435,Enecogen 1,NL,COMC,GAS,0.59,5,1,0.025678161,0.025678161,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -435,Enecogen 2,NL,COMC,GAS,0.59,5,1,0.025678161,0.025678161,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -820,Rijnmond,NL,COMC,GAS,0.5,5,1,0.013297619,0.013297619,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -358.2,Moerdijk I,NL,COMC,GAS,0.525,5,1,0.031114206,0.031114206,112542.12,0,0,0.4,0.525,1,0.45,Steam,2.8,,,, -430,Moerdijk II,NL,COMC,GAS,0.58,5,1,0.026159251,0.026159251,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -800,MVL380 CR10,NL,STUR,HRD,0.395,8,6,0.006839945,0.006839945,117242.17,0,0,0.5,0.395,7,0.95,,,,,, -249,Diemen,NL,COMC,GAS,0.525,5,1,0.016330409,0.016330409,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -435,Diemen 34,NL,COMC,GAS,0.59,5,1,0.025678161,0.025678161,112542.12,0,0,0.4,0.525,1,0.45,DHN,1.6730769231,,,, -640,Amer,NL,STUR,HRD,0.395,8,6,0.00777605,0.00777605,117242.17,0,0,0.5,0.395,7,0.95,,,,,, -520,Maasvlakte 1,NL,STUR,HRD,0.395,8,6,0.012254902,0.012254902,117242.17,0,0,0.5,0.395,7,0.95,,,,,, -520,Maasvlakte 2,NL,STUR,HRD,0.395,8,6,0.012254902,0.012254902,117242.17,0,0,0.5,0.395,7,0.95,,,,,, -480,Borssele 30,NL,STUR,NUC,0.405,24,24,0.006971545,0.006971545,200000,0,0,0.9,0.405,72,0,,,,,, -475,TNZ150 ELSTA,NL,COMC,GAS,0.55,5,1,0.024495614,0.024495614,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -435,LLS150FL-5,NL,COMC,GAS,0.55,5,1,0.025560641,0.025560641,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -435,LLS380 FL-4,NL,COMC,GAS,0.525,5,1,0.025678161,0.025678161,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -428,Rijnmond II,NL,COMC,GAS,0.525,5,1,0.026159251,0.026159251,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -403,Borssele 12,NL,STUR,HRD,0.395,8,6,0.012254902,0.012254902,117242.17,0,0,0.5,0.395,7,0.95,,,,,, -355,eem220-ec-5,NL,COMC,GAS,0.55,5,1,0.030941828,0.030941828,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -355,eem380-ec-7,NL,COMC,GAS,0.55,5,1,0.031027778,0.031027778,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -355,eem220-ec-4,NL,COMC,GAS,0.55,5,1,0.031114206,0.031114206,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -355,eem220-ec-3,NL,COMC,GAS,0.55,5,1,0.031114206,0.031114206,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -355,eem380-ec-6,NL,COMC,GAS,0.55,5,1,0.031114206,0.031114206,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -260,Centrale Lage Weide,NL,COMC,GAS,0.55,5,1,0.045222672,0.045222672,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -220,RoCa,NL,COMC,GAS,0.55,5,1,0.050772727,0.050772727,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -231,Swentibold,NL,COMC,GAS,0.55,5,1,0.053444976,0.053444976,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -430,GDFSUEZ_NL_EC-22 1,NL,COMC,GAS,0.55,5,1,0.025678161,0.025678161,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -430,GDFSUEZ_NL_EC-22 2,NL,COMC,GAS,0.55,5,1,0.025678161,0.025678161,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -430,GDFSUEZ_NL_EC-22 3,NL,COMC,GAS,0.55,5,1,0.025678161,0.025678161,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -64.3,Pergen 2,NL,COMC,GAS,0.525,5,1,0.108446602,0.108446602,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -64.3,Pergen 1,NL,COMC,GAS,0.525,5,1,0.108446602,0.108446602,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -122,Den Haag,NL,COMC,GAS,0.55,5,1,0.099732143,0.099732143,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -103,Merwedekanaal 11,NL,COMC,GAS,0.55,5,1,0.108446602,0.108446602,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -1355,ds_PHOT_NL,NL,PHOT,SUN,1,0,0,0.629811057,0.629811057,0,0,0,0,1,0,0,,,,,, -180,ds_WTOF_NL,NL,WTOF,WIN,1,0,0,0.562248996,0.562248996,0,0,0,0,1,0,0,,,,,, -3251,ds_WTON_NL,NL,WTON,WIN,1,0,0,0.044378698,0.044378698,0,0,0,0,1,0,0,,,,,, -400,ds_Biomass_NL,NL,STUR,BIO,0.45,8,6,0.012562814,0.012562814,2000,0,0,0.2,0.45,7,0,,,,,, -491,ds_Gas_NL,NL,COMC,GAS,0.525,5,1,0.001314118,0.001314118,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -602,Gelderland 13,NL,STUR,HRD,0.395,8,6,0.00777605,0.00777605,117242.17,0,0,0.5,0.395,7,0.95,,,,,, -145.2,Bergum 30,NL,COMC,GAS,0.525,5,1,0.085923077,0.085923077,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -630,Hemweg 8,NL,STUR,HRD,0.395,8,6,0.00777605,0.00777605,117242.17,0,0,0.5,0.395,7,0.95,,,,,, -435,Hemweg 9,NL,COMC,GAS,0.59,5,1,0.024495614,0.024495614,117242.17,0,0,0.4,0.395,1,0.45,,,,,, -144,Ijmuiden GT1,NL,GTUR,GAS,0.4,5,1,0.085923077,0.085923077,112542.12,0,0,0.2,0.525,1,0.65,,,,,, -645,Amer 81,NL,STUR,HRD,0.395,8,6,0.00777605,0.00777605,117242.17,0,0,0.5,0.395,7,0.95,,,,,, -350,Akzo Delesto CC-2,NL,COMC,GAS,0.525,5,1,0.031114206,0.031114206,112542.12,0,0,0.4,0.525,1,0.45,,,,,, -2776,EVs,NL,BEVS,OTH,0.95,0,0,1,1,0,0,0,0,0.95,0,0,,,5553,0,2276,0.95 +PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost,NoLoadCost,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,Extendable,Investment,FixedCost,EconomicLifetime +640.0,Claus A,NL,COMC,GAS,0.525,5,1,0.016330409,0.016330409,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +1280.0,Claus C,NL,COMC,GAS,0.585,5,1,0.008423831,0.008423831,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +777.0,Eemshaven 1,NL,STUR,HRD,0.46,8,6,0.006839945,0.006839945,117242.17,0,0,0.5,0.395,7,0.8,,,,,,,,,, +777.0,Eemshaven 2,NL,STUR,HRD,0.46,8,6,0.006839945,0.006839945,117242.17,0,0,0.5,0.395,7,0.8,,,,,,,,,, +430.0,Eemshaven 3,NL,COMC,GAS,0.58,5,1,0.025678161,0.025678161,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +430.0,Eemshaven 4,NL,COMC,GAS,0.58,5,1,0.025678161,0.025678161,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +430.0,Eemshaven 5,NL,COMC,GAS,0.58,5,1,0.025678161,0.025678161,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +800.0,Maasvlakte,NL,STUR,HRD,0.395,8,6,0.006839945,0.006839945,117242.17,0,0,0.5,0.395,7,0.95,,,,,,,,,, +459.0,Velsen 1,NL,COMC,GAS,0.525,5,1,0.024495614,0.024495614,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +361.0,Velsen 2,NL,COMC,GAS,0.525,5,1,0.030941827999999998,0.030941827999999998,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +435.0,Sloecentrale 1,NL,COMC,GAS,0.5870000000000001,5,1,0.025678161,0.025678161,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +435.0,Sloecentrale 2,NL,COMC,GAS,0.5870000000000001,5,1,0.025678161,0.025678161,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +435.0,Enecogen 1,NL,COMC,GAS,0.59,5,1,0.025678161,0.025678161,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +435.0,Enecogen 2,NL,COMC,GAS,0.59,5,1,0.025678161,0.025678161,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +820.0,Rijnmond,NL,COMC,GAS,0.5,5,1,0.013297618999999998,0.013297618999999998,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +358.2,Moerdijk I,NL,COMC,GAS,0.525,5,1,0.031114206000000002,0.031114206000000002,112542.12,0,0,0.4,0.525,1,0.45,Steam,2.8,,,,,,,, +430.0,Moerdijk II,NL,COMC,GAS,0.58,5,1,0.026159251,0.026159251,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +800.0,MVL380 CR10,NL,STUR,HRD,0.395,8,6,0.006839945,0.006839945,117242.17,0,0,0.5,0.395,7,0.95,,,,,,,,,, +249.0,Diemen,NL,COMC,GAS,0.525,5,1,0.016330409,0.016330409,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +435.0,Diemen 34,NL,COMC,GAS,0.59,5,1,0.025678161,0.025678161,112542.12,0,0,0.4,0.525,1,0.45,DHN,1.6730769231,,,,,,,, +640.0,Amer,NL,STUR,HRD,0.395,8,6,0.00777605,0.00777605,117242.17,0,0,0.5,0.395,7,0.95,,,,,,,,,, +520.0,Maasvlakte 1,NL,STUR,HRD,0.395,8,6,0.012254902,0.012254902,117242.17,0,0,0.5,0.395,7,0.95,,,,,,,,,, +520.0,Maasvlakte 2,NL,STUR,HRD,0.395,8,6,0.012254902,0.012254902,117242.17,0,0,0.5,0.395,7,0.95,,,,,,,,,, +480.0,Borssele 30,NL,STUR,NUC,0.405,24,24,0.006971545,0.006971545,200000.0,0,0,0.9,0.405,72,0.0,,,,,,,,,, +475.0,TNZ150 ELSTA,NL,COMC,GAS,0.55,5,1,0.024495614,0.024495614,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +435.0,LLS150FL-5,NL,COMC,GAS,0.55,5,1,0.025560641000000002,0.025560641000000002,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +435.0,LLS380 FL-4,NL,COMC,GAS,0.525,5,1,0.025678161,0.025678161,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +428.0,Rijnmond II,NL,COMC,GAS,0.525,5,1,0.026159251,0.026159251,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +403.0,Borssele 12,NL,STUR,HRD,0.395,8,6,0.012254902,0.012254902,117242.17,0,0,0.5,0.395,7,0.95,,,,,,,,,, +355.0,eem220-ec-5,NL,COMC,GAS,0.55,5,1,0.030941827999999998,0.030941827999999998,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +355.0,eem380-ec-7,NL,COMC,GAS,0.55,5,1,0.031027778,0.031027778,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +355.0,eem220-ec-4,NL,COMC,GAS,0.55,5,1,0.031114206000000002,0.031114206000000002,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +355.0,eem220-ec-3,NL,COMC,GAS,0.55,5,1,0.031114206000000002,0.031114206000000002,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +355.0,eem380-ec-6,NL,COMC,GAS,0.55,5,1,0.031114206000000002,0.031114206000000002,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +260.0,Centrale Lage Weide,NL,COMC,GAS,0.55,5,1,0.045222672,0.045222672,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +220.0,RoCa,NL,COMC,GAS,0.55,5,1,0.050772727000000004,0.050772727000000004,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +231.0,Swentibold,NL,COMC,GAS,0.55,5,1,0.053444976,0.053444976,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +430.0,GDFSUEZ_NL_EC-22 1,NL,COMC,GAS,0.55,5,1,0.025678161,0.025678161,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +430.0,GDFSUEZ_NL_EC-22 2,NL,COMC,GAS,0.55,5,1,0.025678161,0.025678161,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +430.0,GDFSUEZ_NL_EC-22 3,NL,COMC,GAS,0.55,5,1,0.025678161,0.025678161,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +64.3,Pergen 2,NL,COMC,GAS,0.525,5,1,0.10844660199999999,0.10844660199999999,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +64.3,Pergen 1,NL,COMC,GAS,0.525,5,1,0.10844660199999999,0.10844660199999999,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +122.0,Den Haag,NL,COMC,GAS,0.55,5,1,0.09973214300000001,0.09973214300000001,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +103.0,Merwedekanaal 11,NL,COMC,GAS,0.55,5,1,0.10844660199999999,0.10844660199999999,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +1355.0,ds_PHOT_NL,NL,PHOT,SUN,1.0,0,0,0.6298110570000001,0.6298110570000001,0.0,0,0,0.0,1.0,0,0.0,,,,,,,,,, +180.0,ds_WTOF_NL,NL,WTOF,WIN,1.0,0,0,0.562248996,0.562248996,0.0,0,0,0.0,1.0,0,0.0,,,,,,,,,, +3251.0,ds_WTON_NL,NL,WTON,WIN,1.0,0,0,0.044378698,0.044378698,0.0,0,0,0.0,1.0,0,0.0,,,,,,,,,, +400.0,ds_Biomass_NL,NL,STUR,BIO,0.45,8,6,0.012562813999999999,0.012562813999999999,2000.0,0,0,0.2,0.45,7,0.0,,,,,,,,,, +491.0,ds_Gas_NL,NL,COMC,GAS,0.525,5,1,0.001314118,0.001314118,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +602.0,Gelderland 13,NL,STUR,HRD,0.395,8,6,0.00777605,0.00777605,117242.17,0,0,0.5,0.395,7,0.95,,,,,,,,,, +145.2,Bergum 30,NL,COMC,GAS,0.525,5,1,0.08592307699999999,0.08592307699999999,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +630.0,Hemweg 8,NL,STUR,HRD,0.395,8,6,0.00777605,0.00777605,117242.17,0,0,0.5,0.395,7,0.95,,,,,,,,,, +435.0,Hemweg 9,NL,COMC,GAS,0.59,5,1,0.024495614,0.024495614,117242.17,0,0,0.4,0.395,1,0.45,,,,,,,,,, +144.0,Ijmuiden GT1,NL,GTUR,GAS,0.4,5,1,0.08592307699999999,0.08592307699999999,112542.12,0,0,0.2,0.525,1,0.65,,,,,,,,,, +645.0,Amer 81,NL,STUR,HRD,0.395,8,6,0.00777605,0.00777605,117242.17,0,0,0.5,0.395,7,0.95,,,,,,,,,, +350.0,Akzo Delesto CC-2,NL,COMC,GAS,0.525,5,1,0.031114206000000002,0.031114206000000002,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,,,, +2776.0,EVs,NL,BEVS,OTH,0.95,0,0,1.0,1.0,0.0,0,0,0.0,0.95,0,0.0,,,5553.0,0.0,2276.0,0.95,,,, diff --git a/Database/PowerPlants/NL/clustered.csv b/Database/PowerPlants/NL/clustered.csv index 69cd2e63..1c835db2 100644 --- a/Database/PowerPlants/NL/clustered.csv +++ b/Database/PowerPlants/NL/clustered.csv @@ -1,10 +1,10 @@ -,PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost_pu,NoLoadCost_pu,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,CHPPowerLossFactor,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,CHPMaxHeat,Nunits -NL_STUR_BIO,165.3777473,NL_STUR_BIO,NL,STUR,BIO,0.46,4,6,0.02,0.02,120,12.5,1.3,0.35,0.35,1,0,back-pressure,1,0,,,,,165.3777473,2 -NL_COMC_GAS,411.2053825,NL_COMC_GAS,NL,COMC,GAS,0.57,2,4,0.03,0.03,55,0,0,0.36,0.57,1,0.42,,,,,,,,,38 -NL_GTUR_GAS,63.45855152,NL_GTUR_GAS,NL,GTUR,GAS,0.425,0,0,0.166666667,0.166666667,0,0,0,0.2,0.425,0.166666667,0.564705882,,,,,,,,,51 -NL_STUR_GAS,110.1086316,NL_STUR_GAS,NL,STUR,GAS,0.38,0,0,0.02,0.02,0,0,0,0.4,0.38,0,0,,,,,,,,,8 -NL_STUR_HRD,707.25,NL_STUR_HRD,NL,STUR,HRD,0.46,8,8,0.017777778,0.017777778,65,0,0,0.3,0.46,2,0.81,,,,,,,,,8 -NL_PHOT_SUN,2039,NL_PHOT_SUN,NL,PHOT,SUN,1,0,0,0.02,0.02,0,0,0,0,1,0,0,,,,,,,,,1 -NL_WTOF_WIN,638,NL_WTOF_WIN,NL,WTOF,WIN,1,0,0,0.02,0.02,0,0,0,0,1,0,0,,,,,,,,,1 -NL_WTON_WIN,3479,NL_WTON_WIN,NL,WTON,WIN,1,0,0,0.02,0.02,0,0,0,0,1,0,0,,,,,,,,,1 -NL_STUR_WST,46.63118046,NL_STUR_WST,NL,STUR,WST,0.2,0,0,0.02,0.02,0,0,0,0,0.2,0,0,,,,,,,,,11 +,PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost_pu,NoLoadCost_pu,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,CHPPowerLossFactor,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,CHPMaxHeat,Nunits,Extendable,Investment,FixedCost,EconomicLifetime +NL_STUR_BIO,165.3777473,NL_STUR_BIO,NL,STUR,BIO,0.46,4,6,0.02,0.02,120,12.5,1.3,0.35,0.35,1.0,0.0,back-pressure,1.0,0.0,,,,,165.3777473,2,,,, +NL_COMC_GAS,411.20538250000004,NL_COMC_GAS,NL,COMC,GAS,0.57,2,4,0.03,0.03,55,0.0,0.0,0.36,0.57,1.0,0.42,,,,,,,,,38,,,, +NL_GTUR_GAS,63.45855152,NL_GTUR_GAS,NL,GTUR,GAS,0.425,0,0,0.166666667,0.166666667,0,0.0,0.0,0.2,0.425,0.166666667,0.564705882,,,,,,,,,51,,,, +NL_STUR_GAS,110.10863159999998,NL_STUR_GAS,NL,STUR,GAS,0.38,0,0,0.02,0.02,0,0.0,0.0,0.4,0.38,0.0,0.0,,,,,,,,,8,,,, +NL_STUR_HRD,707.25,NL_STUR_HRD,NL,STUR,HRD,0.46,8,8,0.017777778,0.017777778,65,0.0,0.0,0.3,0.46,2.0,0.81,,,,,,,,,8,,,, +NL_PHOT_SUN,2039.0,NL_PHOT_SUN,NL,PHOT,SUN,1.0,0,0,0.02,0.02,0,0.0,0.0,0.0,1.0,0.0,0.0,,,,,,,,,1,,,, +NL_WTOF_WIN,638.0,NL_WTOF_WIN,NL,WTOF,WIN,1.0,0,0,0.02,0.02,0,0.0,0.0,0.0,1.0,0.0,0.0,,,,,,,,,1,,,, +NL_WTON_WIN,3479.0,NL_WTON_WIN,NL,WTON,WIN,1.0,0,0,0.02,0.02,0,0.0,0.0,0.0,1.0,0.0,0.0,,,,,,,,,1,,,, +NL_STUR_WST,46.63118046,NL_STUR_WST,NL,STUR,WST,0.2,0,0,0.02,0.02,0,0.0,0.0,0.0,0.2,0.0,0.0,,,,,,,,,11,,,, diff --git a/Database/PowerPlants/NO/clustered.csv b/Database/PowerPlants/NO/clustered.csv index a86d76a8..ef8e10f0 100644 --- a/Database/PowerPlants/NO/clustered.csv +++ b/Database/PowerPlants/NO/clustered.csv @@ -1,6 +1,6 @@ -,PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost_pu,NoLoadCost_pu,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,Nunits -NO_COMC_GAS,414.5300175571919,NO_COMC_GAS,NO,COMC,GAS,0.57,2,4,0.03,0.03,55,0.0,0,0.36,0.57,1.0,0.42,,,,,,,1.0 -NO_GTUR_GAS,60.001105092334356,NO_GTUR_GAS,NO,GTUR,GAS,0.425,0,0,0.166666666666667,0.166666666666667,0,0.0,0,0.2,0.425,0.166666666666667,0.564705882352941,,,,,,,7.0 -NO_HDAM_WAT,26909.5,NO_HDAM_WAT,NO,HDAM,WAT,0.8,0,0,0.0666666666666667,0.0666666666666667,0,0.0,0,0.0,1.0,0.0,0.0,,,76191000.0,0.0,0.0,0.8,1 -NO_HROR_WAT,1351.8,NO_HROR_WAT,NO,HROR,WAT,1.0,0,0,0.02,0.02,0,0.0,0,0.0,1.0,0.0,0.0,,,,,,,1 -NO_WTON_WIN,868.0,NO_WTON_WIN,NO,WTON,WIN,1.0,0,0,0.02,0.02,0,0.0,0,0.0,1.0,0.0,0.0,,,,,,,1 +,PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost_pu,NoLoadCost_pu,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,Nunits,Extendable,Investment,FixedCost,EconomicLifetime +NO_COMC_GAS,414.53001755719185,NO_COMC_GAS,NO,COMC,GAS,0.57,2,4,0.03,0.03,55,0.0,0,0.36,0.57,1.0,0.42,,,,,,,1.0,,,, +NO_GTUR_GAS,60.001105092334356,NO_GTUR_GAS,NO,GTUR,GAS,0.425,0,0,0.166666666666667,0.166666666666667,0,0.0,0,0.2,0.425,0.166666666666667,0.5647058823529411,,,,,,,7.0,,,, +NO_HDAM_WAT,26909.5,NO_HDAM_WAT,NO,HDAM,WAT,0.8,0,0,0.0666666666666667,0.0666666666666667,0,0.0,0,0.0,1.0,0.0,0.0,,,76191000.0,0.0,0.0,0.8,1.0,,,, +NO_HROR_WAT,1351.8,NO_HROR_WAT,NO,HROR,WAT,1.0,0,0,0.02,0.02,0,0.0,0,0.0,1.0,0.0,0.0,,,,,,,1.0,,,, +NO_WTON_WIN,868.0,NO_WTON_WIN,NO,WTON,WIN,1.0,0,0,0.02,0.02,0,0.0,0,0.0,1.0,0.0,0.0,,,,,,,1.0,,,, diff --git a/Database/PowerPlants/PL/clustered.csv b/Database/PowerPlants/PL/clustered.csv index da578a4d..c55bb912 100644 --- a/Database/PowerPlants/PL/clustered.csv +++ b/Database/PowerPlants/PL/clustered.csv @@ -1,7 +1,7 @@ -,PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost_pu,NoLoadCost_pu,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,Nunits -PL_COMC_GAS,384.4183578477005,PL_COMC_GAS,PL,COMC,GAS,0.57,2,4,0.03,0.03,55,0.0,0,0.36,0.57,1.0,0.42,,,,,,,2.0 -PL_STUR_HRD,739.1452,PL_STUR_HRD,PL,STUR,HRD,0.46,8,8,0.0177777777777778,0.0177777777777778,65,0.0,0,0.3,0.46,2.0,0.81,,,,,,,25.0 -PL_STUR_LIG,706.9183333333335,PL_STUR_LIG,PL,STUR,LIG,0.393,8.0,8.0,0.015209790209790195,0.017482517482517494,65.0,12.56164383561645,0.0,0.389,0.4075,5.0,1.0499999999999998,,,,,,,12.0 -PL_PHOT_SUN,186.0,PL_PHOT_SUN,PL,PHOT,SUN,1.0,0,0,0.02,0.02,0,0.0,0,0.0,1.0,0.0,0.0,,,,,,,1 -PL_HPHS_WAT,1770.12,PL_HPHS_WAT,PL,HPHS,WAT,0.8,0,0,0.0666666666666667,0.0666666666666667,0,0.0,0,0.0,1.0,0.0,0.0,,,8850.599999999999,0.0,1770.12,0.8,1 -PL_WTON_WIN,5697.0,PL_WTON_WIN,PL,WTON,WIN,1.0,0,0,0.02,0.02,0,0.0,0,0.0,1.0,0.0,0.0,,,,,,,1 +,PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost_pu,NoLoadCost_pu,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,Nunits,Extendable,Investment,FixedCost,EconomicLifetime +PL_COMC_GAS,384.4183578477005,PL_COMC_GAS,PL,COMC,GAS,0.57,2.0,4.0,0.03,0.03,55.0,0.0,0.0,0.36,0.57,1.0,0.42,,,,,,,2.0,,,, +PL_STUR_HRD,739.1452,PL_STUR_HRD,PL,STUR,HRD,0.46,8.0,8.0,0.0177777777777778,0.0177777777777778,65.0,0.0,0.0,0.3,0.46,2.0,0.81,,,,,,,25.0,,,, +PL_STUR_LIG,706.9183333333334,PL_STUR_LIG,PL,STUR,LIG,0.39299999999999996,8.0,8.0,0.015209790209790196,0.017482517482517494,65.0,12.56164383561645,0.0,0.389,0.4075,5.0,1.0499999999999998,,,,,,,12.0,,,, +PL_PHOT_SUN,186.0,PL_PHOT_SUN,PL,PHOT,SUN,1.0,0.0,0.0,0.02,0.02,0.0,0.0,0.0,0.0,1.0,0.0,0.0,,,,,,,1.0,,,, +PL_HPHS_WAT,1770.12,PL_HPHS_WAT,PL,HPHS,WAT,0.8,0.0,0.0,0.0666666666666667,0.0666666666666667,0.0,0.0,0.0,0.0,1.0,0.0,0.0,,,8850.599999999999,0.0,1770.12,0.8,1.0,,,, +PL_WTON_WIN,5697.0,PL_WTON_WIN,PL,WTON,WIN,1.0,0.0,0.0,0.02,0.02,0.0,0.0,0.0,0.0,1.0,0.0,0.0,,,,,,,1.0,,,, diff --git a/Database/PowerPlants/PT/clustered.csv b/Database/PowerPlants/PT/clustered.csv index 4cdecdcd..4ca9b70a 100644 --- a/Database/PowerPlants/PT/clustered.csv +++ b/Database/PowerPlants/PT/clustered.csv @@ -1,11 +1,11 @@ -,PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost_pu,NoLoadCost_pu,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,CHPPowerLossFactor,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,CHPMaxHeat,Nunits -PT_STUR_BIO,161.9204087,PT_STUR_BIO,PT,STUR,BIO,0.46,4,6,0.02,0.02,120,12.5,1.3,0.35,0.35,1,0,back-pressure,1,0,,,,,161.9204087,2 -PT_COMC_GAS,394.2800561,PT_COMC_GAS,PT,COMC,GAS,0.57,2,4,0.03,0.03,55,0,0,0.36,0.57,1,0.42,,,,,,,,,9 -PT_GTUR_GAS,58.04818301,PT_GTUR_GAS,PT,GTUR,GAS,0.425,0,0,0.166666667,0.166666667,0,0,0,0.2,0.425,0.166666667,0.564705882,,,,,,,,,7 -PT_ICEN_GAS,9.815312958,PT_ICEN_GAS,PT,ICEN,GAS,0.49,0,0,1,1,0,0,0,0.3,0.49,0,0.489795918,,,,,,,,,38 -PT_STUR_GAS,61.69426771,PT_STUR_GAS,PT,STUR,GAS,0.38,0,0,0.02,0.02,0,0,0,0.4,0.38,0,0,,,,,,,,,1 -PT_STUR_HRD,585.3333333,PT_STUR_HRD,PT,STUR,HRD,0.46,8,8,0.017777778,0.017777778,65,0,0,0.3,0.46,2,0.81,,,,,,,,,3 -PT_PHOT_SUN,439,PT_PHOT_SUN,PT,PHOT,SUN,1,0,0,0.02,0.02,0,0,0,0,1,0,0,,,,,,,,,1 -PT_HROR_WAT,2986.8,PT_HROR_WAT,PT,HROR,WAT,1,0,0,0.02,0.02,0,0,0,0,1,0,0,,,,,,,,,1 -PT_HPHS_WAT,3134.3,PT_HPHS_WAT,PT,HPHS,WAT,0.8,0,0,0.066666667,0.066666667,0,0,0,0,1,0,0,,,,2897771,0,1623.4,0.8,,1 -PT_WTON_WIN,5045,PT_WTON_WIN,PT,WTON,WIN,1,0,0,0.02,0.02,0,0,0,0,1,0,0,,,,,,,,,1 +,PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost_pu,NoLoadCost_pu,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,CHPPowerLossFactor,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,CHPMaxHeat,Nunits,Extendable,Investment,FixedCost,EconomicLifetime +PT_STUR_BIO,161.9204087,PT_STUR_BIO,PT,STUR,BIO,0.46,4,6,0.02,0.02,120,12.5,1.3,0.35,0.35,1.0,0.0,back-pressure,1.0,0.0,,,,,161.9204087,2,,,, +PT_COMC_GAS,394.2800561,PT_COMC_GAS,PT,COMC,GAS,0.57,2,4,0.03,0.03,55,0.0,0.0,0.36,0.57,1.0,0.42,,,,,,,,,9,,,, +PT_GTUR_GAS,58.04818301,PT_GTUR_GAS,PT,GTUR,GAS,0.425,0,0,0.166666667,0.166666667,0,0.0,0.0,0.2,0.425,0.166666667,0.564705882,,,,,,,,,7,,,, +PT_ICEN_GAS,9.815312958,PT_ICEN_GAS,PT,ICEN,GAS,0.49,0,0,1.0,1.0,0,0.0,0.0,0.3,0.49,0.0,0.489795918,,,,,,,,,38,,,, +PT_STUR_GAS,61.69426771,PT_STUR_GAS,PT,STUR,GAS,0.38,0,0,0.02,0.02,0,0.0,0.0,0.4,0.38,0.0,0.0,,,,,,,,,1,,,, +PT_STUR_HRD,585.3333332999998,PT_STUR_HRD,PT,STUR,HRD,0.46,8,8,0.017777778,0.017777778,65,0.0,0.0,0.3,0.46,2.0,0.81,,,,,,,,,3,,,, +PT_PHOT_SUN,439.0,PT_PHOT_SUN,PT,PHOT,SUN,1.0,0,0,0.02,0.02,0,0.0,0.0,0.0,1.0,0.0,0.0,,,,,,,,,1,,,, +PT_HROR_WAT,2986.8,PT_HROR_WAT,PT,HROR,WAT,1.0,0,0,0.02,0.02,0,0.0,0.0,0.0,1.0,0.0,0.0,,,,,,,,,1,,,, +PT_HPHS_WAT,3134.3,PT_HPHS_WAT,PT,HPHS,WAT,0.8,0,0,0.066666667,0.066666667,0,0.0,0.0,0.0,1.0,0.0,0.0,,,,2897771.0,0.0,1623.4,0.8,,1,,,, +PT_WTON_WIN,5045.0,PT_WTON_WIN,PT,WTON,WIN,1.0,0,0,0.02,0.02,0,0.0,0.0,0.0,1.0,0.0,0.0,,,,,,,,,1,,,, diff --git a/Database/PowerPlants/RO/clustered.csv b/Database/PowerPlants/RO/clustered.csv index ea08a7c5..2ade2dea 100644 --- a/Database/PowerPlants/RO/clustered.csv +++ b/Database/PowerPlants/RO/clustered.csv @@ -1,11 +1,11 @@ -,PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost_pu,NoLoadCost_pu,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,Nunits -RO_COMC_GAS,327.0203994877031,RO_COMC_GAS,RO,COMC,GAS,0.57,2,4,0.03,0.03,55,0.0,0,0.36,0.57,1.0,0.42,,,,,,,4.0 -RO_GTUR_GAS,60.35244946221105,RO_GTUR_GAS,RO,GTUR,GAS,0.425,0,0,0.166666666666667,0.166666666666667,0,0.0,0,0.2,0.425,0.166666666666667,0.564705882352941,,,,,,,3.0 -RO_STUR_GAS,116.89023661091991,RO_STUR_GAS,RO,STUR,GAS,0.38,0,0,0.02,0.02,0,0.0,0,0.4,0.38,0.0,0.0,,,,,,,29.0 -RO_STUR_HRD,478.6376811594203,RO_STUR_HRD,RO,STUR,HRD,0.46,8,8,0.0177777777777778,0.0177777777777778,65,0.0,0,0.3,0.46,2.0,0.81,,,,,,,2.0 -RO_STUR_LIG,757.6666666666666,RO_STUR_LIG,RO,STUR,LIG,0.393,8.0,8.0,0.015209790209790195,0.017482517482517494,65.0,12.56164383561645,0.0,0.389,0.4075,5.0,1.0499999999999998,,,,,,,6.0 -RO_STUR_NUC,649.0,RO_STUR_NUC,RO,STUR,NUC,1.0,24,24,0.00333333333333333,0.00333333333333333,300,0.0,0,0.5,1.0,12.0,0.0,,,,,,,2.0 -RO_PHOT_SUN,1301.0,RO_PHOT_SUN,RO,PHOT,SUN,1.0,0,0,0.02,0.02,0,0.0,0,0.0,1.0,0.0,0.0,,,,,,,1 -RO_HDAM_WAT,4006.0,RO_HDAM_WAT,RO,HDAM,WAT,0.8,0,0,0.0666666666666667,0.0666666666666667,0,0.0,0,0.0,1.0,0.0,0.0,,,2641200.0,0.0,0.0,0.8,1 -RO_HROR_WAT,2697.0,RO_HROR_WAT,RO,HROR,WAT,1.0,0,0,0.02,0.02,0,0.0,0,0.0,1.0,0.0,0.0,,,,,,,1 -RO_WTON_WIN,2965.0,RO_WTON_WIN,RO,WTON,WIN,1.0,0,0,0.02,0.02,0,0.0,0,0.0,1.0,0.0,0.0,,,,,,,1 +,PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost_pu,NoLoadCost_pu,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,Nunits,Extendable,Investment,FixedCost,EconomicLifetime +RO_COMC_GAS,327.0203994877031,RO_COMC_GAS,RO,COMC,GAS,0.57,2.0,4.0,0.03,0.03,55.0,0.0,0.0,0.36,0.57,1.0,0.42,,,,,,,4.0,,,, +RO_GTUR_GAS,60.35244946221105,RO_GTUR_GAS,RO,GTUR,GAS,0.425,0.0,0.0,0.166666666666667,0.166666666666667,0.0,0.0,0.0,0.2,0.425,0.166666666666667,0.5647058823529411,,,,,,,3.0,,,, +RO_STUR_GAS,116.89023661091991,RO_STUR_GAS,RO,STUR,GAS,0.38,0.0,0.0,0.02,0.02,0.0,0.0,0.0,0.4,0.38,0.0,0.0,,,,,,,29.0,,,, +RO_STUR_HRD,478.6376811594203,RO_STUR_HRD,RO,STUR,HRD,0.46,8.0,8.0,0.0177777777777778,0.0177777777777778,65.0,0.0,0.0,0.3,0.46,2.0,0.81,,,,,,,2.0,,,, +RO_STUR_LIG,757.6666666666665,RO_STUR_LIG,RO,STUR,LIG,0.39299999999999996,8.0,8.0,0.015209790209790196,0.017482517482517494,65.0,12.56164383561645,0.0,0.389,0.4075,5.0,1.0499999999999998,,,,,,,6.0,,,, +RO_STUR_NUC,649.0,RO_STUR_NUC,RO,STUR,NUC,1.0,24.0,24.0,0.00333333333333333,0.00333333333333333,300.0,0.0,0.0,0.5,1.0,12.0,0.0,,,,,,,2.0,,,, +RO_PHOT_SUN,1301.0,RO_PHOT_SUN,RO,PHOT,SUN,1.0,0.0,0.0,0.02,0.02,0.0,0.0,0.0,0.0,1.0,0.0,0.0,,,,,,,1.0,,,, +RO_HDAM_WAT,4006.0,RO_HDAM_WAT,RO,HDAM,WAT,0.8,0.0,0.0,0.0666666666666667,0.0666666666666667,0.0,0.0,0.0,0.0,1.0,0.0,0.0,,,2641200.0,0.0,0.0,0.8,1.0,,,, +RO_HROR_WAT,2697.0,RO_HROR_WAT,RO,HROR,WAT,1.0,0.0,0.0,0.02,0.02,0.0,0.0,0.0,0.0,1.0,0.0,0.0,,,,,,,1.0,,,, +RO_WTON_WIN,2965.0,RO_WTON_WIN,RO,WTON,WIN,1.0,0.0,0.0,0.02,0.02,0.0,0.0,0.0,0.0,1.0,0.0,0.0,,,,,,,1.0,,,, diff --git a/Database/PowerPlants/SE/clustered.csv b/Database/PowerPlants/SE/clustered.csv index 0be8ffcc..138e386b 100644 --- a/Database/PowerPlants/SE/clustered.csv +++ b/Database/PowerPlants/SE/clustered.csv @@ -1,5 +1,5 @@ -,PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost_pu,NoLoadCost_pu,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,Nunits -SE_STUR_NUC,987.7777777777778,SE_STUR_NUC,SE,STUR,NUC,1.0,24,24,0.00333333333333333,0.00333333333333333,300,0.0,0,0.5,1.0,12.0,0.0,,,,,,,9.0 -SE_HDAM_WAT,15917.0,SE_HDAM_WAT,SE,HDAM,WAT,0.8,0,0,0.0666666666666667,0.0666666666666667,0,0.0,0,0.0,1.0,0.0,0.0,,,30694000.0,0.0,0.0,0.8,1 -SE_WTON_WIN,5493.0,SE_WTON_WIN,SE,WTON,WIN,1.0,0,0,0.02,0.02,0,0.0,0,0.0,1.0,0.0,0.0,,,,,,,1 -SE_STUR_OTH,148.74139844617096,SE_STUR_OTH,SE,STUR,OTH,0.3,4,4,0.02,0.02,65,0.0,0,0.5,0.3,0.0,0.0,,,,,,,53.0 +,PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost_pu,NoLoadCost_pu,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,Nunits,Extendable,Investment,FixedCost,EconomicLifetime +SE_STUR_NUC,987.7777777777776,SE_STUR_NUC,SE,STUR,NUC,1.0,24,24,0.00333333333333333,0.00333333333333333,300,0.0,0,0.5,1.0,12.0,0.0,,,,,,,9.0,,,, +SE_HDAM_WAT,15917.0,SE_HDAM_WAT,SE,HDAM,WAT,0.8,0,0,0.0666666666666667,0.0666666666666667,0,0.0,0,0.0,1.0,0.0,0.0,,,30694000.0,0.0,0.0,0.8,1.0,,,, +SE_WTON_WIN,5493.0,SE_WTON_WIN,SE,WTON,WIN,1.0,0,0,0.02,0.02,0,0.0,0,0.0,1.0,0.0,0.0,,,,,,,1.0,,,, +SE_STUR_OTH,148.74139844617096,SE_STUR_OTH,SE,STUR,OTH,0.3,4,4,0.02,0.02,65,0.0,0,0.5,0.3,0.0,0.0,,,,,,,53.0,,,, diff --git a/Database/PowerPlants/SI/clustered.csv b/Database/PowerPlants/SI/clustered.csv index 9c06c737..2ca05674 100644 --- a/Database/PowerPlants/SI/clustered.csv +++ b/Database/PowerPlants/SI/clustered.csv @@ -1,8 +1,8 @@ -,PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost_pu,NoLoadCost_pu,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,Nunits -SI_COMC_GAS,118.18141297080454,SI_COMC_GAS,SI,COMC,GAS,0.57,2,4,0.03,0.03,55,0.0,0,0.36,0.57,1.0,0.42,,,,,,,1.0 -SI_GTUR_GAS,60.65395268871979,SI_GTUR_GAS,SI,GTUR,GAS,0.425,0,0,0.166666666666667,0.166666666666667,0,0.0,0,0.2,0.425,0.166666666666667,0.564705882352941,,,,,,,6.0 -SI_STUR_LIG,460.5,SI_STUR_LIG,SI,STUR,LIG,0.393,8.0,8.0,0.015209790209790195,0.017482517482517494,65.0,12.56164383561645,0.0,0.389,0.4075,5.0,1.0499999999999998,,,,,,,2.0 -SI_STUR_NUC,696.0,SI_STUR_NUC,SI,STUR,NUC,1.0,24,24,0.00333333333333333,0.00333333333333333,300,0.0,0,0.5,1.0,12.0,0.0,,,,,,,1.0 -SI_PHOT_SUN,263.0,SI_PHOT_SUN,SI,PHOT,SUN,1.0,0,0,0.02,0.02,0,0.0,0,0.0,1.0,0.0,0.0,,,,,,,1 -SI_HROR_WAT,1116.0,SI_HROR_WAT,SI,HROR,WAT,1.0,0,0,0.02,0.02,0,0.0,0,0.0,1.0,0.0,0.0,,,,,,,1 -SI_HPHS_WAT,180.0,SI_HPHS_WAT,SI,HPHS,WAT,0.8,0,0,0.0666666666666667,0.0666666666666667,0,0.0,0,0.0,1.0,0.0,0.0,,,2600.0,0.0,180.0,0.8,1 +,PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost_pu,NoLoadCost_pu,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,Nunits,Extendable,Investment,FixedCost,EconomicLifetime +SI_COMC_GAS,118.18141297080454,SI_COMC_GAS,SI,COMC,GAS,0.57,2.0,4.0,0.03,0.03,55.0,0.0,0.0,0.36,0.57,1.0,0.42,,,,,,,1.0,,,, +SI_GTUR_GAS,60.65395268871979,SI_GTUR_GAS,SI,GTUR,GAS,0.425,0.0,0.0,0.166666666666667,0.166666666666667,0.0,0.0,0.0,0.2,0.425,0.166666666666667,0.5647058823529411,,,,,,,6.0,,,, +SI_STUR_LIG,460.5,SI_STUR_LIG,SI,STUR,LIG,0.39299999999999996,8.0,8.0,0.015209790209790196,0.017482517482517494,65.0,12.56164383561645,0.0,0.389,0.4075,5.0,1.0499999999999998,,,,,,,2.0,,,, +SI_STUR_NUC,696.0,SI_STUR_NUC,SI,STUR,NUC,1.0,24.0,24.0,0.00333333333333333,0.00333333333333333,300.0,0.0,0.0,0.5,1.0,12.0,0.0,,,,,,,1.0,,,, +SI_PHOT_SUN,263.0,SI_PHOT_SUN,SI,PHOT,SUN,1.0,0.0,0.0,0.02,0.02,0.0,0.0,0.0,0.0,1.0,0.0,0.0,,,,,,,1.0,,,, +SI_HROR_WAT,1116.0,SI_HROR_WAT,SI,HROR,WAT,1.0,0.0,0.0,0.02,0.02,0.0,0.0,0.0,0.0,1.0,0.0,0.0,,,,,,,1.0,,,, +SI_HPHS_WAT,180.0,SI_HPHS_WAT,SI,HPHS,WAT,0.8,0.0,0.0,0.0666666666666667,0.0666666666666667,0.0,0.0,0.0,0.0,1.0,0.0,0.0,,,2600.0,0.0,180.0,0.8,1.0,,,, diff --git a/Database/PowerPlants/SK/clustered.csv b/Database/PowerPlants/SK/clustered.csv index 12d716ea..09db4557 100644 --- a/Database/PowerPlants/SK/clustered.csv +++ b/Database/PowerPlants/SK/clustered.csv @@ -1,11 +1,11 @@ -,PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost_pu,NoLoadCost_pu,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,CHPPowerLossFactor,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,CHPMaxHeat,Nunits -SK_STUR_BIO,112,SK_STUR_BIO,SK,STUR,BIO,0.46,4,6,0.02,0.02,120,12.5,1.3,0.35,0.35,1,0,back-pressure,1,0,,,,,112,2 -SK_COMC_GAS,384.8166723,SK_COMC_GAS,SK,COMC,GAS,0.57,2,4,0.03,0.03,55,0,0,0.36,0.57,1,0.42,,,,,,,,,2 -SK_GTUR_GAS,62.49580228,SK_GTUR_GAS,SK,GTUR,GAS,0.425,0,0,0.166666667,0.166666667,0,0,0,0.2,0.425,0.166666667,0.564705882,,,,,,,,,4 -SK_STUR_HRD,105.4166667,SK_STUR_HRD,SK,STUR,HRD,0.46,8,8,0.017777778,0.017777778,65,0,0,0.3,0.46,2,0.81,,,,,,,,,1 -SK_STUR_LIG,458,SK_STUR_LIG,SK,STUR,LIG,0.393,8,8,0.01520979,0.017482517,65,12.56164384,0,0.389,0.4075,5,1.05,,,,,,,,,1 -SK_STUR_NUC,970,SK_STUR_NUC,SK,STUR,NUC,1,24,24,0.003333333,0.003333333,300,0,0,0.5,1,12,0,,,,,,,,,2 -SK_PHOT_SUN,530,SK_PHOT_SUN,SK,PHOT,SUN,1,0,0,0.02,0.02,0,0,0,0,1,0,0,,,,,,,,,1 -SK_HROR_WAT,1303,SK_HROR_WAT,SK,HROR,WAT,1,0,0,0.02,0.02,0,0,0,0,1,0,0,,,,,,,,,1 -SK_HPHS_WAT,1234,SK_HPHS_WAT,SK,HPHS,WAT,0.8,0,0,0.066666667,0.066666667,0,0,0,0,1,0,0,,,,1735630.76,0,916,0.8,,1 -SK_STUR_OTH,138.3529412,SK_STUR_OTH,SK,STUR,OTH,0.3,4,4,0.02,0.02,65,0,0,0.5,0.3,0,0,,,,,,,,,3 +,PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost_pu,NoLoadCost_pu,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,CHPPowerLossFactor,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,CHPMaxHeat,Nunits,Extendable,Investment,FixedCost,EconomicLifetime +SK_STUR_BIO,112.0,SK_STUR_BIO,SK,STUR,BIO,0.46,4,6,0.02,0.02,120,12.5,1.3,0.35,0.35,1.0,0.0,back-pressure,1.0,0.0,,,,,112.0,2,,,, +SK_COMC_GAS,384.81667230000005,SK_COMC_GAS,SK,COMC,GAS,0.57,2,4,0.03,0.03,55,0.0,0.0,0.36,0.57,1.0,0.42,,,,,,,,,2,,,, +SK_GTUR_GAS,62.49580228,SK_GTUR_GAS,SK,GTUR,GAS,0.425,0,0,0.166666667,0.166666667,0,0.0,0.0,0.2,0.425,0.166666667,0.564705882,,,,,,,,,4,,,, +SK_STUR_HRD,105.41666670000001,SK_STUR_HRD,SK,STUR,HRD,0.46,8,8,0.017777778,0.017777778,65,0.0,0.0,0.3,0.46,2.0,0.81,,,,,,,,,1,,,, +SK_STUR_LIG,458.0,SK_STUR_LIG,SK,STUR,LIG,0.39299999999999996,8,8,0.01520979,0.017482517,65,12.56164384,0.0,0.389,0.4075,5.0,1.05,,,,,,,,,1,,,, +SK_STUR_NUC,970.0,SK_STUR_NUC,SK,STUR,NUC,1.0,24,24,0.003333333,0.003333333,300,0.0,0.0,0.5,1.0,12.0,0.0,,,,,,,,,2,,,, +SK_PHOT_SUN,530.0,SK_PHOT_SUN,SK,PHOT,SUN,1.0,0,0,0.02,0.02,0,0.0,0.0,0.0,1.0,0.0,0.0,,,,,,,,,1,,,, +SK_HROR_WAT,1303.0,SK_HROR_WAT,SK,HROR,WAT,1.0,0,0,0.02,0.02,0,0.0,0.0,0.0,1.0,0.0,0.0,,,,,,,,,1,,,, +SK_HPHS_WAT,1234.0,SK_HPHS_WAT,SK,HPHS,WAT,0.8,0,0,0.066666667,0.066666667,0,0.0,0.0,0.0,1.0,0.0,0.0,,,,1735630.76,0.0,916.0,0.8,,1,,,, +SK_STUR_OTH,138.35294119999998,SK_STUR_OTH,SK,STUR,OTH,0.3,4,4,0.02,0.02,65,0.0,0.0,0.5,0.3,0.0,0.0,,,,,,,,,3,,,, diff --git a/Database/PowerPlants/UK/clustered.csv b/Database/PowerPlants/UK/clustered.csv index c8085a48..7d6b80d7 100644 --- a/Database/PowerPlants/UK/clustered.csv +++ b/Database/PowerPlants/UK/clustered.csv @@ -1,13 +1,13 @@ -,PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost_pu,NoLoadCost_pu,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,CHPPowerLossFactor,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,CHPMaxHeat,Nunits -UK_STUR_BIO,159.1436212,UK_STUR_BIO,UK,STUR,BIO,0.46,4,6,0.02,0.02,120,12.5,1.3,0.35,0.35,1,0,back-pressure,1,0,,,,,159.1436212,2 -UK_COMC_GAS,414.0198211,UK_COMC_GAS,UK,COMC,GAS,0.57,2,4,0.03,0.03,55,0,0,0.36,0.57,1,0.42,,,,,,,,,60 -UK_GTUR_GAS,60.13424818,UK_GTUR_GAS,UK,GTUR,GAS,0.425,0,0,0.166666667,0.166666667,0,0,0,0.2,0.425,0.166666667,0.564705882,,,,,,,,,11 -UK_ICEN_GAS,9.680959146,UK_ICEN_GAS,UK,ICEN,GAS,0.49,0,0,1,1,0,0,0,0.3,0.49,0,0.489795918,,,,,,,,,13 -UK_STUR_GAS,106.8689917,UK_STUR_GAS,UK,STUR,GAS,0.38,0,0,0.02,0.02,0,0,0,0.4,0.38,0,0,,,,,,,,,2 -UK_STUR_HRD,731.6666667,UK_STUR_HRD,UK,STUR,HRD,0.46,8,8,0.017777778,0.017777778,65,0,0,0.3,0.46,2,0.81,,,,,,,,,21 -UK_STUR_NUC,997.8888889,UK_STUR_NUC,UK,STUR,NUC,1,24,24,0.003333333,0.003333333,300,0,0,0.5,1,12,0,,,,,,,,,9 -UK_PHOT_SUN,11500,UK_PHOT_SUN,UK,PHOT,SUN,1,0,0,0.02,0.02,0,0,0,0,1,0,0,,,,,,,,,1 -UK_HPHS_WAT,2744,UK_HPHS_WAT,UK,HPHS,WAT,0.8,0,0,0.066666667,0.066666667,0,0,0,0,1,0,0,,,,13720,0,2744,0.8,,1 -UK_WTOF_WIN,5000,UK_WTOF_WIN,UK,WTOF,WIN,1,0,0,0.02,0.02,0,0,0,0,1,0,0,,,,,,,,,1 -UK_WTON_WIN,10000,UK_WTON_WIN,UK,WTON,WIN,1,0,0,0.02,0.02,0,0,0,0,1,0,0,,,,,,,,,1 -UK_STUR_OTH,149.841785,UK_STUR_OTH,UK,STUR,OTH,0.3,4,4,0.02,0.02,65,0,0,0.5,0.3,0,0,,,,,,,,,29 +,PowerCapacity,Unit,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost_pu,NoLoadCost_pu,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,CHPPowerLossFactor,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,CHPMaxHeat,Nunits,Extendable,Investment,FixedCost,EconomicLifetime +UK_STUR_BIO,159.14362119999996,UK_STUR_BIO,UK,STUR,BIO,0.46,4,6,0.02,0.02,120,12.5,1.3,0.35,0.35,1.0,0.0,back-pressure,1.0,0.0,,,,,159.14362119999996,2,,,, +UK_COMC_GAS,414.0198211,UK_COMC_GAS,UK,COMC,GAS,0.57,2,4,0.03,0.03,55,0.0,0.0,0.36,0.57,1.0,0.42,,,,,,,,,60,,,, +UK_GTUR_GAS,60.13424818,UK_GTUR_GAS,UK,GTUR,GAS,0.425,0,0,0.166666667,0.166666667,0,0.0,0.0,0.2,0.425,0.166666667,0.564705882,,,,,,,,,11,,,, +UK_ICEN_GAS,9.680959146000001,UK_ICEN_GAS,UK,ICEN,GAS,0.49,0,0,1.0,1.0,0,0.0,0.0,0.3,0.49,0.0,0.489795918,,,,,,,,,13,,,, +UK_STUR_GAS,106.86899170000001,UK_STUR_GAS,UK,STUR,GAS,0.38,0,0,0.02,0.02,0,0.0,0.0,0.4,0.38,0.0,0.0,,,,,,,,,2,,,, +UK_STUR_HRD,731.6666667000003,UK_STUR_HRD,UK,STUR,HRD,0.46,8,8,0.017777778,0.017777778,65,0.0,0.0,0.3,0.46,2.0,0.81,,,,,,,,,21,,,, +UK_STUR_NUC,997.8888889000001,UK_STUR_NUC,UK,STUR,NUC,1.0,24,24,0.003333333,0.003333333,300,0.0,0.0,0.5,1.0,12.0,0.0,,,,,,,,,9,,,, +UK_PHOT_SUN,11500.0,UK_PHOT_SUN,UK,PHOT,SUN,1.0,0,0,0.02,0.02,0,0.0,0.0,0.0,1.0,0.0,0.0,,,,,,,,,1,,,, +UK_HPHS_WAT,2744.0,UK_HPHS_WAT,UK,HPHS,WAT,0.8,0,0,0.066666667,0.066666667,0,0.0,0.0,0.0,1.0,0.0,0.0,,,,13720.0,0.0,2744.0,0.8,,1,,,, +UK_WTOF_WIN,5000.0,UK_WTOF_WIN,UK,WTOF,WIN,1.0,0,0,0.02,0.02,0,0.0,0.0,0.0,1.0,0.0,0.0,,,,,,,,,1,,,, +UK_WTON_WIN,10000.0,UK_WTON_WIN,UK,WTON,WIN,1.0,0,0,0.02,0.02,0,0.0,0.0,0.0,1.0,0.0,0.0,,,,,,,,,1,,,, +UK_STUR_OTH,149.84178500000004,UK_STUR_OTH,UK,STUR,OTH,0.3,4,4,0.02,0.02,65,0.0,0.0,0.5,0.3,0.0,0.0,,,,,,,,,29,,,, diff --git a/dispaset/preprocessing/data_check.py b/dispaset/preprocessing/data_check.py old mode 100644 new mode 100755 index c147e028..8a6a9600 --- a/dispaset/preprocessing/data_check.py +++ b/dispaset/preprocessing/data_check.py @@ -412,6 +412,8 @@ def check_df(df, StartDate=None, StopDate=None, name=''): if not df.columns.is_unique: logging.error('The column headers of table "' + name + '" are not unique!. The following headers are duplicated: ' + str(df.columns.get_duplicates())) sys.exit(1) + if not np.nansum(df.values)>=0: + logging.error("Your file only contains NaNs") return True diff --git a/dispaset/preprocessing/data_handler.py b/dispaset/preprocessing/data_handler.py index 59d0809d..97cdc4e0 100755 --- a/dispaset/preprocessing/data_handler.py +++ b/dispaset/preprocessing/data_handler.py @@ -447,23 +447,21 @@ def load_csv(filename, TempPath='.pickle', header=0, skiprows=None, skipfooter=0 :param filename: path to csv file :param TempPath: path to store the temporary data files """ - import hashlib m = hashlib.new('md5', filename.encode('utf-8')) resultfile_hash = m.hexdigest() filepath_pandas = TempPath + os.sep + resultfile_hash + '.p' - if not os.path.isdir(TempPath): os.mkdir(TempPath) if not os.path.isfile(filepath_pandas): time_pd = 0 else: time_pd = os.path.getmtime(filepath_pandas) - if os.path.getmtime(filename) > time_pd: + if os.path.getmtime(filename) > time_pd- 1E1000: data = pd.read_csv(filename, header=header, skiprows=skiprows, skipfooter=skipfooter, index_col=index_col, parse_dates=parse_dates) data.to_pickle(filepath_pandas) - else: + else: data = pd.read_pickle(filepath_pandas) return data diff --git a/dispaset/preprocessing/preprocessing.py b/dispaset/preprocessing/preprocessing.py index c6ca7e5f..d20800f7 100755 --- a/dispaset/preprocessing/preprocessing.py +++ b/dispaset/preprocessing/preprocessing.py @@ -1,960 +1,642 @@ -# -*- coding: utf-8 -*- -""" -This is the main file of the DispaSET pre-processing tool. It comprises a single function that generated the DispaSET simulation environment. - -@author: S. Quoilin -""" - -import datetime as dt -import logging -import os -import shutil -import sys - -import numpy as np -import pandas as pd -try: - from future.builtins import int -except ImportError: - logging.warning("Couldn't import future package. Numeric operations may differ among different versions due to incompatible variable types") - pass - -from .data_check import check_units, check_chp, check_sto, check_heat_demand, check_df, isStorage, check_MinMaxFlows,check_AvailabilityFactors, check_clustering -from .utils import clustering, interconnections, incidence_matrix -from .data_handler import UnitBasedTable,NodeBasedTable,merge_series, define_parameter, write_to_excel, load_csv - -from ..misc.gdx_handler import write_variables -from ..common import commons # Load fuel types, technologies, timestep, etc: - -GMS_FOLDER = os.path.join(os.path.dirname(__file__), '..', 'GAMS') - -def get_git_revision_tag(): - """Get version of DispaSET used for this run. tag + commit hash""" - from subprocess import check_output - try: - return check_output(["git", "describe", "--tags", "--always"]).strip() - except: - return 'NA' - -def build_simulation(config): - """ - This function reads the DispaSET config, loads the specified data, - processes it when needed, and formats it in the proper DispaSET format. - The output of the function is a directory with all inputs and simulation files required to run a DispaSET simulation - - :param config: Dictionary with all the configuration fields loaded from the excel file. Output of the 'LoadConfig' function. - :param plot_load: Boolean used to display a plot of the demand curves in the different zones - """ - dispa_version = str(get_git_revision_tag()) - logging.info('New build started. DispaSET version: ' + dispa_version) - # %%################################################################################################################ - ##################################### Main Inputs ############################################################ - ################################################################################################################### - - # Boolean variable to check wether it is milp or lp: - LP = config['SimulationType'] == 'LP' or config['SimulationType'] == 'LP clustered' - CEP = config['CEP'] == 1 - # Day/hour corresponding to the first and last days of the simulation: - # Note that the first available data corresponds to 2015.01.31 (23.00) and the - # last day with data is 2015.12.31 (22.00) - __, m_start, d_start, __, __, __ = config['StartDate'] - y_end, m_end, d_end, _, _, _ = config['StopDate'] - config['StopDate'] = (y_end, m_end, d_end, 23, 59, 00) # updating stopdate to the end of the day - - # Indexes of the simulation: - idx_std = pd.DatetimeIndex(pd.date_range(start=pd.datetime(*config['StartDate']), - end=pd.datetime(*config['StopDate']), - freq=commons['TimeStep']) - ) - idx_utc_noloc = idx_std - dt.timedelta(hours=1) - idx_utc = idx_utc_noloc.tz_localize('UTC') - - # Indexes for the whole year considered in StartDate - idx_utc_year_noloc = pd.DatetimeIndex(pd.date_range(start=pd.datetime(*(config['StartDate'][0],1,1,0,0)), - end=pd.datetime(*(config['StartDate'][0],12,31,23,59,59)), - freq=commons['TimeStep']) - ) - idx_utc_noloc = idx_utc - # %%################################################################################################################# - ##################################### Data Loading ########################################################### - ################################################################################################################### - - # Start and end of the simulation: - delta = idx_utc[-1] - idx_utc[0] - days_simulation = delta.days + 1 - - # Defining missing configuration fields for backwards compatibility: - if not isinstance(config['default']['CostLoadShedding'],(float,int)): - config['default']['CostLoadShedding'] = 1000 - if not isinstance(config['default']['CostHeatSlack'],(float,int)): - config['default']['CostHeatSlack'] = 50 - - # Load : - Load = NodeBasedTable(config['Demand'],idx_utc_noloc,config['countries'],tablename='Demand') - # For the peak load, the whole year is considered: - PeakLoad = NodeBasedTable(config['Demand'],idx_utc_year_noloc,config['countries'],tablename='PeakLoad').max() - - print("huhuuuu") - print(Load) - if config['modifiers']['Demand'] != 1: - logging.info('Scaling load curve by a factor ' + str(config['modifiers']['Demand'])) - Load = Load * config['modifiers']['Demand'] - PeakLoad = PeakLoad * config['modifiers']['Demand'] - - # Interconnections: - if os.path.isfile(config['Interconnections']): - flows = load_csv(config['Interconnections'], index_col=0, parse_dates=True).fillna(0) - else: - logging.warning('No historical flows will be considered (no valid file provided)') - flows = pd.DataFrame(index=idx_utc_noloc) - if os.path.isfile(config['NTC']): - NTC = load_csv(config['NTC'], index_col=0, parse_dates=True).fillna(0) - else: - logging.warning('No NTC values will be considered (no valid file provided)') - NTC = pd.DataFrame(index=idx_utc_noloc) - - # Load Shedding: - LoadShedding = NodeBasedTable(config['LoadShedding'],idx_utc_noloc,config['countries'],tablename='LoadShedding',default=config['default']['LoadShedding']) - CostLoadShedding = NodeBasedTable(config['CostLoadShedding'],idx_utc_noloc,config['countries'],tablename='CostLoadShedding',default=config['default']['CostLoadShedding']) - - # Power plants: - plants = pd.DataFrame() - if os.path.isfile(config['PowerPlantData']): - plants = load_csv(config['PowerPlantData']) - elif '##' in config['PowerPlantData']: - for c in config['countries']: - path = config['PowerPlantData'].replace('##', str(c)) - tmp = load_csv(path) - plants = plants.append(tmp, ignore_index=True) - plants = plants[plants['Technology'] != 'Other'] - plants = plants[pd.notnull(plants['PowerCapacity'])] - plants.index = range(len(plants)) - - # Some columns can be in two format (absolute or per unit). If not specified, they are set to zero: - for key in ['StartUpCost','NoLoadCost']: - if key in plants: - pass - elif key+'_pu' in plants: - plants[key] = plants[key+'_pu'] * plants['PowerCapacity'] - else: - plants[key] = 0 - # check plant list: - check_units(config, plants) - # If not present, add the non-compulsory fields to the units table: - for key in ['CHPPowerLossFactor','CHPPowerToHeat','CHPType','STOCapacity','STOSelfDischarge','STOMaxChargingPower','STOChargingEfficiency', 'CHPMaxHeat']: - if key not in plants.columns: - plants[key] = np.nan - - - # Defining the hydro storages: - plants_sto = plants[[u in commons['tech_storage'] for u in plants['Technology']]] - # check storage plants: - check_sto(config, plants_sto) - - # Defining the CHPs: - plants_chp = plants[[str(x).lower() in commons['types_CHP'] for x in plants['CHPType']]] - - Outages = UnitBasedTable(plants,config['Outages'],idx_utc_noloc,config['countries'],fallbacks=['Unit','Technology'],tablename='Outages') - AF = UnitBasedTable(plants,config['RenewablesAF'],idx_utc_noloc,config['countries'],fallbacks=['Unit','Technology'],tablename='AvailabilityFactors',default=1,RestrictWarning=commons['tech_renewables']) - ReservoirLevels = UnitBasedTable(plants_sto,config['ReservoirLevels'],idx_utc_noloc,config['countries'],fallbacks=['Unit','Technology','Zone'],tablename='ReservoirLevels',default=0) - ReservoirScaledInflows = UnitBasedTable(plants_sto,config['ReservoirScaledInflows'],idx_utc_noloc,config['countries'],fallbacks=['Unit','Technology','Zone'],tablename='ReservoirScaledInflows',default=0) - HeatDemand = UnitBasedTable(plants_chp,config['HeatDemand'],idx_utc_noloc,config['countries'],fallbacks=['Unit'],tablename='HeatDemand',default=0) - CostHeatSlack = UnitBasedTable(plants_chp,config['CostHeatSlack'],idx_utc_noloc,config['countries'],fallbacks=['Unit','Zone'],tablename='CostHeatSlack',default=config['default']['CostHeatSlack']) - - # data checks: - check_AvailabilityFactors(plants,AF) - check_heat_demand(plants,HeatDemand) - - # Fuel prices: - fuels = ['PriceOfNuclear', 'PriceOfBlackCoal', 'PriceOfGas', 'PriceOfFuelOil', 'PriceOfBiomass', 'PriceOfCO2', 'PriceOfLignite', 'PriceOfPeat'] - FuelPrices = pd.DataFrame(columns=fuels, index=idx_utc_noloc) - for fuel in fuels: - if os.path.isfile(config[fuel]): - tmp = load_csv(config[fuel], header=None, index_col=0, parse_dates=True) - FuelPrices[fuel] = tmp[1][idx_utc_noloc].values - elif isinstance(config['default'][fuel], (int, float, complex)): - logging.warning('No data file found for "' + fuel + '. Using default value ' + str(config['default'][fuel]) + ' EUR') - FuelPrices[fuel] = pd.Series(config['default'][fuel], index=idx_utc_noloc) - # Special case for lignite and peat, for backward compatibility - elif fuel == 'PriceOfLignite': - logging.warning('No price data found for "' + fuel + '. Using the same value as for Black Coal') - FuelPrices[fuel] = FuelPrices['PriceOfBlackCoal'] - elif fuel == 'PriceOfPeat': - logging.warning('No price data found for "' + fuel + '. Using the same value as for biomass') - FuelPrices[fuel] = FuelPrices['PriceOfBiomass'] - else: - logging.warning('No data file or default value found for "' + fuel + '. Assuming zero marginal price!') - FuelPrices[fuel] = pd.Series(0, index=idx_utc_noloc) - - # Interconnections: - [Interconnections_sim, Interconnections_RoW, Interconnections] = interconnections(config['countries'], NTC, flows) - - if len(Interconnections_sim.columns) > 0: - NTCs = Interconnections_sim.reindex(idx_utc_noloc) - else: - NTCs = pd.DataFrame(index=idx_utc_noloc) - Inter_RoW = Interconnections_RoW.reindex(idx_utc_noloc) - - # Clustering of the plants: - Plants_merged, mapping = clustering(plants, method=config['SimulationType']) - # Check clustering: - check_clustering(plants,Plants_merged) - - # Renaming the columns to ease the production of parameters: - Plants_merged.rename(columns={'StartUpCost': 'CostStartUp', - 'RampUpMax': 'RampUpMaximum', - 'RampDownMax': 'RampDownMaximum', - 'MinUpTime': 'TimeUpMinimum', - 'MinDownTime': 'TimeDownMinimum', - 'RampingCost': 'CostRampUp', - 'STOCapacity': 'StorageCapacity', - 'STOMaxChargingPower': 'StorageChargingCapacity', - 'STOChargingEfficiency': 'StorageChargingEfficiency', - 'STOSelfDischarge': 'StorageSelfDischarge', - 'CO2Intensity': 'EmissionRate'}, inplace=True) - - for key in ['TimeUpMinimum','TimeDownMinimum']: - if any([not x.is_integer() for x in Plants_merged[key].fillna(0).values.astype('float')]): - logging.warning(key + ' in the power plant data has been rounded to the nearest integer value') - Plants_merged.loc[:,key] = Plants_merged[key].fillna(0).values.astype('int32') - - if not len(Plants_merged.index.unique()) == len(Plants_merged): - # Very unlikely case: - logging.error('plant indexes not unique!') - sys.exit(1) - - # Apply scaling factors: - if config['modifiers']['Solar'] != 1: - logging.info('Scaling Solar Capacity by a factor ' + str(config['modifiers']['Solar'])) - for u in Plants_merged.index: - if Plants_merged.Technology[u] == 'PHOT': - Plants_merged.loc[u, 'PowerCapacity'] = Plants_merged.loc[u, 'PowerCapacity'] * config['modifiers']['Solar'] - if config['modifiers']['Wind'] != 1: - logging.info('Scaling Wind Capacity by a factor ' + str(config['modifiers']['Wind'])) - for u in Plants_merged.index: - if Plants_merged.Technology[u] == 'WTON' or Plants_merged.Technology[u] == 'WTOF': - Plants_merged.loc[u, 'PowerCapacity'] = Plants_merged.loc[u, 'PowerCapacity'] * config['modifiers']['Wind'] - if config['modifiers']['Storage'] != 1: - logging.info('Scaling Storage Power and Capacity by a factor ' + str(config['modifiers']['Storage'])) - for u in Plants_merged.index: - if isStorage(Plants_merged.Technology[u]): - Plants_merged.loc[u, 'PowerCapacity'] = Plants_merged.loc[u, 'PowerCapacity'] * config['modifiers']['Storage'] - Plants_merged.loc[u, 'StorageCapacity'] = Plants_merged.loc[u, 'StorageCapacity'] * config['modifiers']['Storage'] - Plants_merged.loc[u, 'StorageChargingCapacity'] = Plants_merged.loc[u, 'StorageChargingCapacity'] * config['modifiers']['Storage'] - - # Defining the hydro storages: - Plants_sto = Plants_merged[[u in commons['tech_storage'] for u in Plants_merged['Technology']]] - # check storage plants: - check_sto(config, Plants_sto,raw_data=False) - # Defining the CHPs: - Plants_chp = Plants_merged[[x.lower() in commons['types_CHP'] for x in Plants_merged['CHPType']]].copy() - # check chp plants: - check_chp(config, Plants_chp) - # For all the chp plants correct the PowerCapacity, which is defined in cogeneration mode in the inputs and in power generation model in the optimization model - for u in Plants_chp.index: - PowerCapacity = Plants_chp.loc[u, 'PowerCapacity'] - - if Plants_chp.loc[u,'CHPType'].lower() == 'p2h': - PurePowerCapacity = PowerCapacity - else: - if pd.isnull(Plants_chp.loc[u,'CHPMaxHeat']): # If maximum heat is not defined, then it is defined as the intersection between two lines - MaxHeat = PowerCapacity / Plants_chp.loc[u,'CHPPowerToHeat'] - Plants_chp.loc[u, 'CHPMaxHeat'] = 'inf' - else: - MaxHeat = Plants_chp.loc[u, 'CHPMaxHeat'] - PurePowerCapacity = PowerCapacity + Plants_chp.loc[u,'CHPPowerLossFactor'] * MaxHeat - Plants_merged.loc[u,'PartLoadMin'] = Plants_merged.loc[u,'PartLoadMin'] * PowerCapacity / PurePowerCapacity # FIXME: Is this correct? - Plants_merged.loc[u,'PowerCapacity'] = PurePowerCapacity - - # Get the hydro time series corresponding to the original plant list: #FIXME Unused variable ? - #StorageFormerIndexes = [s for s in plants.index if - # plants['Technology'][s] in commons['tech_storage']] - - # Same with the CHPs: - # Get the heat demand time series corresponding to the original plant list: - CHPFormerIndexes = [s for s in plants.index if - plants['CHPType'][s] in commons['types_CHP']] - for s in CHPFormerIndexes: # for all the old plant indexes - # get the old plant name corresponding to s: - oldname = plants['Unit'][s] - # newname = mapping['NewIndex'][s] #FIXME Unused variable ? - if oldname not in HeatDemand: - logging.warning('No heat demand profile found for CHP plant "' + str(oldname) + '". Assuming zero') - HeatDemand[oldname] = 0 - if oldname not in CostHeatSlack: - logging.warning('No heat cost profile found for CHP plant "' + str(oldname) + '". Assuming zero') - CostHeatSlack[oldname] = 0 - - - # merge the outages: - for i in plants.index: # for all the old plant indexes - # get the old plant name corresponding to s: - oldname = plants['Unit'][i] - newname = mapping['NewIndex'][i] - - # Merging the time series relative to the clustered power plants: - ReservoirScaledInflows_merged = merge_series(plants, ReservoirScaledInflows, mapping, method='WeightedAverage', tablename='ScaledInflows') - ReservoirLevels_merged = merge_series(plants, ReservoirLevels, mapping, tablename='ReservoirLevels') - Outages_merged = merge_series(plants, Outages, mapping, tablename='Outages') - HeatDemand_merged = merge_series(plants, HeatDemand, mapping, tablename='HeatDemand',method='Sum') - AF_merged = merge_series(plants, AF, mapping, tablename='AvailabilityFactors') - CostHeatSlack_merged = merge_series(plants, CostHeatSlack, mapping, tablename='CostHeatSlack') - - - # %% - # checking data - check_df(Load, StartDate=idx_utc_noloc[0], StopDate=idx_utc_noloc[-1], name='Load') - check_df(AF_merged, StartDate=idx_utc_noloc[0], StopDate=idx_utc_noloc[-1], - name='AF_merged') - check_df(Outages_merged, StartDate=idx_utc_noloc[0], StopDate=idx_utc_noloc[-1], name='Outages_merged') - check_df(Inter_RoW, StartDate=idx_utc_noloc[0], StopDate=idx_utc_noloc[-1], name='Inter_RoW') - check_df(FuelPrices, StartDate=idx_utc_noloc[0], StopDate=idx_utc_noloc[-1], name='FuelPrices') - check_df(NTCs, StartDate=idx_utc_noloc[0], StopDate=idx_utc_noloc[-1], name='NTCs') - check_df(ReservoirLevels_merged, StartDate=idx_utc_noloc[0], StopDate=idx_utc_noloc[-1], - name='ReservoirLevels_merged') - check_df(ReservoirScaledInflows_merged, StartDate=idx_utc_noloc[0], StopDate=idx_utc_noloc[-1], - name='ReservoirScaledInflows_merged') - check_df(HeatDemand_merged, StartDate=idx_utc_noloc[0], StopDate=idx_utc_noloc[-1], - name='HeatDemand_merged') - check_df(CostHeatSlack_merged, StartDate=idx_utc_noloc[0], StopDate=idx_utc_noloc[-1], - name='CostHeatSlack_merged') - check_df(LoadShedding, StartDate=idx_utc_noloc[0], StopDate=idx_utc_noloc[-1], - name='LoadShedding') - check_df(CostLoadShedding, StartDate=idx_utc_noloc[0], StopDate=idx_utc_noloc[-1], - name='CostLoadShedding') - -# for key in Renewables: -# check_df(Renewables[key], StartDate=idx_utc_noloc[0], StopDate=idx_utc_noloc[-1], -# name='Renewables["' + key + '"]') - - # %%% - - # Extending the data to include the look-ahead period (with constant values assumed) - enddate_long = idx_utc_noloc[-1] + dt.timedelta(days=config['LookAhead']) - idx_long = pd.DatetimeIndex(pd.date_range(start=idx_utc_noloc[0], end=enddate_long, freq=commons['TimeStep'])) - Nhours_long = len(idx_long) - - # re-indexing with the longer index and filling possibly missing data at the beginning and at the end:: - Load = Load.reindex(idx_long, method='nearest').fillna(method='bfill') - AF_merged = AF_merged.reindex(idx_long, method='nearest').fillna(method='bfill') - Inter_RoW = Inter_RoW.reindex(idx_long, method='nearest').fillna(method='bfill') - NTCs = NTCs.reindex(idx_long, method='nearest').fillna(method='bfill') - FuelPrices = FuelPrices.reindex(idx_long, method='nearest').fillna(method='bfill') - Load = Load.reindex(idx_long, method='nearest').fillna(method='bfill') - Outages_merged = Outages_merged.reindex(idx_long, method='nearest').fillna(method='bfill') - ReservoirLevels_merged = ReservoirLevels_merged.reindex(idx_long, method='nearest').fillna(method='bfill') - ReservoirScaledInflows_merged = ReservoirScaledInflows_merged.reindex(idx_long, method='nearest').fillna( - method='bfill') - LoadShedding = LoadShedding.reindex(idx_long, method='nearest').fillna(method='bfill') - CostLoadShedding = CostLoadShedding.reindex(idx_long, method='nearest').fillna(method='bfill') -# for tr in Renewables: -# Renewables[tr] = Renewables[tr].reindex(idx_long, method='nearest').fillna(method='bfill') - - # %%################################################################################################################ - ############################################ Sets ############################################################ - ################################################################################################################### - - # The sets are defined within a dictionary: - sets = {} - sets['h'] = [str(x + 1) for x in range(Nhours_long)] - sets['z'] = [str(x + 1) for x in range(Nhours_long - config['LookAhead'] * 24)] - sets['mk'] = ['DA', '2U', '2D'] - sets['n'] = config['countries'] - sets['u'] = Plants_merged.index.tolist() - sets['l'] = Interconnections - sets['f'] = commons['Fuels'] - sets['p'] = ['CO2'] - sets['s'] = Plants_sto.index.tolist() - sets['chp'] = Plants_chp.index.tolist() - sets['t'] = commons['Technologies'] - sets['tr'] = commons['tech_renewables'] - - ################################################################################################################### - ############################################ Parameters ###################################################### - ################################################################################################################### - - Nunits = len(Plants_merged) - parameters = {} - - # Each parameter is associated with certain sets, as defined in the following list: - sets_param = {} - sets_param['AvailabilityFactor'] = ['u', 'h'] - sets_param['CHPPowerToHeat'] = ['chp'] - sets_param['CHPPowerLossFactor'] = ['chp'] - sets_param['CHPMaxHeat'] = ['chp'] - sets_param['CostFixed'] = ['u'] - sets_param['CostHeatSlack'] = ['chp','h'] - sets_param['CostLoadShedding'] = ['n','h'] - sets_param['CostRampUp'] = ['u'] - sets_param['CostRampDown'] = ['u'] - sets_param['CostShutDown'] = ['u'] - sets_param['CostStartUp'] = ['u'] - sets_param['CostVariable'] = ['u', 'h'] - sets_param['Curtailment'] = ['n'] - sets_param['Demand'] = ['mk', 'n', 'h'] - sets_param['Efficiency'] = ['u'] - sets_param['EmissionMaximum'] = ['n', 'p'] - sets_param['EmissionRate'] = ['u', 'p'] - sets_param['FlowMaximum'] = ['l', 'h'] - sets_param['FlowMinimum'] = ['l', 'h'] - sets_param['Fuel'] = ['u', 'f'] - sets_param['HeatDemand'] = ['chp','h'] - sets_param['LineNode'] = ['l', 'n'] - sets_param['LoadShedding'] = ['n','h'] - sets_param['Location'] = ['u', 'n'] - sets_param['Markup'] = ['u', 'h'] - sets_param['Nunits'] = ['u'] - sets_param['OutageFactor'] = ['u', 'h'] - sets_param['PartLoadMin'] = ['u'] - sets_param['PowerCapacity'] = ['u'] - sets_param['PowerInitial'] = ['u'] - sets_param['PriceTransmission'] = ['l', 'h'] - sets_param['RampUpMaximum'] = ['u'] - sets_param['RampDownMaximum'] = ['u'] - sets_param['RampStartUpMaximum'] = ['u'] - sets_param['RampShutDownMaximum'] = ['u'] - sets_param['Reserve'] = ['t'] - sets_param['StorageCapacity'] = ['u'] - sets_param['StorageChargingCapacity'] = ['s'] - sets_param['StorageChargingEfficiency'] = ['s'] - sets_param['StorageDischargeEfficiency'] = ['s'] - sets_param['StorageSelfDischarge'] = ['u'] - sets_param['StorageInflow'] = ['s', 'h'] - sets_param['StorageInitial'] = ['s'] - sets_param['StorageMinimum'] = ['s'] - sets_param['StorageOutflow'] = ['s', 'h'] - sets_param['StorageProfile'] = ['s', 'h'] - sets_param['Technology'] = ['u', 't'] - sets_param['TimeUpMinimum'] = ['u'] - sets_param['TimeDownMinimum'] = ['u'] - - - - # %%################################################################################################################ - ############################################ Capacity Expansion ############################################################ - ################################################################################################################### - - - all_cost = load_csv('Database/CapacityExpansion/techs_cost.csv') # cost information # NOTE: Fixed Cost are added to initial model formulation - - if CEP: - # split set u -> uc ⋃ ue - # load technical parameters (averaged by existing data) and cost (DIW) - ## TODO: Determine parameters in dependency of country - - logging.info("Capacity Expansion used!") - expandable_units = ['HRD-STUR', 'LIG-STUR', 'NUC-STUR','OIL-STUR', 'GAS-GTUR'] #TODO rather in config? - - #Plants_merged = Plants_merged.query('Technology != "COMC" and Fuel != "GAS"') - #Plants_merged = Plants_merged.query('Technology != "STUR" and Fuel != "GAS"') - - plant_new = load_csv('Database/CapacityExpansion/techs_cap.csv') # technical information - plant_new = plant_new[plant_new.Unit.isin(expandable_units)] - - # create variables (cartesian product of tech x country) - n_countries = len(config['countries']) - n_technologies = plant_new.shape[0] - plant_new = pd.concat([plant_new] * n_countries) # for each zone - plant_new['Zone'] = np.repeat(config['countries'], n_technologies) # create zone column - plant_new['Unit'] = plant_new.apply(lambda x: x['Zone'] + "-" + x['Unit'], axis=1) # naming - plant_new = plant_new.set_index('Unit', drop=False) - - ## Cost of new technologies - index = plant_new[['Fuel', 'Technology']].reset_index().set_index('Unit', drop=False) - - Plants_merged = Plants_merged.merge(index[['Fuel', 'Technology']], how='outer', on = ['Fuel', 'Technology'], - indicator=True).query('_merge == "left_only"') - - del Plants_merged['_merge'] - - Plants_merged = Plants_merged.set_index('Unit', drop=False) - sets['ue'] = Plants_merged.index.tolist() # existing plants - sets['uc'] = plant_new.index.tolist() # new plants to expand - sets['u'] = sets['ue'] + sets['uc'] # Union - - Plants_merged = Plants_merged.append(plant_new) - plant_new_cost = all_cost[all_cost.Unit.isin(expandable_units)] - df_expanded = pd.merge(index, plant_new_cost, on=['Fuel', 'Technology'], how='left') - - else: - sets['uc'] = list() - - for var in ["Investment", "EconomicLifetime"]: - sets_param[var] = ['uc'] - - # Define all the parameters and set a default value of zero: - for var in sets_param: - parameters[var] = define_parameter(sets_param[var], sets, value=0) - - for var in ["Investment", "EconomicLifetime"]: - parameters[var] = define_parameter(sets_param[var], sets, value=0) - if CEP: - parameters[var]["val"] = df_expanded[var].values - - Plants_merged['FixedCost'] = pd.merge(Plants_merged, all_cost, how='left', on=['Fuel', 'Technology'])['FixedCost'].values - Nunits = len(Plants_merged) - - for var in ["CostFixed"]: - sets_param[var] = ['u'] - parameters[var] = define_parameter(sets_param[var], sets, value=0) - parameters[var]["val"] = Plants_merged['FixedCost'].values - - # Define all the parameters and set a default value of zero: - for var in sets_param: - parameters[var] = define_parameter(sets_param[var], sets, value=0) - - # List of parameters whose default value is 1 - for var in ['AvailabilityFactor', 'Efficiency', 'Curtailment', 'StorageChargingEfficiency', - 'StorageDischargeEfficiency', 'Nunits']: - parameters[var] = define_parameter(sets_param[var], sets, value=1) - - # List of parameters whose default value is very high - for var in ['RampUpMaximum', 'RampDownMaximum', 'RampStartUpMaximum', 'RampShutDownMaximum', - 'EmissionMaximum']: - parameters[var] = define_parameter(sets_param[var], sets, value=1e7) - - # Boolean parameters: - for var in ['Technology', 'Fuel', 'Reserve', 'Location']: - parameters[var] = define_parameter(sets_param[var], sets, value='bool') - - # %% - # List of parameters whose value is known, and provided in the dataframe Plants_merged. - for var in ['Efficiency', 'PowerCapacity', 'PartLoadMin', 'TimeUpMinimum', 'TimeDownMinimum', 'CostStartUp', - 'CostRampUp','StorageCapacity', 'StorageSelfDischarge']: - parameters[var]['val'] = Plants_merged[var].values - - # List of parameters whose value is not necessarily specified in the dataframe Plants_merged - for var in ['Nunits']: - if var in Plants_merged: - parameters[var]['val'] = Plants_merged[var].values - - - # List of parameters whose value is known, and provided in the dataframe Plants_sto. - for var in ['StorageChargingCapacity', 'StorageChargingEfficiency']: - parameters[var]['val'] = Plants_sto[var].values - - # The storage discharge efficiency is actually given by the unit efficiency: - parameters['StorageDischargeEfficiency']['val'] = Plants_sto['Efficiency'].values - - # List of parameters whose value is known, and provided in the dataframe Plants_chp - for var in ['CHPPowerToHeat','CHPPowerLossFactor', 'CHPMaxHeat']: - parameters[var]['val'] = Plants_chp[var].values - - # Storage profile and initial state: - for i, s in enumerate(sets['s']): - if s in ReservoirLevels_merged: - # get the time - parameters['StorageInitial']['val'][i] = ReservoirLevels_merged[s][idx_long[0]] * \ - Plants_sto['StorageCapacity'][s] * Plants_sto['Nunits'][s] - parameters['StorageProfile']['val'][i, :] = ReservoirLevels_merged[s][idx_long].values - if any(ReservoirLevels_merged[s] > 1): - logging.warning(s + ': The reservoir level is sometimes higher than its capacity!') - else: - logging.warning( 'Could not find reservoir level data for storage plant ' + s + '. Assuming 50% of capacity') - parameters['StorageInitial']['val'][i] = 0.5 * Plants_sto['StorageCapacity'][s] - parameters['StorageProfile']['val'][i, :] = 0.5 - - # Storage Inflows: - for i, s in enumerate(sets['s']): - if s in ReservoirScaledInflows_merged: - parameters['StorageInflow']['val'][i, :] = ReservoirScaledInflows_merged[s][idx_long].values * \ - Plants_sto['PowerCapacity'][s] - # CHP time series: - for i, u in enumerate(sets['chp']): - if u in HeatDemand_merged: - parameters['HeatDemand']['val'][i, :] = HeatDemand_merged[u][idx_long].values - parameters['CostHeatSlack']['val'][i, :] = CostHeatSlack_merged[u][idx_long].values - - # Ramping rates are reconstructed for the non dimensional value provided (start-up and normal ramping are not differentiated) - parameters['RampUpMaximum']['val'] = Plants_merged['RampUpRate'].values * Plants_merged['PowerCapacity'].values * 60 - parameters['RampDownMaximum']['val'] = Plants_merged['RampDownRate'].values * Plants_merged[ - 'PowerCapacity'].values * 60 - parameters['RampStartUpMaximum']['val'] = Plants_merged['RampUpRate'].values * Plants_merged[ - 'PowerCapacity'].values * 60 - parameters['RampShutDownMaximum']['val'] = Plants_merged['RampDownRate'].values * Plants_merged[ - 'PowerCapacity'].values * 60 - - # If Curtailment is not allowed, set to 0: - if config['AllowCurtailment'] == 0: - parameters['Curtailment'] = define_parameter(sets_param['Curtailment'], sets, value=0) - - # Availability Factors - if len(AF_merged.columns) != 0: - for i, u in enumerate(sets['u']): - if u in AF_merged.columns: - parameters['AvailabilityFactor']['val'][i, :] = AF_merged[u].values - - - # Demand - # Dayahead['NL'][1800:1896] = Dayahead['NL'][1632:1728] - reserve_2U_tot = {i: (np.sqrt(10 * PeakLoad[i] + 150 ** 2) - 150) for i in Load.columns} - reserve_2D_tot = {i: (0.5 * reserve_2U_tot[i]) for i in Load.columns} - - values = np.ndarray([len(sets['mk']), len(sets['n']), len(sets['h'])]) - for i in range(len(sets['n'])): - values[0, i, :] = Load[sets['n'][i]] - values[1, i, :] = reserve_2U_tot[sets['n'][i]] - values[2, i, :] = reserve_2D_tot[sets['n'][i]] - - - parameters['Demand'] = {'sets': sets_param['Demand'], 'val': values} - - # Emission Rate: - parameters['EmissionRate']['val'][:, 0] = Plants_merged['EmissionRate'].values - - # Load Shedding: - for i, c in enumerate(sets['n']): - parameters['LoadShedding']['val'][i] = LoadShedding[c] * PeakLoad[c] - parameters['CostLoadShedding']['val'][i] = CostLoadShedding[c] - - # %%################################################################################################################################################################################################# - # Variable Cost - # Equivalence dictionary between fuel types and price entries in the config sheet: - FuelEntries = {'BIO':'PriceOfBiomass', 'GAS':'PriceOfGas', 'HRD':'PriceOfBlackCoal', 'LIG':'PriceOfLignite', 'NUC':'PriceOfNuclear', 'OIL':'PriceOfFuelOil', 'PEA':'PriceOfPeat'} - for unit in range(Nunits): - found = False - for FuelEntry in FuelEntries: - if Plants_merged['Fuel'][unit] == FuelEntry: - parameters['CostVariable']['val'][unit, :] = FuelPrices[FuelEntries[FuelEntry]] / Plants_merged['Efficiency'][unit] + \ - Plants_merged['EmissionRate'][unit] * FuelPrices['PriceOfCO2'] - found = True - # Special case for biomass plants, which are not included in EU ETS: - if Plants_merged['Fuel'][unit] == 'BIO': - parameters['CostVariable']['val'][unit, :] = FuelPrices['PriceOfBiomass'] / Plants_merged['Efficiency'][ - unit] - found = True - if not found: - logging.warning('No fuel price value has been found for fuel ' + Plants_merged['Fuel'][unit] + ' in unit ' + \ - Plants_merged['Unit'][unit] + '. A null variable cost has been assigned') - - # %%################################################################################################################################################################################################# - - # Maximum Line Capacity - for i, l in enumerate(sets['l']): - if l in NTCs.columns: - parameters['FlowMaximum']['val'][i, :] = NTCs[l] - if l in Inter_RoW.columns: - parameters['FlowMaximum']['val'][i, :] = Inter_RoW[l] - parameters['FlowMinimum']['val'][i, :] = Inter_RoW[l] - # Check values: - check_MinMaxFlows(parameters['FlowMinimum']['val'],parameters['FlowMaximum']['val']) - - parameters['LineNode'] = incidence_matrix(sets, 'l', parameters, 'LineNode') - - # Outage Factors - if len(Outages_merged.columns) != 0: - for i, u in enumerate(sets['u']): - if u in Outages_merged.columns: - parameters['OutageFactor']['val'][i, :] = Outages_merged[u].values - else: - logging.warning('Outages factors not found for unit ' + u + '. Assuming no outages') - - # Participation to the reserve market - values = np.array([s in config['ReserveParticipation'] for s in sets['t']], dtype='bool') - parameters['Reserve'] = {'sets': sets_param['Reserve'], 'val': values} - - # Technologies - for unit in range(Nunits): - idx = sets['t'].index(Plants_merged['Technology'][unit]) - parameters['Technology']['val'][unit, idx] = True - - # Fuels - for unit in range(Nunits): - idx = sets['f'].index(Plants_merged['Fuel'][unit]) - parameters['Fuel']['val'][unit, idx] = True - - # Location - for i in range(len(sets['n'])): - parameters['Location']['val'][:, i] = (Plants_merged['Zone'] == config['countries'][i]).values - - # CHPType parameter: - sets['chp_type'] = ['Extraction','Back-Pressure', 'P2H'] - parameters['CHPType'] = define_parameter(['chp','chp_type'],sets,value=0) - for i,u in enumerate(sets['chp']): - if u in Plants_chp.index: - if Plants_chp.loc[u,'CHPType'].lower() == 'extraction': - parameters['CHPType']['val'][i,0] = 1 - elif Plants_chp.loc[u,'CHPType'].lower() == 'back-pressure': - parameters['CHPType']['val'][i,1] = 1 - elif Plants_chp.loc[u,'CHPType'].lower() == 'p2h': - parameters['CHPType']['val'][i,2] = 1 - else: - logging.error('CHPType not valid for plant ' + u) - sys.exit(1) - - # Initial Power - if 'InitialPower' in Plants_merged: - parameters['PowerInitial']['val'] = Plants_merged['InitialPower'].values - else: - for i in range(Nunits): - # Nuclear and Fossil Gas greater than 350 MW are up (assumption): - if Plants_merged['Fuel'][i] in ['GAS', 'NUC'] and Plants_merged['PowerCapacity'][i] > 350: - parameters['PowerInitial']['val'][i] = (Plants_merged['PartLoadMin'][i] + 1) / 2 * \ - Plants_merged['PowerCapacity'][i] - # Config variables: - sets['x_config'] = ['FirstDay', 'LastDay', 'RollingHorizon Length', 'RollingHorizon LookAhead','ValueOfLostLoad','QuickStartShare','CostOfSpillage','WaterValue'] - sets['y_config'] = ['year', 'month', 'day', 'val'] - dd_begin = idx_long[4] - dd_end = idx_long[-2] - -#TODO: integrated the parameters (VOLL, Water value, etc) from the excel config file - values = np.array([ - [dd_begin.year, dd_begin.month, dd_begin.day, 0], - [dd_end.year, dd_end.month, dd_end.day, 0], - [0, 0, config['HorizonLength'], 0], - [0, 0, config['LookAhead'], 0], - [0, 0, 0, 1e5], # Value of lost load - [0, 0, 0, 0.5], # allowed Share of quick start units in reserve - [0, 0, 0, 1], # Cost of spillage (EUR/MWh) - [0, 0, 0, 100], # Value of water (for unsatisfied water reservoir levels, EUR/MWh) - ]) - parameters['Config'] = {'sets': ['x_config', 'y_config'], 'val': values} - - # %%################################################################################################################# - ###################################### Simulation Environment ################################################ - #################################################################################################################### - - # Output folder: - sim = config['SimulationDirectory'] - - # Simulation data: - SimData = {'sets': sets, 'parameters': parameters, 'config': config, 'units': Plants_merged, 'version': dispa_version} - - # list_vars = [] - gdx_out = "Inputs.gdx" - if config['WriteGDX']: - write_variables(config['GAMS_folder'], gdx_out, [sets, parameters]) - - # if the sim variable was not defined: - if 'sim' not in locals(): - logging.error('Please provide a path where to store the DispaSET inputs (in the "sim" variable)') - sys.exit(1) - - if not os.path.exists(sim): - os.makedirs(sim) - - def replace_text_by_dict(text, dic): - """Replace dictionary items in text - """ - - for i, j in dic.items(): - text = text.replace(i, j) - return text - - gams_file_changes = {'LP':LP, 'CEP':CEP} - changes_infile_string = {'LP': ('$setglobal LPFormulation 0','$setglobal LPFormulation 1'), 'CEP': ('$setglobal CEPFormulation 0', '$setglobal CEPFormulation 1')} - gams_file_changes_list = {changes_infile_string[k][0]: changes_infile_string[k][1] for k,v in gams_file_changes.items() if v == True} #filter based on selection - if len(gams_file_changes_list)>0: - fin = open(os.path.join(GMS_FOLDER, 'UCM_h.gms')) - fout = open(os.path.join(sim,'UCM_h.gms'), "wt") - for line in fin: - fout.write(replace_text_by_dict(line, gams_file_changes_list)) - fin.close() - fout.close() - else: - shutil.copyfile(os.path.join(GMS_FOLDER, 'UCM_h.gms'), - os.path.join(sim, 'UCM_h.gms')) - - if CEP: - shutil.copyfile(os.path.join(GMS_FOLDER, 'UCM_CAP.gms'), - os.path.join(sim, 'UCM_CAP.gms')) - - gmsfile = open(os.path.join(sim, 'UCM.gpr'), 'w') - gmsfile.write( - '[PROJECT] \n \n[RP:UCM_H] \n1= \n[OPENWINDOW_1] \nFILE0=UCM_h.gms \nFILE1=UCM_h.gms \nMAXIM=1 \nTOP=50 \nLEFT=50 \nHEIGHT=400 \nWIDTH=400') - gmsfile.close() - shutil.copyfile(os.path.join(GMS_FOLDER, 'writeresults.gms'), - os.path.join(sim, 'writeresults.gms')) - # Create cplex option file - cplex_options = {'epgap': 0.05, # TODO: For the moment hardcoded, it has to be moved to a config file - 'numericalemphasis': 0, - 'scaind': 1, - 'lpmethod': 0, - 'relaxfixedinfeas': 0, - 'mipstart':1, - 'epint':0} - - lines_to_write = ['{} {}'.format(k, v) for k, v in cplex_options.items()] - with open(os.path.join(sim, 'cplex.opt'), 'w') as f: - for line in lines_to_write: - f.write(line + '\n') - - logging.debug('Using gams file from ' + GMS_FOLDER) - if config['WriteGDX']: - shutil.copy(gdx_out, sim + '/') - os.remove(gdx_out) - # Copy bat file to generate gdx file directly from excel: - shutil.copy(os.path.join(GMS_FOLDER, 'makeGDX.bat'), - os.path.join(sim, 'makeGDX.bat')) - - if config['WriteExcel']: - write_to_excel(sim, [sets, parameters]) - - if config['WritePickle']: - try: - import cPickle as pickle - except ImportError: - import pickle - with open(os.path.join(sim, 'Inputs.p'), 'wb') as pfile: - pickle.dump(SimData, pfile, protocol=pickle.HIGHEST_PROTOCOL) - logging.info('Build finished') - - if os.path.isfile(commons['logfile']): - shutil.copy(commons['logfile'], os.path.join(sim, 'warn_preprocessing.log')) - - - return SimData - -def adjust_capacity(inputs,tech_fuel,scaling=1,value=None,singleunit=False,write_gdx=False,dest_path=''): - ''' - Function used to modify the installed capacities in the Dispa-SET generated input data - The function update the Inputs.p file in the simulation directory at each call - - :param inputs: Input data dictionary OR path to the simulation directory containing Inputs.p - :param tech_fuel: tuple with the technology and fuel type for which the capacity should be modified - :param scaling: Scaling factor to be applied to the installed capacity - :param value: Absolute value of the desired capacity (! Applied only if scaling != 1 !) - :param singleunit: Set to true if the technology should remain lumped in a single unit - :param write_gdx: boolean defining if Inputs.gdx should be also overwritten with the new data - :param dest_path: Simulation environment path to write the new input data. If unspecified, no data is written! - :return: New SimData dictionary - ''' - import pickle - - if isinstance(inputs,str) or isinstance(inputs,unicode): - path = inputs - inputfile = path + '/Inputs.p' - if not os.path.exists(path): - sys.exit('Path + "' + path + '" not found') - with open(inputfile, 'rb') as f: - SimData = pickle.load(f) - elif isinstance(inputs,dict): - SimData = inputs - path = SimData['config']['SimulationDirectory'] - else: - logging.error('The input data must be either a dictionary or string containing a valid directory') - sys.exit(1) - - if not isinstance(tech_fuel,tuple): - sys.exit('tech_fuel must be a tuple') - - # find the units to be scaled: - cond = (SimData['units']['Technology'] == tech_fuel[0]) & (SimData['units']['Fuel'] == tech_fuel[1]) - units = SimData['units'][cond] - idx = pd.Series(np.where(cond)[0],index=units.index) - TotalCapacity = (units.PowerCapacity*units.Nunits).sum() - if scaling != 1: - RequiredCapacity = TotalCapacity*scaling - elif value is not None: - RequiredCapacity = value - else: - RequiredCapacity = TotalCapacity - if singleunit: - Nunits_new = pd.Series(1,index=units.index) - else: - Nunits_new = (units.Nunits * RequiredCapacity/TotalCapacity).round() - Nunits_new[Nunits_new < 1] = 1 - Cap_new = units.PowerCapacity * RequiredCapacity/(units.PowerCapacity*Nunits_new).sum() - for u in units.index: - logging.info('Unit ' + u +':') - logging.info(' PowerCapacity: ' + str(SimData['units'].PowerCapacity[u]) + ' --> ' + str(Cap_new[u])) - logging.info(' Nunits: ' + str(SimData['units'].Nunits[u]) + ' --> ' + str(Nunits_new[u])) - factor = Cap_new[u]/SimData['units'].PowerCapacity[u] - SimData['parameters']['PowerCapacity']['val'][idx[u]] = Cap_new[u] - SimData['parameters']['Nunits']['val'][idx[u]] = Nunits_new[u] - SimData['units'].loc[u,'PowerCapacity'] = Cap_new[u] - SimData['units'].loc[u,'Nunits'] = Nunits_new[u] - for col in ['CostStartUp', 'NoLoadCost','StorageCapacity','StorageChargingCapacity']: - SimData['units'].loc[u,col] = SimData['units'].loc[u,col] * factor - for param in ['CostShutDown','CostStartUp','PowerInitial','RampDownMaximum','RampShutDownMaximum','RampStartUpMaximum','RampUpMaximum','StorageCapacity']: - SimData['parameters'][param]['val'][idx[u]] = SimData['parameters'][param]['val'][idx[u]]*factor - for param in ['StorageChargingCapacity']: - # find index, if any: - idx_s = np.where(np.array(SimData['sets']['s']) == u)[0] - if len(idx_s) == 1: - idx_s = idx_s[0] - SimData['parameters'][param]['val'][idx_s] = SimData['parameters'][param]['val'][idx_s]*factor - if dest_path == '': - logging.info('Not writing any input data to the disk') - else: - if not os.path.isdir(dest_path): - shutil.copytree(path,dest_path) - logging.info('Created simulation environment directory ' + dest_path) - logging.info('Writing input files to ' + dest_path) - with open(os.path.join(dest_path, 'Inputs.p'), 'wb') as pfile: - pickle.dump(SimData, pfile, protocol=pickle.HIGHEST_PROTOCOL) - if write_gdx: - write_variables(SimData['config']['GAMS_folder'], 'Inputs.gdx', [SimData['sets'], SimData['parameters']]) - shutil.copy('Inputs.gdx', dest_path + '/') - os.remove('Inputs.gdx') - return SimData - - -def adjust_storage(inputs,tech_fuel,scaling=1,value=None,write_gdx=False,dest_path=''): - ''' - Function used to modify the storage capacities in the Dispa-SET generated input data - The function update the Inputs.p file in the simulation directory at each call - - :param inputs: Input data dictionary OR path to the simulation directory containing Inputs.p - :param tech_fuel: tuple with the technology and fuel type for which the capacity should be modified - :param scaling: Scaling factor to be applied to the installed capacity - :param value: Absolute value of the desired capacity (! Applied only if scaling != 1 !) - :param write_gdx: boolean defining if Inputs.gdx should be also overwritten with the new data - :param dest_path: Simulation environment path to write the new input data. If unspecified, no data is written! - :return: New SimData dictionary - ''' - import pickle - - if isinstance(inputs,str) or isinstance(inputs,unicode): - path = inputs - inputfile = path + '/Inputs.p' - if not os.path.exists(path): - sys.exit('Path + "' + path + '" not found') - with open(inputfile, 'rb') as f: - SimData = pickle.load(f) - elif isinstance(inputs,dict): - SimData = inputs - else: - logging.error('The input data must be either a dictionary or string containing a valid directory') - sys.exit(1) - - if not isinstance(tech_fuel,tuple): - sys.exit('tech_fuel must be a tuple') - - # find the units to be scaled: - cond = (SimData['units']['Technology'] == tech_fuel[0]) & (SimData['units']['Fuel'] == tech_fuel[1]) & (SimData['units']['StorageCapacity'] > 0) - units = SimData['units'][cond] - idx = pd.Series(np.where(cond)[0],index=units.index) - TotalCapacity = (units.StorageCapacity*units.Nunits).sum() - if scaling != 1: - RequiredCapacity = TotalCapacity*scaling - elif value is not None: - RequiredCapacity = value - else: - RequiredCapacity = TotalCapacity - factor = RequiredCapacity/TotalCapacity - for u in units.index: - logging.info('Unit ' + u +':') - logging.info(' StorageCapacity: ' + str(SimData['units'].StorageCapacity[u]) + ' --> ' + str(SimData['units'].StorageCapacity[u]*factor)) - SimData['units'].loc[u,'StorageCapacity'] = SimData['units'].loc[u,'StorageCapacity']*factor - SimData['parameters']['StorageCapacity']['val'][idx[u]] = SimData['parameters']['StorageCapacity']['val'][idx[u]]*factor - - if dest_path == '': - logging.info('Not writing any input data to the disk') - else: - if not os.path.isdir(dest_path): - shutil.copytree(path,dest_path) - logging.info('Created simulation environment directory ' + dest_path) - logging.info('Writing input files to ' + dest_path) - import cPickle - with open(os.path.join(dest_path, 'Inputs.p'), 'wb') as pfile: - cPickle.dump(SimData, pfile, protocol=cPickle.HIGHEST_PROTOCOL) - if write_gdx: - write_variables(SimData['config']['GAMS_folder'], 'Inputs.gdx', [SimData['sets'], SimData['parameters']]) - shutil.copy('Inputs.gdx', dest_path + '/') - os.remove('Inputs.gdx') - return SimData - - - - +# -*- coding: utf-8 -*- +""" +This is the main file of the DispaSET pre-processing tool. It comprises a single function that generated the DispaSET simulation environment. + +@author: S. Quoilin, edited by M. Zech +""" + +#todo check indices + +import datetime as dt +import logging +import os +import shutil +import sys + +import numpy as np +import pandas as pd +try: + from future.builtins import int +except ImportError: + logging.warning("Couldn't import future package. Numeric operations may differ among different versions due to incompatible variable types") + pass + +from .data_check import check_units, check_chp, check_sto, check_heat_demand, check_df, isStorage, check_MinMaxFlows,check_AvailabilityFactors, check_clustering +from .utils import clustering, interconnections, incidence_matrix +from .data_handler import UnitBasedTable,NodeBasedTable,merge_series, \ + define_parameter, write_to_excel, load_csv, load_config_excel, load_config_yaml +from ..misc.gdx_handler import write_variables +from ..common import commons # Load fuel types, technologies, timestep, etc: +from .data_loader import DataLoader + + +GMS_FOLDER = os.path.join(os.path.dirname(__file__), '..', 'GAMS') + +def build_simulation(config): + '''The main function for building the optimization problem''' + + _define_default_values(config) + config['SimulationType'] == 'LP' or config['SimulationType'] == 'LP clustered' + data = DataLoader(config) + + idx_utc, idx_utc_noloc, idx_utc_year_noloc = get_indices(config) + enddate_long = idx_utc_noloc[-1] + dt.timedelta(days=config['LookAhead']) + idx_long = pd.DatetimeIndex(pd.date_range(start=idx_utc_noloc[0], end=enddate_long, freq=commons['TimeStep'])) + sets = load_sets( + Nhours_long = len(idx_long), + look_ahead = data.config['LookAhead'], + plants_index = data.Plants_merged.index.tolist(), + plants_sto_index = data.plants_sto.index.tolist(), + Plants_chp_index = data.plants_chp.index.tolist(), + countries = data.config['countries'], + Interconnections = data.Interconnections, + plants_uc = data.plants_expanded.index.tolist() + ) + + sets_param = load_params() # the parameters with their formal structure without data + time_range = (idx_utc[-1] - idx_utc[0]).days + sim = config['SimulationDirectory'] + dispa_version = str(get_git_revision_tag()) + SimData = {'sets': sets, 'parameters': sets_param, 'config': config, 'units': data.Plants_merged, 'version': dispa_version} + + parameters = build_model_parameters(config, sets, sets_param, data, idx_long) + build_sim_dir(config, sim, sets, parameters, SimData) + return SimData + + +def get_git_revision_tag(): + '''Get version of DispaSET used for this run. tag + commit hash''' + from subprocess import check_output + + try: + return check_output(["git", "describe", "--tags", "--always"]).strip() + except: + return 'NA' + + +def get_indices(config): + '''Gets all relevant indices for the model simulation''' + # Indexes of the simulation: + idx_std = pd.DatetimeIndex(pd.date_range(start=pd.datetime(*config['StartDate']), + end=pd.datetime(*config['StopDate']), + freq=commons['TimeStep']) + ) #todo check brackets on master + + idx_utc_noloc = idx_std - dt.timedelta(hours=1) + idx_utc = idx_utc_noloc.tz_localize('UTC') + # Indexes for the whole year considered in StartDate + idx_utc_year_noloc = pd.DatetimeIndex(pd.date_range(start=pd.datetime(*(config['StartDate'][0],1,1,0,0)), + end=pd.datetime(*(config['StartDate'][0],12,31,23,59,59)), + freq=commons['TimeStep']) + ) + return idx_utc, idx_utc_noloc, idx_utc_year_noloc + +def _define_default_values(config): + if not isinstance(config['default']['CostLoadShedding'], (float, int)): + config['default']['CostLoadShedding'] = 1000 + if not isinstance(config['default']['CostHeatSlack'], (float, int)): + config['default']['CostHeatSlack'] = 50 + + +def build_model_parameters(config, sets, sets_param, data, idx_long): + '''Prepares the model parameters based on indices, and the data''' # todo better naming + parameters = dict() + #plants = self.data.plants + Plants_merged = data.Plants_merged + Plants_sto = data.plants_sto + Plants_chp = data.plants_chp + ReservoirLevels = data.ReservoirLevels + + # Define all the parameters and set a default value of zero: + for var in sets_param: + parameters[var] = define_parameter(sets_param[var], sets, value=0) + + for var in ["Investment", "EconomicLifetime"]: + parameters[var] = define_parameter(sets_param[var], sets, value=0) + expanded_plants = data.plants_expanded.index + parameters[var]["val"] = Plants_merged.loc[expanded_plants, var].values + + # Plants_merged['FixedCost'] = pd.merge(Plants_merged, self.data.all_cost, how='left', on=['Fuel', 'Technology'])['FixedCost'].values + for var in ["CostFixed"]: + sets_param[var] = ['u'] + parameters[var] = define_parameter(sets_param[var], sets, value=0) + parameters[var]["val"] = Plants_merged['FixedCost'].values + + Nunits = len(Plants_merged) + + # List of parameters whose default value is 1 + for var in ['AvailabilityFactor', 'Efficiency', 'Curtailment', 'StorageChargingEfficiency', + 'StorageDischargeEfficiency', 'Nunits']: + parameters[var] = define_parameter(sets_param[var], sets, value=1) + + # List of parameters whose default value is very high + for var in ['RampUpMaximum', 'RampDownMaximum', 'RampStartUpMaximum', 'RampShutDownMaximum', + 'EmissionMaximum']: + parameters[var] = define_parameter(sets_param[var], sets, value=1e7) + + # Boolean parameters: + for var in ['Technology', 'Fuel', 'Reserve', 'Location']: + parameters[var] = define_parameter(sets_param[var], sets, value='bool') + + # List of parameters whose value is known, and provided in the dataframe Plants_merged. + for var in ['Efficiency', 'PowerCapacity', 'PartLoadMin', 'TimeUpMinimum', 'TimeDownMinimum', 'CostStartUp', + 'CostRampUp','StorageCapacity', 'StorageSelfDischarge']: + parameters[var]['val'] = Plants_merged[var].values + + # List of parameters whose value is not necessarily specified in the dataframe Plants_merged + for var in ['Nunits']: + if var in Plants_merged: + parameters[var]['val'] = Plants_merged[var].values + + + # List of parameters whose value is known, and provided in the dataframe Plants_sto. + for var in ['StorageChargingCapacity', 'StorageChargingEfficiency']: + parameters[var]['val'] = Plants_sto[var].values + + # The storage discharge efficiency is actually given by the unit efficiency: + parameters['StorageDischargeEfficiency']['val'] = Plants_sto['Efficiency'].values + + # List of parameters whose value is known, and provided in the dataframe Plants_chp + for var in ['CHPPowerToHeat','CHPPowerLossFactor', 'CHPMaxHeat']: + parameters[var]['val'] = Plants_chp[var].values + + # Storage profile and initial state: + for i, s in enumerate(sets['s']): + if s in ReservoirLevels: + # get the time + parameters['StorageInitial']['val'][i] = ReservoirLevels[s][idx_long[0]] * \ + Plants_sto['StorageCapacity'][s] * Plants_sto['Nunits'][s] + parameters['StorageProfile']['val'][i, :] = ReservoirLevels[s][idx_long].values + if any(ReservoirLevels[s] > 1): + logging.warning(s + ': The reservoir level is sometimes higher than its capacity!') + else: + logging.warning('Could not find reservoir level data for storage plant ' + s + '. Assuming 50% of capacity') + parameters['StorageInitial']['val'][i] = 0.5 * Plants_sto['StorageCapacity'][s] + parameters['StorageProfile']['val'][i, :] = 0.5 + + # Storage Inflows: + for i, s in enumerate(sets['s']): + if s in data.ReservoirScaledInflows: + parameters['StorageInflow']['val'][i, :] = data.ReservoirScaledInflows[s][idx_long].values * \ + Plants_sto['PowerCapacity'][s] + # CHP time series: + for i, u in enumerate(sets['chp']): + if u in data.HeatDemand: + parameters['HeatDemand']['val'][i, :] = data.HeatDemand[u][idx_long].values + parameters['CostHeatSlack']['val'][i, :] = data.CostHeatSlack[u][idx_long].values + + # Ramping rates are reconstructed for the non dimensional value provided (start-up and normal ramping are not differentiated) + parameters['RampUpMaximum']['val'] = Plants_merged['RampUpRate'].values * Plants_merged['PowerCapacity'].values * 60 + parameters['RampDownMaximum']['val'] = Plants_merged['RampDownRate'].values * Plants_merged[ + 'PowerCapacity'].values * 60 + parameters['RampStartUpMaximum']['val'] = Plants_merged['RampUpRate'].values * Plants_merged[ + 'PowerCapacity'].values * 60 + parameters['RampShutDownMaximum']['val'] = Plants_merged['RampDownRate'].values * Plants_merged[ + 'PowerCapacity'].values * 60 + + # If Curtailment is not allowed, set to 0: + if config['AllowCurtailment'] == 0: + parameters['Curtailment'] = define_parameter(sets_param['Curtailment'], sets, value=0) + + # Availability Factors + if len(data.AF.columns) != 0: + for i, u in enumerate(sets['u']): + if u in data.AF.columns: + parameters['AvailabilityFactor']['val'][i, :] = data.AF[u].values + + # Demand + # Dayahead['NL'][1800:1896] = Dayahead['NL'][1632:1728] + reserve_2U_tot = {i: (np.sqrt(10 * data.PeakLoad[i] + 150 ** 2) - 150) for i in data.Load.columns} + reserve_2D_tot = {i: (0.5 * reserve_2U_tot[i]) for i in data.Load.columns} + + values = np.ndarray([len(sets['mk']), len(sets['n']), len(sets['h'])]) + for i in range(len(sets['n'])): + values[0, i, :] = data.Load[sets['n'][i]] + values[1, i, :] = reserve_2U_tot[sets['n'][i]] + values[2, i, :] = reserve_2D_tot[sets['n'][i]] + + parameters['Demand'] = {'sets': sets_param['Demand'], 'val': values} + # Emission Rate: + parameters['EmissionRate']['val'][:, 0] = Plants_merged['EmissionRate'].values + + # Load Shedding: + for i, c in enumerate(sets['n']): + parameters['LoadShedding']['val'][i] = data.LoadShedding[c] * data.PeakLoad[c] + parameters['CostLoadShedding']['val'][i] = data.CostLoadShedding[c] + + # %%################################################################################################################################################################################################# + # Variable Cost + # Equivalence dictionary between fuel types and price entries in the config sheet: + FuelEntries = {'BIO':'PriceOfBiomass', 'GAS':'PriceOfGas', 'HRD':'PriceOfBlackCoal', 'LIG':'PriceOfLignite', 'NUC':'PriceOfNuclear', 'OIL':'PriceOfFuelOil', 'PEA':'PriceOfPeat'} + for unit in range(Nunits): + found = False + for FuelEntry in FuelEntries: + if Plants_merged['Fuel'][unit] == FuelEntry: + parameters['CostVariable']['val'][unit, :] = data.FuelPrices[FuelEntries[FuelEntry]] / Plants_merged['Efficiency'][unit] + \ + Plants_merged['EmissionRate'][unit] * data.FuelPrices['PriceOfCO2'] + found = True + # Special case for biomass plants, which are not included in EU ETS: + if Plants_merged['Fuel'][unit] == 'BIO': + parameters['CostVariable']['val'][unit, :] = data.FuelPrices['PriceOfBiomass'] / Plants_merged['Efficiency'][ + unit] + found = True + if not found: + logging.warning('No fuel price value has been found for fuel ' + Plants_merged['Fuel'][unit] + ' in unit ' + \ + Plants_merged['Unit'][unit] + '. A null variable cost has been assigned') + + # %%################################################################################################################################################################################################# + + # Maximum Line Capacity + for i, l in enumerate(sets['l']): + if l in data.NTCs.columns: + parameters['FlowMaximum']['val'][i, :] = data.NTCs[l] + if l in data.Inter_RoW.columns: + parameters['FlowMaximum']['val'][i, :] = data.Inter_RoW[l] + parameters['FlowMinimum']['val'][i, :] = data.Inter_RoW[l] + # Check values: + check_MinMaxFlows(parameters['FlowMinimum']['val'], parameters['FlowMaximum']['val']) + parameters['LineNode'] = incidence_matrix(sets, 'l', parameters, 'LineNode') + + # Outage Factors + if len(data.Outages.columns) != 0: + for i, u in enumerate(sets['u']): + if u in data.Outages.columns: + parameters['OutageFactor']['val'][i, :] = data.Outages[u].values + else: + logging.warning('Outages factors not found for unit ' + u + '. Assuming no outages') + + # Participation to the reserve market + values = np.array([s in config['ReserveParticipation'] for s in sets['t']], dtype='bool') + parameters['Reserve'] = {'sets': sets_param['Reserve'], 'val': values} + + # Technologies + for unit in range(Nunits): + idx = sets['t'].index(Plants_merged['Technology'][unit]) + parameters['Technology']['val'][unit, idx] = True + + # Fuels + for unit in range(Nunits): + idx = sets['f'].index(Plants_merged['Fuel'][unit]) + parameters['Fuel']['val'][unit, idx] = True + + # Location + for i in range(len(sets['n'])): + parameters['Location']['val'][:, i] = (Plants_merged['Zone'] == config['countries'][i]).values + + # CHPType parameter: + sets['chp_type'] = ['Extraction','Back-Pressure', 'P2H'] + parameters['CHPType'] = define_parameter(['chp','chp_type'],sets,value=0) + for i,u in enumerate(sets['chp']): + if u in Plants_chp.index: + if Plants_chp.loc[u,'CHPType'].lower() == 'extraction': + parameters['CHPType']['val'][i,0] = 1 + elif Plants_chp.loc[u,'CHPType'].lower() == 'back-pressure': + parameters['CHPType']['val'][i,1] = 1 + elif Plants_chp.loc[u,'CHPType'].lower() == 'p2h': + parameters['CHPType']['val'][i,2] = 1 + else: + logging.error('CHPType not valid for plant ' + u) + sys.exit(1) + + # Initial Power + if 'InitialPower' in Plants_merged: + parameters['PowerInitial']['val'] = Plants_merged['InitialPower'].values + else: + for i in range(Nunits): + # Nuclear and Fossil Gas greater than 350 MW are up (assumption): + if Plants_merged['Fuel'][i] in ['GAS', 'NUC'] and Plants_merged['PowerCapacity'][i] > 350: + parameters['PowerInitial']['val'][i] = (Plants_merged['PartLoadMin'][i] + 1) / 2 * \ + Plants_merged['PowerCapacity'][i] + # Config variables: + sets['x_config'] = ['FirstDay', 'LastDay', 'RollingHorizon Length', 'RollingHorizon LookAhead','ValueOfLostLoad','QuickStartShare','CostOfSpillage','WaterValue'] + sets['y_config'] = ['year', 'month', 'day', 'val'] + dd_begin = idx_long[4] + dd_end = idx_long[-2] + +#TODO: integrated the parameters (VOLL, Water value, etc) from the excel config file + values = np.array([ + [dd_begin.year, dd_begin.month, dd_begin.day, 0], + [dd_end.year, dd_end.month, dd_end.day, 0], + [0, 0, config['HorizonLength'], 0], + [0, 0, config['LookAhead'], 0], + [0, 0, 0, 1e5], # Value of lost load + [0, 0, 0, 0.5], # allowed Share of quick start units in reserve + [0, 0, 0, 1], # Cost of spillage (EUR/MWh) + [0, 0, 0, 100], # Value of water (for unsatisfied water reservoir levels, EUR/MWh) + ]) + parameters['Config'] = {'sets': ['x_config', 'y_config'], 'val': values} + return parameters + +def build_sim_dir(config, sim, sets, parameters, SimData): + + LP = config['SimulationType'] == 'LP' or config['SimulationType'] == 'LP clustered' + CEP = config['CEP'] == 1 + gdx_out = "Inputs.gdx" + + + if config['WriteGDX']: + write_variables(config['GAMS_folder'], gdx_out, [sets, parameters]) + + # if the sim variable was not defined: + if 'sim' not in locals(): + logging.error('Please provide a path where to store the DispaSET inputs (in the "sim" variable)') + sys.exit(1) + + if not os.path.exists(sim): + os.makedirs(sim) + + def replace_text_by_dict(text, dic): + '''Replace dictionary items in text''' + for i, j in dic.items(): + text = text.replace(i, j) + return text + + + gams_file_changes = {'LP':LP, 'CEP':CEP} + changes_infile_string = {'LP': ('$setglobal LPFormulation 0','$setglobal LPFormulation 1'), 'CEP': ('$setglobal CEPFormulation 0', '$setglobal CEPFormulation 1')} + gams_file_changes_list = {changes_infile_string[k][0]: changes_infile_string[k][1] for k,v in gams_file_changes.items() if v == True} #filter based on selection + if len(gams_file_changes_list)>0: + fin = open(os.path.join(GMS_FOLDER, 'UCM_h.gms')) + fout = open(os.path.join(sim,'UCM_h.gms'), "wt") + for line in fin: + fout.write(replace_text_by_dict(line, gams_file_changes_list)) + fin.close() + fout.close() + else: + shutil.copyfile(os.path.join(GMS_FOLDER, 'UCM_h.gms'), + os.path.join(sim, 'UCM_h.gms')) + + gmsfile = open(os.path.join(sim, 'UCM.gpr'), 'w') + gmsfile.write( + '[PROJECT] \n \n[RP:UCM_H] \n1= \n[OPENWINDOW_1] \nFILE0=UCM_h.gms \nFILE1=UCM_h.gms \nMAXIM=1 \nTOP=50 \nLEFT=50 \nHEIGHT=400 \nWIDTH=400') + gmsfile.close() + shutil.copyfile(os.path.join(GMS_FOLDER, 'writeresults.gms'), + os.path.join(sim, 'writeresults.gms')) + # Create cplex option file + cplex_options = {'epgap': 0.05, # TODO: For the moment hardcoded, it has to be moved to a config file + 'numericalemphasis': 0, + 'scaind': 1, + 'lpmethod': 0, + 'relaxfixedinfeas': 0, + 'mipstart':1, + 'epint':0} + + lines_to_write = ['{} {}'.format(k, v) for k, v in cplex_options.items()] + with open(os.path.join(sim, 'cplex.opt'), 'w') as f: + for line in lines_to_write: + f.write(line + '\n') + + logging.debug('Using gams file from ' + GMS_FOLDER) + if config['WriteGDX']: + shutil.copy(gdx_out, sim + '/') + os.remove(gdx_out) + # Copy bat file to generate gdx file directly from excel: + shutil.copy(os.path.join(GMS_FOLDER, 'makeGDX.bat'), + os.path.join(sim, 'makeGDX.bat')) + + if config['WriteExcel']: + write_to_excel(sim, [sets, parameters]) + + if config['WritePickle']: + try: + import cPickle as pickle + except ImportError: + import pickle + with open(os.path.join(sim, 'Inputs.p'), 'wb') as pfile: + pickle.dump(SimData, pfile, protocol=pickle.HIGHEST_PROTOCOL) + logging.info('Build finished') + + if os.path.isfile(commons['logfile']): + shutil.copy(commons['logfile'], os.path.join(sim, 'warn_preprocessing.log')) + + +def load_sets(Nhours_long, look_ahead, plants_index, plants_sto_index, Plants_chp_index, countries, Interconnections, plants_uc=None): + '''Build the sets/indices''' + plants_ue = [plant for plant in plants_index if plant not in plants_uc] + sets = { + 'h': [str(x + 1) for x in range(Nhours_long)], + 'z': [str(x + 1) for x in range(Nhours_long - look_ahead * 24)], + 'mk': ['DA', '2U', '2D'], + 'n': countries, + 'u': plants_index, + 'l': Interconnections, + 'f': commons['Fuels'], + 'p': ['CO2'], + 's': plants_sto_index, + 'chp': Plants_chp_index, + 't': commons['Technologies'], + 'tr': commons['tech_renewables'], + 'uc': plants_uc, + 'ue': plants_ue + } + + return sets + +def load_params(): + '''Load all parameters''' + sets_param = { + 'AvailabilityFactor': ['u', 'h'], + 'CHPPowerToHeat': ['chp'], + 'CHPPowerLossFactor': ['chp'], + 'CHPMaxHeat': ['chp'], + 'CostFixed': ['u'], + 'CostHeatSlack': ['chp', 'h'], + 'CostLoadShedding': ['n', 'h'], + 'CostRampUp': ['u'], + 'CostRampDown': ['u'], + 'CostShutDown': ['u'], + 'CostStartUp': ['u'], + 'CostVariable': ['u', 'h'], + 'Curtailment': ['n'], + 'Demand': ['mk', 'n', 'h'], + 'Efficiency': ['u'], + 'EmissionMaximum': ['n', 'p'], + 'EmissionRate': ['u', 'p'], + 'FlowMaximum': ['l', 'h'], + 'FlowMinimum': ['l', 'h'], + 'Fuel': ['u', 'f'], + 'HeatDemand': ['chp', 'h'], + 'Investment': ['uc'], + 'EconomicLifetime': ['uc'], + 'LineNode': ['l', 'n'], + 'LoadShedding': ['n', 'h'], + 'Location': ['u', 'n'], + 'Markup': ['u', 'h'], + 'Nunits': ['u'], + 'OutageFactor': ['u', 'h'], + 'PartLoadMin': ['u'], + 'PowerCapacity': ['u'], + 'PowerInitial': ['u'], + 'PriceTransmission': ['l', 'h'], + 'RampUpMaximum': ['u'], + 'RampDownMaximum': ['u'], + 'RampStartUpMaximum': ['u'], + 'RampShutDownMaximum': ['u'], + 'Reserve': ['t'], + 'StorageCapacity': ['u'], + 'StorageChargingCapacity': ['s'], + 'StorageChargingEfficiency': ['s'], + 'StorageDischargeEfficiency': ['s'], + 'StorageSelfDischarge': ['u'], + 'StorageInflow': ['s', 'h'], + 'StorageInitial': ['s'], + 'StorageMinimum': ['s'], + 'StorageOutflow': ['s', 'h'], + 'StorageProfile': ['s', 'h'], + 'Technology': ['u', 't'], + 'TimeUpMinimum': ['u'], + 'TimeDownMinimum': ['u'], + } + + return sets_param + + +def adjust_capacity(inputs,tech_fuel,scaling=1,value=None,singleunit=False,write_gdx=False,dest_path=''): + ''' + Function used to modify the installed capacities in the Dispa-SET generated input data + The function update the Inputs.p file in the simulation directory at each call + + :param inputs: Input data dictionary OR path to the simulation directory containing Inputs.p + :param tech_fuel: tuple with the technology and fuel type for which the capacity should be modified + :param scaling: Scaling factor to be applied to the installed capacity + :param value: Absolute value of the desired capacity (! Applied only if scaling != 1 !) + :param singleunit: Set to true if the technology should remain lumped in a single unit + :param write_gdx: boolean defining if Inputs.gdx should be also overwritten with the new data + :param dest_path: Simulation environment path to write the new input data. If unspecified, no data is written! + :return: New SimData dictionary + ''' + import pickle + + if isinstance(inputs,str) or isinstance(inputs,unicode): + path = inputs + inputfile = path + '/Inputs.p' + if not os.path.exists(path): + sys.exit('Path + "' + path + '" not found') + with open(inputfile, 'rb') as f: + SimData = pickle.load(f) + elif isinstance(inputs,dict): + SimData = inputs + path = SimData['config']['SimulationDirectory'] + else: + logging.error('The input data must be either a dictionary or string containing a valid directory') + sys.exit(1) + + if not isinstance(tech_fuel,tuple): + sys.exit('tech_fuel must be a tuple') + + # find the units to be scaled: + cond = (SimData['units']['Technology'] == tech_fuel[0]) & (SimData['units']['Fuel'] == tech_fuel[1]) + units = SimData['units'][cond] + idx = pd.Series(np.where(cond)[0],index=units.index) + TotalCapacity = (units.PowerCapacity*units.Nunits).sum() + if scaling != 1: + RequiredCapacity = TotalCapacity*scaling + elif value is not None: + RequiredCapacity = value + else: + RequiredCapacity = TotalCapacity + if singleunit: + Nunits_new = pd.Series(1,index=units.index) + else: + Nunits_new = (units.Nunits * RequiredCapacity/TotalCapacity).round() + Nunits_new[Nunits_new < 1] = 1 + Cap_new = units.PowerCapacity * RequiredCapacity/(units.PowerCapacity*Nunits_new).sum() + for u in units.index: + logging.info('Unit ' + u +':') + logging.info(' PowerCapacity: ' + str(SimData['units'].PowerCapacity[u]) + ' --> ' + str(Cap_new[u])) + logging.info(' Nunits: ' + str(SimData['units'].Nunits[u]) + ' --> ' + str(Nunits_new[u])) + factor = Cap_new[u]/SimData['units'].PowerCapacity[u] + SimData['parameters']['PowerCapacity']['val'][idx[u]] = Cap_new[u] + SimData['parameters']['Nunits']['val'][idx[u]] = Nunits_new[u] + SimData['units'].loc[u,'PowerCapacity'] = Cap_new[u] + SimData['units'].loc[u,'Nunits'] = Nunits_new[u] + for col in ['CostStartUp', 'NoLoadCost','StorageCapacity','StorageChargingCapacity']: + SimData['units'].loc[u,col] = SimData['units'].loc[u,col] * factor + for param in ['CostShutDown','CostStartUp','PowerInitial','RampDownMaximum','RampShutDownMaximum','RampStartUpMaximum','RampUpMaximum','StorageCapacity']: + SimData['parameters'][param]['val'][idx[u]] = SimData['parameters'][param]['val'][idx[u]]*factor + for param in ['StorageChargingCapacity']: + # find index, if any: + idx_s = np.where(np.array(SimData['sets']['s']) == u)[0] + if len(idx_s) == 1: + idx_s = idx_s[0] + SimData['parameters'][param]['val'][idx_s] = SimData['parameters'][param]['val'][idx_s]*factor + if dest_path == '': + logging.info('Not writing any input data to the disk') + else: + if not os.path.isdir(dest_path): + shutil.copytree(path,dest_path) + logging.info('Created simulation environment directory ' + dest_path) + logging.info('Writing input files to ' + dest_path) + with open(os.path.join(dest_path, 'Inputs.p'), 'wb') as pfile: + pickle.dump(SimData, pfile, protocol=pickle.HIGHEST_PROTOCOL) + if write_gdx: + write_variables(SimData['config']['GAMS_folder'], 'Inputs.gdx', [SimData['sets'], SimData['parameters']]) + shutil.copy('Inputs.gdx', dest_path + '/') + os.remove('Inputs.gdx') + return SimData + + +def adjust_storage(inputs,tech_fuel,scaling=1,value=None,write_gdx=False,dest_path=''): + ''' + Function used to modify the storage capacities in the Dispa-SET generated input data + The function update the Inputs.p file in the simulation directory at each call + + :param inputs: Input data dictionary OR path to the simulation directory containing Inputs.p + :param tech_fuel: tuple with the technology and fuel type for which the capacity should be modified + :param scaling: Scaling factor to be applied to the installed capacity + :param value: Absolute value of the desired capacity (! Applied only if scaling != 1 !) + :param write_gdx: boolean defining if Inputs.gdx should be also overwritten with the new data + :param dest_path: Simulation environment path to write the new input data. If unspecified, no data is written! + :return: New SimData dictionary + ''' + import pickle + + if isinstance(inputs,str) or isinstance(inputs,unicode): + path = inputs + inputfile = path + '/Inputs.p' + if not os.path.exists(path): + sys.exit('Path + "' + path + '" not found') + with open(inputfile, 'rb') as f: + SimData = pickle.load(f) + elif isinstance(inputs,dict): + SimData = inputs + else: + logging.error('The input data must be either a dictionary or string containing a valid directory') + sys.exit(1) + + if not isinstance(tech_fuel,tuple): + sys.exit('tech_fuel must be a tuple') + + # find the units to be scaled: + cond = (SimData['units']['Technology'] == tech_fuel[0]) & (SimData['units']['Fuel'] == tech_fuel[1]) & (SimData['units']['StorageCapacity'] > 0) + units = SimData['units'][cond] + idx = pd.Series(np.where(cond)[0],index=units.index) + TotalCapacity = (units.StorageCapacity*units.Nunits).sum() + if scaling != 1: + RequiredCapacity = TotalCapacity*scaling + elif value is not None: + RequiredCapacity = value + else: + RequiredCapacity = TotalCapacity + factor = RequiredCapacity/TotalCapacity + for u in units.index: + logging.info('Unit ' + u +':') + logging.info(' StorageCapacity: ' + str(SimData['units'].StorageCapacity[u]) + ' --> ' + str(SimData['units'].StorageCapacity[u]*factor)) + SimData['units'].loc[u,'StorageCapacity'] = SimData['units'].loc[u,'StorageCapacity']*factor + SimData['parameters']['StorageCapacity']['val'][idx[u]] = SimData['parameters']['StorageCapacity']['val'][idx[u]]*factor + + if dest_path == '': + logging.info('Not writing any input data to the disk') + else: + if not os.path.isdir(dest_path): + shutil.copytree(path,dest_path) + logging.info('Created simulation environment directory ' + dest_path) + logging.info('Writing input files to ' + dest_path) + import cPickle + with open(os.path.join(dest_path, 'Inputs.p'), 'wb') as pfile: + cPickle.dump(SimData, pfile, protocol=cPickle.HIGHEST_PROTOCOL) + if write_gdx: + write_variables(SimData['config']['GAMS_folder'], 'Inputs.gdx', [SimData['sets'], SimData['parameters']]) + shutil.copy('Inputs.gdx', dest_path + '/') + os.remove('Inputs.gdx') + return SimData diff --git a/dispaset/preprocessing/utils.py b/dispaset/preprocessing/utils.py old mode 100644 new mode 100755 index d12f2109..cdef839f --- a/dispaset/preprocessing/utils.py +++ b/dispaset/preprocessing/utils.py @@ -1,369 +1,385 @@ -""" -This file gathers different functions used in the DispaSET pre-processing tools - -@author: Sylvain Quoilin (sylvain.quoilin@ec.europa.eu) -""" - -from __future__ import division - -import logging -import sys - -import numpy as np -import pandas as pd - -from ..misc.str_handler import clean_strings, shrink_to_64 - - -def incidence_matrix(sets, set_used, parameters, param_used): - """ - This function generates the incidence matrix of the lines within the nodes - A particular case is considered for the node "Rest Of the World", which is no explicitely defined in DispaSET - """ - - for i in range(len(sets[set_used])): - [from_node, to_node] = sets[set_used][i].split('->') - if (from_node.strip() in sets['n']) and (to_node.strip() in sets['n']): - parameters[param_used]['val'][i, sets['n'].index(to_node.strip())] = 1 - parameters[param_used]['val'][i, sets['n'].index(from_node.strip())] = -1 - else: - logging.warning("The line " + str(sets[set_used][i]) + " contains unrecognized nodes") - return parameters[param_used] - - -def interconnections(Simulation_list, NTC_inter, Historical_flows): - """ - Function that checks for the possible interconnections of the countries included - in the simulation. If the interconnections occurs between two of the countries - defined by the user to perform the simulation with, it extracts the NTC between - those two countries. If the interconnection occurs between one of the countries - selected by the user and one country outside the simulation, it extracts the - physical flows; it does so for each pair (country inside-country outside) and - sums them together creating the interconnection of this country with the RoW. - - :param Simulation_list: List of simulated countries - :param NTC: Day-ahead net transfer capacities (pd dataframe) - :param Historical_flows: Historical flows (pd dataframe) - """ - index = NTC_inter.index.tz_localize(None).intersection(Historical_flows.index.tz_localize(None)) - if len(index)==0: - logging.error('The two input dataframes (NTCs and Historical flows) must have the same index. No common values have been found') - sys.exit(1) - elif len(index) < len(NTC_inter) or len(index) < len(Historical_flows): - diff = np.maximum(len(Historical_flows),len(NTC_inter)) - len(index) - logging.warning('The two input dataframes (NTCs and Historical flows) do not share the same index, although some values are common. The intersection has been considered and ' + str(diff) + ' data points have been lost') - # Checking that all values are positive: - if (NTC_inter.values < 0).any(): - pos = np.where(NTC_inter.values < 0) - logging.warning('WARNING: At least NTC value is negative, for example in line ' + str(NTC_inter.columns[pos[1][0]]) + ' and time step ' + str(NTC_inter.index[pos[0][0]])) - if (Historical_flows.values < 0).any(): - pos = np.where(Historical_flows.values < 0) - logging.warning('WARNING: At least one historical flow is negative, for example in line ' + str(Historical_flows.columns[pos[1][0]]) + ' and time step ' + str(Historical_flows.index[pos[0][0]])) - all_connections = [] - simulation_connections = [] - # List all connections from the dataframe headers: - ConList = Historical_flows.columns.tolist() + [x for x in NTC_inter.columns.tolist() if x not in Historical_flows.columns.tolist()] - for connection in ConList: - c = connection.split(' -> ') - if c[0] in Simulation_list: - all_connections.append(connection) - if c[1] in Simulation_list: - simulation_connections.append(connection) - elif c[1] in Simulation_list: - all_connections.append(connection) - - df_countries_simulated = pd.DataFrame(index=index) - for interconnection in simulation_connections: - if interconnection in NTC_inter.columns: - df_countries_simulated[interconnection] = NTC_inter[interconnection] - logging.info('Detected interconnection ' + interconnection + '. The historical NTCs will be imposed as maximum flow value') - interconnections1 = df_countries_simulated.columns - - # Display a warning if a country is isolated: - for c in Simulation_list: - if not any([c in conn for conn in interconnections1]) and len(Simulation_list)>1: - logging.warning('Zone ' + c + ' does not appear to be connected to any other zone in the NTC table. It should be simulated in isolation') - - df_RoW_temp = pd.DataFrame(index=index) - connNames = [] - for interconnection in all_connections: - if interconnection in Historical_flows.columns and interconnection not in simulation_connections: - df_RoW_temp[interconnection] = Historical_flows[interconnection] - connNames.append(interconnection) - - compare_set = set() - for k in connNames: - if not k[0:2] in compare_set and k[0:2] in Simulation_list: - compare_set.add(k[0:2]) - - df_countries_RoW = pd.DataFrame(index=index) - while compare_set: - nameToCompare = compare_set.pop() - exports = [] - imports = [] - for name in connNames: - if nameToCompare[0:2] in name[0:2]: - exports.append(connNames.index(name)) - logging.info('Detected interconnection ' + name + ', happening between a simulated zone and the rest of the world. The historical flows will be imposed to the model') - elif nameToCompare[0:2] in name[6:8]: - imports.append(connNames.index(name)) - logging.info('Detected interconnection ' + name + ', happening between the rest of the world and a simulated zone. The historical flows will be imposed to the model') - - flows_out = pd.concat(df_RoW_temp[connNames[exports[i]]] for i in range(len(exports))) - flows_out = flows_out.groupby(flows_out.index).sum() - flows_out.name = nameToCompare + ' -> RoW' - df_countries_RoW[nameToCompare + ' -> RoW'] = flows_out - flows_in = pd.concat(df_RoW_temp[connNames[imports[j]]] for j in range(len(imports))) - flows_in = flows_in.groupby(flows_in.index).sum() - flows_in.name = 'RoW -> ' + nameToCompare - df_countries_RoW['RoW -> ' + nameToCompare] = flows_in - interconnections2 = df_countries_RoW.columns - inter = list(interconnections1) + list(interconnections2) - return (df_countries_simulated, df_countries_RoW, inter) - - - -def clustering(plants, method='Standard', Nslices=20, PartLoadMax=0.1, Pmax=30): - """ - Merge excessively disaggregated power Units. - - :param plants: Pandas dataframe with each power plant and their characteristics (following the DispaSET format) - :param method: Select clustering method ('Standard'/'LP'/None) - :param Nslices: Number of slices used to fingerprint each power plant characteristics. slices in the power plant data to categorize them (fewer slices involves that the plants will be aggregated more easily) - :param PartLoadMax: Maximum part-load capability for the unit to be clustered - :param Pmax: Maximum power for the unit to be clustered - :return: A list with the merged plants and the mapping between the original and merged units - """ - - # Checking the the required columns are present in the input pandas dataframe: - required_inputs = ['Unit', 'PowerCapacity', 'PartLoadMin', 'RampUpRate', 'RampDownRate', 'StartUpTime', - 'MinUpTime', 'MinDownTime', 'NoLoadCost', 'StartUpCost', 'Efficiency'] - for input_value in required_inputs: - if input_value not in plants.columns: - logging.error("The plants dataframe requires a '" + input_value + "' column for clustering") - sys.exit(1) - if not "Nunits" in plants: - plants['Nunits'] = 1 - - # Checking the validity of the selected clustering method - OnlyOnes = (plants['Nunits'] == 1).all() - if method in ['Standard','MILP']: - if not OnlyOnes: - logging.warning("The standard (or MILP) clustering method is only applicable if all values of the Nunits column in the power plant data are set to one. At least one different value has been encountered. No clustering will be applied") - elif method == 'LP clustered': - if not OnlyOnes: - logging.warning("The LP clustering method aggregates all the units of the same type. Individual units are not considered") - # Modifying the table to remove multiple-units plants: - for key in ['PowerCapacity', 'STOCapacity', 'STOMaxChargingPower','InitialPower','CHPMaxHeat']: - if key in plants: - plants.loc[:,key] = plants.loc[:,'Nunits'] * plants.loc[:,key] - plants['Nunits'] = 1 - OnlyOnes = True - elif method == 'LP': - pass - elif method == 'Integer clustering': - pass - elif method == 'No clustering': - pass - else: - logging.error('Method argument ("' + str(method) + '") not recognized in the clustering function') - sys.exit(1) - - # Number of units: - Nunits = len(plants) - plants.index = range(Nunits) - - # Definition of the mapping variable, from the old power plant list the new (merged) one: - map_old_new = np.zeros(Nunits) - map_plant_orig = [] - - # Slicing: - bounds = {'PartLoadMin': np.linspace(0, 1, Nslices), 'RampUpRate': np.linspace(0, 1, Nslices), - 'RampDownRate': np.linspace(0, 1, Nslices), 'StartUpTime': _mylogspace(0, 36, Nslices), - 'MinUpTime': _mylogspace(0, 168, Nslices), 'MinDownTime': _mylogspace(0, 168, Nslices), - 'NoLoadCost': np.linspace(0, 50, Nslices), 'StartUpCost': np.linspace(0, 500, Nslices), - 'Efficiency': np.linspace(0, 1, Nslices)} - - # Definition of the fingerprint value of each power plant, i.e. the pattern of the slices number in which each of - # its characteristics falls: - fingerprints = [] - fingerprints_merged = [] - for i in plants.index: - fingerprints.append([_find_nearest(bounds['PartLoadMin'], plants['PartLoadMin'][i]), - _find_nearest(bounds['RampUpRate'], plants['RampUpRate'][i]), - _find_nearest(bounds['RampDownRate'], plants['RampDownRate'][i]), - _find_nearest(bounds['StartUpTime'], plants['StartUpTime'][i]), - _find_nearest(bounds['MinUpTime'], plants['MinUpTime'][i]), - _find_nearest(bounds['MinDownTime'], plants['MinDownTime'][i]), - _find_nearest(bounds['NoLoadCost'], plants['NoLoadCost'][i]), - _find_nearest(bounds['StartUpCost'], plants['StartUpCost'][i]), - _find_nearest(bounds['Efficiency'], plants['Efficiency'][i])]) - - # Definition of the merged power plants dataframe: - plants_merged = pd.DataFrame(columns=plants.columns) - - # Find the columns containing string values (in addition to "Unit") - # string_keys = [] - # for i in range(len(plants.columns)): - # if plants.columns[i] != 'Unit' and plants.dtypes[i] == np.dtype('O'): - # string_keys.append(plants.columns[i]) - string_keys = ['Zone', 'Technology', 'Fuel','CHPType'] - # First, fill nan values: - for key in string_keys: - plants[key].fillna('',inplace=True) - - for i in plants.index: # i is the plant to be added to the new list - merged = False - plants_string = plants[string_keys].iloc[i].fillna('') - for j in plants_merged.index: # j corresponds to the clustered plants - same_type = all(plants_string == plants_merged[string_keys].iloc[j].fillna('')) - same_fingerprint = (fingerprints[i] == fingerprints_merged[j]) - low_pmin = (plants['PartLoadMin'][i] <= PartLoadMax) - low_pmax = (plants['PowerCapacity'][i] <= Pmax) - highly_flexible = plants['RampUpRate'][i] > 1 / 60 and (plants['RampDownRate'][i] > 1 / 60) and ( - plants['StartUpTime'][i] < 1) and (plants['MinDownTime'][i] <= 1) and (plants['MinUpTime'][i] <= 1) - cluster = OnlyOnes and same_type and ((same_fingerprint and low_pmin) or highly_flexible or low_pmax) - if method in ('Standard','MILP') and cluster: # merge the two plants in plants_merged: - P_old = plants_merged['PowerCapacity'][j] # Old power in plants_merged - P_add = plants['PowerCapacity'][i] # Additional power to be added - for key in plants_merged: - if key in ['RampUpRate', 'RampDownRate', 'MinUpTime', 'MinDownTime', 'NoLoadCost', 'Efficiency', - 'MinEfficiency', 'STOChargingEfficiency', 'CO2Intensity', 'STOSelfDischarge','CHPPowerToHeat','CHPPowerLossFactor']: - # Do a weighted average: - plants_merged.loc[j, key] = (plants_merged[key][j] * P_old + plants[key][i] * P_add) / ( - P_add + P_old) - elif key in ['PowerCapacity', 'STOCapacity', 'STOMaxChargingPower','InitialPower','CHPMaxHeat']: - # Do a sum: - plants_merged.loc[j, key] = plants_merged[key][j] + plants[key][i] - elif key in ['PartLoadMin', 'StartUpTime']: - # Take the minimum - plants_merged.loc[j, key] = np.minimum(plants_merged[key][j] * P_old, - plants[key][i] * P_add) / (P_add + P_old) - elif key == 'RampingCost': - # The starting cost must be added to the ramping cost - Cost_to_fullload = P_add * (1 - plants['PartLoadMin'][i]) * plants['RampingCost'][i] + \ - plants['StartUpCost'][i] - plants_merged.loc[j, key] = (P_old * plants_merged[key][j] + Cost_to_fullload) / (P_old + P_add) - elif key == 'Nunits': - plants_merged.loc[j, key] = 1 - map_old_new[i] = j - map_plant_orig[j].append(i) - merged = True - break - elif method == 'LP clustered' and same_type and OnlyOnes: - P_old = plants_merged['PowerCapacity'][j] # Old power in plants_merged - P_add = plants['PowerCapacity'][i] # Additional power to be added - for key in plants_merged: - if key in ['RampUpRate', 'RampDownRate', 'MinUpTime', 'MinDownTime', 'NoLoadCost', 'Efficiency', - 'MinEfficiency', 'STOChargingEfficiency', 'CO2Intensity', 'STOSelfDischarge']: - # Do a weighted average: - plants_merged.loc[j, key] = (plants_merged[key][j] * P_old + plants[key][i] * P_add) / ( - P_add + P_old) - elif key in ['PowerCapacity', 'STOCapacity', 'STOMaxChargingPower','InitialPower','CHPMaxHeat']: - # Do a sum: - plants_merged.loc[j, key] = plants_merged[key][j] + plants[key][i] - elif key in ['PartLoadMin', 'StartUpTime']: - # impose 0 - plants_merged.loc[j, key] = 0 - elif key == 'RampingCost': - # The starting cost must be added to the ramping cost - Cost_to_fullload = P_add * (1 - plants['PartLoadMin'][i]) * plants['RampingCost'][i] + \ - plants['StartUpCost'][i] - plants_merged.loc[j, key] = (P_old * plants_merged[key][j] + Cost_to_fullload) / (P_old + P_add) - elif key == 'Nunits': - plants_merged.loc[j, key] = 1 - map_old_new[i] = j - map_plant_orig[j].append(i) - merged = True - break - elif method == 'Integer clustering' and same_type: - for key in plants_merged: - if key in ['PowerCapacity','RampUpRate', 'RampDownRate', 'MinUpTime', 'MinDownTime', 'NoLoadCost', 'Efficiency', - 'MinEfficiency', 'STOChargingEfficiency', 'CO2Intensity', 'STOSelfDischarge', - 'STOCapacity', 'STOMaxChargingPower','InitialPower','PartLoadMin', 'StartUpTime','RampingCost', - 'CHPPowerToHeat','CHPPowerLossFactor','CHPMaxHeat']: - # Do a weighted average: - plants_merged.loc[j, key] = (plants_merged.loc[j,key] * plants_merged.loc[j,'Nunits'] + plants.loc[i,key] * plants.loc[i,'Nunits']) / (plants_merged.loc[j,'Nunits'] + plants.loc[i,'Nunits']) - plants_merged.loc[j, 'Nunits'] = plants_merged.loc[j,'Nunits'] + plants.loc[i,'Nunits'] - - map_old_new[i] = j - map_plant_orig[j].append(i) - merged = True - break - - if not merged: # Add a new plant in plants_merged: - plants_merged = plants_merged.append(plants.loc[i], ignore_index=True) - plants_merged = plants_merged.copy() - map_plant_orig.append([i]) - map_old_new[i] = len(map_plant_orig) - 1 - fingerprints_merged.append(fingerprints[i]) - - Nunits_merged = len(plants_merged) - mapping = {'NewIndex': {}, 'FormerIndexes': {}} - # mapping['NewIdx'] = map_plant_orig - # mapping['OldIdx'] = map_old_new - # Modify the Unit names with the original index number. In case of merged plants, indicate all indexes + the plant type and fuel - for j in range(Nunits_merged): - if len(map_plant_orig[j]) == 1: # The plant has not been merged - NewName = str(map_plant_orig[j]) + ' - ' + plants_merged['Unit'][j] - NewName = shrink_to_64(clean_strings(NewName)) - NewName = NewName.rstrip() # remove space at the end because it is not considered by gams - plants_merged.loc[j, 'Unit'] = NewName - mapping['FormerIndexes'][NewName] = [map_plant_orig[j][0]] - mapping['NewIndex'][map_plant_orig[j][0]] = NewName - else: - all_stringkeys = '' - for key in string_keys: - all_stringkeys = all_stringkeys + ' - ' + plants_merged[key][j] - NewName = str(map_plant_orig[j]) + all_stringkeys - NewName = shrink_to_64(clean_strings(NewName)) - NewName = NewName.rstrip() # remove space at the end because it is not considered by gams - plants_merged.loc[j, 'Unit'] = NewName - list_oldplants = [x for x in map_plant_orig[j]] - mapping['FormerIndexes'][NewName] = list_oldplants - for oldplant in list_oldplants: - mapping['NewIndex'][oldplant] = NewName - - # Transforming the start-up cost into ramping for the plants that did not go through any clustering: - if method == 'LP clustered': - for i in range(Nunits_merged): - if plants_merged['RampingCost'][i] == 0: - Power = plants_merged['PowerCapacity'][i] - Start_up = plants_merged['StartUpCost'][i] - plants_merged.loc[i, 'RampingCost'] = Start_up / Power - - # Correcting the Nunits field of the clustered plants (must be integer): - elif method == 'Integer clustering': - for idx in plants_merged.index: - N = np.round(plants_merged.loc[idx,'Nunits']) - for key in ['PowerCapacity', 'STOCapacity', 'STOMaxChargingPower','InitialPower','NoLoadCost']: - if key in plants_merged.columns: - plants_merged.loc[idx,key] = plants_merged.loc[idx,key] * N / plants_merged.loc[idx,'Nunits'] - plants_merged.loc[idx,'Nunits'] = N - - # Updating the index of the merged plants dataframe with the new unit names, after some cleaning: - plants_merged.index = plants_merged['Unit'] - - if Nunits != len(plants_merged): - logging.info('Clustered ' + str(Nunits) + ' original units into ' + str(len(plants_merged)) + ' new units') - else: - logging.warning('Did not cluster any unit') - return plants_merged, mapping - -## Helpers - -def _mylogspace(low, high, N): - """ - Self-defined logspace function in which low and high are the first and last values of the space - """ - # shifting all values so that low = 1 - space = np.logspace(0, np.log10(high + low + 1), N) - (low + 1) - return (space) - - -def _find_nearest(array, value): - """ - Self-defined function to find the index of the nearest value in a vector - """ - idx = (np.abs(array - value)).argmin() - return idx +""" +This file gathers different functions used in the DispaSET pre-processing tools + +@author: Sylvain Quoilin (sylvain.quoilin@ec.europa.eu) +""" + +from __future__ import division + +import logging +import sys + +import numpy as np +import pandas as pd + +from ..misc.str_handler import clean_strings, shrink_to_64 + + +def incidence_matrix(sets, set_used, parameters, param_used): + """ + This function generates the incidence matrix of the lines within the nodes + A particular case is considered for the node "Rest Of the World", which is no explicitely defined in DispaSET + """ + + for i in range(len(sets[set_used])): + if 'RoW' not in sets[set_used][i]: + first_country = sets[set_used][i][0:2] + second_country = sets[set_used][i][6:8] + elif 'RoW' == sets[set_used][i][0:3]: + first_country = sets[set_used][i][0:3] + second_country = sets[set_used][i][7:9] + elif 'RoW' == sets[set_used][i][6:9]: + first_country = sets[set_used][i][0:2] + second_country = sets[set_used][i][6:9] + else: + logging.error('The format of the interconnection is not valid.') + sys.exit(1) + + for j in range(len(sets['n'])): + if first_country == sets['n'][j]: + parameters[param_used]['val'][i, j] = -1 + elif second_country == sets['n'][j]: + parameters[param_used]['val'][i, j] = 1 + + return parameters[param_used] + + +def interconnections(Simulation_list, NTC_inter, Historical_flows): + """ + Function that checks for the possible interconnections of the countries included + in the simulation. If the interconnections occurs between two of the countries + defined by the user to perform the simulation with, it extracts the NTC between + those two countries. If the interconnection occurs between one of the countries + selected by the user and one country outside the simulation, it extracts the + physical flows; it does so for each pair (country inside-country outside) and + sums them together creating the interconnection of this country with the RoW. + + :param Simulation_list: List of simulated countries + :param NTC: Day-ahead net transfer capacities (pd dataframe) + :param Historical_flows: Historical flows (pd dataframe) + """ + index = NTC_inter.index.tz_localize(None).intersection(Historical_flows.index.tz_localize(None)) + if len(index)==0: + logging.error('The two input dataframes (NTCs and Historical flows) must have the same index. No common values have been found') + sys.exit(1) + elif len(index) < len(NTC_inter) or len(index) < len(Historical_flows): + diff = np.maximum(len(Historical_flows),len(NTC_inter)) - len(index) + logging.warning('The two input dataframes (NTCs and Historical flows) do not share the same index, although some values are common. The intersection has been considered and ' + str(diff) + ' data points have been lost') + # Checking that all values are positive: + if (NTC_inter.values < 0).any(): + pos = np.where(NTC_inter.values < 0) + logging.warning('WARNING: At least NTC value is negative, for example in line ' + str(NTC_inter.columns[pos[1][0]]) + ' and time step ' + str(NTC_inter.index[pos[0][0]])) + if (Historical_flows.values < 0).any(): + pos = np.where(Historical_flows.values < 0) + logging.warning('WARNING: At least one historical flow is negative, for example in line ' + str(Historical_flows.columns[pos[1][0]]) + ' and time step ' + str(Historical_flows.index[pos[0][0]])) + all_connections = [] + simulation_connections = [] + # List all connections from the dataframe headers: + ConList = Historical_flows.columns.tolist() + [x for x in NTC_inter.columns.tolist() if x not in Historical_flows.columns.tolist()] + for connection in ConList: + c = connection.split(' -> ') + if len(c) != 2: + logging.warning('WARNING: Connection "' + connection + '" in the interconnection tables is not properly named. It will be ignored') + else: + if c[0] in Simulation_list: + all_connections.append(connection) + if c[1] in Simulation_list: + simulation_connections.append(connection) + elif c[1] in Simulation_list: + all_connections.append(connection) + + df_countries_simulated = pd.DataFrame(index=index) + for interconnection in simulation_connections: + if interconnection in NTC_inter.columns: + df_countries_simulated[interconnection] = NTC_inter[interconnection] + logging.info('Detected interconnection ' + interconnection + '. The historical NTCs will be imposed as maximum flow value') + interconnections1 = df_countries_simulated.columns + + # Display a warning if a country is isolated: + for c in Simulation_list: + if not any([c in conn for conn in interconnections1]) and len(Simulation_list)>1: + logging.warning('Zone ' + c + ' does not appear to be connected to any other zone in the NTC table. It should be simulated in isolation') + + df_RoW_temp = pd.DataFrame(index=index) + connNames = [] + for interconnection in all_connections: + if interconnection in Historical_flows.columns and interconnection not in simulation_connections: + df_RoW_temp[interconnection] = Historical_flows[interconnection] + connNames.append(interconnection) + + compare_set = set() + for k in connNames: + if not k[0:2] in compare_set and k[0:2] in Simulation_list: + compare_set.add(k[0:2]) + + df_countries_RoW = pd.DataFrame(index=index) + while compare_set: + nameToCompare = compare_set.pop() + exports = [] + imports = [] + for name in connNames: + if nameToCompare[0:2] in name[0:2]: + exports.append(connNames.index(name)) + logging.info('Detected interconnection ' + name + ', happening between a simulated zone and the rest of the world. The historical flows will be imposed to the model') + elif nameToCompare[0:2] in name[6:8]: + imports.append(connNames.index(name)) + logging.info('Detected interconnection ' + name + ', happening between the rest of the world and a simulated zone. The historical flows will be imposed to the model') + + flows_out = pd.concat(df_RoW_temp[connNames[exports[i]]] for i in range(len(exports))) + flows_out = flows_out.groupby(flows_out.index).sum() + flows_out.name = nameToCompare + ' -> RoW' + df_countries_RoW[nameToCompare + ' -> RoW'] = flows_out + flows_in = pd.concat(df_RoW_temp[connNames[imports[j]]] for j in range(len(imports))) + flows_in = flows_in.groupby(flows_in.index).sum() + flows_in.name = 'RoW -> ' + nameToCompare + df_countries_RoW['RoW -> ' + nameToCompare] = flows_in + interconnections2 = df_countries_RoW.columns + inter = list(interconnections1) + list(interconnections2) + return (df_countries_simulated, df_countries_RoW, inter) + + + +def clustering(plants, method='Standard', Nslices=20, PartLoadMax=0.1, Pmax=30): + """ + Merge excessively disaggregated power Units. + + :param plants: Pandas dataframe with each power plant and their characteristics (following the DispaSET format) + :param method: Select clustering method ('Standard'/'LP'/None) + :param Nslices: Number of slices used to fingerprint each power plant characteristics. slices in the power plant data to categorize them (fewer slices involves that the plants will be aggregated more easily) + :param PartLoadMax: Maximum part-load capability for the unit to be clustered + :param Pmax: Maximum power for the unit to be clustered + :return: A list with the merged plants and the mapping between the original and merged units + """ + + # Checking the the required columns are present in the input pandas dataframe: + required_inputs = ['Unit', 'PowerCapacity', 'PartLoadMin', 'RampUpRate', 'RampDownRate', 'StartUpTime', + 'MinUpTime', 'MinDownTime', 'NoLoadCost', 'StartUpCost', 'Efficiency'] + for input_value in required_inputs: + if input_value not in plants.columns: + logging.error("The plants dataframe requires a '" + input_value + "' column for clustering") + sys.exit(1) + if not "Nunits" in plants: + plants['Nunits'] = 1 + + # Checking the validity of the selected clustering method + OnlyOnes = (plants['Nunits'] == 1).all() + if method in ['Standard','MILP']: + if not OnlyOnes: + logging.warning("The standard (or MILP) clustering method is only applicable if all values of the Nunits column in the power plant data are set to one. At least one different value has been encountered. No clustering will be applied") + elif method == 'LP clustered': + if not OnlyOnes: + logging.warning("The LP clustering method aggregates all the units of the same type. Individual units are not considered") + # Modifying the table to remove multiple-units plants: + for key in ['PowerCapacity', 'STOCapacity', 'STOMaxChargingPower','InitialPower','CHPMaxHeat']: + if key in plants: + plants.loc[:,key] = plants.loc[:,'Nunits'] * plants.loc[:,key] + plants['Nunits'] = 1 + OnlyOnes = True + elif method == 'LP': + pass + elif method == 'Integer clustering': + pass + elif method == 'No clustering': + pass + else: + logging.error('Method argument ("' + str(method) + '") not recognized in the clustering function') + sys.exit(1) + + # Number of units: + Nunits = len(plants) + plants.index = range(Nunits) + + # Definition of the mapping variable, from the old power plant list the new (merged) one: + map_old_new = np.zeros(Nunits) + map_plant_orig = [] + + # Slicing: + bounds = {'PartLoadMin': np.linspace(0, 1, Nslices), 'RampUpRate': np.linspace(0, 1, Nslices), + 'RampDownRate': np.linspace(0, 1, Nslices), 'StartUpTime': _mylogspace(0, 36, Nslices), + 'MinUpTime': _mylogspace(0, 168, Nslices), 'MinDownTime': _mylogspace(0, 168, Nslices), + 'NoLoadCost': np.linspace(0, 50, Nslices), 'StartUpCost': np.linspace(0, 500, Nslices), + 'Efficiency': np.linspace(0, 1, Nslices)} + + # Definition of the fingerprint value of each power plant, i.e. the pattern of the slices number in which each of + # its characteristics falls: + fingerprints = [] + fingerprints_merged = [] + for i in plants.index: + fingerprints.append([_find_nearest(bounds['PartLoadMin'], plants['PartLoadMin'][i]), + _find_nearest(bounds['RampUpRate'], plants['RampUpRate'][i]), + _find_nearest(bounds['RampDownRate'], plants['RampDownRate'][i]), + _find_nearest(bounds['StartUpTime'], plants['StartUpTime'][i]), + _find_nearest(bounds['MinUpTime'], plants['MinUpTime'][i]), + _find_nearest(bounds['MinDownTime'], plants['MinDownTime'][i]), + _find_nearest(bounds['NoLoadCost'], plants['NoLoadCost'][i]), + _find_nearest(bounds['StartUpCost'], plants['StartUpCost'][i]), + _find_nearest(bounds['Efficiency'], plants['Efficiency'][i])]) + + # Definition of the merged power plants dataframe: + plants_merged = pd.DataFrame(columns=plants.columns) + + # Find the columns containing string values (in addition to "Unit") + # string_keys = [] + # for i in range(len(plants.columns)): + # if plants.columns[i] != 'Unit' and plants.dtypes[i] == np.dtype('O'): + # string_keys.append(plants.columns[i]) + string_keys = ['Zone', 'Technology', 'Fuel','CHPType'] + # First, fill nan values: + for key in string_keys: + plants[key].fillna('',inplace=True) + + for i in plants.index: # i is the plant to be added to the new list + merged = False + plants_string = plants[string_keys].iloc[i].fillna('') + for j in plants_merged.index: # j corresponds to the clustered plants + same_type = all(plants_string == plants_merged[string_keys].iloc[j].fillna('')) + same_fingerprint = (fingerprints[i] == fingerprints_merged[j]) + low_pmin = (plants['PartLoadMin'][i] <= PartLoadMax) + low_pmax = (plants['PowerCapacity'][i] <= Pmax) + highly_flexible = plants['RampUpRate'][i] > 1 / 60 and (plants['RampDownRate'][i] > 1 / 60) and ( + plants['StartUpTime'][i] < 1) and (plants['MinDownTime'][i] <= 1) and (plants['MinUpTime'][i] <= 1) + cluster = OnlyOnes and same_type and ((same_fingerprint and low_pmin) or highly_flexible or low_pmax) + if method in ('Standard','MILP') and cluster: # merge the two plants in plants_merged: + P_old = plants_merged['PowerCapacity'][j] # Old power in plants_merged + P_add = plants['PowerCapacity'][i] # Additional power to be added + for key in plants_merged: + if key in ['RampUpRate', 'RampDownRate', 'MinUpTime', 'MinDownTime', 'NoLoadCost', 'Efficiency', + 'MinEfficiency', 'STOChargingEfficiency', 'CO2Intensity', 'STOSelfDischarge','CHPPowerToHeat','CHPPowerLossFactor']: + # Do a weighted average: + plants_merged.loc[j, key] = (plants_merged[key][j] * P_old + plants[key][i] * P_add) / ( + P_add + P_old) + elif key in ['PowerCapacity', 'STOCapacity', 'STOMaxChargingPower','InitialPower','CHPMaxHeat']: + # Do a sum: + plants_merged.loc[j, key] = plants_merged[key][j] + plants[key][i] + elif key in ['PartLoadMin', 'StartUpTime']: + # Take the minimum + plants_merged.loc[j, key] = np.minimum(plants_merged[key][j] * P_old, + plants[key][i] * P_add) / (P_add + P_old) + elif key == 'RampingCost': + # The starting cost must be added to the ramping cost + Cost_to_fullload = P_add * (1 - plants['PartLoadMin'][i]) * plants['RampingCost'][i] + \ + plants['StartUpCost'][i] + plants_merged.loc[j, key] = (P_old * plants_merged[key][j] + Cost_to_fullload) / (P_old + P_add) + elif key == 'Nunits': + plants_merged.loc[j, key] = 1 + map_old_new[i] = j + map_plant_orig[j].append(i) + merged = True + break + elif method == 'LP clustered' and same_type and OnlyOnes: + P_old = plants_merged['PowerCapacity'][j] # Old power in plants_merged + P_add = plants['PowerCapacity'][i] # Additional power to be added + for key in plants_merged: + if key in ['RampUpRate', 'RampDownRate', 'MinUpTime', 'MinDownTime', 'NoLoadCost', 'Efficiency', + 'MinEfficiency', 'STOChargingEfficiency', 'CO2Intensity', 'STOSelfDischarge']: + # Do a weighted average: + plants_merged.loc[j, key] = (plants_merged[key][j] * P_old + plants[key][i] * P_add) / ( + P_add + P_old) + elif key in ['PowerCapacity', 'STOCapacity', 'STOMaxChargingPower','InitialPower','CHPMaxHeat']: + # Do a sum: + plants_merged.loc[j, key] = plants_merged[key][j] + plants[key][i] + elif key in ['PartLoadMin', 'StartUpTime']: + # impose 0 + plants_merged.loc[j, key] = 0 + elif key == 'RampingCost': + # The starting cost must be added to the ramping cost + Cost_to_fullload = P_add * (1 - plants['PartLoadMin'][i]) * plants['RampingCost'][i] + \ + plants['StartUpCost'][i] + plants_merged.loc[j, key] = (P_old * plants_merged[key][j] + Cost_to_fullload) / (P_old + P_add) + elif key == 'Nunits': + plants_merged.loc[j, key] = 1 + map_old_new[i] = j + map_plant_orig[j].append(i) + merged = True + break + elif method == 'Integer clustering' and same_type: + for key in plants_merged: + if key in ['PowerCapacity','RampUpRate', 'RampDownRate', 'MinUpTime', 'MinDownTime', 'NoLoadCost', 'Efficiency', + 'MinEfficiency', 'STOChargingEfficiency', 'CO2Intensity', 'STOSelfDischarge', + 'STOCapacity', 'STOMaxChargingPower','InitialPower','PartLoadMin', 'StartUpTime','RampingCost', + 'CHPPowerToHeat','CHPPowerLossFactor','CHPMaxHeat']: + # Do a weighted average: + plants_merged.loc[j, key] = (plants_merged.loc[j,key] * plants_merged.loc[j,'Nunits'] + plants.loc[i,key] * plants.loc[i,'Nunits']) / (plants_merged.loc[j,'Nunits'] + plants.loc[i,'Nunits']) + plants_merged.loc[j, 'Nunits'] = plants_merged.loc[j,'Nunits'] + plants.loc[i,'Nunits'] + + map_old_new[i] = j + map_plant_orig[j].append(i) + merged = True + break + + if not merged: # Add a new plant in plants_merged: + plants_merged = plants_merged.append(plants.loc[i], ignore_index=True) + plants_merged = plants_merged.copy() + map_plant_orig.append([i]) + map_old_new[i] = len(map_plant_orig) - 1 + fingerprints_merged.append(fingerprints[i]) + + Nunits_merged = len(plants_merged) + mapping = {'NewIndex': {}, 'FormerIndexes': {}} + # mapping['NewIdx'] = map_plant_orig + # mapping['OldIdx'] = map_old_new + # Modify the Unit names with the original index number. In case of merged plants, indicate all indexes + the plant type and fuel + for j in range(Nunits_merged): + if len(map_plant_orig[j]) == 1: # The plant has not been merged + NewName = str(map_plant_orig[j]) + ' - ' + plants_merged['Unit'][j] + NewName = shrink_to_64(clean_strings(NewName)) + NewName = NewName.rstrip() # remove space at the end because it is not considered by gams + plants_merged.loc[j, 'Unit'] = NewName + mapping['FormerIndexes'][NewName] = [map_plant_orig[j][0]] + mapping['NewIndex'][map_plant_orig[j][0]] = NewName + else: + all_stringkeys = '' + for key in string_keys: + all_stringkeys = all_stringkeys + ' - ' + plants_merged[key][j] + NewName = str(map_plant_orig[j]) + all_stringkeys + NewName = shrink_to_64(clean_strings(NewName)) + NewName = NewName.rstrip() # remove space at the end because it is not considered by gams + plants_merged.loc[j, 'Unit'] = NewName + list_oldplants = [x for x in map_plant_orig[j]] + mapping['FormerIndexes'][NewName] = list_oldplants + for oldplant in list_oldplants: + mapping['NewIndex'][oldplant] = NewName + + # Transforming the start-up cost into ramping for the plants that did not go through any clustering: + if method == 'LP clustered': + for i in range(Nunits_merged): + if plants_merged['RampingCost'][i] == 0: + Power = plants_merged['PowerCapacity'][i] + Start_up = plants_merged['StartUpCost'][i] + plants_merged.loc[i, 'RampingCost'] = Start_up / Power + + # Correcting the Nunits field of the clustered plants (must be integer): + elif method == 'Integer clustering': + for idx in plants_merged.index: + N = np.round(plants_merged.loc[idx,'Nunits']) + for key in ['PowerCapacity', 'STOCapacity', 'STOMaxChargingPower','InitialPower','NoLoadCost']: + if key in plants_merged.columns: + plants_merged.loc[idx,key] = plants_merged.loc[idx,key] * N / plants_merged.loc[idx,'Nunits'] + plants_merged.loc[idx,'Nunits'] = N + + # Updating the index of the merged plants dataframe with the new unit names, after some cleaning: + plants_merged.index = plants_merged['Unit'] + + if Nunits != len(plants_merged): + logging.info('Clustered ' + str(Nunits) + ' original units into ' + str(len(plants_merged)) + ' new units') + else: + logging.warning('Did not cluster any unit') + return plants_merged, mapping + +## Helpers + +def _mylogspace(low, high, N): + """ + Self-defined logspace function in which low and high are the first and last values of the space + """ + # shifting all values so that low = 1 + space = np.logspace(0, np.log10(high + low + 1), N) - (low + 1) + return (space) + + +def _find_nearest(array, value): + """ + Self-defined function to find the index of the nearest value in a vector + """ + idx = (np.abs(array - value)).argmin() + return idx From d3f1c7d84b501ec1ca8231c2e774e302df0b7815 Mon Sep 17 00:00:00 2001 From: Matzee Date: Fri, 3 Jan 2020 13:47:19 +0100 Subject: [PATCH 5/8] tests & missing files from commit before --- dispaset/preprocessing/data_loader.py | 427 ++++++++++++++++++++++++++ tests/test_DispaModel.py | 159 ++++++++++ tests/test_preprocessing.py | 15 + 3 files changed, 601 insertions(+) create mode 100755 dispaset/preprocessing/data_loader.py create mode 100755 tests/test_DispaModel.py create mode 100755 tests/test_preprocessing.py diff --git a/dispaset/preprocessing/data_loader.py b/dispaset/preprocessing/data_loader.py new file mode 100755 index 00000000..68b151a5 --- /dev/null +++ b/dispaset/preprocessing/data_loader.py @@ -0,0 +1,427 @@ + +import datetime as dt +import logging +import os +import sys + +import numpy as np +import pandas as pd +try: + from future.builtins import int +except ImportError: + logging.warning("Couldn't import future package. Numeric operations may differ among different versions due to incompatible variable types") + pass + +from .data_check import check_units, check_chp, check_sto, check_heat_demand, check_df, isStorage, check_MinMaxFlows,check_AvailabilityFactors, check_clustering +from .utils import clustering, interconnections, incidence_matrix +from .data_handler import UnitBasedTable,NodeBasedTable,merge_series, load_csv + +from ..common import commons # Load fuel types, technologies, timestep, etc: + + + +def get_indices(config): + # Indexes of the simulation: + idx_std = pd.DatetimeIndex(pd.date_range(start=pd.datetime(*config['StartDate']), + end=pd.datetime(*config['StopDate']), + freq=commons['TimeStep']) + ) #todo check brackets on master + + idx_utc_noloc = idx_std - dt.timedelta(hours=1) + idx_utc = idx_utc_noloc.tz_localize('UTC') + # Indexes for the whole year considered in StartDate + idx_utc_year_noloc = pd.DatetimeIndex(pd.date_range(start=pd.datetime(*(config['StartDate'][0],1,1,0,0)), + end=pd.datetime(*(config['StartDate'][0],12,31,23,59,59)), + freq=commons['TimeStep']) + ) + return idx_utc, idx_utc_noloc, idx_utc_year_noloc + +def load_loads(config, idx_utc_noloc, idx_utc_year_noloc): + + # Load : + Load = NodeBasedTable(config['Demand'],idx_utc_noloc,config['countries'],tablename='Demand') + # For the peak load, the whole year is considered: + PeakLoad = NodeBasedTable(config['Demand'],idx_utc_year_noloc,config['countries'],tablename='PeakLoad').max() + if config['modifiers']['Demand'] != 1: + logging.info('Scaling load curve by a factor ' + str(config['modifiers']['Demand'])) + Load = Load * config['modifiers']['Demand'] + PeakLoad = PeakLoad * config['modifiers']['Demand'] + return Load, PeakLoad + +def load_interconnections(config, idx_utc_noloc): + + # Interconnections: + if os.path.isfile(config['Interconnections']): + flows = load_csv(config['Interconnections'], index_col=0, parse_dates=True).fillna(0) + else: + logging.warning('No historical flows will be considered (no valid file provided)') + flows = pd.DataFrame(index=idx_utc_noloc) + if os.path.isfile(config['NTC']): + NTC = load_csv(config['NTC'], index_col=0, parse_dates=True).fillna(0) + else: + logging.warning('No NTC values will be considered (no valid file provided)') + NTC = pd.DataFrame(index=idx_utc_noloc) + + # Interconnections: + [Interconnections_sim, Interconnections_RoW, Interconnections] = interconnections(config['countries'], NTC, flows) + + if len(Interconnections_sim.columns) > 0: + NTCs = Interconnections_sim.reindex(idx_utc_noloc) + else: + NTCs = pd.DataFrame(index=idx_utc_noloc) + Inter_RoW = Interconnections_RoW.reindex(idx_utc_noloc) + return flows, NTC, Interconnections, NTCs, Inter_RoW + +def load_load_shedding(config, idx_utc_noloc): + # Load Shedding: + LoadShedding = NodeBasedTable(config['LoadShedding'],idx_utc_noloc,config['countries'],tablename='LoadShedding',default=config['default']['LoadShedding']) + CostLoadShedding = NodeBasedTable(config['CostLoadShedding'],idx_utc_noloc,config['countries'],tablename='CostLoadShedding',default=config['default']['CostLoadShedding']) + return LoadShedding, CostLoadShedding + +def load_fuel_prices(config, idx_utc_noloc): + + # Fuel prices: + fuels = ['PriceOfNuclear', 'PriceOfBlackCoal', 'PriceOfGas', 'PriceOfFuelOil', 'PriceOfBiomass', 'PriceOfCO2', 'PriceOfLignite', 'PriceOfPeat'] + FuelPrices = pd.DataFrame(columns=fuels, index=idx_utc_noloc) + for fuel in fuels: + if os.path.isfile(config[fuel]): + tmp = load_csv(config[fuel], header=None, index_col=0, parse_dates=True) + FuelPrices[fuel] = tmp[1][idx_utc_noloc].values + elif isinstance(config['default'][fuel], (int, float, complex)): + logging.warning('No data file found for "' + fuel + '. Using default value ' + str(config['default'][fuel]) + ' EUR') + FuelPrices[fuel] = pd.Series(config['default'][fuel], index=idx_utc_noloc) + # Special case for lignite and peat, for backward compatibility + elif fuel == 'PriceOfLignite': + logging.warning('No price data found for "' + fuel + '. Using the same value as for Black Coal') + FuelPrices[fuel] = FuelPrices['PriceOfBlackCoal'] + elif fuel == 'PriceOfPeat': + logging.warning('No price data found for "' + fuel + '. Using the same value as for biomass') + FuelPrices[fuel] = FuelPrices['PriceOfBiomass'] + else: + logging.warning('No data file or default value found for "' + fuel + '. Assuming zero marginal price!') + FuelPrices[fuel] = pd.Series(0, index=idx_utc_noloc) + return FuelPrices + + +#todo NOT ACTIVE +def load_cep_parameters_cart_prod(Plants_merged, countries, expandable_units=['HRD-STUR', 'LIG-STUR', 'NUC-STUR','OIL-STUR', 'GAS-GTUR']): + logging.info("Capacity Expansion used!") + all_cost = load_csv('Database/CapacityExpansion/TechsCost.csv') #TODO + plant_new = load_csv('Database/CapacityExpansion/techs_cap.csv') + plant_new = plant_new[plant_new.Unit.isin(expandable_units)] + + # create variables (cartesian product of tech x country) + n_countries = len(countries) + n_technologies = plant_new.shape[0] + plant_new = pd.concat([plant_new] * n_countries) # for each zone create new uc + plant_new['Zone'] = np.repeat(countries, n_technologies) # create zone column + plant_new['Unit'] = plant_new.apply(lambda x: x['Zone'] + "-" + x['Unit'], axis=1) # naming + + plant_new = plant_new.set_index('Unit', drop=False) + + ## Cost of new technologies + index = plant_new[['Fuel', 'Technology']].reset_index().set_index('Unit', drop=False) + Plants_merged = Plants_merged.merge(index[['Fuel', 'Technology']], how='outer', on = ['Fuel', 'Technology'], + indicator=True).query('_merge == "left_only"') + del Plants_merged['_merge'] + Plants_merged = Plants_merged.set_index('Unit', drop=False) + Plants_merged = Plants_merged.append(plant_new) + plant_new_cost = all_cost[all_cost.Unit.isin(expandable_units)] + df_expanded = pd.merge(index, plant_new_cost, on=['Fuel', 'Technology'], how='left') + return df_expanded + + +def _fill_missing_cols_by_mean(df, df_mean, on_cols, merge_cols): + df.loc[:,"_missing"] = df.apply(lambda x: x[["Investment", "FixedCost", "EconomicLifetime"]].isna().any(), axis=1) + + df_merged = df.merge(df_mean[on_cols + merge_cols], how='outer', + on = on_cols, suffixes = ["", "_mean"], indicator=True) + df_merged = df_merged[(df_merged["_merge"] == "left_only") | (df_merged["_merge"] == "both")] + df_only_left = df_merged[(df_merged["_merge"] == "left_only") & (df_merged["_missing"] == True)] + + if df_only_left.shape[0] > 0: + print("No values found for filling missing capacity values of: %s" % ", ".join(df_only_left.Unit.values)) + + for col in merge_cols: + merge_col_name = col + "_mean" + df_merged.loc[:, col] = df_merged[col].fillna(df_merged[merge_col_name]) + del df_merged[merge_col_name] + + del df_merged["_missing"] + del df_merged["_merge"] + return df_merged + + +def load_cep_parameters(config, Plants_merged): + df_cap = Plants_merged[Plants_merged['Extendable'].astype(str) == "x"] + + if df_cap.shape[0] > 0: #any extendable power plant technology + logging.info("Capacity Expansion used!") + if df_cap[["Investment", "EconomicLifetime", "FixedCost"]].isnull().values.any(): + logging.warning("Merging missing values in the columns: %s" % ", ".join(["Investment", "EconomicLifetime", "FixedCost"])) + + ## Cost of new technologies + all_cost = load_csv('Database/CapacityExpansion/TechsCost.csv') #basic cost data + df_cap = _fill_missing_cols_by_mean(df_cap, all_cost, ["Technology", "Fuel"], ["Investment", "EconomicLifetime", "FixedCost"]) + plant_new = df_cap[:] + plant_new = plant_new.set_index('Unit', drop=False) + else: + plant_new = pd.DataFrame() # empty dataframe -> empty set in optimization model + + return plant_new + +def cluster_plants(config, plants): + + # Clustering of the plants: + Plants_merged, mapping = clustering(plants, method=config['SimulationType']) + # Check clustering: + check_clustering(plants, Plants_merged) + return Plants_merged, mapping + +def get_unit_based_tables(idx_utc_noloc, config, plants, plants_sto, plants_chp): + + Outages = UnitBasedTable(plants,config['Outages'],idx_utc_noloc,config['countries'],fallbacks=['Unit','Technology'],tablename='Outages') + AF = UnitBasedTable(plants,config['RenewablesAF'],idx_utc_noloc,config['countries'],fallbacks=['Unit','Technology'],tablename='AvailabilityFactors',default=1,RestrictWarning=commons['tech_renewables']) + ReservoirLevels = UnitBasedTable(plants_sto,config['ReservoirLevels'],idx_utc_noloc,config['countries'],fallbacks=['Unit','Technology','Zone'],tablename='ReservoirLevels',default=0) + ReservoirScaledInflows = UnitBasedTable(plants_sto,config['ReservoirScaledInflows'],idx_utc_noloc,config['countries'],fallbacks=['Unit','Technology','Zone'],tablename='ReservoirScaledInflows',default=0) + HeatDemand = UnitBasedTable(plants_chp,config['HeatDemand'],idx_utc_noloc,config['countries'],fallbacks=['Unit'],tablename='HeatDemand',default=0) + CostHeatSlack = UnitBasedTable(plants_chp,config['CostHeatSlack'],idx_utc_noloc,config['countries'],fallbacks=['Unit','Zone'],tablename='CostHeatSlack',default=config['default']['CostHeatSlack']) + + # data checks: + check_AvailabilityFactors(plants, AF) + check_heat_demand(plants, HeatDemand) + return Outages, AF, ReservoirLevels, ReservoirScaledInflows, HeatDemand, CostHeatSlack + + +def load_plants(config): + # Power plants: + plants = pd.DataFrame() + if os.path.isfile(config['PowerPlantData']): + plants = load_csv(config['PowerPlantData']) + elif '##' in config['PowerPlantData']: + for c in config['countries']: + path = config['PowerPlantData'].replace('##', str(c)) + tmp = load_csv(path) + plants = plants.append(tmp, ignore_index=True) + plants = plants[plants['Technology'] != 'Other'] + plants = plants[pd.notnull(plants['PowerCapacity'])] + plants.index = range(len(plants)) + + # Some columns can be in two format (absolute or per unit). If not specified, they are set to zero: + for key in ['StartUpCost', 'NoLoadCost']: + if key in plants: + pass + elif key+'_pu' in plants: + plants[key] = plants[key+'_pu'] * plants['PowerCapacity'] + else: + plants[key] = 0 + # check plant list: + check_units(config, plants) + # If not present, add the non-compulsory fields to the units table: + for key in ['CHPPowerLossFactor','CHPPowerToHeat','CHPType','STOCapacity','STOSelfDischarge','STOMaxChargingPower','STOChargingEfficiency', 'CHPMaxHeat']: + if key not in plants.columns: + plants[key] = np.nan + + + # Defining the hydro storages: + plants_sto = plants[[u in commons['tech_storage'] for u in plants['Technology']]] + # check storage plants: + check_sto(config, plants_sto) + plants_chp = plants[[str(x).lower() in commons['types_CHP'] for x in plants['CHPType']]] + + return plants, plants_sto, plants_chp + + +class DataLoader(object): + + def __rename_plant_columns(self): + # Renaming the columns to ease the production of parameters: + self.Plants_merged.rename(columns={ 'StartUpCost': 'CostStartUp', + 'RampUpMax': 'RampUpMaximum', + 'RampDownMax': 'RampDownMaximum', + 'MinUpTime': 'TimeUpMinimum', + 'MinDownTime': 'TimeDownMinimum', + 'RampingCost': 'CostRampUp', + 'STOCapacity': 'StorageCapacity', + 'STOMaxChargingPower': 'StorageChargingCapacity', + 'STOChargingEfficiency': 'StorageChargingEfficiency', + 'STOSelfDischarge': 'StorageSelfDischarge', + 'CO2Intensity': 'EmissionRate'}, inplace=True) + + def __init__(self, config): + + # loading/assigning basic data + self.config = config + self.idx_utc, self.idx_utc_noloc, self.idx_utc_year_noloc = get_indices(self.config) #todo do i really need you all? + self.Load, self.PeakLoad = load_loads(self.config, self.idx_utc_noloc, self.idx_utc_year_noloc) + self.flows, self.NTC, self.Interconnections, self.NTCs, self.Inter_RoW = load_interconnections(config, self.idx_utc_noloc) + self.LoadShedding = NodeBasedTable(config['LoadShedding'],self.idx_utc_noloc,config['countries'],tablename='LoadShedding',default=config['default']['LoadShedding']) + self.CostLoadShedding = NodeBasedTable(config['CostLoadShedding'],self.idx_utc_noloc,config['countries'],tablename='CostLoadShedding',default=config['default']['CostLoadShedding']) + #self.LoadShedding, self.CostLoadShedding = load_load_shedding(self.config, self.idx_utc_noloc) + self.plants, self.plants_sto, self.plants_chp = load_plants(self.config) + self.FuelPrices = load_fuel_prices(self.config, self.idx_utc_noloc) + self.Plants_merged, self.mapping = cluster_plants(self.config, self.plants) + self.Outages, self.AF, self.ReservoirLevels, self.ReservoirScaledInflows, self.HeatDemand, self.CostHeatSlack = get_unit_based_tables(self.idx_utc_noloc, self.config, self.Plants_merged, self.plants_sto, self.plants_chp) + + # preprocess data + self.__rename_plant_columns() + self.__merge_time_series() + self.__check_plants() + self.__check_dfs() + self.__extend_data_with_lookahead() + self.__prepare_plant_data() + + + # adding cep + self.plants_expanded = load_cep_parameters(self.config, self.Plants_merged) #todo + self.extend_cep_cart_prod = False + + # currently not used: + # if self.extend_cep_cart_prod: + # self.plants_expanded = load_cep_parameters_cart_prod(self.plants_expanded, self.config["countries"]) + + def __check_plants(self): + # data checks: + check_AvailabilityFactors(self.plants, self.AF) + check_heat_demand(self.plants, self.HeatDemand) + + def __merge_time_series(self): + + plants = self.plants + mapping = self.mapping + # Merging the time series relative to the clustered power plants: + self.ReservoirScaledInflows = merge_series(plants, self.ReservoirScaledInflows, mapping, method='WeightedAverage', tablename='ScaledInflows') + self.ReservoirLevels = merge_series(plants, self.ReservoirLevels, mapping, tablename='ReservoirLevels') + self.Outages = merge_series(plants, self.Outages, mapping, tablename='Outages') + self.HeatDemand = merge_series(plants, self.HeatDemand, mapping, tablename='HeatDemand',method='Sum') + self.AF = merge_series(plants, self.AF, mapping, tablename='AvailabilityFactors') + self.CostHeatSlack = merge_series(plants, self.CostHeatSlack, mapping, tablename='CostHeatSlack') + #return ReservoirScaledInflows, self.ReservoirLevels, Outages, HeatDemand, AF, CostHeatSlack + + + def __check_dfs(self): + # checking data + idx_utc_noloc = self.idx_utc_noloc + + check_df(self.Load, StartDate=idx_utc_noloc[0], StopDate=idx_utc_noloc[-1], name='Load') + check_df(self.AF, StartDate=idx_utc_noloc[0], StopDate=idx_utc_noloc[-1], name='AF') + check_df(self.Outages, StartDate=idx_utc_noloc[0], StopDate=idx_utc_noloc[-1], name='Outages') + check_df(self.Inter_RoW, StartDate=idx_utc_noloc[0], StopDate=idx_utc_noloc[-1], name='Inter_RoW') + check_df(self.FuelPrices, StartDate=idx_utc_noloc[0], StopDate=idx_utc_noloc[-1], name='FuelPrices') + check_df(self.NTCs, StartDate=idx_utc_noloc[0], StopDate=idx_utc_noloc[-1], name='NTCs') + check_df(self.ReservoirLevels, StartDate=idx_utc_noloc[0], StopDate=idx_utc_noloc[-1], name='ReservoirLevels') + check_df(self.ReservoirScaledInflows, StartDate=idx_utc_noloc[0], StopDate=idx_utc_noloc[-1], name='ReservoirScaledInflows') + check_df(self.HeatDemand, StartDate=idx_utc_noloc[0], StopDate=idx_utc_noloc[-1], name='HeatDemand') + check_df(self.CostHeatSlack, StartDate=idx_utc_noloc[0], StopDate=idx_utc_noloc[-1], name='CostHeatSlack') + check_df(self.LoadShedding, StartDate=idx_utc_noloc[0], StopDate=idx_utc_noloc[-1], name='LoadShedding') + check_df(self.CostLoadShedding, StartDate=idx_utc_noloc[0], StopDate=idx_utc_noloc[-1], name='CostLoadShedding') + + + def __extend_data_with_lookahead(self): + + # Extending the data to include the look-ahead period (with constant values assumed) + enddate_long = self.idx_utc_noloc[-1] + dt.timedelta(days=self.config['LookAhead']) + idx_long = pd.DatetimeIndex(pd.date_range(start=self.idx_utc_noloc[0], end=enddate_long, freq=commons['TimeStep'])) + Nhours_long = len(idx_long) + + # re-indexing with the longer index and filling possibly missing data at the beginning and at the end:: + self.Load = self.Load.reindex(idx_long, method='nearest').fillna(method='bfill') + self.AF = self.AF.reindex(idx_long, method='nearest').fillna(method='bfill') + self.Inter_RoW = self.Inter_RoW.reindex(idx_long, method='nearest').fillna(method='bfill') + self.NTCs = self.NTCs.reindex(idx_long, method='nearest').fillna(method='bfill') + self.FuelPrices = self.FuelPrices.reindex(idx_long, method='nearest').fillna(method='bfill') + self.Load = self.Load.reindex(idx_long, method='nearest').fillna(method='bfill') + self.Outages = self.Outages.reindex(idx_long, method='nearest').fillna(method='bfill') + self.ReservoirLevels = self.ReservoirLevels.reindex(idx_long, method='nearest').fillna(method='bfill') + self.ReservoirScaledInflows = self.ReservoirScaledInflows.reindex(idx_long, method='nearest').fillna(method='bfill') + self.LoadShedding = self.LoadShedding.reindex(idx_long, method='nearest').fillna(method='bfill') + self.CostLoadShedding = self.CostLoadShedding.reindex(idx_long, method='nearest').fillna(method='bfill') + # for tr in Renewables: + # Renewables[tr] = Renewables[tr].reindex(idx_long, method='nearest').fillna(method='bfill') + + def __prepare_plant_data(self): + + # using references for prettier coding + config = self.config + plants = self.plants + Plants_merged = self.Plants_merged + + for key in ['TimeUpMinimum','TimeDownMinimum']: + if any([not x.is_integer() for x in Plants_merged[key].fillna(0).values.astype('float')]): + logging.warning(key + ' in the power plant data has been rounded to the nearest integer value') + Plants_merged.loc[:,key] = Plants_merged[key].fillna(0).values.astype('int32') + + if not len(Plants_merged.index.unique()) == len(Plants_merged): + # Very unlikely case: + logging.error('plant indexes not unique!') + sys.exit(1) + + # Apply scaling factors: + if config['modifiers']['Solar'] != 1: + logging.info('Scaling Solar Capacity by a factor ' + str(config['modifiers']['Solar'])) + for u in Plants_merged.index: + if Plants_merged.Technology[u] == 'PHOT': + Plants_merged.loc[u, 'PowerCapacity'] = Plants_merged.loc[u, 'PowerCapacity'] * config['modifiers']['Solar'] + if config['modifiers']['Wind'] != 1: + logging.info('Scaling Wind Capacity by a factor ' + str(config['modifiers']['Wind'])) + for u in Plants_merged.index: + if Plants_merged.Technology[u] == 'WTON' or Plants_merged.Technology[u] == 'WTOF': + Plants_merged.loc[u, 'PowerCapacity'] = Plants_merged.loc[u, 'PowerCapacity'] * config['modifiers']['Wind'] + if config['modifiers']['Storage'] != 1: + logging.info('Scaling Storage Power and Capacity by a factor ' + str(config['modifiers']['Storage'])) + for u in Plants_merged.index: + if isStorage(Plants_merged.Technology[u]): + Plants_merged.loc[u, 'PowerCapacity'] = Plants_merged.loc[u, 'PowerCapacity'] * config['modifiers']['Storage'] + Plants_merged.loc[u, 'StorageCapacity'] = Plants_merged.loc[u, 'StorageCapacity'] * config['modifiers']['Storage'] + Plants_merged.loc[u, 'StorageChargingCapacity'] = Plants_merged.loc[u, 'StorageChargingCapacity'] * config['modifiers']['Storage'] + + # Defining the hydro storages: + self.plants_sto = Plants_merged[[u in commons['tech_storage'] for u in Plants_merged['Technology']]] + # check storage plants: + check_sto(config, self.plants_sto, raw_data=False) + # Defining the CHPs: + self.plants_chp = Plants_merged[[x.lower() in commons['types_CHP'] for x in Plants_merged['CHPType']]].copy() + # check chp plants: + check_chp(config, self.plants_chp) + # For all the chp plants correct the PowerCapacity, which is defined in cogeneration mode in the inputs and in power generation model in the optimization model + for u in self.plants_chp.index: + PowerCapacity = self.plants_chp.loc[u, 'PowerCapacity'] + + if self.plants_chp.loc[u,'CHPType'].lower() == 'p2h': + PurePowerCapacity = PowerCapacity + else: + if pd.isnull(self.plants_chp.loc[u,'CHPMaxHeat']): # If maximum heat is not defined, then it is defined as the intersection between two lines + MaxHeat = PowerCapacity / self.plants_chp.loc[u,'CHPPowerToHeat'] + self.plants_chp.loc[u, 'CHPMaxHeat'] = 'inf' + else: + MaxHeat = self.plants_chp.loc[u, 'CHPMaxHeat'] + PurePowerCapacity = PowerCapacity + self.plants_chp.loc[u,'CHPPowerLossFactor'] * MaxHeat + Plants_merged.loc[u, 'PartLoadMin'] = Plants_merged.loc[u,'PartLoadMin'] * PowerCapacity / PurePowerCapacity # FIXME: Is this correct? + Plants_merged.loc[u, 'PowerCapacity'] = PurePowerCapacity + + + # Get the hydro time series corresponding to the original plant list: #FIXME Unused variable ? + #StorageFormerIndexes = [s for s in plants.index if + # plants['Technology'][s] in commons['tech_storage']] + + + # Same with the CHPs: + # Get the heat demand time series corresponding to the original plant list: + CHPFormerIndexes = [s for s in plants.index if + plants['CHPType'][s] in commons['types_CHP']] + for s in CHPFormerIndexes: # for all the old plant indexes + # get the old plant name corresponding to s: + oldname = plants['Unit'][s] + # newname = mapping['NewIndex'][s] #FIXME Unused variable ? + if oldname not in self.HeatDemand: + logging.warning('No heat demand profile found for CHP plant "' + str(oldname) + '". Assuming zero') + self.HeatDemand[oldname] = 0 + if oldname not in self.CostHeatSlack: + logging.warning('No heat cost profile found for CHP plant "' + str(oldname) + '". Assuming zero') + self.CostHeatSlack[oldname] = 0 + + # merge the outages: + for i in plants.index: # for all the old plant indexes + # get the old plant name corresponding to s: + oldname = plants['Unit'][i] + newname = self.mapping['NewIndex'][i] diff --git a/tests/test_DispaModel.py b/tests/test_DispaModel.py new file mode 100755 index 00000000..1af1561f --- /dev/null +++ b/tests/test_DispaModel.py @@ -0,0 +1,159 @@ +### Testing the DispaModel class + + +import dispaset as ds +import os +import pytest +from dispaset.preprocessing.data_loader import DataLoader +from dispaset.preprocessing.preprocessing import build_simulation +import pandas as pd +import decorator + + + +conf_file = os.path.abspath('./tests/conf.yml') +unit_file = os.path.abspath('./tests/dummy_data/Units_testcase.csv') +config = ds.load_config_yaml(conf_file) +config["WriteGDX"] = 0 + + +# python -m pytest tests/test_DispaModel.py -v + + +######################################## Single tests + +def insert_cap_csv(): + plants = pd.read_csv(unit_file, index_col=0) + plants.loc["Maasvlakte", "Extendable"] = "x" + plants.to_csv(unit_file, index=True) + +def revert_cap_csv(): + plants = pd.read_csv(unit_file, index_col=0) + plants.loc["Maasvlakte", "Extendable"] = "" + plants.to_csv(unit_file, index=True) + + + + +def test_SimData_set(): + #testing the sets + + SimData = build_simulation(config) + sets = SimData["sets"] + assert len(sets['h']) == 745 + assert len(sets['z']) == 721 + assert len(sets['mk']) == 3 + assert len(sets['n']) == 2 + assert len(sets['u']) == 16 + assert len(sets['l']) == 4 + assert len(sets['f']) == 13 + assert len(sets['p']) == 1 + assert len(sets['s']) == 2 + assert len(sets['chp']) == 1 + assert len(sets['t']) == 15 + assert len(sets['tr']) == 4 + assert len(sets['uc']) == 0 + assert len(sets['chp_type']) == 3 + assert len(sets['x_config']) == 8 + assert len(sets['y_config']) == 4 + + +def test_SimData_set_CEP(): + #testing the sets + + insert_cap_csv() + SimData = build_simulation(config) + sets = SimData["sets"] + assert len(sets['h']) == 745 + assert len(sets['z']) == 721 + assert len(sets['mk']) == 3 + assert len(sets['n']) == 2 + assert len(sets['u']) == 16 + assert len(sets['l']) == 4 + assert len(sets['f']) == 13 + assert len(sets['p']) == 1 + assert len(sets['s']) == 2 + assert len(sets['chp']) == 1 + assert len(sets['t']) == 15 + assert len(sets['tr']) == 4 + assert len(sets['uc']) == 0 + assert len(sets['chp_type']) == 3 + assert len(sets['x_config']) == 8 + assert len(sets['y_config']) == 4 + revert_cap_csv() + +def test_DataLoader_missing_values(): + + pars = [ + 'AF', + 'CostHeatSlack', + 'CostLoadShedding', + 'FuelPrices', + 'HeatDemand', + 'Inter_RoW', + 'Interconnections', + 'Load', + 'LoadShedding', + 'NTC', + 'NTCs', + 'Outages', + 'PeakLoad', + 'Plants_merged', + 'ReservoirLevels', + 'ReservoirScaledInflows', + ] + + dl = DataLoader(config) + + for par in pars: + df = getattr(dl, par) + if type(df) == pd.DataFrame and par != "Plants_merged": # todo which columns are required for plants? + assert df.isnull().sum().sum() == 0 # sum over all columns and rows + elif type(df) == list: + assert sum(x is None for x in df) == 0 + + +######################################## Tests for all permutations (simtypes x cep) + +SIMULATION_TYPES = ['MILP', 'LP'] +CEP = [0, 1] + +@pytest.mark.parametrize('sim_type', SIMULATION_TYPES) +@pytest.mark.parametrize('cep', CEP) +class TestDataLoader: + + def test_DispaLaoder_build(self, sim_type, cep): + config['SimulationType'] = sim_type + config['CEP'] = cep + data = DataLoader(config) + + def test_cap_expansion(self, sim_type, cep): + + config['SimulationType'] = sim_type + config['CEP'] = cep + + insert_cap_csv() + data = DataLoader(config) + idx_dim = len(data.plants_expanded.index.tolist()) + assert(idx_dim == 1) + assert(data.plants_expanded["Extendable"].values[0] == "x") + + # revert to old status and test + assert(idx_dim == 0) + revert_cap_csv() + data = DataLoader(config) + idx_dim = len(data.plants_expanded.index.tolist()) + + + # def test_SimData_parameters(self, sim_type, cep): + # config['SimulationType'] = sim_type + # config['CEP'] = cep + # config["WriteGDX"] = 0 + # SimData = build_simulation(config) + # sets = SimData["sets"] + # print(SimData["parameters"]) + # ### is the dimension of the data the same as the parameter for all parameters + # for name, vals in SimData["parameters"].items(): + # print("\n WAAAAAAAAAAAAAAAAAAS") + # print(vals) + # assert vals["val"].shape == tuple(len(sets[i]) for i in vals["sets"]) diff --git a/tests/test_preprocessing.py b/tests/test_preprocessing.py new file mode 100755 index 00000000..1cd681bc --- /dev/null +++ b/tests/test_preprocessing.py @@ -0,0 +1,15 @@ +import dispaset as ds +import os +import pytest + +conf_file = os.path.abspath('./tests/conf.yml') +@pytest.fixture(scope='module', + params=SIMULATION_TYPES, + ) +def config(request): + """Generate some data for testing""" + config = ds.load_config_yaml(conf_file) + assert isinstance(config, dict) + config['SimulationType'] = request.param + return config + From 6bbd12f23cfacb0af8960c1e0654433b95d1919a Mon Sep 17 00:00:00 2001 From: Matzee Date: Thu, 20 Feb 2020 00:55:04 +0100 Subject: [PATCH 6/8] update refactored preprocessing --- dispaset/GAMS/UCM_h.gms | 2 +- dispaset/preprocessing/data_loader.py | 23 ++++--- dispaset/preprocessing/preprocessing.py | 3 +- dispaset/preprocessing/utils.py | 1 + tests/dummy_data/Units_testcase.csv | 37 ++++++----- tests/test_DispaModel.py | 82 ++++++++++++------------- tests/test_preprocessing.py | 4 ++ 7 files changed, 81 insertions(+), 71 deletions(-) diff --git a/dispaset/GAMS/UCM_h.gms b/dispaset/GAMS/UCM_h.gms index 21885024..2f433167 100755 --- a/dispaset/GAMS/UCM_h.gms +++ b/dispaset/GAMS/UCM_h.gms @@ -926,7 +926,7 @@ set days /1,'ndays'/; display days; PARAMETER elapsed(days); -* Capacity expansion for a rolling horizon does not make sense without further methods +* Rolling Horizon approach for Capacity expansion not applicable $If %CEPFormulation% == 1 Config("RollingHorizon Length","day") = ndays; FOR(day = 1 TO ndays-Config("RollingHorizon LookAhead","day") by Config("RollingHorizon Length","day"), diff --git a/dispaset/preprocessing/data_loader.py b/dispaset/preprocessing/data_loader.py index 68b151a5..528eb656 100755 --- a/dispaset/preprocessing/data_loader.py +++ b/dispaset/preprocessing/data_loader.py @@ -153,15 +153,22 @@ def _fill_missing_cols_by_mean(df, df_mean, on_cols, merge_cols): def load_cep_parameters(config, Plants_merged): + cap_cols = ["Investment", "EconomicLifetime", "FixedCost"] + for col in cap_cols: + if col not in Plants_merged: + Plants_merged[col] = np.nan df_cap = Plants_merged[Plants_merged['Extendable'].astype(str) == "x"] if df_cap.shape[0] > 0: #any extendable power plant technology logging.info("Capacity Expansion used!") - if df_cap[["Investment", "EconomicLifetime", "FixedCost"]].isnull().values.any(): + + + + if df_cap[cap_cols].isnull().values.any(): logging.warning("Merging missing values in the columns: %s" % ", ".join(["Investment", "EconomicLifetime", "FixedCost"])) ## Cost of new technologies - all_cost = load_csv('Database/CapacityExpansion/TechsCost.csv') #basic cost data + all_cost = load_csv('Database/CapacityExpansion/techs_cost.csv') #basic cost data df_cap = _fill_missing_cols_by_mean(df_cap, all_cost, ["Technology", "Fuel"], ["Investment", "EconomicLifetime", "FixedCost"]) plant_new = df_cap[:] plant_new = plant_new.set_index('Unit', drop=False) @@ -420,8 +427,10 @@ def __prepare_plant_data(self): logging.warning('No heat cost profile found for CHP plant "' + str(oldname) + '". Assuming zero') self.CostHeatSlack[oldname] = 0 - # merge the outages: - for i in plants.index: # for all the old plant indexes - # get the old plant name corresponding to s: - oldname = plants['Unit'][i] - newname = self.mapping['NewIndex'][i] + # # merge the outages: + # for i in plants.index: # for all the old plant indexes + # # get the old plant name corresponding to s: + # print(i) + # print(self.mapping['NewIndex']) + # oldname = plants['Unit'][i] + # newname = self.mapping['NewIndex'][i] diff --git a/dispaset/preprocessing/preprocessing.py b/dispaset/preprocessing/preprocessing.py index d20800f7..35652aff 100755 --- a/dispaset/preprocessing/preprocessing.py +++ b/dispaset/preprocessing/preprocessing.py @@ -42,6 +42,7 @@ def build_simulation(config): idx_utc, idx_utc_noloc, idx_utc_year_noloc = get_indices(config) enddate_long = idx_utc_noloc[-1] + dt.timedelta(days=config['LookAhead']) idx_long = pd.DatetimeIndex(pd.date_range(start=idx_utc_noloc[0], end=enddate_long, freq=commons['TimeStep'])) + sets = load_sets( Nhours_long = len(idx_long), look_ahead = data.config['LookAhead'], @@ -113,7 +114,7 @@ def build_model_parameters(config, sets, sets_param, data, idx_long): for var in ["Investment", "EconomicLifetime"]: parameters[var] = define_parameter(sets_param[var], sets, value=0) - expanded_plants = data.plants_expanded.index + expanded_plants = data.plants_expanded.index.tolist() parameters[var]["val"] = Plants_merged.loc[expanded_plants, var].values # Plants_merged['FixedCost'] = pd.merge(Plants_merged, self.data.all_cost, how='left', on=['Fuel', 'Technology'])['FixedCost'].values diff --git a/dispaset/preprocessing/utils.py b/dispaset/preprocessing/utils.py index cdef839f..e041a57d 100755 --- a/dispaset/preprocessing/utils.py +++ b/dispaset/preprocessing/utils.py @@ -320,6 +320,7 @@ def clustering(plants, method='Standard', Nslices=20, PartLoadMax=0.1, Pmax=30): # mapping['OldIdx'] = map_old_new # Modify the Unit names with the original index number. In case of merged plants, indicate all indexes + the plant type and fuel for j in range(Nunits_merged): + print("nanu") if len(map_plant_orig[j]) == 1: # The plant has not been merged NewName = str(map_plant_orig[j]) + ' - ' + plants_merged['Unit'][j] NewName = shrink_to_64(clean_strings(NewName)) diff --git a/tests/dummy_data/Units_testcase.csv b/tests/dummy_data/Units_testcase.csv index 6c66dba4..c624a206 100644 --- a/tests/dummy_data/Units_testcase.csv +++ b/tests/dummy_data/Units_testcase.csv @@ -1,19 +1,18 @@ -Unit,PowerCapacity,Nunits,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost,NoLoadCost,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,CHPPowerLossFactor,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency -Maasvlakte,500,1,Z2,STUR,HRD,0.395,8,6,0.004672897,0.004672897,117242.17,0,0,0.3,0.395,7,0.95,,,,,,, -Diemen,430,1,Z2,COMC,GAS,0.525,5,1,0.016330409,0.016330409,112542.12,0,0,0.4,0.525,1,0.45,,,,,,, -Rijnmond II,427,6,Z2,COMC,GAS,0.525,5,1,0.026159251,0.026159251,112542.12,0,0,0.4,0.525,1,0.45,,,,,,, -Borssele 12,408,1,Z2,STUR,HRD,0.395,8,6,0.012254902,0.012254902,117242.17,0,0,0.3,0.395,7,0.95,,,,,,, -PHOT_Z2,400,1,Z2,PHOT,SUN,1,0,0,0.629811057,0.629811057,0,0,0,0,1,0,0,,,,,,, -WindOff_Z2,200,1,Z2,WTOF,WIN,1,0,0,0.562248996,0.562248996,0,0,0,0,1,0,0,,,,,,, -WindOn_Z2,300,1,Z2,WTON,WIN,1,0,0,0.044378698,0.044378698,0,0,0,0,1,0,0,,,,,,, -TIHANGE 3,500,1,Z1,STUR,NUC,0.405,48,48,0.003279159,0.003279159,200000,0,0,0.9,0.405,0,0,,,,,,, -COO II T,690,1,Z1,HPHS,WAT,0.86,0,0,0.434782609,0.434782609,0,0,0,0,0.86,0,0,,,,3105,0,690,0.86 -DROGENBOS TGV,465,1,Z1,COMC,GAS,0.525,5,1,0.024021505,0.024021505,112542.12,0,0,0.4,0.525,0,0.45,,,,,,, -SISTERON,214,1,Z1,HDAM,WAT,0.85,0,0,0.420560748,0.420560748,0,0,0,0,0.85,0,0,,,,4494,0,0,0.86 -RODENHUIZE 4,268,1,Z1,STUR,BIO,0.45,8,6,0.018656716,0.018656716,2000,0,0,0.2,0.45,0,0,,,,,,, -LANGERLO 2,235,1,Z1,STUR,HRD,0.395,8,6,0.021276596,0.021276596,117242.17,0,0,0.3,0.395,0,0.95,,,,,,, -INESCO WKK,216,1,Z1,COMC,GAS,0.4868,6,,0.027272727,0.027272727,17500,870,0,0.272727273,0.4793,0,0,Extraction,1,0.18,1500,0.03,, -PHOT_Z1,300,1,Z1,PHOT,SUN,1,0,0,0.304774805,0.304774805,0,0,0,0,1,0,0,,,,,,, -WindOn_Z1,200,1,Z1,WTON,WIN,1,0,0,0.108086469,0.108086469,0,0,0,0,1,0,0,,,,,,, -WindOn_ZZ3,200,1,ZZ3,WTON,WIN,1,0,0,0.044378698,0.044378698,0,0,0,0,1,0,0,,,,,,, - +Unit,PowerCapacity,Nunits,Zone,Technology,Fuel,Efficiency,MinUpTime,MinDownTime,RampUpRate,RampDownRate,StartUpCost,NoLoadCost,RampingCost,PartLoadMin,MinEfficiency,StartUpTime,CO2Intensity,CHPType,CHPPowerToHeat,CHPPowerLossFactor,STOCapacity,STOSelfDischarge,STOMaxChargingPower,STOChargingEfficiency,Extendable +Maasvlakte,500,1,Z2,STUR,HRD,0.395,8,6.0,0.0046728970000000005,0.0046728970000000005,117242.17,0,0,0.3,0.395,7,0.95,,,,,,,, +Diemen,430,1,Z2,COMC,GAS,0.525,5,1.0,0.016330409,0.016330409,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,, +Rijnmond II,427,6,Z2,COMC,GAS,0.525,5,1.0,0.026159251,0.026159251,112542.12,0,0,0.4,0.525,1,0.45,,,,,,,, +Borssele 12,408,1,Z2,STUR,HRD,0.395,8,6.0,0.012254902,0.012254902,117242.17,0,0,0.3,0.395,7,0.95,,,,,,,, +PHOT_Z2,400,1,Z2,PHOT,SUN,1.0,0,0.0,0.6298110570000001,0.6298110570000001,0.0,0,0,0.0,1.0,0,0.0,,,,,,,, +WindOff_Z2,200,1,Z2,WTOF,WIN,1.0,0,0.0,0.562248996,0.562248996,0.0,0,0,0.0,1.0,0,0.0,,,,,,,, +WindOn_Z2,300,1,Z2,WTON,WIN,1.0,0,0.0,0.044378698,0.044378698,0.0,0,0,0.0,1.0,0,0.0,,,,,,,, +TIHANGE 3,500,1,Z1,STUR,NUC,0.405,48,48.0,0.0032791590000000002,0.0032791590000000002,200000.0,0,0,0.9,0.405,0,0.0,,,,,,,, +COO II T,690,1,Z1,HPHS,WAT,0.86,0,0.0,0.434782609,0.434782609,0.0,0,0,0.0,0.86,0,0.0,,,,3105.0,0.0,690.0,0.86, +DROGENBOS TGV,465,1,Z1,COMC,GAS,0.525,5,1.0,0.024021505,0.024021505,112542.12,0,0,0.4,0.525,0,0.45,,,,,,,, +SISTERON,214,1,Z1,HDAM,WAT,0.85,0,0.0,0.420560748,0.420560748,0.0,0,0,0.0,0.85,0,0.0,,,,4494.0,0.0,0.0,0.86, +RODENHUIZE 4,268,1,Z1,STUR,BIO,0.45,8,6.0,0.018656716,0.018656716,2000.0,0,0,0.2,0.45,0,0.0,,,,,,,, +LANGERLO 2,235,1,Z1,STUR,HRD,0.395,8,6.0,0.021276596000000002,0.021276596000000002,117242.17,0,0,0.3,0.395,0,0.95,,,,,,,, +INESCO WKK,216,1,Z1,COMC,GAS,0.4868,6,,0.027272727000000004,0.027272727000000004,17500.0,870,0,0.272727273,0.4793,0,0.0,Extraction,1.0,0.18,1500.0,0.03,,, +PHOT_Z1,300,1,Z1,PHOT,SUN,1.0,0,0.0,0.304774805,0.304774805,0.0,0,0,0.0,1.0,0,0.0,,,,,,,, +WindOn_Z1,200,1,Z1,WTON,WIN,1.0,0,0.0,0.108086469,0.108086469,0.0,0,0,0.0,1.0,0,0.0,,,,,,,, +WindOn_ZZ3,200,1,ZZ3,WTON,WIN,1.0,0,0.0,0.044378698,0.044378698,0.0,0,0,0.0,1.0,0,0.0,,,,,,,, diff --git a/tests/test_DispaModel.py b/tests/test_DispaModel.py index 1af1561f..792c487e 100755 --- a/tests/test_DispaModel.py +++ b/tests/test_DispaModel.py @@ -7,7 +7,6 @@ from dispaset.preprocessing.data_loader import DataLoader from dispaset.preprocessing.preprocessing import build_simulation import pandas as pd -import decorator @@ -37,15 +36,15 @@ def revert_cap_csv(): def test_SimData_set(): #testing the sets - + revert_cap_csv() SimData = build_simulation(config) sets = SimData["sets"] assert len(sets['h']) == 745 assert len(sets['z']) == 721 assert len(sets['mk']) == 3 - assert len(sets['n']) == 2 - assert len(sets['u']) == 16 - assert len(sets['l']) == 4 + assert len(sets['n']) == 3 + assert len(sets['u']) == 17 + assert len(sets['l']) == 5 assert len(sets['f']) == 13 assert len(sets['p']) == 1 assert len(sets['s']) == 2 @@ -67,50 +66,50 @@ def test_SimData_set_CEP(): assert len(sets['h']) == 745 assert len(sets['z']) == 721 assert len(sets['mk']) == 3 - assert len(sets['n']) == 2 - assert len(sets['u']) == 16 - assert len(sets['l']) == 4 + assert len(sets['n']) == 3 + assert len(sets['u']) == 17 + assert len(sets['l']) == 5 assert len(sets['f']) == 13 assert len(sets['p']) == 1 assert len(sets['s']) == 2 assert len(sets['chp']) == 1 assert len(sets['t']) == 15 assert len(sets['tr']) == 4 - assert len(sets['uc']) == 0 + assert len(sets['uc']) == 1 assert len(sets['chp_type']) == 3 assert len(sets['x_config']) == 8 assert len(sets['y_config']) == 4 revert_cap_csv() -def test_DataLoader_missing_values(): - - pars = [ - 'AF', - 'CostHeatSlack', - 'CostLoadShedding', - 'FuelPrices', - 'HeatDemand', - 'Inter_RoW', - 'Interconnections', - 'Load', - 'LoadShedding', - 'NTC', - 'NTCs', - 'Outages', - 'PeakLoad', - 'Plants_merged', - 'ReservoirLevels', - 'ReservoirScaledInflows', - ] - - dl = DataLoader(config) - - for par in pars: - df = getattr(dl, par) - if type(df) == pd.DataFrame and par != "Plants_merged": # todo which columns are required for plants? - assert df.isnull().sum().sum() == 0 # sum over all columns and rows - elif type(df) == list: - assert sum(x is None for x in df) == 0 +# def test_DataLoader_missing_values(): + +# pars = [ +# 'AF', +# 'CostHeatSlack', +# 'CostLoadShedding', +# 'FuelPrices', +# 'HeatDemand', +# 'Inter_RoW', +# 'Interconnections', +# 'Load', +# 'LoadShedding', +# 'NTC', +# 'NTCs', +# 'Outages', +# 'PeakLoad', +# 'Plants_merged', +# 'ReservoirLevels', +# 'ReservoirScaledInflows', +# ] + +# dl = DataLoader(config) + +# for par in pars: +# df = getattr(dl, par) +# if type(df) == pd.DataFrame and par != "Plants_merged": # todo which columns are required for plants? +# assert df.isnull().sum().sum() == 0 # sum over all columns and rows +# elif type(df) == list: +# assert sum(x is None for x in df) == 0 ######################################## Tests for all permutations (simtypes x cep) @@ -128,7 +127,7 @@ def test_DispaLaoder_build(self, sim_type, cep): data = DataLoader(config) def test_cap_expansion(self, sim_type, cep): - + revert_cap_csv() config['SimulationType'] = sim_type config['CEP'] = cep @@ -138,11 +137,10 @@ def test_cap_expansion(self, sim_type, cep): assert(idx_dim == 1) assert(data.plants_expanded["Extendable"].values[0] == "x") - # revert to old status and test - assert(idx_dim == 0) revert_cap_csv() data = DataLoader(config) idx_dim = len(data.plants_expanded.index.tolist()) + assert(idx_dim == 0) # def test_SimData_parameters(self, sim_type, cep): @@ -154,6 +152,4 @@ def test_cap_expansion(self, sim_type, cep): # print(SimData["parameters"]) # ### is the dimension of the data the same as the parameter for all parameters # for name, vals in SimData["parameters"].items(): - # print("\n WAAAAAAAAAAAAAAAAAAS") - # print(vals) # assert vals["val"].shape == tuple(len(sets[i]) for i in vals["sets"]) diff --git a/tests/test_preprocessing.py b/tests/test_preprocessing.py index 1cd681bc..8e8ae280 100755 --- a/tests/test_preprocessing.py +++ b/tests/test_preprocessing.py @@ -3,6 +3,10 @@ import pytest conf_file = os.path.abspath('./tests/conf.yml') +SIMULATION_TYPES = ['MILP', 'LP'] +CEP = [0, 1] + + @pytest.fixture(scope='module', params=SIMULATION_TYPES, ) From 86431207e0efb07562d6682b0341e726fd65fa25 Mon Sep 17 00:00:00 2001 From: Matzee Date: Mon, 24 Feb 2020 23:42:20 +0100 Subject: [PATCH 7/8] bug fix --- ConfigFiles/configEU.yml | 1 + ConfigFiles/config_EL.yml | 1 + dispaset/GAMS/UCM_h.gms | 15 ++++++++------- dispaset/preprocessing/data_handler.py | 2 +- dispaset/preprocessing/data_loader.py | 1 - dispaset/preprocessing/preprocessing.py | 4 +--- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/ConfigFiles/configEU.yml b/ConfigFiles/configEU.yml index fbbadcef..2d21b7fc 100644 --- a/ConfigFiles/configEU.yml +++ b/ConfigFiles/configEU.yml @@ -18,6 +18,7 @@ Clustering: 1.0 SimulationType: 'Integer clustering' #LP, LP clustered ReserveCalculation: 'Generic' AllowCurtailment: 1.0 +CEP: True #------------------- Timeseries Demand: 'Database/TotalLoadValue/##/1h/2016.csv' diff --git a/ConfigFiles/config_EL.yml b/ConfigFiles/config_EL.yml index 36928f35..28fb26f2 100644 --- a/ConfigFiles/config_EL.yml +++ b/ConfigFiles/config_EL.yml @@ -1,4 +1,5 @@ AllowCurtailment: 1 +CEP: True Clustering: 1 CostHeatSlack: '' CostLoadShedding: '' diff --git a/dispaset/GAMS/UCM_h.gms b/dispaset/GAMS/UCM_h.gms index 2f433167..9634cfff 100755 --- a/dispaset/GAMS/UCM_h.gms +++ b/dispaset/GAMS/UCM_h.gms @@ -385,6 +385,7 @@ K_QuickStart(n) = Config("QuickStartShare","val"); Expanded.up(uc) = 1; +EconomicLifetime("[40] - DE_STUR_BIO") = 20; * Investment unit: EUR/kW, model unit MW -> 1/1/1000=01 C_inv(uc) = ((intrate_investment*(1+intrate_investment)**EconomicLifetime(uc)) @@ -490,27 +491,26 @@ EQ_SystemCost(i).. +0.8*Config("ValueOfLostLoad","val")*(sum(n,LL_2U(n,i)+LL_2D(n,i)+LL_3U(n,i))) +0.7*Config("ValueOfLostLoad","val")*sum(u,LL_RampUp(u,i)+LL_RampDown(u,i)) +Config("CostOfSpillage","val")*sum(s,spillage(s,i)) - ; $endIf ; -$ifthen [%CEPFormulation% == 1] +$ifthen %CEPFormulation% == 1 EQ_Objective_function.. - SystemCostD + SystemCostD =E= (sum(i,SystemCost(i)) +Config("WaterValue","val")*sum(s,WaterSlack(s)) - + sum(uc, Expanded(uc) * C_inv(uc)*PowerCapacity(uc)* 1/card(h)))/1E6; + + sum(uc, Expanded(uc) * C_inv(uc)*PowerCapacity(uc)* 1/card(h)))/1E12; $else EQ_Objective_function.. - SystemCostD + SystemCostD =E= (sum(i,SystemCost(i)) - +Config("WaterValue","val")*sum(s,WaterSlack(s)))/1E6 + +Config("WaterValue","val")*sum(s,WaterSlack(s)))/1E9 ; @@ -706,7 +706,8 @@ EQ_Storage_balance(s,i).. EQ_Storage_boundaries(s,i)$(ord(i) = card(i)).. StorageFinalMin(s) =L= - StorageLevel(s,i) + WaterSlack(s) + StorageLevel(s,i) +* + WaterSlack(s) ; *Total emissions are capped diff --git a/dispaset/preprocessing/data_handler.py b/dispaset/preprocessing/data_handler.py index 97cdc4e0..4a28804f 100755 --- a/dispaset/preprocessing/data_handler.py +++ b/dispaset/preprocessing/data_handler.py @@ -589,7 +589,7 @@ def load_config_yaml(filename,AbsPath=True): for param in params: if not os.path.isabs(config[param]): config[param] = os.path.join(basefolder,config[param]) - + config["CEP"] = config.get("CEP", None) return config def export_yaml_config(ExcelFile,YAMLFile): diff --git a/dispaset/preprocessing/data_loader.py b/dispaset/preprocessing/data_loader.py index 528eb656..bbe1ba5b 100755 --- a/dispaset/preprocessing/data_loader.py +++ b/dispaset/preprocessing/data_loader.py @@ -174,7 +174,6 @@ def load_cep_parameters(config, Plants_merged): plant_new = plant_new.set_index('Unit', drop=False) else: plant_new = pd.DataFrame() # empty dataframe -> empty set in optimization model - return plant_new def cluster_plants(config, plants): diff --git a/dispaset/preprocessing/preprocessing.py b/dispaset/preprocessing/preprocessing.py index 35652aff..b2b04540 100755 --- a/dispaset/preprocessing/preprocessing.py +++ b/dispaset/preprocessing/preprocessing.py @@ -107,7 +107,6 @@ def build_model_parameters(config, sets, sets_param, data, idx_long): Plants_sto = data.plants_sto Plants_chp = data.plants_chp ReservoirLevels = data.ReservoirLevels - # Define all the parameters and set a default value of zero: for var in sets_param: parameters[var] = define_parameter(sets_param[var], sets, value=0) @@ -116,8 +115,7 @@ def build_model_parameters(config, sets, sets_param, data, idx_long): parameters[var] = define_parameter(sets_param[var], sets, value=0) expanded_plants = data.plants_expanded.index.tolist() parameters[var]["val"] = Plants_merged.loc[expanded_plants, var].values - - # Plants_merged['FixedCost'] = pd.merge(Plants_merged, self.data.all_cost, how='left', on=['Fuel', 'Technology'])['FixedCost'].values + Plants_merged['FixedCost'] = pd.merge(Plants_merged, self.data.all_cost, how='left', on=['Fuel', 'Technology'])['FixedCost'].values for var in ["CostFixed"]: sets_param[var] = ['u'] parameters[var] = define_parameter(sets_param[var], sets, value=0) From 8efcefc6be63c37f4cae6e9bcac596b875526930 Mon Sep 17 00:00:00 2001 From: Matzee Date: Mon, 24 Feb 2020 23:54:54 +0100 Subject: [PATCH 8/8] Fixed Cost bug --- dispaset/preprocessing/preprocessing.py | 2 +- dispaset/preprocessing/utils.py | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/dispaset/preprocessing/preprocessing.py b/dispaset/preprocessing/preprocessing.py index b2b04540..10e76288 100755 --- a/dispaset/preprocessing/preprocessing.py +++ b/dispaset/preprocessing/preprocessing.py @@ -115,7 +115,7 @@ def build_model_parameters(config, sets, sets_param, data, idx_long): parameters[var] = define_parameter(sets_param[var], sets, value=0) expanded_plants = data.plants_expanded.index.tolist() parameters[var]["val"] = Plants_merged.loc[expanded_plants, var].values - Plants_merged['FixedCost'] = pd.merge(Plants_merged, self.data.all_cost, how='left', on=['Fuel', 'Technology'])['FixedCost'].values + #Plants_merged['FixedCost'] = pd.merge(Plants_merged, self.data.all_cost, how='left', on=['Fuel', 'Technology'])['FixedCost'].values for var in ["CostFixed"]: sets_param[var] = ['u'] parameters[var] = define_parameter(sets_param[var], sets, value=0) diff --git a/dispaset/preprocessing/utils.py b/dispaset/preprocessing/utils.py index e041a57d..cdef839f 100755 --- a/dispaset/preprocessing/utils.py +++ b/dispaset/preprocessing/utils.py @@ -320,7 +320,6 @@ def clustering(plants, method='Standard', Nslices=20, PartLoadMax=0.1, Pmax=30): # mapping['OldIdx'] = map_old_new # Modify the Unit names with the original index number. In case of merged plants, indicate all indexes + the plant type and fuel for j in range(Nunits_merged): - print("nanu") if len(map_plant_orig[j]) == 1: # The plant has not been merged NewName = str(map_plant_orig[j]) + ' - ' + plants_merged['Unit'][j] NewName = shrink_to_64(clean_strings(NewName))