Example #1
0
def calc_single_row(num_of_agents, noise, values, identical_values, env_influence_values, main_alg_method):


    #main alg
    main_alg_division = main_alg_method(deepcopy(values), None)
    main_alg_measures = cakepartitionsUtil.alg_division_to_measures(main_alg_division)


    #main alg with exchange
    #todo: clone the division
    exchange_main_alg_division = deepcopy(main_alg_division)
    numbersUtils.set_allocations_grade(exchange_main_alg_division)
    main_alg_num_of_changes = strategyUtil.try_to_exchange_by_agents(exchange_main_alg_division)
    exchange_main_alg_measures = cakepartitionsUtil.alg_division_to_measures(exchange_main_alg_division)
    exchange_main_alg_measures.addAdditionalData('num_of_changes', main_alg_num_of_changes)

    #identical values
    identical_values_main_alg_division = main_alg_method(identical_values, None)
    identical_alg_measures = cakepartitionsUtil.alg_division_to_measures(identical_values_main_alg_division)


    #identical with exchange
     #todo: clone the division
    exchange_identical__main_alg_division = deepcopy(identical_values_main_alg_division)
    numbersUtils.set_allocations_grade(exchange_identical__main_alg_division)
    main_with_identical__alg_num_of_changes = strategyUtil.try_to_exchange_by_agents(exchange_identical__main_alg_division)
    exchange_identical_alg_measures = cakepartitionsUtil.alg_division_to_measures(exchange_identical__main_alg_division)
    exchange_identical_alg_measures.addAdditionalData('num_of_changes', main_with_identical__alg_num_of_changes)

    #env influence
    main_alg_division_env_influence = main_alg_method(env_influence_values, None)
    influence_alg_measures = cakepartitionsUtil.alg_division_to_measures(main_alg_division_env_influence)

    #env influence after change
    exchange_identicalenv_influence_main_alg_division = deepcopy(main_alg_division_env_influence)
    numbersUtils.set_allocations_grade(exchange_identicalenv_influence_main_alg_division)
    main_with_env_influence_alg_num_of_changes = strategyUtil.try_to_exchange_by_agents(exchange_identicalenv_influence_main_alg_division)
    exchange_influence_alg_measures = cakepartitionsUtil.alg_division_to_measures(exchange_identicalenv_influence_main_alg_division)
    exchange_influence_alg_measures.addAdditionalData('num_of_changes', main_with_env_influence_alg_num_of_changes)


    fraud_agent_index_to_fraud_division = {}
    fraud_agent_index_to_measures = {}

    for agent_index in range(num_of_agents):
        fraud_main_alg_division = main_alg_method(deepcopy(values), agent_index)
        fraud_agent_index_to_fraud_division[agent_index] = fraud_main_alg_division
        fraud_agent_index_to_measures[agent_index] = cakepartitionsUtil.alg_division_to_measures(fraud_main_alg_division, False)


    return AlgResult(num_of_agents, noise, main_alg_measures, identical_alg_measures, influence_alg_measures,
                     fraud_agent_index_to_measures, exchange_main_alg_measures, exchange_identical_alg_measures, exchange_influence_alg_measures)
Example #2
0
def calc_results_with_exchnages(first_alg_method, first_exp_type, second_exp_type, values, num_of_agents, noise, fraud_agent_index, identical_values, identical_exp_type, results_by_exp_type):

     res = {}
     division = first_alg_method(values, fraud_agent_index)
     additional1 = {}
     if fraud_agent_index is not None:
        additional1[utils.additionalFields.fraud_agent_index()] = fraud_agent_index



     if identical_values is not None:
        identical_values_division = first_alg_method(identical_values, fraud_agent_index)
        results_by_exp_type[identical_exp_type].append(ExpKey.ExpKey(identical_exp_type, num_of_agents, 0, identical_values_division, additional1))


     results_by_exp_type[first_exp_type].append(ExpKey.ExpKey(first_exp_type, num_of_agents, noise, division, additional1))
     numbersUtils.set_allocations_grade(division)
     num_of_changes = strategyUtil.try_to_exchange_by_agents(division)

     additional = {}
     additional[utils.additionalFields.numberOfExchanges()] = num_of_changes

     if fraud_agent_index is not None:
        additional[utils.additionalFields.fraud_agent_index()] = fraud_agent_index

     #res[second_exp_type] = ExpKey.ExpKey(second_exp_type, num_of_agents, noise, division, additional)
     results_by_exp_type[second_exp_type].append(ExpKey.ExpKey(second_exp_type, num_of_agents, noise, division, additional))

     return res