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
Пример #2
0
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