Source code for mapof.roommates.distances.main_distances

from mapof.core.matchings import *

from mapof.roommates.objects.Roommates import Roommates


[docs] def compute_retrospective_distance(instance_1, instance_2, inner_distance) -> (float, list): """ Computes the retrospective distance between two Roommates instances. Parameters ---------- instance_1 instance_2 inner_distance Returns ------- float The distance between the two instances. list The matching between the two instances. """ cost_table = get_matching_cost_retrospective(instance_1, instance_2, inner_distance) return solve_matching_vectors(cost_table)
def compute_positionwise_distance(instance_1, instance_2, inner_distance): cost_table = get_matching_cost_positionwise(instance_1, instance_2, inner_distance) return solve_matching_vectors(cost_table)
[docs] def get_matching_cost_retrospective(instance_1: Roommates, instance_2: Roommates, inner_distance: callable) -> list[list]: """ Return: Cost table """ vectors_1 = instance_1.get_retrospective_vectors() vectors_2 = instance_2.get_retrospective_vectors() size = instance_1.num_agents return [[inner_distance(vectors_1[i], vectors_2[j]) for i in range(size)] for j in range(size)]
[docs] def get_matching_cost_positionwise(instance_1: Roommates, instance_2: Roommates, inner_distance: callable) -> list[list]: """ Return: Cost table """ vectors_1 = instance_1.get_positionwise_vectors() vectors_2 = instance_2.get_positionwise_vectors() size = instance_1.num_agents return [[inner_distance(vectors_1[i], vectors_2[j]) for i in range(size)] for j in range(size)]