Exemplo n.º 1
0
    def sample_plan(self, plan_id, plan_length, rho, views, view_values, view_costs, current_view_id):
        remaining_views = dict()
        for v in views:
            remaining_views[v.ID] = v

         # current_view_id = remaining_views.keys()[0] NOW FUNCTION ARGUMENT

        plan = Plan(plan_id)
        # pmf for values
        value_pmf = self._generate_value_pmf(view_values)
        # pmf for costs
        cost_pmf = self._generate_cost_pmf(current_view_id, remaining_views.keys(), rho, view_costs)
        # joint dist
        joint = make_joint(value_pmf, cost_pmf)
        joint.normalize()

        for j in range(plan_length):
            x = joint.random()
            plan.append(remaining_views[x])
            remaining_views.pop(x)

            # sample without replacement
            # adapt both pmfs: value and cost
            value_pmf.unset(x)
            value_pmf.normalize()

            cost_pmf = self._generate_cost_pmf(x, remaining_views.keys(), rho, view_costs)
            # re-generate joint dist
            joint = make_joint(value_pmf, cost_pmf)
            joint.normalize()
        return plan