StrategyThreshold

class poisson_approval.StrategyThreshold(d, ratio_optimistic=None, profile=None, voting_rule=None)[source]

A threshold strategy (for a cardinal profile).

For each ranking, there is a threshold and a ratio_optimistic. E.g. assume that for ranking abc, the threshold is 0.4 and the ratio is 0.2. It means that:

  • A voter abc votes for ab if their utility for b is strictly greater than 0.4,
  • A voter abc votes for a if their utility for b is strictly lower than 0.4,
  • Voters abc whose utility for b is equal to 0.4 are split: a ratio 0.2 are optimistic, they vote only for a (they behave as if the pivot ab was very likely); and a ratio 0.8 are pessimistic, they vote for ab (they behave as if the pivot bc was very likely).

For a given ranking, the threshold and / or the ratio may be None, which means that they are not specified for this strategy.

Parameters:
  • d (dict) – Cf. examples below for the different types of input syntax.
  • ratio_optimistic (Number) – Cf. examples below for the different types of input syntax.
  • profile (Profile, optional) – The “context” in which the strategy is used.
  • voting_rule (str) – The voting rule. Possible values are APPROVAL, PLURALITY and ANTI_PLURALITY. Default: the same voting rule as profile if a profile is specified, APPROVAL otherwise.

Examples

The two following examples illustrate different ways to define the same profile. The first possible type of input syntax is a dict that maps a ranking to a tuple (threshold, ratio_optimistic). It corresponds exactly to the attribute d_ranking_t_threshold_ratio_optimistic:

>>> strategy = StrategyThreshold({'abc': (0.4, 0.2), 'bac': (0.51, 0.2), 'cab': (1, 0.2)})
>>> print(strategy)
<abc: utility-dependent (0.4, 0.2), bac: utility-dependent (0.51, 0.2), cab: c>

The second possible type of input syntax is a dict that maps a ranking to a threshold. All rankings have the same ratio, given by the parameter ratio_optimistic:

>>> strategy = StrategyThreshold({'abc': 0.4, 'bac': 0.51, 'cab': 1}, ratio_optimistic=0.2)
>>> print(strategy)
<abc: utility-dependent (0.4, 0.2), bac: utility-dependent (0.51, 0.2), cab: c>

Some operations on the strategy:

>>> strategy
StrategyThreshold({'abc': (0.4, 0.2), 'bac': (0.51, 0.2), 'cab': (1, 0.2)})
>>> strategy.abc
'utility-dependent'
>>> strategy.a_bc
'a'
>>> strategy.ab_c
'ab'
>>> strategy.d_ranking_threshold['abc']
0.4

It is possible not to specify the ratios of optimistic voters:

>>> strategy = StrategyThreshold({'abc': 0.4, 'bac': 0.51})
>>> strategy
StrategyThreshold({'abc': 0.4, 'bac': 0.51})
>>> print(strategy)
<abc: utility-dependent (0.4), bac: utility-dependent (0.51)>

If this strategy is applied to a profile where a positive share of voters have ranking abc and a utility 0.2 for their middle candidate b, it will raise an error because the ratio of optimistic voters is needed in that case.

a_bc

Ballot of type a_bc.

Type:str
a_cb

Ballot of type a_cb.

Type:str
ab_c

Ballot of type ab_c.

Type:str
abc

Ballot of ranking abc.

Type:str
ac_b

Ballot of type ac_b.

Type:str
acb

Ballot of ranking acb.

Type:str
b_ac

Ballot of type b_ac.

Type:str
b_ca

Ballot of type b_ca.

Type:str
ba_c

Ballot of type ba_c.

Type:str
bac

Ballot of ranking bac.

Type:str
bc_a

Ballot of type bc_a.

Type:str
bca

Ballot of ranking bca.

Type:str
c_ab

Ballot of type c_ab.

Type:str
c_ba

Ballot of type c_ba.

Type:str
ca_b

Ballot of type ca_b.

Type:str
cab

Ballot of ranking cab.

Type:str
cb_a

Ballot of type cb_a.

Type:str
cba

Ballot of ranking cba.

Type:str
d_ranking_best_response

Defined when a profile is given. Cf. TauVector.d_ranking_best_response.

d_ranking_t_threshold_ratio_optimistic

Thresholds and ratios of optimistic voters.

Key : ranking, e.g. 'abc'. Value: tuple (threshold, ratio_optimistic).

Type:dict
deepcopy_with_attached_profile(profile)

Deep copy with an attached profile.

Parameters:profile (Profile) –
Returns:A deep copy of this strategy, with the attached profile profile.
Return type:Strategy
duo_ab

Defined when a profile is given. Cf. TauVector.duo_ab.

duo_ac

Defined when a profile is given. Cf. TauVector.duo_ac.

duo_ba

Defined when a profile is given. Cf. TauVector.duo_ba.

duo_bc

Defined when a profile is given. Cf. TauVector.duo_bc.

duo_ca

Defined when a profile is given. Cf. TauVector.duo_ca.

duo_cb

Defined when a profile is given. Cf. TauVector.duo_cb.

is_equilibrium

Whether this strategy is an equilibrium (in the context of the given profile). Cf. Profile.is_equilibrium().

Type:EquilibriumStatus
pivot_strict_ab

Defined when a profile is given. Cf. TauVector.pivot_strict_ab.

pivot_strict_ac

Defined when a profile is given. Cf. TauVector.pivot_strict_ac.

pivot_strict_ba

Defined when a profile is given. Cf. TauVector.pivot_strict_ba.

pivot_strict_bc

Defined when a profile is given. Cf. TauVector.pivot_strict_bc.

pivot_strict_ca

Defined when a profile is given. Cf. TauVector.pivot_strict_ca.

pivot_strict_cb

Defined when a profile is given. Cf. TauVector.pivot_strict_cb.

pivot_tij_abc

Defined when a profile is given. Cf. TauVector.pivot_tij_abc.

pivot_tij_acb

Defined when a profile is given. Cf. TauVector.pivot_tij_acb.

pivot_tij_bac

Defined when a profile is given. Cf. TauVector.pivot_tij_bac.

pivot_tij_bca

Defined when a profile is given. Cf. TauVector.pivot_tij_bca.

pivot_tij_cab

Defined when a profile is given. Cf. TauVector.pivot_tij_cab.

pivot_tij_cba

Defined when a profile is given. Cf. TauVector.pivot_tij_cba.

pivot_tjk_abc

Defined when a profile is given. Cf. TauVector.pivot_tjk_abc.

pivot_tjk_acb

Defined when a profile is given. Cf. TauVector.pivot_tjk_acb.

pivot_tjk_bac

Defined when a profile is given. Cf. TauVector.pivot_tjk_bac.

pivot_tjk_bca

Defined when a profile is given. Cf. TauVector.pivot_tjk_bca.

pivot_tjk_cab

Defined when a profile is given. Cf. TauVector.pivot_tjk_cab.

pivot_tjk_cba

Defined when a profile is given. Cf. TauVector.pivot_tjk_cba.

pivot_weak_ab

Defined when a profile is given. Cf. TauVector.pivot_weak_ab.

pivot_weak_ac

Defined when a profile is given. Cf. TauVector.pivot_weak_ac.

pivot_weak_ba

Defined when a profile is given. Cf. TauVector.pivot_weak_ba.

pivot_weak_bc

Defined when a profile is given. Cf. TauVector.pivot_weak_bc.

pivot_weak_ca

Defined when a profile is given. Cf. TauVector.pivot_weak_ca.

pivot_weak_cb

Defined when a profile is given. Cf. TauVector.pivot_weak_cb.

print_all_pivots()

Defined when a profile is given. Cf. TauVector.print_all_pivots().

print_weak_pivots()

Defined when a profile is given. Cf. TauVector.print_weak_pivots().

scores

Defined when a profile is given. Cf. TauVector.scores.

tau

The tau-vector associated to this strategy (in the context of the given profile). Cf. Profile.tau().

Type:TauVector
trio

Defined when a profile is given. Cf. TauVector.trio.

trio_1t_a

Defined when a profile is given. Cf. TauVector.trio_1t_a.

trio_1t_b

Defined when a profile is given. Cf. TauVector.trio_1t_b.

trio_1t_c

Defined when a profile is given. Cf. TauVector.trio_1t_c.

trio_2t_ab

Defined when a profile is given. Cf. TauVector.trio_2t_ab.

trio_2t_ac

Defined when a profile is given. Cf. TauVector.trio_2t_ac.

trio_2t_ba

Defined when a profile is given. Cf. TauVector.trio_2t_ba.

trio_2t_bc

Defined when a profile is given. Cf. TauVector.trio_2t_bc.

trio_2t_ca

Defined when a profile is given. Cf. TauVector.trio_2t_ca.

trio_2t_cb

Defined when a profile is given. Cf. TauVector.trio_2t_cb.

winners

Defined when a profile is given. Cf. TauVector.winners.

τ

The tau-vector (alternate notation). Cf. Profile.τ().

Type:TauVector