def test_maximize_slacks_usual_weakly_disposable_vars(): categories, xls_data, dmu_name, sheet_name = read_data( 'tests/DEA_example2_data.xls') coefficients, has_same_dmus = convert_to_dictionary(xls_data) assert has_same_dmus is False assert validate_data(categories, coefficients) is True data = construct_input_data_instance(categories, coefficients) data.add_input_category('I1') data.add_input_category('I2') data.add_input_category('I3') data.add_output_category('O1') data.add_output_category('O2') model = EnvelopmentModelVRSDecorator( EnvelopmentModelBase(data, EnvelopmentModelInputOriented( generate_upper_bound_for_efficiency_score), DisposableVarsConstraintCreator( set(['I2', 'O1'])))) model = MaximizeSlacksModel(model) start_time = datetime.datetime.now() model_solution = model.run() end_time = datetime.datetime.now() utils_for_tests.check_optimal_solution_status_and_sizes( model_solution, data) dmus = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K'] utils_for_tests.check_efficiency_scores(dmus, [1, 0.86998617, 1, 1, 1, 1, 1, 1, 1, 0.6386574, 1], model_solution, data) work_book = xlwt.Workbook() writer = XLSWriter(Parameters(), work_book, datetime.datetime.today(), (end_time - start_time).total_seconds()) writer.write_data(model_solution) work_book.save('tests/test_max_slacks_weakly_disp_vars_output.xls') clean_up_pickled_files()
def test_csv_reader(): categories, data, dmu_name, sheet_name = read_data( 'tests/DEA_example2_data.csv') coefficients, has_same_dmus = convert_to_dictionary(data) assert has_same_dmus is False assert validate_data(categories, coefficients) is True _validate_csv(categories, coefficients)
def test_VRS_env_input_oriented_weakly_disposable_vars(): categories, xls_data, dmu_name, sheet_name = read_data( 'tests/DEA_example2_data.xls') coefficients, has_same_dmus = convert_to_dictionary(xls_data) assert has_same_dmus is False assert validate_data(categories, coefficients) is True data = construct_input_data_instance(categories, coefficients) data.add_input_category('I1') data.add_input_category('I2') data.add_input_category('I3') data.add_output_category('O1') data.add_output_category('O2') model = EnvelopmentModelVRSDecorator( EnvelopmentModelBase(data, EnvelopmentModelInputOriented( generate_upper_bound_for_efficiency_score), DisposableVarsConstraintCreator( set(['I2', 'O1'])))) model_solution = model.run() utils_for_tests.check_optimal_solution_status_and_sizes( model_solution, data) dmus = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K'] utils_for_tests.check_efficiency_scores(dmus, [1, 0.86998617, 1, 1, 1, 1, 1, 1, 1, 0.6386574, 1], model_solution, data) clean_up_pickled_files()
def test_CRS_env_output_oriented_non_disc_vars(): categories, xls_data, dmu_name, sheet_name = read_data( 'tests/DEA_example_data.xls') coefficients, has_same_dmus = convert_to_dictionary(xls_data) assert has_same_dmus is False assert validate_data(categories, coefficients) is True data = construct_input_data_instance(categories, coefficients) data.add_input_category('I1') data.add_input_category('I2') data.add_output_category('ND1') data.add_output_category('O1') data.add_output_category('O2') model = EnvelopmentModelBase( data, EnvelopmentModelOutputOrientedWithNonDiscVars( set(['ND1']), generate_lower_bound_for_efficiency_score), DefaultConstraintCreator()) model_solution = model.run() utils_for_tests.check_optimal_solution_status_and_sizes( model_solution, data) dmus = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K'] utils_for_tests.check_efficiency_scores(dmus, [ 1, 1, 1 / 1.1698685, 1, 1 / 2.3749162, 1, 1, 1 / 1.3198374, 1 / 1.2115385, 0.5, 1 ], model_solution, data) clean_up_pickled_files()
def test_csv_reader(): categories, data, dmu_name, sheet_name = read_data( 'tests/DEA_example2_data.csv') coefficients, has_same_dmus = convert_to_dictionary(data) assert has_same_dmus is False assert validate_data(categories, coefficients) is True _validate_csv(categories, coefficients)
def test_CRS_env_output_oriented_non_disc_vars(): categories, xls_data, dmu_name, sheet_name = read_data( 'tests/DEA_example_data.xls') coefficients, has_same_dmus = convert_to_dictionary(xls_data) assert has_same_dmus is False assert validate_data(categories, coefficients) is True data = construct_input_data_instance(categories, coefficients) data.add_input_category('I1') data.add_input_category('I2') data.add_output_category('ND1') data.add_output_category('O1') data.add_output_category('O2') model = EnvelopmentModelBase( data, EnvelopmentModelOutputOrientedWithNonDiscVars( set(['ND1']), generate_lower_bound_for_efficiency_score), DefaultConstraintCreator()) model_solution = model.run() utils_for_tests.check_optimal_solution_status_and_sizes(model_solution, data) dmus = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K'] utils_for_tests.check_efficiency_scores(dmus, [1, 1, 1 / 1.1698685, 1, 1 / 2.3749162, 1, 1, 1 / 1.3198374, 1 / 1.2115385, 0.5, 1], model_solution, data) clean_up_pickled_files()
def test_read_data_from_xls_larger_example(): categories, data, dmu_name, sheet_name = read_data( 'tests/DEA_example2_data.xls') coefficients, has_same_dmus = convert_to_dictionary(data) assert has_same_dmus is False assert validate_data(categories, coefficients) is True input_data = construct_input_data_instance(categories, coefficients) assert len(input_data.DMU_codes) == 11 assert len(input_data.categories) == 5 categories = ['I1', 'I2', 'I3', 'O1', 'O2'] for category in categories: assert category in input_data.categories assert len(input_data.input_categories) == 0 assert len(input_data.output_categories) == 0 dmus = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K'] for dmu in dmus: assert dmu in input_data._DMU_user_name_to_code check_coefficients(input_data, 'A', categories, [5, 13, 1, 12, 34]) check_coefficients(input_data, 'B', categories, [16, 12, 2, 14, 13]) check_coefficients(input_data, 'C', categories, [16, 26, 2, 25, 56]) check_coefficients(input_data, 'D', categories, [17, 15, 3, 26, 23]) check_coefficients(input_data, 'E', categories, [18, 14, 1, 8, 18]) check_coefficients(input_data, 'F', categories, [23, 6, 2, 9, 39]) check_coefficients(input_data, 'G', categories, [25, 10, 2, 27, 21]) check_coefficients(input_data, 'H', categories, [27, 22, 3, 30, 10]) check_coefficients(input_data, 'I', categories, [37, 14, 1, 31, 25]) check_coefficients(input_data, 'J', categories, [42, 25, 2, 26.5, 17]) check_coefficients(input_data, 'K', categories, [5, 17, 3, 12, 37])
def test_price_ratio_restrictions_medium_env_model(): categories, data, dmu_name, sheet_name = read_data( 'tests/dataFromDEAbook_page181.xls') coefficients, has_same_dmus = convert_to_dictionary(data) assert has_same_dmus is False assert validate_data(categories, coefficients) is True data = construct_input_data_instance(categories, coefficients) print(data.categories) data.add_input_category('Doctors') data.add_input_category('Nurses') data.add_output_category('Outpatients') data.add_output_category('Inpatients') model = MultiplierModelBase(data, 0, MultiplierInputOrientedModel()) ratio_bounds = {('Nurses', 'Doctors'): (0.2, 5), ('Inpatients', 'Outpatients'): (0.2, 5)} model = MultiplierModelWithPriceRatioConstraints(model, ratio_bounds) model_solution = model.run() utils_for_tests.check_if_category_is_within_price_ratio_constraints( model_solution, ratio_bounds) utils_for_tests.check_optimal_solution_status_and_sizes( model_solution, data) dmus = ['H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'H7', 'H8', 'H9', 'H10', 'H11', 'H12', 'H13', 'H14'] utils_for_tests.check_efficiency_scores(dmus, [0.926, 1, 1, 0.634, 0.82, 1, 0.803, 0.872, 0.982, 1, 0.849, 0.93, 0.74, 0.929], model_solution, data, 1e-3) clean_up_pickled_files()
def test_maximize_slacks_usual_weakly_disposable_vars(): categories, xls_data, dmu_name, sheet_name = read_data( 'tests/DEA_example2_data.xls') coefficients, has_same_dmus = convert_to_dictionary(xls_data) assert has_same_dmus is False assert validate_data(categories, coefficients) is True data = construct_input_data_instance(categories, coefficients) data.add_input_category('I1') data.add_input_category('I2') data.add_input_category('I3') data.add_output_category('O1') data.add_output_category('O2') model = EnvelopmentModelVRSDecorator( EnvelopmentModelBase( data, EnvelopmentModelInputOriented( generate_upper_bound_for_efficiency_score), DisposableVarsConstraintCreator(set(['I2', 'O1'])))) model = MaximizeSlacksModel(model) start_time = datetime.datetime.now() model_solution = model.run() end_time = datetime.datetime.now() utils_for_tests.check_optimal_solution_status_and_sizes( model_solution, data) dmus = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K'] utils_for_tests.check_efficiency_scores( dmus, [1, 0.86998617, 1, 1, 1, 1, 1, 1, 1, 0.6386574, 1], model_solution, data) work_book = xlwt.Workbook() writer = XLSWriter(Parameters(), work_book, datetime.datetime.today(), (end_time - start_time).total_seconds()) writer.write_data(model_solution) work_book.save('tests/test_max_slacks_weakly_disp_vars_output.xls') clean_up_pickled_files()
def test_VRS_env_output_oriented_weakly_disposable_vars(): categories, xls_data, dmu_name, sheet_name = read_data( 'tests/DEA_example2_data.xls') coefficients, has_same_dmus = convert_to_dictionary(xls_data) assert has_same_dmus is False assert validate_data(categories, coefficients) is True data = construct_input_data_instance(categories, coefficients) data.add_input_category('I1') data.add_input_category('I2') data.add_input_category('I3') data.add_output_category('O1') data.add_output_category('O2') model = EnvelopmentModelVRSDecorator( EnvelopmentModelBase( data, EnvelopmentModelOutputOriented( generate_lower_bound_for_efficiency_score), DisposableVarsConstraintCreator(set(['I3', 'O1'])))) model_solution = model.run() utils_for_tests.check_optimal_solution_status_and_sizes( model_solution, data) dmus = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K'] utils_for_tests.check_efficiency_scores(dmus, [1, 1 / 1.4107143, 1, 1, 1 / 1.821256, 1, 1, 1, 1, 1 / 1.1407407, 1], model_solution, data) clean_up_pickled_files()
def test_read_data_from_xls_larger_example(): categories, data, dmu_name, sheet_name = read_data( 'tests/DEA_example2_data.xls') coefficients, has_same_dmus = convert_to_dictionary(data) assert has_same_dmus is False assert validate_data(categories, coefficients) is True input_data = construct_input_data_instance(categories, coefficients) assert len(input_data.DMU_codes) == 11 assert len(input_data.categories) == 5 categories = ['I1', 'I2', 'I3', 'O1', 'O2'] for category in categories: assert category in input_data.categories assert len(input_data.input_categories) == 0 assert len(input_data.output_categories) == 0 dmus = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K'] for dmu in dmus: assert dmu in input_data._DMU_user_name_to_code check_coefficients(input_data, 'A', categories, [5, 13, 1, 12, 34]) check_coefficients(input_data, 'B', categories, [16, 12, 2, 14, 13]) check_coefficients(input_data, 'C', categories, [16, 26, 2, 25, 56]) check_coefficients(input_data, 'D', categories, [17, 15, 3, 26, 23]) check_coefficients(input_data, 'E', categories, [18, 14, 1, 8, 18]) check_coefficients(input_data, 'F', categories, [23, 6, 2, 9, 39]) check_coefficients(input_data, 'G', categories, [25, 10, 2, 27, 21]) check_coefficients(input_data, 'H', categories, [27, 22, 3, 30, 10]) check_coefficients(input_data, 'I', categories, [37, 14, 1, 31, 25]) check_coefficients(input_data, 'J', categories, [42, 25, 2, 26.5, 17]) check_coefficients(input_data, 'K', categories, [5, 17, 3, 12, 37])
def test_order_of_dmus(): categories, xls_data, dmu_name, sheet_name = read_data( 'tests/categorical_test_from_book.xls') coefficients, has_same_dmus = convert_to_dictionary(xls_data) assert has_same_dmus is False assert validate_data(categories, coefficients) is True coefficients, has_same_dmus = convert_to_dictionary(xls_data) assert has_same_dmus is False data = construct_input_data_instance(categories, coefficients) dmus = ['L1', 'L2', 'L3', 'L4', 'L5', 'L6', 'L7', 'L8', 'L9', 'L10', 'L11', 'L12', 'L13', 'L14', 'L15', 'L16', 'L17', 'L18', 'L19', 'L20', 'L21', 'L22', 'L23'] for count, dmu in enumerate(dmus): assert data.DMU_codes_in_added_order[ count] == data._DMU_user_name_to_code[dmu]
def categorical_data(request): categories, xls_data, dmu_name, sheet_name = read_data( 'tests/categorical_test.xls') coefficients, has_same_dmus = convert_to_dictionary(xls_data) assert has_same_dmus is False assert validate_data(categories, coefficients) is True request.addfinalizer(clean_up_pickled_files) return construct_input_data_instance(categories, coefficients)
def categorical_data(request): categories, xls_data, dmu_name, sheet_name = read_data( 'tests/categorical_test.xls') coefficients, has_same_dmus = convert_to_dictionary(xls_data) assert has_same_dmus is False assert validate_data(categories, coefficients) is True request.addfinalizer(clean_up_pickled_files) return construct_input_data_instance(categories, coefficients)
def _construct_params_and_input(): filename = 'tests/params_new_format.txt' params = parse_parameters_from_file(filename) categories, data, dmu_name, sheet_name = read_data( params.get_parameter_value('DATA_FILE')) coefficients, has_same_dmus = convert_to_dictionary(data) model_input = construct_input_data_instance(categories, coefficients) return params, model_input
def _construct_params_and_input(): filename = 'tests/params_new_format.txt' params = parse_parameters_from_file(filename) categories, data, dmu_name, sheet_name = read_data( params.get_parameter_value('DATA_FILE')) coefficients, has_same_dmus = convert_to_dictionary(data) model_input = construct_input_data_instance(categories, coefficients) return params, model_input
def test_order_of_dmus(): categories, xls_data, dmu_name, sheet_name = read_data( 'tests/categorical_test_from_book.xls') coefficients, has_same_dmus = convert_to_dictionary(xls_data) assert has_same_dmus is False assert validate_data(categories, coefficients) is True coefficients, has_same_dmus = convert_to_dictionary(xls_data) assert has_same_dmus is False data = construct_input_data_instance(categories, coefficients) dmus = [ 'L1', 'L2', 'L3', 'L4', 'L5', 'L6', 'L7', 'L8', 'L9', 'L10', 'L11', 'L12', 'L13', 'L14', 'L15', 'L16', 'L17', 'L18', 'L19', 'L20', 'L21', 'L22', 'L23' ] for count, dmu in enumerate(dmus): assert data.DMU_codes_in_added_order[ count] == data._DMU_user_name_to_code[dmu]
def test_with_zero_data(): categories, xls_data, dmu_name, sheet_name = read_data( 'tests/with_zeros.xls') coefficients, has_same_dmus = convert_to_dictionary(xls_data) assert has_same_dmus is False assert validate_data(categories, coefficients) is True data = construct_input_data_instance(categories, coefficients) data.add_input_category('rein') data.add_output_category('aus') model = MultiplierModelBase(data, 0, MultiplierOutputOrientedModel()) model_solution = model.run() clean_up_pickled_files()
def test_with_zero_data(): categories, xls_data, dmu_name, sheet_name = read_data( 'tests/with_zeros.xls') coefficients, has_same_dmus = convert_to_dictionary(xls_data) assert has_same_dmus is False assert validate_data(categories, coefficients) is True data = construct_input_data_instance(categories, coefficients) data.add_input_category('rein') data.add_output_category('aus') model = MultiplierModelBase(data, 0, MultiplierOutputOrientedModel()) model_solution = model.run() clean_up_pickled_files()
def categorical_from_book(request): categories, xls_data, dmu_name, sheet_name = read_data( 'tests/categorical_test_from_book.xls') coefficients, has_same_dmus = convert_to_dictionary(xls_data) assert has_same_dmus is False assert validate_data(categories, coefficients) is True data = construct_input_data_instance(categories, coefficients) data.add_input_category('Area') data.add_input_category('Books') data.add_input_category('Staff') data.add_output_category('Regist') data.add_output_category('Borrow') request.addfinalizer(clean_up_pickled_files) return data
def categorical_from_book(request): categories, xls_data, dmu_name, sheet_name = read_data( 'tests/categorical_test_from_book.xls') coefficients, has_same_dmus = convert_to_dictionary(xls_data) assert has_same_dmus is False assert validate_data(categories, coefficients) is True data = construct_input_data_instance(categories, coefficients) data.add_input_category('Area') data.add_input_category('Books') data.add_input_category('Staff') data.add_output_category('Regist') data.add_output_category('Borrow') request.addfinalizer(clean_up_pickled_files) return data
def test_peel_the_onion_unbounded(): params = parse_parameters_from_file('tests/params_for_linux.txt') categories, xls_data, dmu_name, sheet_name = read_data( params.get_parameter_value('DATA_FILE')) coefficients, has_same_dmus = convert_to_dictionary(xls_data) assert has_same_dmus is False assert validate_data(categories, coefficients) is True model_input = construct_input_data_instance(categories, coefficients) model_factory.add_input_and_output_categories(params, model_input) model = model_factory.create_model(params, model_input) ranks = None model_solution, ranks, state = peel_the_onion_method(model) assert state is True clean_up_pickled_files()
def test_peel_the_onion_unbounded(): params = parse_parameters_from_file('tests/params_for_linux.txt') categories, xls_data, dmu_name, sheet_name = read_data( params.get_parameter_value('DATA_FILE')) coefficients, has_same_dmus = convert_to_dictionary(xls_data) assert has_same_dmus is False assert validate_data(categories, coefficients) is True model_input = construct_input_data_instance(categories, coefficients) model_factory.add_input_and_output_categories(params, model_input) model = model_factory.create_model(params, model_input) ranks = None model_solution, ranks, state = peel_the_onion_method(model) assert state is True clean_up_pickled_files()
def test_read_data_from_xls_numeric_dmus(): categories, xls_data, dmu_name, sheet_name = read_data( 'tests/dataForTestingReadXLS_withNumericDMU.xls') coefficients, has_same_dmus = convert_to_dictionary(xls_data) assert has_same_dmus is False assert validate_data(categories, coefficients) is True input_data = construct_input_data_instance(categories, coefficients) assert len(input_data.DMU_codes) == 3 assert len(input_data.categories) == 3 categories = [0, 5, 2] for category in categories: assert category in input_data.categories assert len(input_data.input_categories) == 0 assert len(input_data.output_categories) == 0 dmus = [0, 1, 2] for dmu in dmus: assert dmu in input_data._DMU_user_name_to_code check_coefficients(input_data, 0, categories, [10, 1, 2]) check_coefficients(input_data, 1, categories, [4, 5, 20]) check_coefficients(input_data, 2, categories, [1, 1, 1])
def test_read_data_from_xls_numeric_dmus(): categories, xls_data, dmu_name, sheet_name = read_data( 'tests/dataForTestingReadXLS_withNumericDMU.xls') coefficients, has_same_dmus = convert_to_dictionary(xls_data) assert has_same_dmus is False assert validate_data(categories, coefficients) is True input_data = construct_input_data_instance(categories, coefficients) assert len(input_data.DMU_codes) == 3 assert len(input_data.categories) == 3 categories = [0, 5, 2] for category in categories: assert category in input_data.categories assert len(input_data.input_categories) == 0 assert len(input_data.output_categories) == 0 dmus = [0, 1, 2] for dmu in dmus: assert dmu in input_data._DMU_user_name_to_code check_coefficients(input_data, 0, categories, [10, 1, 2]) check_coefficients(input_data, 1, categories, [4, 5, 20]) check_coefficients(input_data, 2, categories, [1, 1, 1])
def test_abs_restrictions_env_model_output(data): filename = 'tests/DEA_Harish_parameters.txt' params = parse_parameters_from_file(filename) categories, data, dmu_name, sheet_name = read_data( params.get_parameter_value('DATA_FILE')) coefficients, has_same_dmus = convert_to_dictionary(data) model_input = construct_input_data_instance(categories, coefficients) models, all_params = build_models(params, model_input) assert len(models) == 1 and len(all_params) == 1 model = models[0] start_time = datetime.datetime.now() model_solution = model.run() end_time = datetime.datetime.now() bounds = {'Urban Roads (%)': (None, 0.003)} utils_for_tests.check_if_category_is_within_abs_limits( model_solution, bounds) work_book = xlwt.Workbook() writer = XLSWriter(Parameters(), work_book, datetime.datetime.today(), (end_time - start_time).total_seconds()) writer.write_data(model_solution) work_book.save('tests/test_abs_constraints_env_outoriented_output.xls')
def test_VRS_from_params_file(): params = parse_parameters_from_file('tests/params_new_format.txt') categories, xls_data, dmu_name, sheet_name = read_data( params.get_parameter_value('DATA_FILE')) coefficients, has_same_dmus = convert_to_dictionary(xls_data) assert has_same_dmus is False assert validate_data(categories, coefficients) is True model_input = construct_input_data_instance(categories, coefficients) model_factory.add_input_and_output_categories(params, model_input) model = model_factory.create_model(params, model_input) model_solution = model.run() utils_for_tests.check_optimal_solution_status_and_sizes( model_solution, model_input) dmus = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K'] utils_for_tests.check_efficiency_scores(dmus, [1, 0.86998617, 1, 0.95561335, 0.85, 1, 1, 0.84507042, 1, 0.524, 0.89058524], model_solution, model_input) clean_up_pickled_files()
def test_abs_restrictions_env_model_output(data): filename = 'tests/DEA_Harish_parameters.txt' params = parse_parameters_from_file(filename) categories, data, dmu_name, sheet_name = read_data( params.get_parameter_value('DATA_FILE')) coefficients, has_same_dmus = convert_to_dictionary(data) model_input = construct_input_data_instance(categories, coefficients) models, all_params = build_models(params, model_input) assert len(models) == 1 and len(all_params) == 1 model = models[0] start_time = datetime.datetime.now() model_solution = model.run() end_time = datetime.datetime.now() bounds = {'Urban Roads (%)': (None, 0.003)} utils_for_tests.check_if_category_is_within_abs_limits( model_solution, bounds) work_book = Workbook() writer = XLSWriter(Parameters(), work_book, datetime.datetime.today(), (end_time - start_time).total_seconds()) writer.write_data(model_solution) work_book.save('tests/test_abs_constraints_env_outoriented_output.xls')
def helper_func(filename): categories, data, dmu_name, sheet_name = read_data(filename) coefficients, has_same_dmus = convert_to_dictionary(data) assert has_same_dmus is False assert validate_data(categories, coefficients) is True input_data = construct_input_data_instance(categories, coefficients) assert len(input_data.DMU_codes) == 4 assert len(input_data.categories) == 4 categories = ['x1', 'x2', 'input with space', 'output starts with space'] for category in categories: assert category in input_data.categories assert len(input_data.input_categories) == 0 assert len(input_data.output_categories) == 0 dmus = ['dmu1', 'dmu2', 'dmu with space', 'space in the beginning'] for dmu in dmus: assert dmu in input_data._DMU_user_name_to_code check_coefficients(input_data, 'dmu1', categories, [1, 4, 7, 1]) check_coefficients(input_data, 'dmu2', categories, [9, 5, 7, 7]) check_coefficients(input_data, 'dmu with space', categories, [5.5, 1, 8, 8]) check_coefficients(input_data, 'space in the beginning', categories, [45, 9, 10, 7.55])
def helper_func(filename): categories, data, dmu_name, sheet_name = read_data(filename) coefficients, has_same_dmus = convert_to_dictionary(data) assert has_same_dmus is False assert validate_data(categories, coefficients) is True input_data = construct_input_data_instance(categories, coefficients) assert len(input_data.DMU_codes) == 4 assert len(input_data.categories) == 4 categories = ['x1', 'x2', 'input with space', 'output starts with space'] for category in categories: assert category in input_data.categories assert len(input_data.input_categories) == 0 assert len(input_data.output_categories) == 0 dmus = ['dmu1', 'dmu2', 'dmu with space', 'space in the beginning'] for dmu in dmus: assert dmu in input_data._DMU_user_name_to_code check_coefficients(input_data, 'dmu1', categories, [1, 4, 7, 1]) check_coefficients(input_data, 'dmu2', categories, [9, 5, 7, 7]) check_coefficients(input_data, 'dmu with space', categories, [5.5, 1, 8, 8]) check_coefficients(input_data, 'space in the beginning', categories, [45, 9, 10, 7.55])
def test_price_ratio_restrictions_medium_env_model(): categories, data, dmu_name, sheet_name = read_data( 'tests/dataFromDEAbook_page181.xls') coefficients, has_same_dmus = convert_to_dictionary(data) assert has_same_dmus is False assert validate_data(categories, coefficients) is True data = construct_input_data_instance(categories, coefficients) print(data.categories) data.add_input_category('Doctors') data.add_input_category('Nurses') data.add_output_category('Outpatients') data.add_output_category('Inpatients') model = MultiplierModelBase(data, 0, MultiplierInputOrientedModel()) ratio_bounds = { ('Nurses', 'Doctors'): (0.2, 5), ('Inpatients', 'Outpatients'): (0.2, 5) } model = MultiplierModelWithPriceRatioConstraints(model, ratio_bounds) model_solution = model.run() utils_for_tests.check_if_category_is_within_price_ratio_constraints( model_solution, ratio_bounds) utils_for_tests.check_optimal_solution_status_and_sizes( model_solution, data) dmus = [ 'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'H7', 'H8', 'H9', 'H10', 'H11', 'H12', 'H13', 'H14' ] utils_for_tests.check_efficiency_scores(dmus, [ 0.926, 1, 1, 0.634, 0.82, 1, 0.803, 0.872, 0.982, 1, 0.849, 0.93, 0.74, 0.929 ], model_solution, data, 1e-3) clean_up_pickled_files()
def get_coefficients(self): ''' See base class. ''' return convert_to_dictionary(self.data)
def get_coefficients(self): ''' See base class. ''' return convert_to_dictionary(self.data)