def test_percentages(self): neutral_range = 0.001 self.G.node[0]['opinion'] = 0.001 # neutral self.G.node[1]['opinion'] = 0.01 # positive self.G.node[2]['opinion'] = -0.5 # negative percentages_exp = [1/3,1/3,1/3] np.testing.assert_array_equal(cp.percentages(self.G,neutral_range),percentages_exp) self.G.node[2]['opinion'] = 0.5 percentages_exp = [2/3,0/3,1/3] np.testing.assert_array_equal(cp.percentages(self.G,neutral_range),percentages_exp) self.G.node[1]['opinion'] = -0.001 self.G.node[2]['opinion'] = -0.01 percentages_exp = [0/3,1/3,2/3] np.testing.assert_array_equal(cp.percentages(self.G,neutral_range),percentages_exp)
def test_percentages(self): neutral_range = 0.001 self.G.node[0]['opinion'] = 0.001 # neutral self.G.node[1]['opinion'] = 0.01 # positive self.G.node[2]['opinion'] = -0.5 # negative percentages_exp = [1 / 3, 1 / 3, 1 / 3] np.testing.assert_array_equal(cp.percentages(self.G, neutral_range), percentages_exp) self.G.node[2]['opinion'] = 0.5 percentages_exp = [2 / 3, 0 / 3, 1 / 3] np.testing.assert_array_equal(cp.percentages(self.G, neutral_range), percentages_exp) self.G.node[1]['opinion'] = -0.001 self.G.node[2]['opinion'] = -0.01 percentages_exp = [0 / 3, 1 / 3, 2 / 3] np.testing.assert_array_equal(cp.percentages(self.G, neutral_range), percentages_exp)
# If strategy 1 is not a smart peer, the 2 forceful peers can be added simultaneously if STRATEGY1 != 'smart': gm.add_forceful(G, STRATEGY1, BUDGET1, STRATEGY2, BUDGET2) # If strategy 1 is smart then ofrceful peer with strategy 2 is added first then smart peer else: #Add one forceul peer to the graph gm.add_one_forceful(G, STRATEGY2, BUDGET2) ## Linear programming method to beat an existing peer with minimum budget BUDGET1 = gm.add_smart(G, ALPHA, BUDGET2, NEUTRAL_RANGE) # Calculate final opinion vector by equation, considering the presence of # 2 forceful peers in the last 2 indices of the graph #R_inf = cp.R_inf(G,ALPHA) # Calculate final opinion vector by iterations R_itr = gm.R_itr(G, ALPHA) # Calculate the percentage of normal peers that followed either of the forceful peers tmp = cp.percentages(G, NEUTRAL_RANGE) # Update S1_wins_list for analytical reason if (tmp[0] > 0.5): S1_wins_list.append(1) else: S1_wins_list.append(0) # Update percentages arrays cp.update_percentages(tmp, S1_followers, S2_followers, neutral, i, wins) i += 1 # Asserting that R_inf calculated by equation and iteration are equal to decimal places #try: # np.testing.assert_array_almost_equal(R_inf,R_itr,4) #except AssertionError: # sys.exit('ConvergenceError: convergence of R_inf is not correct to 4 decimal places\nProgram will terminate') wins[0] = (wins[0] / SIMULATIONS) * 100 wins[1] = (wins[1] / SIMULATIONS) * 100 wins[2] = (wins[2] / SIMULATIONS) * 100
# If strategy 1 is not a smart peer, the 2 forceful peers can be added simultaneously if STRATEGY1 != 'smart': gm.add_forceful(G, STRATEGY1, BUDGET1, STRATEGY2, BUDGET2) # If strategy 1 is smart then ofrceful peer with strategy 2 is added first then smart peer else: #Add one forceul peer to the graph gm.add_one_forceful(G, STRATEGY2, BUDGET2) ## Linear programming method to beat an existing peer with minimum budget BUDGET1 = gm.add_smart(G,ALPHA,BUDGET2, NEUTRAL_RANGE) # Calculate final opinion vector by equation, considering the presence of # 2 forceful peers in the last 2 indices of the graph #R_inf = cp.R_inf(G,ALPHA) # Calculate final opinion vector by iterations R_itr = gm.R_itr(G,ALPHA) # Calculate the percentage of normal peers that followed either of the forceful peers tmp = cp.percentages(G,NEUTRAL_RANGE) # Update S1_wins_list for analytical reason if (tmp[0]>0.5): S1_wins_list.append(1) else: S1_wins_list.append(0) # Update percentages arrays cp.update_percentages(tmp, S1_followers, S2_followers, neutral, i, wins) i += 1 # Asserting that R_inf calculated by equation and iteration are equal to decimal places #try: # np.testing.assert_array_almost_equal(R_inf,R_itr,4) #except AssertionError: # sys.exit('ConvergenceError: convergence of R_inf is not correct to 4 decimal places\nProgram will terminate') wins[0] = (wins[0]/SIMULATIONS)*100 wins[1] = (wins[1]/SIMULATIONS)*100 wins[2] = (wins[2]/SIMULATIONS)*100