def allocate(participants, constraints=Constraints()): # first construct the DAG with the constraints dag = DAG() for giver in participants: for taker in participants: if constraints.is_allowed(giver,taker): dag.connect(dag.node(giver),dag.node(taker)) completed = allocate_loop(dag) pairs = extract_pairs(completed) return pairs
def allocate(participants, constraints=Constraints()): # first construct the DAG with the constraints dag = DAG() for giver in participants: for taker in participants: if constraints.is_allowed(giver,taker): dag.connect(dag.node(giver),dag.node(taker)) compelted = None # This loop is a sanity check and a hack, fix it! # while True: completed = allocate_loop(dag) # correct = True # for x in completed.nodes(): # if not constraints.is_allowed(x.obj,completed.children(x)[0].obj): # correct = False # break # if correct: break pairs = extract_pairs(completed) return pairs