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()
예제 #4
0
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()
예제 #5
0
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()
예제 #7
0
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()
예제 #9
0
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()
예제 #10
0
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]
예제 #13
0
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)
예제 #14
0
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)
예제 #15
0
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
예제 #16
0
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
예제 #17
0
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()
예제 #20
0
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
예제 #21
0
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
예제 #22
0
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()
예제 #23
0
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()
예제 #24
0
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')
예제 #29
0
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()
예제 #32
0
 def get_coefficients(self):
     ''' See base class.
     '''
     return convert_to_dictionary(self.data)
예제 #33
0
 def get_coefficients(self):
     ''' See base class.
     '''
     return convert_to_dictionary(self.data)