Source code for mapof.marriages.objects.Marriages

from mapof.core.objects.Instance import Instance

import mapof.marriages.persistence.instance_exports as exports
from mapof.marriages.cultures import *
from mapof.marriages.features import get_feature
from mapof.marriages.persistence.instance_imports import import_real_instance


[docs] class Marriages(Instance): def __init__(self, experiment_id, instance_id, alpha=1, culture_id=None, num_agents=None, is_imported=True, votes=None, **kwargs): super().__init__(experiment_id, instance_id, alpha=alpha, culture_id=culture_id) self.num_agents = num_agents self.votes = votes self.retrospetive_vectors = None if is_imported and experiment_id != 'virtual': try: self.votes, self.num_agents, self.params, self.culture_id = import_real_instance(self) self.alpha = self.params['alpha'] except: pass def get_retrospective_vectors(self): if self.retrospetive_vectors is not None: return self.retrospetive_vectors else: return self.votes_to_retrospective_vectors() def votes_to_retrospective_vectors(self): vectors = np.zeros([2, self.num_agents, self.num_agents], dtype=int) for a in range(self.num_agents): for i, b in enumerate(self.votes[0][a]): vectors[0][a][i] = int(list(self.votes[1][b]).index(a)) for a in range(self.num_agents): for i, b in enumerate(self.votes[1][a]): vectors[1][a][i] = int(list(self.votes[0][b]).index(a)) self.retrospetive_vectors = vectors return vectors def prepare_instance(self, is_exported=None): if 'norm-phi' in self.params: # for backward compatibility self.params['alpha'] = self.params['norm-phi'] else: self.params['alpha'] = 1 self.votes = generate_votes(culture_id=self.culture_id, num_agents=self.num_agents, params=self.params) if is_exported: exports.export_instance_to_a_file(self) def compute_feature(self, feature_id, feature_long_id=None, **kwargs): if feature_long_id is None: feature_long_id = feature_id feature = get_feature(feature_id) self.features[feature_long_id] = feature(self, **kwargs)