def baseline()

in News Vendor/src/heuristic_baseline.py [0:0]


def baseline(l, N, write = False):
    
    max_value = 100
    max_holding_cost = 5
    max_loss_goodwill = 10
    max_mean = 200
    gamma = 1
    lead_time = l
    periods = 40
    n_paths = 500
    
    if write:
        filename = 'baseline_' + str(lead_time) + '.csv'
    
    def sample_parameters():
        p = np.random.rand() * max_value
        c = np.random.rand() * p
        h = np.random.rand() * min(c, max_holding_cost)
        k = np.random.rand() * max_loss_goodwill
        mu = np.random.rand() * max_mean
        return p,c,h,k,mu
        
    def sample_state(mu):
        inv_dim = max(lead_time, 1)
        state = np.zeros(inv_dim)
#        state[0] = np.random.rand() * inv_dim * mu
#        for i in range(1, inv_dim):
#            state[i] = np.random.rand() * (inv_dim * mu - np.sum(state[:i-1])) 
        return state
    
    
    if write:
        bufsize = 1
        file = open(filename, 'w', buffering=bufsize)
    V = 0
    for i in range(N):
        p,c,h,k,mu = sample_parameters()
        x = sample_state(mu)
        parameters = {}
        parameters['p'] = p
        parameters['c'] = c
        parameters['h'] = h
        parameters['k'] = k
        parameters['mu'] = mu
        parameters['x0'] = x
        parameters['lead_time'] = lead_time
        parameters['gamma'] = gamma
        parameters['periods'] = periods
        parameters['n_paths'] = n_paths
        
        M = multiperiod_vlt_heuristic(parameters)
        value = M.solve()
#        print(p,c,h,k,mu,x,value)
        V += value
        string = str(value) + ',' + str(p) + ',' + str(c) + ',' + str(h) + ',' + str(k) + ',' + str(mu)
        for j in range(len(x)):
            string += ',' + str(x[j])
        print(V / (i + 1))
        string += '\n'
        if write:
            file.write(string)
    if write:
        file.close()