예제 #1
0
 def test_case_3(self):
     out = powerset([1,2])
     out = list(map(lambda x: set(x), out))
     self.assertTrue(len(out) == 4)
     self.assertTrue(set([]) in out)
     self.assertTrue(set([1]) in out)
     self.assertTrue(set([2]) in out)
     self.assertTrue(set([1,2]) in out)
예제 #2
0
 def test_Iterative_method(self):   
     '''
     Checks if output is correct.
     '''
     input_list, correct_output = self.SetUp()
     
     
     output = powerset(input_list)
     self.assertEqual(output, correct_output)
    def __init__(self,
                 total_users,
                 users_per_round,
                 num_glob_iters,
                 policy,
                 c,
                 beta,
                 tau_max,
                 alpha=0.9):

        self.num_glob_iters = num_glob_iters
        self.users = []
        self.selected_users = []
        self.users_per_round = users_per_round

        for i in range(total_users):
            user = User(user_id=i, tau_max=tau_max, c=c, alpha=alpha)
            self.users.append(user)

        self.tau_max = tau_max  # max delay time in seconds
        self.policy = policy  # scheduling policy
        if self.policy == 'CS-UCB-Q':  # update policy optimal reward
            self.mu_opt = 0
            user_groups = powerset([n for n in range(total_users)
                                    ])  # all available chosen groups
            for group in user_groups:
                if group:
                    p = 1
                    for n in range(total_users):
                        if n in group:
                            p *= self.users[n].alpha
                        else:
                            p *= 1 - self.users[n].alpha
                    self.mu_opt += p * sorted(
                        [self.users[n].mu for n in group], reverse=True)[min(
                            self.users_per_round - 1,
                            len(group) - 1)]
        else:
            self.mu_opt = sorted([user.mu for user in self.users],
                                 reverse=True)[self.users_per_round - 1]
        self.kapa = ceil(
            len(self.users) /
            self.users_per_round)  # total rounds for first exploration
        self.sigma_pi = [0]  # cumulative regret values for policy pi
        self.fails = [0]  # cumulative counter for failed clients
        self.beta = beta
예제 #4
0
 def test_case_5(self):
     out = powerset([1,2,3,4])
     out = list(map(lambda x: set(x), out))
     self.assertTrue(len(out) == 16)
     self.assertTrue(set([]) in out)
     self.assertTrue(set([1]) in out)
     self.assertTrue(set([2]) in out)
     self.assertTrue(set([1,2]) in out)
     self.assertTrue(set([3]) in out)
     self.assertTrue(set([1,3]) in out)
     self.assertTrue(set([2,3]) in out)
     self.assertTrue(set([1,2,3]) in out)
     self.assertTrue(set([4]) in out)
     self.assertTrue(set([1,4]) in out)
     self.assertTrue(set([2,4]) in out)
     self.assertTrue(set([1,2,4]) in out)
     self.assertTrue(set([3,4]) in out)
     self.assertTrue(set([1,3,4]) in out)
     self.assertTrue(set([2,3,4]) in out)
     self.assertTrue(set([1,2,3,4]) in out)
예제 #5
0
 def test_case_1(self):
     out = powerset([])
     out = list(map(lambda x: set(x), out))
     self.assertTrue(len(out) == 1)
     self.assertTrue(set([]) in out)