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_VRS_env_output_oriented_small(model, data): model_solution = model.run() utils_for_tests.check_optimal_solution_status_and_sizes( model_solution, data) dmus = ['A', 'B', 'C', 'D', 'E'] utils_for_tests.check_efficiency_scores( dmus, [0.5, 1, 1, 1, 1], model_solution, data) utils_for_tests.check_lambda_variables('A', 'B', 1, model_solution, data) utils_for_tests.check_lambda_variables('B', 'B', 1, model_solution, data) utils_for_tests.check_lambda_variables('C', 'C', 1, model_solution, data) utils_for_tests.check_lambda_variables('D', 'D', 1, model_solution, data) utils_for_tests.check_lambda_variables('E', 'E', 1, model_solution, data) utils_for_tests.check_categories_for_dmu( 'A', ['x1', 'x2', 'q'], [0.25, 0, 1], model_solution, data) utils_for_tests.check_categories_for_dmu( 'C', ['x1', 'x2', 'q'], [0, 0, 0.33333333], model_solution, data) utils_for_tests.check_categories_for_dmu( 'D', ['x1', 'x2', 'q'], [0.33333333, 0.66666667, 1], model_solution, data) utils_for_tests.check_categories_for_dmu( 'E', ['x1', 'x2', 'q'], [0, 0.125, 0.5], model_solution, data) # B does not return the same value utils_for_tests.check_VRS_duals( ['A', 'C', 'D', 'E'], [1.5, 1, -1.3333333, 0.75], model_solution, data)
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_super_efficiency_medium(DEA_example2_data): data = DEA_example2_data 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 = EnvelopmentModelBase( data, EnvelopmentModelInputOriented(generate_supper_efficiency_upper_bound), DefaultConstraintCreator()) super_efficiency_model = SupperEfficiencyModel(model) start_time = datetime.datetime.now() solution = super_efficiency_model.run() end_time = datetime.datetime.now() utils_for_tests.check_optimal_solution_status_and_sizes(solution, data) dmus = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K'] utils_for_tests.check_efficiency_scores( dmus, [1.652173892, 0.6485875732, 0.909247759, 1.116838534, 0.5490716156, 2.485294106, 1.244945494, 0.824120607, 2.299898658, 0.6267333816, 1.088235274], solution, data, 1e-6) work_book = xlwt.Workbook() writer = XLSWriter(Parameters(), work_book, datetime.datetime.today(), (end_time - start_time).total_seconds()) writer.write_data(solution) work_book.save('tests/test_super_efficiency_output.xls')
def test_VRS_multi_output_oriented_with_weakly_disposable_vars_small(data): model = MultiplierModelVRSDecorator(MultiplierModelWithDisposableCategories( MultiplierModelBase(data, 1e-12, MultiplierOutputOrientedModel()), set(['q']))) model_solution = model.run() utils_for_tests.check_optimal_solution_status_and_sizes( model_solution, data) dmus = ['A', 'B', 'C', 'D', 'E'] utils_for_tests.check_efficiency_scores( dmus, [0.5, 1, 1, 1, 1], model_solution, data) utils_for_tests.check_lambda_variables('A', 'B', 1, model_solution, data) utils_for_tests.check_lambda_variables('B', 'B', 1, model_solution, data) utils_for_tests.check_lambda_variables('C', 'C', 1, model_solution, data) utils_for_tests.check_lambda_variables('E', 'E', 1, model_solution, data) utils_for_tests.check_lambda_variables('D', 'D', 1, model_solution, data) utils_for_tests.check_categories_for_dmu( 'A', ['x1', 'x2', 'q'], [0.25, 0, 1], model_solution, data) utils_for_tests.check_categories_for_dmu( 'B', ['x1', 'x2', 'q'], [0.125, 0, 0.5], model_solution, data) utils_for_tests.check_categories_for_dmu( 'C', ['x1', 'x2', 'q'], [0.083333333, 0, 0.33333333], model_solution, data) utils_for_tests.check_categories_for_dmu( 'D', ['x1', 'x2', 'q'], [0.33333333, 0.66666667, 1], model_solution, data) utils_for_tests.check_categories_for_dmu( 'E', ['x1', 'x2', 'q'], [0, 0.125, 0.5], model_solution, data) utils_for_tests.check_VRS_duals( dmus, [1.5, 0.75, 0.5, -1.3333333, 0.75], model_solution, data)
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_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_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_CRS_env_input_oriented_small(model, data): model_solution = model.run() utils_for_tests.check_optimal_solution_status_and_sizes( model_solution, data) dmus = ['A', 'B', 'C', 'D', 'E'] utils_for_tests.check_efficiency_scores( dmus, [0.5, 1, 0.83333333, 0.71428571, 1], model_solution, data) utils_for_tests.check_lambda_variables('A', 'B', 0.5, model_solution, data) utils_for_tests.check_lambda_variables('B', 'B', 1, model_solution, data) utils_for_tests.check_lambda_variables('C', 'B', 1, model_solution, data) utils_for_tests.check_lambda_variables('C', 'E', 0.5, model_solution, data) utils_for_tests.check_lambda_variables('D', 'B', 0.21428571, model_solution, data) utils_for_tests.check_lambda_variables('D', 'E', 0.28571429, model_solution, data) utils_for_tests.check_lambda_variables('E', 'E', 1, model_solution, data) utils_for_tests.check_categories_for_dmu('A', ['x1', 'x2', 'q'], [0.5, 0, 0.5], model_solution, data) utils_for_tests.check_categories_for_dmu('B', ['x1', 'x2', 'q'], [0.1, 0.2, 0.5], model_solution, data) utils_for_tests.check_categories_for_dmu( 'C', ['x1', 'x2', 'q'], [0.055555556, 0.11111111, 0.27777778], model_solution, data) utils_for_tests.check_categories_for_dmu( 'D', ['x1', 'x2', 'q'], [0.14285714, 0.28571429, 0.71428571], model_solution, data) utils_for_tests.check_categories_for_dmu('E', ['x1', 'x2', 'q'], [0.1, 0.2, 0.5], model_solution, data)
def test_super_efficiency_medium(DEA_example2_data): data = DEA_example2_data 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 = EnvelopmentModelBase( data, EnvelopmentModelInputOriented(generate_supper_efficiency_upper_bound), DefaultConstraintCreator()) super_efficiency_model = SupperEfficiencyModel(model) start_time = datetime.datetime.now() solution = super_efficiency_model.run() end_time = datetime.datetime.now() utils_for_tests.check_optimal_solution_status_and_sizes(solution, data) dmus = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K'] utils_for_tests.check_efficiency_scores(dmus, [ 1.652173892, 0.6485875732, 0.909247759, 1.116838534, 0.5490716156, 2.485294106, 1.244945494, 0.824120607, 2.299898658, 0.6267333816, 1.088235274 ], solution, data, 1e-6) work_book = xlwt.Workbook() writer = XLSWriter(Parameters(), work_book, datetime.datetime.today(), (end_time - start_time).total_seconds()) writer.write_data(solution) work_book.save('tests/test_super_efficiency_output.xls')
def test_CRS_multi_output_oriented_small(model, data): model_solution = model.run() utils_for_tests.check_optimal_solution_status_and_sizes( model_solution, data) dmus = ['A', 'B', 'C', 'D', 'E'] utils_for_tests.check_efficiency_scores( dmus, [0.5, 1, 1 / 1.199999982, 1 / 1.4, 1], model_solution, data) utils_for_tests.check_lambda_variables('A', 'B', 1, model_solution, data) utils_for_tests.check_lambda_variables('B', 'B', 1, model_solution, data) utils_for_tests.check_lambda_variables('C', 'B', 1.2, model_solution, data) utils_for_tests.check_lambda_variables('C', 'E', 0.6, model_solution, data) utils_for_tests.check_lambda_variables('D', 'B', 0.3, model_solution, data) utils_for_tests.check_lambda_variables('D', 'E', 0.4, model_solution, data) utils_for_tests.check_lambda_variables('E', 'E', 1, model_solution, data) utils_for_tests.check_categories_for_dmu( 'A', ['x1', 'x2', 'q'], [1, 0, 1], model_solution, data) utils_for_tests.check_categories_for_dmu( 'B', ['x1', 'x2', 'q'], [0.1, 0.2, 0.5], model_solution, data) utils_for_tests.check_categories_for_dmu('C', ['x1', 'x2', 'q'], [ 0.066666667, 0.13333333, 0.33333333], model_solution, data) utils_for_tests.check_categories_for_dmu( 'D', ['x1', 'x2', 'q'], [0.2, 0.4, 1], model_solution, data) utils_for_tests.check_categories_for_dmu( 'E', ['x1', 'x2', 'q'], [0.1, 0.2, 0.5], model_solution, data)
def test_CRS_env_output_oriented_small(model, data): model_solution = model.run() utils_for_tests.check_optimal_solution_status_and_sizes( model_solution, data) dmus = ['A', 'B', 'C', 'D', 'E'] utils_for_tests.check_efficiency_scores(dmus, [0.5, 1, 1 / 1.2, 1 / 1.4, 1], model_solution, data) utils_for_tests.check_lambda_variables('A', 'B', 1, model_solution, data) utils_for_tests.check_lambda_variables('B', 'B', 1, model_solution, data) utils_for_tests.check_lambda_variables('C', 'B', 1.2, model_solution, data) utils_for_tests.check_lambda_variables('C', 'E', 0.6, model_solution, data) utils_for_tests.check_lambda_variables('D', 'B', 0.3, model_solution, data) utils_for_tests.check_lambda_variables('D', 'E', 0.4, model_solution, data) utils_for_tests.check_lambda_variables('E', 'E', 1, model_solution, data) utils_for_tests.check_categories_for_dmu('A', ['x1', 'x2', 'q'], [1, 0, 1], model_solution, data) utils_for_tests.check_categories_for_dmu('B', ['x1', 'x2', 'q'], [0.1, 0.2, 0.5], model_solution, data) utils_for_tests.check_categories_for_dmu( 'C', ['x1', 'x2', 'q'], [0.066666667, 0.13333333, 0.33333333], model_solution, data) utils_for_tests.check_categories_for_dmu('D', ['x1', 'x2', 'q'], [0.2, 0.4, 1], model_solution, data) utils_for_tests.check_categories_for_dmu('E', ['x1', 'x2', 'q'], [0.1, 0.2, 0.5], model_solution, data)
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_CRS_env_input_oriented_small(model, data): model_solution = model.run() utils_for_tests.check_optimal_solution_status_and_sizes( model_solution, data) dmus = ['A', 'B', 'C', 'D', 'E'] utils_for_tests.check_efficiency_scores( dmus, [0.5, 1, 0.83333333, 0.71428571, 1], model_solution, data) utils_for_tests.check_lambda_variables('A', 'B', 0.5, model_solution, data) utils_for_tests.check_lambda_variables('B', 'B', 1, model_solution, data) utils_for_tests.check_lambda_variables('C', 'B', 1, model_solution, data) utils_for_tests.check_lambda_variables('C', 'E', 0.5, model_solution, data) utils_for_tests.check_lambda_variables( 'D', 'B', 0.21428571, model_solution, data) utils_for_tests.check_lambda_variables( 'D', 'E', 0.28571429, model_solution, data) utils_for_tests.check_lambda_variables('E', 'E', 1, model_solution, data) utils_for_tests.check_categories_for_dmu( 'A', ['x1', 'x2', 'q'], [0.5, 0, 0.5], model_solution, data) utils_for_tests.check_categories_for_dmu( 'B', ['x1', 'x2', 'q'], [0.1, 0.2, 0.5], model_solution, data) utils_for_tests.check_categories_for_dmu('C', ['x1', 'x2', 'q'], [ 0.055555556, 0.11111111, 0.27777778], model_solution, data) utils_for_tests.check_categories_for_dmu('D', ['x1', 'x2', 'q'], [ 0.14285714, 0.28571429, 0.71428571], model_solution, data) utils_for_tests.check_categories_for_dmu( 'E', ['x1', 'x2', 'q'], [0.1, 0.2, 0.5], model_solution, data)
def test_run_gui(main_frame): filename = 'tests/params_new_format.txt' def get_params(): return filename main_frame.params_frame._get_filename_for_load = get_params def get_sheet_name(names): return 'Sheet1' main_frame.data_frame.data_tab.call_dialog = get_sheet_name main_frame.params_frame.load_file() main_frame.run() model_solutions = main_frame.data_frame.solution_tab.model_solutions assert len(model_solutions) == 1 model_solution = model_solutions[0] model_input = model_solution._input_data 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)
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_multi_output_oriented_with_weakly_disposable_vars_small(data): model = MultiplierModelWithDisposableCategories( MultiplierModelBase(data, 1e-12, MultiplierOutputOrientedModel()), set(['x1'])) model_solution = model.run() utils_for_tests.check_optimal_solution_status_and_sizes( model_solution, data) dmus = ['A', 'B', 'C', 'D', 'E'] utils_for_tests.check_efficiency_scores( dmus, [0.5, 1, 0.8333333458, 0.7142857143, 1], model_solution, data) utils_for_tests.check_lambda_variables('A', 'B', 1, model_solution, data) utils_for_tests.check_lambda_variables('B', 'B', 1, model_solution, data) utils_for_tests.check_lambda_variables('C', 'B', 1.2, model_solution, data) utils_for_tests.check_lambda_variables('C', 'E', 0.6, model_solution, data) utils_for_tests.check_lambda_variables('D', 'B', 0.3, model_solution, data) utils_for_tests.check_lambda_variables('D', 'E', 0.4, model_solution, data) utils_for_tests.check_lambda_variables('E', 'E', 1, model_solution, data) utils_for_tests.check_categories_for_dmu( 'A', ['x1', 'x2', 'q'], [1, 0, 1], model_solution, data) utils_for_tests.check_categories_for_dmu( 'B', ['x1', 'x2', 'q'], [0.5, 0, 0.5], model_solution, data) utils_for_tests.check_categories_for_dmu('C', ['x1', 'x2', 'q'], [ 0.066666667, 0.13333333, 0.33333333], model_solution, data) utils_for_tests.check_categories_for_dmu( 'D', ['x1', 'x2', 'q'], [0.2, 0.4, 1], model_solution, data) utils_for_tests.check_categories_for_dmu( 'E', ['x1', 'x2', 'q'], [0.1, 0.2, 0.5], model_solution, data)
def test_CRS_multi_input_oriented_with_weakly_disposable_vars_small(data): model = MultiplierModelWithDisposableCategories( MultiplierModelBase(data, 1e-12, MultiplierInputOrientedModel()), ['x1', 'q']) model_solution = model.run() utils_for_tests.check_optimal_solution_status_and_sizes( model_solution, data) dmus = ['A', 'B', 'C', 'D', 'E'] utils_for_tests.check_efficiency_scores( dmus, [0.5, 1, 0.83333334, 0.71428571, 1], model_solution, data) utils_for_tests.check_lambda_variables('A', 'B', 0.5, model_solution, data) utils_for_tests.check_lambda_variables('B', 'B', 1, model_solution, data) utils_for_tests.check_lambda_variables('C', 'B', 1, model_solution, data) utils_for_tests.check_lambda_variables('C', 'E', 0.5, model_solution, data) utils_for_tests.check_lambda_variables( 'D', 'B', 0.21428571, model_solution, data) utils_for_tests.check_lambda_variables( 'D', 'E', 0.28571429, model_solution, data) utils_for_tests.check_lambda_variables('E', 'E', 1, model_solution, data) utils_for_tests.check_categories_for_dmu( 'A', ['x1', 'x2', 'q'], [0.5, 0, 0.5], model_solution, data) utils_for_tests.check_categories_for_dmu( 'B', ['x1', 'x2', 'q'], [0.5, 0, 0.5], model_solution, data) utils_for_tests.check_categories_for_dmu('C', ['x1', 'x2', 'q'], [ 0.055555556, 0.11111111, 0.27777778], model_solution, data) utils_for_tests.check_categories_for_dmu('D', ['x1', 'x2', 'q'], [ 0.14285714, 0.28571429, 0.71428571], model_solution, data) utils_for_tests.check_categories_for_dmu( 'E', ['x1', 'x2', 'q'], [0.1, 0.2, 0.5], model_solution, data)
def test_VRS_multi_input_oriented_small(model, data): model_solution = model.run() utils_for_tests.check_optimal_solution_status_and_sizes( model_solution, data) dmus = ['A', 'B', 'C', 'D', 'E'] utils_for_tests.check_efficiency_scores(dmus, [1, 1, 1, 1, 1], model_solution, data) utils_for_tests.check_lambda_variables('A', 'A', 1, model_solution, data) utils_for_tests.check_lambda_variables('B', 'B', 1, model_solution, data) utils_for_tests.check_lambda_variables('C', 'C', 1, model_solution, data) utils_for_tests.check_lambda_variables('D', 'D', 1, model_solution, data) utils_for_tests.check_lambda_variables('E', 'E', 1, model_solution, data) utils_for_tests.check_categories_for_dmu('A', ['x1', 'x2', 'q'], [0.5, 0, 0], model_solution, data) utils_for_tests.check_categories_for_dmu('B', ['x1', 'x2', 'q'], [0.25, 0.125, 0], model_solution, data) utils_for_tests.check_categories_for_dmu( 'C', ['x1', 'x2', 'q'], [0.055555556, 0.11111111, 0.44444444], model_solution, data) utils_for_tests.check_categories_for_dmu('D', ['x1', 'x2', 'q'], [0.25, 0.125, 0], model_solution, data) utils_for_tests.check_categories_for_dmu('E', ['x1', 'x2', 'q'], [0, 0.5, 0], model_solution, data) utils_for_tests.check_VRS_duals(dmus, [1, 1, -0.33333333, 1, 1], model_solution, data)
def test_VRS_multi_input_oriented_small(model, data): model_solution = model.run() utils_for_tests.check_optimal_solution_status_and_sizes( model_solution, data) dmus = ['A', 'B', 'C', 'D', 'E'] utils_for_tests.check_efficiency_scores( dmus, [1, 1, 1, 1, 1], model_solution, data) utils_for_tests.check_lambda_variables('A', 'A', 1, model_solution, data) utils_for_tests.check_lambda_variables('B', 'B', 1, model_solution, data) utils_for_tests.check_lambda_variables('C', 'C', 1, model_solution, data) utils_for_tests.check_lambda_variables('D', 'D', 1, model_solution, data) utils_for_tests.check_lambda_variables('E', 'E', 1, model_solution, data) utils_for_tests.check_categories_for_dmu( 'A', ['x1', 'x2', 'q'], [0.5, 0, 0], model_solution, data) utils_for_tests.check_categories_for_dmu( 'B', ['x1', 'x2', 'q'], [0.25, 0.125, 0], model_solution, data) utils_for_tests.check_categories_for_dmu('C', ['x1', 'x2', 'q'], [ 0.055555556, 0.11111111, 0.44444444], model_solution, data) utils_for_tests.check_categories_for_dmu( 'D', ['x1', 'x2', 'q'], [0.25, 0.125, 0], model_solution, data) utils_for_tests.check_categories_for_dmu( 'E', ['x1', 'x2', 'q'], [0, 0.5, 0], model_solution, data) utils_for_tests.check_VRS_duals( dmus, [1, 1, -0.33333333, 1, 1], model_solution, data)
def test_CRS_multi_output_oriented_with_weakly_disposable_vars_small(data): model = MultiplierModelWithDisposableCategories( MultiplierModelBase(data, 1e-12, MultiplierOutputOrientedModel()), set(['x1'])) model_solution = model.run() utils_for_tests.check_optimal_solution_status_and_sizes( model_solution, data) dmus = ['A', 'B', 'C', 'D', 'E'] utils_for_tests.check_efficiency_scores( dmus, [0.5, 1, 0.8333333458, 0.7142857143, 1], model_solution, data) utils_for_tests.check_lambda_variables('A', 'B', 1, model_solution, data) utils_for_tests.check_lambda_variables('B', 'B', 1, model_solution, data) utils_for_tests.check_lambda_variables('C', 'B', 1.2, model_solution, data) utils_for_tests.check_lambda_variables('C', 'E', 0.6, model_solution, data) utils_for_tests.check_lambda_variables('D', 'B', 0.3, model_solution, data) utils_for_tests.check_lambda_variables('D', 'E', 0.4, model_solution, data) utils_for_tests.check_lambda_variables('E', 'E', 1, model_solution, data) utils_for_tests.check_categories_for_dmu('A', ['x1', 'x2', 'q'], [1, 0, 1], model_solution, data) utils_for_tests.check_categories_for_dmu('B', ['x1', 'x2', 'q'], [0.5, 0, 0.5], model_solution, data) utils_for_tests.check_categories_for_dmu( 'C', ['x1', 'x2', 'q'], [0.066666667, 0.13333333, 0.33333333], model_solution, data) utils_for_tests.check_categories_for_dmu('D', ['x1', 'x2', 'q'], [0.2, 0.4, 1], model_solution, data) utils_for_tests.check_categories_for_dmu('E', ['x1', 'x2', 'q'], [0.1, 0.2, 0.5], model_solution, data)
def _check_large_model(model_solution, data): 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.64858757, 0.90924776, 1, 0.54907162, 1, 1, 0.8241206, 1, 0.62673338, 1 ], model_solution, data)
def _check_large_model_CRS_multi_output_oriented_with_non_discretionary( model_solution, data): 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.3085412442, 0.8305229413, 1, 0.5294117616, 1, 1, 0.1538535738, 1, 0.2627956766, 1 ], model_solution, data)
def _check_large_model_CRS_multi_output_oriented_with_non_discretionary( model_solution, data): 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.3085412442, 0.8305229413, 1, 0.5294117616, 1, 1, 0.1538535738, 1, 0.2627956766, 1], model_solution, data)
def _check_large_model(model_solution, data): 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.64858757, 0.90924776, 1, 0.54907162, 1, 1, 0.8241206, 1, 0.62673338, 1], model_solution, data)
def test_peel_the_onion_VRS_multi(categorical_data): categorical_data.add_input_category('rein') categorical_data.add_output_category('aus') model = MultiplierModelVRSDecorator( MultiplierModelBase(categorical_data, 0, MultiplierInputOrientedModel())) solution, ranks, state = peel_the_onion_method(model) utils_for_tests.check_optimal_solution_status_and_sizes( solution, categorical_data) dmus = ['B', 'C', 'D', 'E', 'F', 'G'] utils_for_tests.check_efficiency_scores(dmus, [1, 0.5, 1, 0.99999998, 0.75, 0.50000001], solution, categorical_data, 1e-7) expected_ranks = [1, 2, 1, 1, 2, 2] utils_for_tests.check_onion_ranks( model.input_data, dmus, expected_ranks, ranks)
def test_peel_the_onion_VRS_multi(categorical_data): categorical_data.add_input_category('rein') categorical_data.add_output_category('aus') model = MultiplierModelVRSDecorator( MultiplierModelBase(categorical_data, 0, MultiplierInputOrientedModel())) solution, ranks, state = peel_the_onion_method(model) utils_for_tests.check_optimal_solution_status_and_sizes( solution, categorical_data) dmus = ['B', 'C', 'D', 'E', 'F', 'G'] utils_for_tests.check_efficiency_scores(dmus, [1, 0.5, 1, 0.99999998, 0.75, 0.50000001], solution, categorical_data, 1e-7) expected_ranks = [1, 2, 1, 1, 2, 2] utils_for_tests.check_onion_ranks( model.input_data, dmus, expected_ranks, ranks)
def test_CRS_multi_input_oriented_with_non_discretionary_vars(data): model = MultiplierModelInputOrientedWithNonDiscVars( MultiplierModelBase(data, 1e-12, MultiplierInputOrientedModel()), set(['x1'])) model_solution = model.run() utils_for_tests.check_optimal_solution_status_and_sizes( model_solution, data) dmus = ['A', 'B', 'C', 'D', 'E'] utils_for_tests.check_efficiency_scores(dmus, [0.3, 1, 0.750000012, 0.5, 1], model_solution, data) utils_for_tests.check_lambda_variables('A', 'B', 0.25, model_solution, data) utils_for_tests.check_lambda_variables('A', 'E', 0.25, model_solution, data) utils_for_tests.check_lambda_variables('B', 'B', 1, model_solution, data) utils_for_tests.check_lambda_variables('C', 'B', 0.75, model_solution, data) utils_for_tests.check_lambda_variables('C', 'E', 0.75, model_solution, data) utils_for_tests.check_lambda_variables('D', 'E', 0.5, model_solution, data) utils_for_tests.check_lambda_variables('E', 'E', 1, model_solution, data) utils_for_tests.check_categories_for_dmu('A', ['x1', 'x2', 'q'], [0.1, 0.2, 0.5], model_solution, data) utils_for_tests.check_categories_for_dmu('B', ['x1', 'x2', 'q'], [0.125, 0.25, 0.625], model_solution, data) utils_for_tests.check_categories_for_dmu( 'C', ['x1', 'x2', 'q'], [0.083333333, 0.16666667, 0.41666667], model_solution, data) utils_for_tests.check_categories_for_dmu('D', ['x1', 'x2', 'q'], [0, 0.5, 0.5], model_solution, data) utils_for_tests.check_categories_for_dmu('E', ['x1', 'x2', 'q'], [0, 0.5, 0.5], model_solution, data)
def test_CRS_env_input_oriented_non_disc_vars(DEA_example_data): data = DEA_example_data data.add_input_category('I1') data.add_input_category('I2') data.add_input_category('ND1') data.add_output_category('O1') data.add_output_category('O2') model = EnvelopmentModelBase( data, EnvelopmentModelInputOrientedWithNonDiscVars( set(['ND1']), generate_upper_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, 0.62939304, 0.95095971, 1, 0.42525889, 1, 1, 0.82672274, 1, 0.53385106, 1 ], model_solution, data)
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_CRS_multi_input_oriented_with_weakly_disposable_vars_small(data): model = MultiplierModelWithDisposableCategories( MultiplierModelBase(data, 1e-12, MultiplierInputOrientedModel()), ['x1', 'q']) model_solution = model.run() utils_for_tests.check_optimal_solution_status_and_sizes( model_solution, data) dmus = ['A', 'B', 'C', 'D', 'E'] utils_for_tests.check_efficiency_scores( dmus, [0.5, 1, 0.83333334, 0.71428571, 1], model_solution, data) utils_for_tests.check_lambda_variables('A', 'B', 0.5, model_solution, data) utils_for_tests.check_lambda_variables('B', 'B', 1, model_solution, data) utils_for_tests.check_lambda_variables('C', 'B', 1, model_solution, data) utils_for_tests.check_lambda_variables('C', 'E', 0.5, model_solution, data) utils_for_tests.check_lambda_variables('D', 'B', 0.21428571, model_solution, data) utils_for_tests.check_lambda_variables('D', 'E', 0.28571429, model_solution, data) utils_for_tests.check_lambda_variables('E', 'E', 1, model_solution, data) utils_for_tests.check_categories_for_dmu('A', ['x1', 'x2', 'q'], [0.5, 0, 0.5], model_solution, data) utils_for_tests.check_categories_for_dmu('B', ['x1', 'x2', 'q'], [0.5, 0, 0.5], model_solution, data) utils_for_tests.check_categories_for_dmu( 'C', ['x1', 'x2', 'q'], [0.055555556, 0.11111111, 0.27777778], model_solution, data) utils_for_tests.check_categories_for_dmu( 'D', ['x1', 'x2', 'q'], [0.14285714, 0.28571429, 0.71428571], model_solution, data) utils_for_tests.check_categories_for_dmu('E', ['x1', 'x2', 'q'], [0.1, 0.2, 0.5], model_solution, data)
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_run_gui(main_frame): filename = 'tests/params_new_format.txt' def get_params(): return filename main_frame.params_frame._get_filename_for_load = get_params def get_sheet_name(names): return 'Sheet1' main_frame.data_frame.data_tab.call_dialog = get_sheet_name main_frame.params_frame.load_file() main_frame.run() model_solutions = main_frame.data_frame.solution_tab.model_solutions assert len(model_solutions) == 1 model_solution = model_solutions[0] model_input = model_solution._input_data 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)
def test_CRS_multi_input_oriented_with_non_discretionary_vars(data): model = MultiplierModelInputOrientedWithNonDiscVars( MultiplierModelBase(data, 1e-12, MultiplierInputOrientedModel()), set(['x1'])) model_solution = model.run() utils_for_tests.check_optimal_solution_status_and_sizes( model_solution, data) dmus = ['A', 'B', 'C', 'D', 'E'] utils_for_tests.check_efficiency_scores( dmus, [0.3, 1, 0.750000012, 0.5, 1], model_solution, data) utils_for_tests.check_lambda_variables( 'A', 'B', 0.25, model_solution, data) utils_for_tests.check_lambda_variables( 'A', 'E', 0.25, model_solution, data) utils_for_tests.check_lambda_variables('B', 'B', 1, model_solution, data) utils_for_tests.check_lambda_variables( 'C', 'B', 0.75, model_solution, data) utils_for_tests.check_lambda_variables( 'C', 'E', 0.75, model_solution, data) utils_for_tests.check_lambda_variables('D', 'E', 0.5, model_solution, data) utils_for_tests.check_lambda_variables('E', 'E', 1, model_solution, data) utils_for_tests.check_categories_for_dmu( 'A', ['x1', 'x2', 'q'], [0.1, 0.2, 0.5], model_solution, data) utils_for_tests.check_categories_for_dmu( 'B', ['x1', 'x2', 'q'], [0.125, 0.25, 0.625], model_solution, data) utils_for_tests.check_categories_for_dmu('C', ['x1', 'x2', 'q'], [ 0.083333333, 0.16666667, 0.41666667], model_solution, data) utils_for_tests.check_categories_for_dmu( 'D', ['x1', 'x2', 'q'], [0, 0.5, 0.5], model_solution, data) utils_for_tests.check_categories_for_dmu( 'E', ['x1', 'x2', 'q'], [0, 0.5, 0.5], model_solution, data)
def test_CRS_env_input_oriented_non_disc_vars(DEA_example_data): data = DEA_example_data data.add_input_category('I1') data.add_input_category('I2') data.add_input_category('ND1') data.add_output_category('O1') data.add_output_category('O2') model = EnvelopmentModelBase( data, EnvelopmentModelInputOrientedWithNonDiscVars( set(['ND1']), generate_upper_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, 0.62939304, 0.95095971, 1, 0.42525889, 1, 1, 0.82672274, 1, 0.53385106, 1], model_solution, data)