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')
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')