Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python
- import csv
- data = []
- with open('./SolarWindTotal.csv', 'rb') as inp:
- rdr = csv.reader(inp, delimiter=';')
- for row in rdr:
- data.append(row);
- ldata=len(data);
- # MW
- windBeg = 44541.0
- windEnd = 49534.0
- solarBeg = 38343.0
- solarEnd = 39787.0
- # MWH
- accCapacity = 40000.0
- # MW
- accPower = 11300.0
- # Inputs are solar installed and wind installed, in MW
- def point(s, w):
- acc = 0.0
- totalUsed = 0.0
- sumDemand = 0.0
- for i in range(0,ldata):
- curSolar=solarBeg+(solarEnd-solarBeg)/ldata*i
- curWind=windBeg+(windEnd-windBeg)/ldata*i
- curPower=float(data[i][0])*1000.0/curSolar*s+float(data[i][1])*1000.0/curWind*w
- curPowerUsable=curPower
- curDemand=float(data[i][2])*1000.0
- sumDemand+=curDemand
- if curPower>curDemand:
- curPowerUsable=curDemand
- savedAcc=curPower-curDemand
- if (savedAcc>accPower):
- savedAcc=accPower
- if (acc+savedAcc) > accCapacity:
- savedAcc=accCapacity-acc;
- acc+=savedAcc*0.9
- else:
- takeFromAcc=acc*0.9;
- if (takeFromAcc>accPower):
- takeFroMAcc=accPower
- if (takeFromAcc+curPower)>curDemand:
- takeFromAcc=curDemand-curPower
- curPowerUsable+=takeFromAcc
- acc-=takeFromAcc/0.9
- totalUsed+=curPowerUsable
- return totalUsed+acc
- s = 160000
- w = 160000
- # minimal values which mean 0% is wasted
- r0 = point(10000, 10000)/1000.0
- # given values
- r1 = point(s, w)/1000.0
- # to calculate marginal waste ratio
- r2 = point(s*1.001, w*1.001)/1000.0
- diff = r2/r1
- lratio = (r2-r1)*1000/(s+w)
- iratio = r0/20000
- print(r0,r1,r2,diff,lratio/iratio)
Add Comment
Please, Sign In to add comment