File size: 1,976 Bytes
7e9ee6e
 
1fff5f3
 
 
 
 
 
 
 
 
 
 
 
 
0461401
 
1fff5f3
7e9ee6e
 
 
 
 
 
 
 
 
 
 
 
 
 
0461401
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
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