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_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 model(request, data): model = EnvelopmentModelBase( data, EnvelopmentModelInputOriented( generate_upper_bound_for_efficiency_score), DefaultConstraintCreator()) return model
def test_peel_the_onion_and_categorical(categorical_from_book): model = EnvelopmentModelBase(categorical_from_book, EnvelopmentModelInputOriented( generate_upper_bound_for_efficiency_score), DefaultConstraintCreator()) model = ModelWithCategoricalDMUs(model, 'Category') model_solution, ranks, state = peel_the_onion_method(model) assert state is True clean_up_pickled_files()
def get_input_oriented_model(cls, use_super_efficiency, non_discr_categories): ''' See base class. ''' upper_bound_generator = cls.get_upper_bound_generator_for_env_model( use_super_efficiency) if non_discr_categories: return EnvelopmentModelInputOrientedWithNonDiscVars( non_discr_categories, upper_bound_generator) return EnvelopmentModelInputOriented(upper_bound_generator)
def test_superefficiency_and_peel_the_onion(categorical_data): categorical_data.add_input_category('rein') categorical_data.add_output_category('aus') model = EnvelopmentModelBase( categorical_data, EnvelopmentModelInputOriented(generate_supper_efficiency_upper_bound), DefaultConstraintCreator()) super_efficiency_model = SupperEfficiencyModel(model) model_solution, ranks, state = peel_the_onion_method( super_efficiency_model)
def _create_large_model(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_upper_bound_for_efficiency_score), DefaultConstraintCreator()) return model
def test_price_ratio_restrictions_env_model(data): model = EnvelopmentModelBase( data, EnvelopmentModelInputOriented( generate_upper_bound_for_efficiency_score), DefaultConstraintCreator()) bounds = {('I1', 'I2'): (None, 0.4), ('O1', 'O2'): (0.01, None)} model = EnvelopmentModelWithPriceRatioConstraints(model, bounds) start_time = datetime.datetime.now() model_solution = model.run() end_time = datetime.datetime.now() utils_for_tests.check_if_category_is_within_price_ratio_constraints( 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_price_ratio_env_output.xls')
def test_virual_restrictions_env_model(data): model = EnvelopmentModelBase( data, EnvelopmentModelInputOriented( generate_upper_bound_for_efficiency_score), DefaultConstraintCreator()) bounds = {'I2': (0.01, 0.5)} model = EnvelopmentModelWithVirtualWeightRestrictions(model, bounds) start_time = datetime.datetime.now() model_solution = model.run() end_time = datetime.datetime.now() utils_for_tests.check_if_category_is_within_virtual_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_virtual_constraints_env_output.xls')
def test_super_efficiency_with_VRS(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()) model = EnvelopmentModelVRSDecorator(model) super_efficiency_model = SupperEfficiencyModel(model) start_time = datetime.datetime.now() solution = super_efficiency_model.run() end_time = datetime.datetime.now() 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_with_VRS.xls')