1..T: set of periods
    K: set of resources
    P: set of items
    f[t,p]: set-up costs
    g[t,p]: set-up times
    c[t,p]: variable costs
    d[t,p]: demand values
    h[t,p]: holding costs
    a[t,k,p]: amount of resource k for producing product p in period. t
    M[t,k]: resource upper bounds
    UB[t,p]: upper bound of production time of product p in period t
    phi[(i,j)] : units of i required to produce a unit of j (j parent of i)

def make_data():
    """
    1..T: set of periods
    K: set of resources
    P: set of items
    f[t,p]: set-up costs
    g[t,p]: set-up times
    c[t,p]: variable costs
    d[t,p]: demand values
    h[t,p]: holding costs
    a[t,k,p]: amount of resource k for producing product p in period. t
    M[t,k]: resource upper bounds
    UB[t,p]: upper bound of production time of product p in period t
    phi[(i,j)] : units of i required to produce a unit of j (j parent of i)
    """
    T = 5
    K = [1]
    P = [1,2,3,4,5]
    _,f,g,c,d,h,UB = multidict({
        (1,1): [10, 1, 2, 0, 0.5, 24],
        (1,2): [10, 1, 2, 0, 0.5, 24],
        (1,3): [10, 1, 2, 0, 0.5, 24],
        (1,4): [10, 1, 2, 0, 0.5, 24],
        (1,5): [10, 1, 2, 0, 0.5, 24],
        (2,1): [10, 1, 2, 0, 0.5, 24],
        (2,2): [10, 1, 2, 0, 0.5, 24],
        (2,3): [10, 1, 2, 0, 0.5, 24],
        (2,4): [10, 1, 2, 0, 0.5, 24],
        (2,5): [10, 1, 2, 0, 0.5, 24],
        (3,1): [10, 1, 2, 0, 0.5, 24],
        (3,2): [10, 1, 2, 0, 0.5, 24],
        (3,3): [10, 1, 2, 0, 0.5, 24],
        (3,4): [10, 1, 2, 0, 0.5, 24],
        (3,5): [10, 1, 2, 0, 0.5, 24],
        (4,1): [10, 1, 2, 0, 0.5, 24],
        (4,2): [10, 1, 2, 0, 0.5, 24],
        (4,3): [10, 1, 2, 0, 0.5, 24],
        (4,4): [10, 1, 2, 0, 0.5, 24],
        (4,5): [10, 1, 2, 0, 0.5, 24],
        (5,1): [10, 1, 2, 0, 0.5, 24],
        (5,2): [10, 1, 2, 0, 0.5, 24],
        (5,3): [10, 1, 2, 0, 0.5, 24],
        (5,4): [10, 1, 2, 0, 0.5, 24],
        (5,5): [10, 1, 2, 5, 0.5, 24],
        })
    a = {
        (1,1,1): 1,
        (1,1,2): 1,
        (1,1,3): 1,
        (1,1,4): 1,
        (1,1,5): 1,
        (2,1,1): 1,
        (2,1,2): 1,
        (2,1,3): 1,
        (2,1,4): 1,
        (2,1,5): 1,
        (3,1,1): 1,
        (3,1,2): 1,
        (3,1,3): 1,
        (3,1,4): 1,
        (3,1,5): 1,
        (4,1,1): 1,
        (4,1,2): 1,
        (4,1,3): 1,
        (4,1,4): 1,
        (4,1,5): 1,
        (5,1,1): 1,
        (5,1,2): 1,
        (5,1,3): 1,
        (5,1,4): 1,
        (5,1,5): 1,
        }
    M = {
        (1,1): 15,
        (2,1): 15,
        (3,1): 15,
        (4,1): 15,
        (5,1): 15,
        }

    phi = {     # phi[(i,j)] : units of i required to produce a unit of j (j parent of i)
        (1,3):2,
        (2,3):3,
        (2,4):3/2.,
        (3,5):1/2.,
        (4,5):3
        }


    return T,K,P,f,g,c,d,h,a,M,UB,phi