Example #1
0
File: cd.py Project: jmzhao/ot_py
 def discard(dominated_indices, undominated_indices) :
     t.constraints = [t.get_constraint(index=i) for i in dominated_indices]
     #print(t.get_constraint_indices())
     for d in t.datum :
         for winner in d.winners :
             winner_vio_dict = d.candidates[winner]
             for cand, vio_dict in list(d.candidates.items()) :
                 if (cand not in d.winners
                 and len(set(subtract(vio_dict, winner_vio_dict)).intersection(undominated_indices))) > 0 :
                     ## this candidate can be explained by undominated constraints
                     d.candidates.pop(cand)
         assert len(d.candidates) >=  len(d.winners)## at least the winner(s) should be left
     ## discard the group that only has the winner candidate
     t.datum = [d for d in t.datum if len(d.candidates) > len(d.winners)]
Example #2
0
File: cd.py Project: jmzhao/ot_py
 def find_dominated() :
     dominated_set = set()
     for data in t.datum :
         for winner in data.winners :
             winner_constraint = data.candidates[winner]
             for s in data.candidates :
                 if s not in data.winners :
                     s_constraint = data.candidates[s]
                     dominated_constraint = subtract(winner_constraint, s_constraint)
                     #print(winner_constraint, s_constraint, dominated_constraint)
                     ## assert subtract(s_constraint, winner_constraint) not empty
                     ## this is garanteed if there is no harmonically bounded winner
                     dominated_set.update(dominated_constraint)
     return dominated_set
Example #3
0
 def find_dominated():
     dominated_set = set()
     for data in t.datum:
         for winner in data.winners:
             winner_constraint = data.candidates[winner]
             for s in data.candidates:
                 if s not in data.winners:
                     s_constraint = data.candidates[s]
                     dominated_constraint = subtract(
                         winner_constraint, s_constraint)
                     #print(winner_constraint, s_constraint, dominated_constraint)
                     ## assert subtract(s_constraint, winner_constraint) not empty
                     ## this is garanteed if there is no harmonically bounded winner
                     dominated_set.update(dominated_constraint)
     return dominated_set
Example #4
0
 def discard(dominated_indices, undominated_indices):
     t.constraints = [t.get_constraint(index=i) for i in dominated_indices]
     #print(t.get_constraint_indices())
     for d in t.datum:
         for winner in d.winners:
             winner_vio_dict = d.candidates[winner]
             for cand, vio_dict in list(d.candidates.items()):
                 if (cand not in d.winners and len(
                         set(subtract(vio_dict, winner_vio_dict)).
                         intersection(undominated_indices))) > 0:
                     ## this candidate can be explained by undominated constraints
                     d.candidates.pop(cand)
         assert len(d.candidates) >= len(
             d.winners)  ## at least the winner(s) should be left
     ## discard the group that only has the winner candidate
     t.datum = [d for d in t.datum if len(d.candidates) > len(d.winners)]