Пример #1
0
def plot_cost_histogram(job_times, p_mu_normal, p_var_normal, e_c):
    num_samples = 10000
    costs = np.zeros([num_samples, len(job_times)])
    p_mu_to_use = get_underlying_normal_mu(p_mu_normal, p_var_normal)
    p_var_to_use = get_underlying_normal_var(p_mu_normal, p_var_normal)
    p_std_to_use = np.sqrt(p_var_to_use)
    e_c_to_use = e_c[::-1][:-1]
    for idx, job_time in enumerate(job_times):
        costs[:, idx] = np.random.lognormal(p_mu_to_use[job_time], p_std_to_use[job_time], num_samples) * e_c_to_use[idx]
    sample_values = pd.Series(costs.sum(axis=1))
    utils_io.plot_histogram(sample_values, '5.3a: histogram of cost probabilities', 'Cost', 'Probability of Cost')
Пример #2
0
def plot_cost_histogram_real_time(pol, price_grid, e_c):
    num_samples = 10000
    num_jobs_to_run = pol.shape[0] - 1
    num_prices = pol.shape[1]
    num_time_steps = pol.shape[2]
    costs = []
    for sample in range(num_samples):
        sample_jobs_remaining = num_jobs_to_run
        this_cost = 0.
        for time_step in range(num_time_steps):
            random_price_idx = random.randint(0, num_prices - 1)
            do_sell = pol[sample_jobs_remaining, random_price_idx, time_step] == 1
            if do_sell and sample_jobs_remaining > 0:
                this_cost += price_grid[random_price_idx, time_step] * e_c[num_jobs_to_run - sample_jobs_remaining]
                sample_jobs_remaining -= 1
        costs.append(this_cost)
    utils_io.plot_histogram(pd.Series(costs), '5.3b: histogram of cost probabilities', 'Cost', 'Probability of Cost')