hkayabilisim's picture
feature: load preview and a new load profile
0461401
import numpy as np
class ConstantLoad():
'''Constant load profile'''
def __init__(self, load):
self.label = f"""Constant load: {load}"""
self.load = load
def __iter__(self):
self.step = 0
return self
def __next__(self):
self.step += 1
eod = False
return self.load, eod
class SinusLoad():
'''Periodic load profile'''
def __init__(self, amplitude, period):
self.label = f"""Sinusodial load"""
self.amplitude = amplitude
self.period = period
def __iter__(self):
self.step = 0
return self
def __next__(self):
self.step += 1
eod = True if self.step % self.period == 0 else False
return max(0, self.amplitude + self.amplitude * np.sin(2 * np.pi * (self.step % self.period) / self.period )), eod
class PaymentGateway113Load():
'''Payment Gateway Load 113 Days
Incoming load to Payment Gateway.
'''
def __init__(self):
self.label = f"""Payment Gateway 113 days"""
self.loadprofile = [40, 32, 48, 48, 56, 48, 40, 32, 64, 64, 64, 64, 72, 64, 48, 32, 80, 64, 64, 56, 56,
48, 40, 64, 56, 56, 56, 56, 48, 48, 96, 64, 64, 64, 72, 80, 104, 96, 112, 136, 80,
72, 88, 96, 104, 144, 136, 176, 112, 128, 104, 112, 88, 88, 112, 104, 104, 120, 128,
88, 88, 160, 144, 152, 160, 208, 128, 96, 128, 112, 112, 144, 136, 136, 144, 144, 128,
152, 248, 216, 232, 216, 152, 152, 120, 152, 144, 144, 136, 144, 120, 120, 152, 184, 216, 2,
32, 240, 152, 120, 168, 144, 136, 136, 144, 112, 112, 152, 152, 152, 152, 144, 120, 112]
self.n = len(self.loadprofile)
def __iter__(self):
self.step = 0
return self
def __next__(self):
i = self.step % self.n
eod = True if i == self.n - 1 else False
self.step += 1
return self.loadprofile[i], eod