Browse Source

generate some fake production data..

main
John-Mark Gurney 5 years ago
parent
commit
508c43cead
1 changed files with 30 additions and 4 deletions
  1. +30
    -4
      fakedata.py

+ 30
- 4
fakedata.py View File

@@ -74,6 +74,14 @@ def linramp(start, end, wtarget, minsize):
#print(repr((x, i))) #print(repr((x, i)))
yield (i, x / ndates * wtarget) yield (i, x / ndates * wtarget)


def makeconsumption(s, mean, sig, interval):
s = s.replace(hour=0, minute=0, second=0)
e = (s + timedelta(days=1)) - interval

ret = [ (i, rand.gauss(mean, sig)) for i in drange(s, e, interval) ]

return ret

def distribute(s, e, prod, minsize): def distribute(s, e, prod, minsize):
onehour = timedelta(hours=1) onehour = timedelta(hours=1)
totaltime = e - s totaltime = e - s
@@ -101,7 +109,8 @@ def distribute(s, e, prod, minsize):


#print('start') #print('start')


points = []
prodpoints = []
conspoints = []
index = [] index = []


def serializearrowasmili(obj): def serializearrowasmili(obj):
@@ -117,7 +126,24 @@ for i in arrow.Arrow.range('day', startdate, enddate):


index.append((noon, whprod)) index.append((noon, whprod))
#print(repr(i), whprod) #print(repr(i), whprod)
dist = distribute(s, e, whprod, timedelta(seconds=20))

dist = []

conspoints.extend(makeconsumption(s, rand.uniform(400,800), 100, timedelta(minutes=1)))

# zero points for non-production
import sys
print(repr((i, s)), file=sys.stderr)
dist.extend(distribute(i, s, 0, timedelta(minutes=5)))

# production
print(repr((s, e)), file=sys.stderr)
dist.extend(distribute(s, e, whprod, timedelta(seconds=20)))

# zero points for non-production
eod = i.replace(hour=23, minute=55)
print(repr((e, eod)), file=sys.stderr)
dist.extend(distribute(e, eod, 0, timedelta(minutes=5)))


# print timestamps as miliseconds # print timestamps as miliseconds
if False: if False:
@@ -128,6 +154,6 @@ for i in arrow.Arrow.range('day', startdate, enddate):
print('\n'.join('%s %s' % (a, b) for a, b in dist)) print('\n'.join('%s %s' % (a, b) for a, b in dist))
else: else:
#print(json.dumps(tuple(dist), indent=2)) #print(json.dumps(tuple(dist), indent=2))
points.extend(dist)
prodpoints.extend(dist)


print('fakedata =', json.dumps(dict(production=points, index=index), default=serializearrowasmili))
print('fakedata =', json.dumps(dict(production=prodpoints, consumption=conspoints, index=index), default=serializearrowasmili))

Loading…
Cancel
Save