|
|
@@ -74,6 +74,14 @@ def linramp(start, end, wtarget, minsize): |
|
|
|
#print(repr((x, i))) |
|
|
|
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): |
|
|
|
onehour = timedelta(hours=1) |
|
|
|
totaltime = e - s |
|
|
@@ -101,7 +109,8 @@ def distribute(s, e, prod, minsize): |
|
|
|
|
|
|
|
#print('start') |
|
|
|
|
|
|
|
points = [] |
|
|
|
prodpoints = [] |
|
|
|
conspoints = [] |
|
|
|
index = [] |
|
|
|
|
|
|
|
def serializearrowasmili(obj): |
|
|
@@ -117,7 +126,24 @@ for i in arrow.Arrow.range('day', startdate, enddate): |
|
|
|
|
|
|
|
index.append((noon, 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 |
|
|
|
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)) |
|
|
|
else: |
|
|
|
#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)) |