def test001(self): random.seed(1) c = generate_criteria(4) cv1 = CriterionValue('c1', 0.25) cv2 = CriterionValue('c2', 0.25) cv3 = CriterionValue('c3', 0.25) cv4 = CriterionValue('c4', 0.25) cv = CriteriaValues([cv1, cv2, cv3, cv4]) cat = generate_categories(2) cps = generate_categories_profiles(cat) bp = AlternativePerformances('b1', {'c1': 0.5, 'c2': 0.5, 'c3': 0.5, 'c4': 0.5}) bpt = PerformanceTable([bp]) lbda = 0.5 etri = MRSort(c, cv, bpt, 0.5, cps) a = generate_alternatives(1000) pt = generate_random_performance_table(a, c) aas = etri.pessimist(pt) for aa in aas: w = 0 perfs = pt[aa.id].performances for c, val in perfs.items(): if val >= bp.performances[c]: w += cv[c].value if aa.category_id == 'cat2': self.assertLess(w, lbda) else: self.assertGreaterEqual(w, lbda)
def test002(self): c = generate_criteria(3) cat = generate_categories(3) cps = generate_categories_profiles(cat) bp1 = AlternativePerformances('b1', {'c1': 0.75, 'c2': 0.75, 'c3': 0.75}) bp2 = AlternativePerformances('b2', {'c1': 0.25, 'c2': 0.25, 'c3': 0.25}) bpt = PerformanceTable([bp1, bp2]) cv1 = CriterionValue('c1', 0.2) cv2 = CriterionValue('c2', 0.2) cv3 = CriterionValue('c3', 0.2) cv12 = CriterionValue(CriteriaSet(['c1', 'c2']), -0.1) cv23 = CriterionValue(CriteriaSet(['c2', 'c3']), 0.2) cv13 = CriterionValue(CriteriaSet(['c1', 'c3']), 0.3) cvs = CriteriaValues([cv1, cv2, cv3, cv12, cv23, cv13]) lbda = 0.6 model = MRSort(c, cvs, bpt, lbda, cps) a = generate_alternatives(10000) pt = generate_random_performance_table(a, model.criteria) aa = model.get_assignments(pt) model2 = MRSort(c, None, bpt, None, cps) lp = LpMRSortMobius(model2, pt, aa) obj = lp.solve() aa2 = model2.get_assignments(pt) self.assertEqual(obj, 0) self.assertEqual(aa, aa2)
def test002(self): random.seed(2) c = generate_criteria(4) cv1 = CriterionValue('c1', 0.25) cv2 = CriterionValue('c2', 0.25) cv3 = CriterionValue('c3', 0.25) cv4 = CriterionValue('c4', 0.25) cv = CriteriaValues([cv1, cv2, cv3, cv4]) cat = generate_categories(3) cps = generate_categories_profiles(cat) bp1 = AlternativePerformances('b1', { 'c1': 0.75, 'c2': 0.75, 'c3': 0.75, 'c4': 0.75 }) bp2 = AlternativePerformances('b2', { 'c1': 0.25, 'c2': 0.25, 'c3': 0.25, 'c4': 0.25 }) bpt = PerformanceTable([bp1, bp2]) lbda = 0.5 etri = MRSort(c, cv, bpt, 0.5, cps) a = generate_alternatives(1000) pt = generate_random_performance_table(a, c) aas = etri.pessimist(pt) for aa in aas: w1 = w2 = 0 perfs = pt[aa.id].performances for c, val in perfs.items(): if val >= bp1.performances[c]: w1 += cv[c].value if val >= bp2.performances[c]: w2 += cv[c].value if aa.category_id == 'cat3': self.assertLess(w1, lbda) self.assertLess(w2, lbda) elif aa.category_id == 'cat2': self.assertLess(w1, lbda) self.assertGreaterEqual(w2, lbda) else: self.assertGreaterEqual(w1, lbda) self.assertGreaterEqual(w2, lbda)
def test001(self): c = generate_criteria(3) cat = generate_categories(3) cps = generate_categories_profiles(cat) bp1 = AlternativePerformances('b1', { 'c1': 0.75, 'c2': 0.75, 'c3': 0.75 }) bp2 = AlternativePerformances('b2', { 'c1': 0.25, 'c2': 0.25, 'c3': 0.25 }) bpt = PerformanceTable([bp1, bp2]) cv1 = CriterionValue('c1', 0.2) cv2 = CriterionValue('c2', 0.2) cv3 = CriterionValue('c3', 0.2) cv12 = CriterionValue(CriteriaSet(['c1', 'c2']), -0.1) cv23 = CriterionValue(CriteriaSet(['c2', 'c3']), 0.2) cv13 = CriterionValue(CriteriaSet(['c1', 'c3']), 0.3) cvs = CriteriaValues([cv1, cv2, cv3, cv12, cv23, cv13]) lbda = 0.6 model = MRSort(c, cvs, bpt, lbda, cps) ap1 = AlternativePerformances('a1', {'c1': 0.3, 'c2': 0.3, 'c3': 0.3}) ap2 = AlternativePerformances('a2', {'c1': 0.8, 'c2': 0.8, 'c3': 0.8}) ap3 = AlternativePerformances('a3', {'c1': 0.3, 'c2': 0.3, 'c3': 0.1}) ap4 = AlternativePerformances('a4', {'c1': 0.3, 'c2': 0.1, 'c3': 0.3}) ap5 = AlternativePerformances('a5', {'c1': 0.1, 'c2': 0.3, 'c3': 0.3}) ap6 = AlternativePerformances('a6', {'c1': 0.8, 'c2': 0.8, 'c3': 0.1}) ap7 = AlternativePerformances('a7', {'c1': 0.8, 'c2': 0.1, 'c3': 0.8}) ap8 = AlternativePerformances('a8', {'c1': 0.1, 'c2': 0.8, 'c3': 0.8}) pt = PerformanceTable([ap1, ap2, ap3, ap4, ap5, ap6, ap7, ap8]) aa = model.get_assignments(pt) self.assertEqual(aa['a1'].category_id, "cat2") self.assertEqual(aa['a2'].category_id, "cat1") self.assertEqual(aa['a3'].category_id, "cat3") self.assertEqual(aa['a4'].category_id, "cat2") self.assertEqual(aa['a5'].category_id, "cat2") self.assertEqual(aa['a6'].category_id, "cat3") self.assertEqual(aa['a7'].category_id, "cat1") self.assertEqual(aa['a8'].category_id, "cat1")
def test001(self): c = generate_criteria(3) cat = generate_categories(3) cps = generate_categories_profiles(cat) bp1 = AlternativePerformances('b1', {'c1': 0.75, 'c2': 0.75, 'c3': 0.75}) bp2 = AlternativePerformances('b2', {'c1': 0.25, 'c2': 0.25, 'c3': 0.25}) bpt = PerformanceTable([bp1, bp2]) cv1 = CriterionValue('c1', 0.2) cv2 = CriterionValue('c2', 0.2) cv3 = CriterionValue('c3', 0.2) cv12 = CriterionValue(CriteriaSet(['c1', 'c2']), -0.1) cv23 = CriterionValue(CriteriaSet(['c2', 'c3']), 0.2) cv13 = CriterionValue(CriteriaSet(['c1', 'c3']), 0.3) cvs = CriteriaValues([cv1, cv2, cv3, cv12, cv23, cv13]) lbda = 0.6 model = MRSort(c, cvs, bpt, lbda, cps) ap1 = AlternativePerformances('a1', {'c1': 0.3, 'c2': 0.3, 'c3': 0.3}) ap2 = AlternativePerformances('a2', {'c1': 0.8, 'c2': 0.8, 'c3': 0.8}) ap3 = AlternativePerformances('a3', {'c1': 0.3, 'c2': 0.3, 'c3': 0.1}) ap4 = AlternativePerformances('a4', {'c1': 0.3, 'c2': 0.1, 'c3': 0.3}) ap5 = AlternativePerformances('a5', {'c1': 0.1, 'c2': 0.3, 'c3': 0.3}) ap6 = AlternativePerformances('a6', {'c1': 0.8, 'c2': 0.8, 'c3': 0.1}) ap7 = AlternativePerformances('a7', {'c1': 0.8, 'c2': 0.1, 'c3': 0.8}) ap8 = AlternativePerformances('a8', {'c1': 0.1, 'c2': 0.8, 'c3': 0.8}) pt = PerformanceTable([ap1, ap2, ap3, ap4, ap5, ap6, ap7, ap8]) aa = model.get_assignments(pt) self.assertEqual(aa['a1'].category_id, "cat2") self.assertEqual(aa['a2'].category_id, "cat1") self.assertEqual(aa['a3'].category_id, "cat3") self.assertEqual(aa['a4'].category_id, "cat2") self.assertEqual(aa['a5'].category_id, "cat2") self.assertEqual(aa['a6'].category_id, "cat3") self.assertEqual(aa['a7'].category_id, "cat1") self.assertEqual(aa['a8'].category_id, "cat1")
def test002(self): c = generate_criteria(3) cat = generate_categories(3) cps = generate_categories_profiles(cat) bp1 = AlternativePerformances('b1', { 'c1': 0.75, 'c2': 0.75, 'c3': 0.75 }) bp2 = AlternativePerformances('b2', { 'c1': 0.25, 'c2': 0.25, 'c3': 0.25 }) bpt = PerformanceTable([bp1, bp2]) cv1 = CriterionValue('c1', 0.2) cv2 = CriterionValue('c2', 0.2) cv3 = CriterionValue('c3', 0.2) cv12 = CriterionValue(CriteriaSet(['c1', 'c2']), -0.1) cv23 = CriterionValue(CriteriaSet(['c2', 'c3']), 0.2) cv13 = CriterionValue(CriteriaSet(['c1', 'c3']), 0.3) cvs = CriteriaValues([cv1, cv2, cv3, cv12, cv23, cv13]) lbda = 0.6 model = MRSort(c, cvs, bpt, lbda, cps) a = generate_alternatives(10000) pt = generate_random_performance_table(a, model.criteria) aa = model.get_assignments(pt) model2 = MRSort(c, None, bpt, None, cps) lp = LpMRSortMobius(model2, pt, aa) obj = lp.solve() aa2 = model2.get_assignments(pt) self.assertEqual(obj, 0) self.assertEqual(aa, aa2)
if __name__ == "__main__": import random from pymcda.generate import generate_criteria from pymcda.generate import generate_random_criteria_weights from pymcda.generate import generate_categories from pymcda.generate import generate_categories_profiles from pymcda.generate import generate_alternatives from pymcda.generate import generate_random_performance_table from pymcda.generate import generate_random_profiles from pymcda.generate import generate_random_plinear_preference_function random.seed(123) criteria = generate_criteria(5) crit_weights = generate_random_criteria_weights(criteria) categories = generate_categories(5) cat_profiles = generate_categories_profiles(categories) a = generate_alternatives(100) pt = generate_random_performance_table(a, criteria) ap_best = pt.get_best(criteria) ap_worst = pt.get_worst(criteria) b = cat_profiles.get_ordered_profiles() bpt = generate_random_profiles(b, criteria) pf = generate_random_plinear_preference_function(criteria, ap_worst, ap_best) print(crit_weights) print(categories) print(cat_profiles) print(bpt)
from pymcda.generate import generate_categories from pymcda.generate import generate_random_profiles from pymcda.generate import generate_categories_profiles from pymcda.electre_tri import ElectreTri from pymcda.types import AlternativePerformances a = generate_alternatives(2) c = generate_criteria(5) cv = generate_random_criteria_values(c, 1234) cv.normalize_sum_to_unity() worst = AlternativePerformances("worst", {crit.id: 0 for crit in c}) best = AlternativePerformances("best", {crit.id: 1 for crit in c}) pt = generate_random_performance_table(a, c) cat = generate_categories(3) cps = generate_categories_profiles(cat) b = cps.get_ordered_profiles() bpt = generate_random_profiles(b, c) bpt['b2'].performances['c3'] = 0.2 lbda = random.uniform(0.5, 1) model = ElectreTri(c, cv, bpt, lbda, cps) app = QtGui.QApplication(sys.argv) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(1) sizePolicy.setVerticalStretch(0)
from pymcda.utils import compute_ca from pymcda.generate import generate_alternatives from pymcda.generate import generate_categories from pymcda.generate import generate_criteria from pymcda.generate import generate_random_criteria_values from pymcda.generate import generate_random_performance_table from pymcda.generate import generate_random_criteria_functions from pymcda.generate import generate_random_categories_values from pymcda.utils import add_errors_in_assignments from pymcda.utils import print_pt_and_assignments # Generate an avfsort model c = generate_criteria(7, random_direction = True) cv = generate_random_criteria_values(c, seed = 1) cv.normalize_sum_to_unity() cat = generate_categories(3) cfs = generate_random_criteria_functions(c, nseg_min = 3, nseg_max = 3) catv = generate_random_categories_values(cat) u = AVFSort(c, cv, cfs, catv) # Generate random alternative and compute assignments a = generate_alternatives(1000) pt = generate_random_performance_table(a, c) aa = u.get_assignments(pt) aa_err = aa.copy() aa_erroned = add_errors_in_assignments(aa_err, cat.keys(), 0.0) print('==============') print('Original model')
xmcda_criteria = root.find(".//criteria") criteria = Criteria().from_xmcda(xmcda_criteria) xmcda_csets = root.findall(".//criteriaSets") f.close() ## Weights w = CriteriaValues() for c in criteria: w.append(CriterionValue(c.id, 0.2)) ## Profiles and categories bp1 = AlternativePerformances('b1', {c.id: 0.5 for c in criteria}) bpt = PerformanceTable([bp1]) cat = generate_categories(2, names = ['good', 'bad']) cps = generate_categories_profiles(cat) ## Model model = MRSort(c, w, bpt, 0.6, cps) fmins = [] results = [] for i, xmcda in enumerate(xmcda_csets): result = {} fmins = CriteriaSets().from_xmcda(xmcda) result['fmins'] = fmins result['vector'] = "".join(map(str, sorted([len(fmin) for fmin in sorted(fmins, key = len)]))) print("\n%d. Fmin: %s" % (i + 1, ', '.join("%s" % f for f in fmins))) pt, aa = generate_binary_performance_table_and_assignments(criteria, cat,
def test001(self): c = generate_criteria(5) w1 = CriterionValue('c1', 0.2) w2 = CriterionValue('c2', 0.2) w3 = CriterionValue('c3', 0.2) w4 = CriterionValue('c4', 0.2) w5 = CriterionValue('c5', 0.2) w = CriteriaValues([w1, w2, w3, w4, w5]) b1 = AlternativePerformances('b1', { 'c1': 10, 'c2': 10, 'c3': 10, 'c4': 10, 'c5': 10 }) bpt = PerformanceTable([b1]) cat = generate_categories(2) cps = generate_categories_profiles(cat) vb1 = AlternativePerformances('b1', { 'c1': 2, 'c2': 2, 'c3': 2, 'c4': 2, 'c5': 2 }, 'b1') v = PerformanceTable([vb1]) vw = w.copy() a1 = AlternativePerformances('a1', { 'c1': 9, 'c2': 9, 'c3': 9, 'c4': 9, 'c5': 11 }) a2 = AlternativePerformances('a2', { 'c1': 9, 'c2': 9, 'c3': 9, 'c4': 11, 'c5': 9 }) a3 = AlternativePerformances('a3', { 'c1': 9, 'c2': 9, 'c3': 9, 'c4': 11, 'c5': 11 }) a4 = AlternativePerformances('a4', { 'c1': 9, 'c2': 9, 'c3': 11, 'c4': 9, 'c5': 9 }) a5 = AlternativePerformances('a5', { 'c1': 9, 'c2': 9, 'c3': 11, 'c4': 9, 'c5': 11 }) a6 = AlternativePerformances('a6', { 'c1': 9, 'c2': 9, 'c3': 11, 'c4': 11, 'c5': 9 }) a7 = AlternativePerformances('a7', { 'c1': 9, 'c2': 9, 'c3': 11, 'c4': 11, 'c5': 11 }) a8 = AlternativePerformances('a8', { 'c1': 9, 'c2': 11, 'c3': 9, 'c4': 9, 'c5': 9 }) a9 = AlternativePerformances('a9', { 'c1': 9, 'c2': 11, 'c3': 9, 'c4': 9, 'c5': 11 }) a10 = AlternativePerformances('a10', { 'c1': 9, 'c2': 11, 'c3': 9, 'c4': 11, 'c5': 9 }) a11 = AlternativePerformances('a11', { 'c1': 9, 'c2': 11, 'c3': 9, 'c4': 11, 'c5': 11 }) a12 = AlternativePerformances('a12', { 'c1': 9, 'c2': 11, 'c3': 11, 'c4': 9, 'c5': 9 }) a13 = AlternativePerformances('a13', { 'c1': 9, 'c2': 11, 'c3': 11, 'c4': 9, 'c5': 11 }) a14 = AlternativePerformances('a14', { 'c1': 9, 'c2': 11, 'c3': 11, 'c4': 11, 'c5': 9 }) a15 = AlternativePerformances('a15', { 'c1': 9, 'c2': 11, 'c3': 11, 'c4': 11, 'c5': 11 }) a16 = AlternativePerformances('a16', { 'c1': 11, 'c2': 9, 'c3': 9, 'c4': 9, 'c5': 9 }) a17 = AlternativePerformances('a17', { 'c1': 11, 'c2': 9, 'c3': 9, 'c4': 9, 'c5': 11 }) a18 = AlternativePerformances('a18', { 'c1': 11, 'c2': 9, 'c3': 9, 'c4': 11, 'c5': 9 }) a19 = AlternativePerformances('a19', { 'c1': 11, 'c2': 9, 'c3': 9, 'c4': 11, 'c5': 11 }) a20 = AlternativePerformances('a20', { 'c1': 11, 'c2': 9, 'c3': 11, 'c4': 9, 'c5': 9 }) a21 = AlternativePerformances('a21', { 'c1': 11, 'c2': 9, 'c3': 11, 'c4': 9, 'c5': 11 }) a22 = AlternativePerformances('a22', { 'c1': 11, 'c2': 9, 'c3': 11, 'c4': 11, 'c5': 9 }) a23 = AlternativePerformances('a23', { 'c1': 11, 'c2': 9, 'c3': 11, 'c4': 11, 'c5': 11 }) a24 = AlternativePerformances('a24', { 'c1': 11, 'c2': 11, 'c3': 9, 'c4': 9, 'c5': 9 }) a25 = AlternativePerformances('a25', { 'c1': 11, 'c2': 11, 'c3': 9, 'c4': 9, 'c5': 11 }) a26 = AlternativePerformances('a26', { 'c1': 11, 'c2': 11, 'c3': 9, 'c4': 11, 'c5': 9 }) a27 = AlternativePerformances('a27', { 'c1': 11, 'c2': 11, 'c3': 9, 'c4': 11, 'c5': 11 }) a28 = AlternativePerformances('a28', { 'c1': 11, 'c2': 11, 'c3': 11, 'c4': 9, 'c5': 9 }) a29 = AlternativePerformances('a29', { 'c1': 11, 'c2': 11, 'c3': 11, 'c4': 9, 'c5': 11 }) a30 = AlternativePerformances('a30', { 'c1': 11, 'c2': 11, 'c3': 11, 'c4': 11, 'c5': 9 }) a31 = AlternativePerformances('a31', { 'c1': 11, 'c2': 11, 'c3': 11, 'c4': 11, 'c5': 7 }) a32 = AlternativePerformances('a32', { 'c1': 11, 'c2': 11, 'c3': 11, 'c4': 7, 'c5': 11 }) a33 = AlternativePerformances('a33', { 'c1': 11, 'c2': 11, 'c3': 7, 'c4': 11, 'c5': 11 }) a34 = AlternativePerformances('a34', { 'c1': 11, 'c2': 7, 'c3': 11, 'c4': 11, 'c5': 11 }) a35 = AlternativePerformances('a35', { 'c1': 7, 'c2': 11, 'c3': 11, 'c4': 11, 'c5': 11 }) a36 = AlternativePerformances('a36', { 'c1': 11, 'c2': 11, 'c3': 11, 'c4': 7, 'c5': 7 }) a37 = AlternativePerformances('a37', { 'c1': 11, 'c2': 11, 'c3': 7, 'c4': 11, 'c5': 7 }) a38 = AlternativePerformances('a38', { 'c1': 11, 'c2': 7, 'c3': 11, 'c4': 11, 'c5': 7 }) a39 = AlternativePerformances('a39', { 'c1': 7, 'c2': 11, 'c3': 11, 'c4': 11, 'c5': 7 }) a40 = AlternativePerformances('a40', { 'c1': 11, 'c2': 11, 'c3': 7, 'c4': 7, 'c5': 11 }) a41 = AlternativePerformances('a41', { 'c1': 11, 'c2': 7, 'c3': 11, 'c4': 7, 'c5': 11 }) a42 = AlternativePerformances('a42', { 'c1': 7, 'c2': 11, 'c3': 11, 'c4': 7, 'c5': 11 }) a43 = AlternativePerformances('a43', { 'c1': 11, 'c2': 7, 'c3': 7, 'c4': 11, 'c5': 11 }) a44 = AlternativePerformances('a44', { 'c1': 7, 'c2': 11, 'c3': 7, 'c4': 11, 'c5': 11 }) a45 = AlternativePerformances('a45', { 'c1': 7, 'c2': 7, 'c3': 11, 'c4': 11, 'c5': 11 }) pt = PerformanceTable([ a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45 ]) ap1 = AlternativeAssignment('a1', 'cat2') ap2 = AlternativeAssignment('a2', 'cat2') ap3 = AlternativeAssignment('a3', 'cat2') ap4 = AlternativeAssignment('a4', 'cat2') ap5 = AlternativeAssignment('a5', 'cat2') ap6 = AlternativeAssignment('a6', 'cat2') ap7 = AlternativeAssignment('a7', 'cat1') ap8 = AlternativeAssignment('a8', 'cat2') ap9 = AlternativeAssignment('a9', 'cat2') ap10 = AlternativeAssignment('a10', 'cat2') ap11 = AlternativeAssignment('a11', 'cat1') ap12 = AlternativeAssignment('a12', 'cat2') ap13 = AlternativeAssignment('a13', 'cat1') ap14 = AlternativeAssignment('a14', 'cat1') ap15 = AlternativeAssignment('a15', 'cat1') ap16 = AlternativeAssignment('a16', 'cat2') ap17 = AlternativeAssignment('a17', 'cat2') ap18 = AlternativeAssignment('a18', 'cat2') ap19 = AlternativeAssignment('a19', 'cat1') ap20 = AlternativeAssignment('a20', 'cat2') ap21 = AlternativeAssignment('a21', 'cat1') ap22 = AlternativeAssignment('a22', 'cat1') ap23 = AlternativeAssignment('a23', 'cat1') ap24 = AlternativeAssignment('a24', 'cat2') ap25 = AlternativeAssignment('a25', 'cat1') ap26 = AlternativeAssignment('a26', 'cat1') ap27 = AlternativeAssignment('a27', 'cat1') ap28 = AlternativeAssignment('a28', 'cat1') ap29 = AlternativeAssignment('a29', 'cat1') ap30 = AlternativeAssignment('a30', 'cat1') ap31 = AlternativeAssignment('a31', 'cat1') ap32 = AlternativeAssignment('a32', 'cat1') ap33 = AlternativeAssignment('a33', 'cat1') ap34 = AlternativeAssignment('a34', 'cat1') ap35 = AlternativeAssignment('a35', 'cat1') ap36 = AlternativeAssignment('a36', 'cat2') ap37 = AlternativeAssignment('a37', 'cat2') ap38 = AlternativeAssignment('a38', 'cat2') ap39 = AlternativeAssignment('a39', 'cat2') ap40 = AlternativeAssignment('a40', 'cat2') ap41 = AlternativeAssignment('a41', 'cat2') ap42 = AlternativeAssignment('a42', 'cat2') ap43 = AlternativeAssignment('a43', 'cat2') ap44 = AlternativeAssignment('a44', 'cat2') ap45 = AlternativeAssignment('a45', 'cat2') aa = AlternativesAssignments([ ap1, ap2, ap3, ap4, ap5, ap6, ap7, ap8, ap9, ap10, ap11, ap12, ap13, ap14, ap15, ap16, ap17, ap18, ap19, ap20, ap21, ap22, ap23, ap24, ap25, ap26, ap27, ap28, ap29, ap30, ap31, ap32, ap33, ap34, ap35, ap36, ap37, ap38, ap39, ap40, ap41, ap42, ap43, ap44, ap45 ]) model = MRSort(c, w, bpt, 0.6, cps, v, vw, 0.4) aa2 = model.pessimist(pt) ok = compare_assignments(aa, aa2) self.assertEqual(ok, 1, "One or more alternatives were wrongly " "assigned")
def test001(self): c = generate_criteria(5) w1 = CriterionValue('c1', 0.2) w2 = CriterionValue('c2', 0.2) w3 = CriterionValue('c3', 0.2) w4 = CriterionValue('c4', 0.2) w5 = CriterionValue('c5', 0.2) w = CriteriaValues([w1, w2, w3, w4, w5]) b1 = AlternativePerformances('b1', {'c1': 10, 'c2': 10, 'c3': 10, 'c4': 10, 'c5': 10}) bpt = PerformanceTable([b1]) cat = generate_categories(2) cps = generate_categories_profiles(cat) vb1 = AlternativePerformances('b1', {'c1': 2, 'c2': 2, 'c3': 2, 'c4': 2, 'c5': 2}, 'b1') v = PerformanceTable([vb1]) vw = w.copy() a1 = AlternativePerformances('a1', {'c1': 9, 'c2': 9, 'c3': 9, 'c4': 9, 'c5': 11}) a2 = AlternativePerformances('a2', {'c1': 9, 'c2': 9, 'c3': 9, 'c4': 11, 'c5': 9}) a3 = AlternativePerformances('a3', {'c1': 9, 'c2': 9, 'c3': 9, 'c4': 11, 'c5': 11}) a4 = AlternativePerformances('a4', {'c1': 9, 'c2': 9, 'c3': 11, 'c4': 9, 'c5': 9}) a5 = AlternativePerformances('a5', {'c1': 9, 'c2': 9, 'c3': 11, 'c4': 9, 'c5': 11}) a6 = AlternativePerformances('a6', {'c1': 9, 'c2': 9, 'c3': 11, 'c4': 11, 'c5': 9}) a7 = AlternativePerformances('a7', {'c1': 9, 'c2': 9, 'c3': 11, 'c4': 11, 'c5': 11}) a8 = AlternativePerformances('a8', {'c1': 9, 'c2': 11, 'c3': 9, 'c4': 9, 'c5': 9}) a9 = AlternativePerformances('a9', {'c1': 9, 'c2': 11, 'c3': 9, 'c4': 9, 'c5': 11}) a10 = AlternativePerformances('a10', {'c1': 9, 'c2': 11, 'c3': 9, 'c4': 11, 'c5': 9}) a11 = AlternativePerformances('a11', {'c1': 9, 'c2': 11, 'c3': 9, 'c4': 11, 'c5': 11}) a12 = AlternativePerformances('a12', {'c1': 9, 'c2': 11, 'c3': 11, 'c4': 9, 'c5': 9}) a13 = AlternativePerformances('a13', {'c1': 9, 'c2': 11, 'c3': 11, 'c4': 9, 'c5': 11}) a14 = AlternativePerformances('a14', {'c1': 9, 'c2': 11, 'c3': 11, 'c4': 11, 'c5': 9}) a15 = AlternativePerformances('a15', {'c1': 9, 'c2': 11, 'c3': 11, 'c4': 11, 'c5': 11}) a16 = AlternativePerformances('a16', {'c1': 11, 'c2': 9, 'c3': 9, 'c4': 9, 'c5': 9}) a17 = AlternativePerformances('a17', {'c1': 11, 'c2': 9, 'c3': 9, 'c4': 9, 'c5': 11}) a18 = AlternativePerformances('a18', {'c1': 11, 'c2': 9, 'c3': 9, 'c4': 11, 'c5': 9}) a19 = AlternativePerformances('a19', {'c1': 11, 'c2': 9, 'c3': 9, 'c4': 11, 'c5': 11}) a20 = AlternativePerformances('a20', {'c1': 11, 'c2': 9, 'c3': 11, 'c4': 9, 'c5': 9}) a21 = AlternativePerformances('a21', {'c1': 11, 'c2': 9, 'c3': 11, 'c4': 9, 'c5': 11}) a22 = AlternativePerformances('a22', {'c1': 11, 'c2': 9, 'c3': 11, 'c4': 11, 'c5': 9}) a23 = AlternativePerformances('a23', {'c1': 11, 'c2': 9, 'c3': 11, 'c4': 11, 'c5': 11}) a24 = AlternativePerformances('a24', {'c1': 11, 'c2': 11, 'c3': 9, 'c4': 9, 'c5': 9}) a25 = AlternativePerformances('a25', {'c1': 11, 'c2': 11, 'c3': 9, 'c4': 9, 'c5': 11}) a26 = AlternativePerformances('a26', {'c1': 11, 'c2': 11, 'c3': 9, 'c4': 11, 'c5': 9}) a27 = AlternativePerformances('a27', {'c1': 11, 'c2': 11, 'c3': 9, 'c4': 11, 'c5': 11}) a28 = AlternativePerformances('a28', {'c1': 11, 'c2': 11, 'c3': 11, 'c4': 9, 'c5': 9}) a29 = AlternativePerformances('a29', {'c1': 11, 'c2': 11, 'c3': 11, 'c4': 9, 'c5': 11}) a30 = AlternativePerformances('a30', {'c1': 11, 'c2': 11, 'c3': 11, 'c4': 11, 'c5': 9}) a31 = AlternativePerformances('a31', {'c1': 11, 'c2': 11, 'c3': 11, 'c4': 11, 'c5': 7}) a32 = AlternativePerformances('a32', {'c1': 11, 'c2': 11, 'c3': 11, 'c4': 7, 'c5': 11}) a33 = AlternativePerformances('a33', {'c1': 11, 'c2': 11, 'c3': 7, 'c4': 11, 'c5': 11}) a34 = AlternativePerformances('a34', {'c1': 11, 'c2': 7, 'c3': 11, 'c4': 11, 'c5': 11}) a35 = AlternativePerformances('a35', {'c1': 7, 'c2': 11, 'c3': 11, 'c4': 11, 'c5': 11}) a36 = AlternativePerformances('a36', {'c1': 11, 'c2': 11, 'c3': 11, 'c4': 7, 'c5': 7}) a37 = AlternativePerformances('a37', {'c1': 11, 'c2': 11, 'c3': 7, 'c4': 11, 'c5': 7}) a38 = AlternativePerformances('a38', {'c1': 11, 'c2': 7, 'c3': 11, 'c4': 11, 'c5': 7}) a39 = AlternativePerformances('a39', {'c1': 7, 'c2': 11, 'c3': 11, 'c4': 11, 'c5': 7}) a40 = AlternativePerformances('a40', {'c1': 11, 'c2': 11, 'c3': 7, 'c4': 7, 'c5': 11}) a41 = AlternativePerformances('a41', {'c1': 11, 'c2': 7, 'c3': 11, 'c4': 7, 'c5': 11}) a42 = AlternativePerformances('a42', {'c1': 7, 'c2': 11, 'c3': 11, 'c4': 7, 'c5': 11}) a43 = AlternativePerformances('a43', {'c1': 11, 'c2': 7, 'c3': 7, 'c4': 11, 'c5': 11}) a44 = AlternativePerformances('a44', {'c1': 7, 'c2': 11, 'c3': 7, 'c4': 11, 'c5': 11}) a45 = AlternativePerformances('a45', {'c1': 7, 'c2': 7, 'c3': 11, 'c4': 11, 'c5': 11}) pt = PerformanceTable([a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45]) ap1 = AlternativeAssignment('a1', 'cat2') ap2 = AlternativeAssignment('a2', 'cat2') ap3 = AlternativeAssignment('a3', 'cat2') ap4 = AlternativeAssignment('a4', 'cat2') ap5 = AlternativeAssignment('a5', 'cat2') ap6 = AlternativeAssignment('a6', 'cat2') ap7 = AlternativeAssignment('a7', 'cat1') ap8 = AlternativeAssignment('a8', 'cat2') ap9 = AlternativeAssignment('a9', 'cat2') ap10 = AlternativeAssignment('a10', 'cat2') ap11 = AlternativeAssignment('a11', 'cat1') ap12 = AlternativeAssignment('a12', 'cat2') ap13 = AlternativeAssignment('a13', 'cat1') ap14 = AlternativeAssignment('a14', 'cat1') ap15 = AlternativeAssignment('a15', 'cat1') ap16 = AlternativeAssignment('a16', 'cat2') ap17 = AlternativeAssignment('a17', 'cat2') ap18 = AlternativeAssignment('a18', 'cat2') ap19 = AlternativeAssignment('a19', 'cat1') ap20 = AlternativeAssignment('a20', 'cat2') ap21 = AlternativeAssignment('a21', 'cat1') ap22 = AlternativeAssignment('a22', 'cat1') ap23 = AlternativeAssignment('a23', 'cat1') ap24 = AlternativeAssignment('a24', 'cat2') ap25 = AlternativeAssignment('a25', 'cat1') ap26 = AlternativeAssignment('a26', 'cat1') ap27 = AlternativeAssignment('a27', 'cat1') ap28 = AlternativeAssignment('a28', 'cat1') ap29 = AlternativeAssignment('a29', 'cat1') ap30 = AlternativeAssignment('a30', 'cat1') ap31 = AlternativeAssignment('a31', 'cat1') ap32 = AlternativeAssignment('a32', 'cat1') ap33 = AlternativeAssignment('a33', 'cat1') ap34 = AlternativeAssignment('a34', 'cat1') ap35 = AlternativeAssignment('a35', 'cat1') ap36 = AlternativeAssignment('a36', 'cat2') ap37 = AlternativeAssignment('a37', 'cat2') ap38 = AlternativeAssignment('a38', 'cat2') ap39 = AlternativeAssignment('a39', 'cat2') ap40 = AlternativeAssignment('a40', 'cat2') ap41 = AlternativeAssignment('a41', 'cat2') ap42 = AlternativeAssignment('a42', 'cat2') ap43 = AlternativeAssignment('a43', 'cat2') ap44 = AlternativeAssignment('a44', 'cat2') ap45 = AlternativeAssignment('a45', 'cat2') aa = AlternativesAssignments([ap1, ap2, ap3, ap4, ap5, ap6, ap7, ap8, ap9, ap10, ap11, ap12, ap13, ap14, ap15, ap16, ap17, ap18, ap19, ap20, ap21, ap22, ap23, ap24, ap25, ap26, ap27, ap28, ap29, ap30, ap31, ap32, ap33, ap34, ap35, ap36, ap37, ap38, ap39, ap40, ap41, ap42, ap43, ap44, ap45]) model = MRSort(c, w, bpt, 0.6, cps, v, vw, 0.4) aa2 = model.pessimist(pt) ok = compare_assignments(aa, aa2) self.assertEqual(ok, 1, "One or more alternatives were wrongly " "assigned")