Guest User

Untitled

a guest
Oct 16th, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.55 KB | None | 0 0
  1. #!/usr/bin/python
  2.  
  3. import csv
  4.  
  5. data = []
  6.  
  7. with open('./SolarWindTotal.csv', 'rb') as inp:
  8. rdr = csv.reader(inp, delimiter=';')
  9. for row in rdr:
  10. data.append(row);
  11.  
  12. ldata=len(data);
  13.  
  14. # MW
  15. windBeg = 44541.0
  16. windEnd = 49534.0
  17. solarBeg = 38343.0
  18. solarEnd = 39787.0
  19.  
  20. # MWH
  21. accCapacity = 40000.0
  22.  
  23. # MW
  24. accPower = 11300.0
  25.  
  26. # Inputs are solar installed and wind installed, in MW
  27. def point(s, w):
  28. acc = 0.0
  29. totalUsed = 0.0
  30. sumDemand = 0.0
  31. for i in range(0,ldata):
  32. curSolar=solarBeg+(solarEnd-solarBeg)/ldata*i
  33. curWind=windBeg+(windEnd-windBeg)/ldata*i
  34. curPower=float(data[i][0])*1000.0/curSolar*s+float(data[i][1])*1000.0/curWind*w
  35. curPowerUsable=curPower
  36. curDemand=float(data[i][2])*1000.0
  37. sumDemand+=curDemand
  38. if curPower>curDemand:
  39. curPowerUsable=curDemand
  40. savedAcc=curPower-curDemand
  41. if (savedAcc>accPower):
  42. savedAcc=accPower
  43. if (acc+savedAcc) > accCapacity:
  44. savedAcc=accCapacity-acc;
  45. acc+=savedAcc*0.9
  46. else:
  47. takeFromAcc=acc*0.9;
  48. if (takeFromAcc>accPower):
  49. takeFroMAcc=accPower
  50. if (takeFromAcc+curPower)>curDemand:
  51. takeFromAcc=curDemand-curPower
  52. curPowerUsable+=takeFromAcc
  53. acc-=takeFromAcc/0.9
  54. totalUsed+=curPowerUsable
  55. return totalUsed+acc
  56.  
  57. s = 160000
  58. w = 160000
  59.  
  60. # minimal values which mean 0% is wasted
  61. r0 = point(10000, 10000)/1000.0
  62.  
  63. # given values
  64. r1 = point(s, w)/1000.0
  65.  
  66. # to calculate marginal waste ratio
  67. r2 = point(s*1.001, w*1.001)/1000.0
  68.  
  69. diff = r2/r1
  70.  
  71. lratio = (r2-r1)*1000/(s+w)
  72. iratio = r0/20000
  73.  
  74. print(r0,r1,r2,diff,lratio/iratio)
Add Comment
Please, Sign In to add comment