from otree.api import * import random import numpy as np import math doc = """ Your app description """ # FUNCTIONS ----------------------- def create_lottery_order(start=1, end=30): numbers = list(range(start, end + 1)) random.shuffle(numbers) return numbers def create_algo_order(): algos = ['eu', 'steering'] random.shuffle(algos) return algos def create_color_order(): colors = ['red', 'green'] random.shuffle(colors) return colors def min_max_scale_dict(d): values = d.values() min_val = min(values) max_val = max(values) # Ensure max_val and min_val are not the same to avoid division by zero if max_val == min_val: return {key: 0 for key in d} # or return d, depending on desired behavior normalized_d = {key: (float(v) - min_val) / (max_val - min_val) for key, v in d.items()} return normalized_d def exp_pi(outcomes, probas): lo = len(outcomes) pi = 0 pkeys = list(probas) for i in range(lo): pi = pi + probas[pkeys[i]]*outcomes[i] return pi def crra(x, r): u = (x ** (1-r))/(1-r) return u def crra_eu(outcomes, probas, r): lo = len(outcomes) eu = 0 pkeys = list(probas) for i in range(lo): eu = eu + probas[pkeys[i]]*crra(outcomes[i], r) return eu def multiply_values_and_convert_to_int(input_dict): """ Multiplies each numerical value in the dictionary by 100 and converts the format into int. Parameters: input_dict (dict): A dictionary where each value is another dictionary with numerical values. Returns: dict: A modified dictionary with each numerical value multiplied by 100 and converted to int. """ # Iterate through the outer dictionary for key in input_dict: # Iterate through the inner dictionary for sub_key in input_dict[key]: # Multiply each value by 100 and convert to int input_dict[key][sub_key] = int(input_dict[key][sub_key] * 100) return input_dict class C(BaseConstants): NAME_IN_URL = 'algorithms' PLAYERS_PER_GROUP = None NUM_ROUNDS = 30 LOTTERIES = {"1": {"65": {"p1": 0.7, "p2": 0.0, "p3": 0.3}, "30": {"p1": 0.32, "p2": 0.2, "p3": 0.48}, "9": {"p1": 0.18, "p2": 0.1, "p3": 0.72}, "46": {"p1": 0.12, "p2": 0.8, "p3": 0.08}, "38": {"p1": 0.25, "p2": 0.5, "p3": 0.25}, "35": {"p1": 0.1, "p2": 0.8, "p3": 0.1}, "56": {"p1": 0.07, "p2": 0.9, "p3": 0.03}, "52": {"p1": 0.48, "p2": 0.2, "p3": 0.32}, "20": {"p1": 0.27, "p2": 0.1, "p3": 0.63}, "54": {"p1": 0.6, "p2": 0.0, "p3": 0.4}, "28": {"p1": 0.24, "p2": 0.4, "p3": 0.36}, "48": {"p1": 0.24, "p2": 0.6, "p3": 0.16}, "45": {"p1": 0.06, "p2": 0.9, "p3": 0.04}, "60": {"p1": 0.35, "p2": 0.5, "p3": 0.15}, "73": {"p1": 0.56, "p2": 0.3, "p3": 0.14}, "67": {"p1": 0.08, "p2": 0.9, "p3": 0.02}, "71": {"p1": 0.4, "p2": 0.5, "p3": 0.1}, "31": {"p1": 0.36, "p2": 0.1, "p3": 0.54}, "40": {"p1": 0.35, "p2": 0.3, "p3": 0.35}, "62": {"p1": 0.49, "p2": 0.3, "p3": 0.21}}, "2": {"68": {"p1": 0.16, "p2": 0.8, "p3": 0.04}, "56": {"p1": 0.07, "p2": 0.9, "p3": 0.03}, "65": {"p1": 0.7, "p2": 0.0, "p3": 0.3}, "70": {"p1": 0.32, "p2": 0.6, "p3": 0.08}, "17": {"p1": 0.18, "p2": 0.4, "p3": 0.42}, "35": {"p1": 0.1, "p2": 0.8, "p3": 0.1}, "67": {"p1": 0.08, "p2": 0.9, "p3": 0.02}, "29": {"p1": 0.28, "p2": 0.3, "p3": 0.42}, "48": {"p1": 0.24, "p2": 0.6, "p3": 0.16}, "73": {"p1": 0.56, "p2": 0.3, "p3": 0.14}, "38": {"p1": 0.25, "p2": 0.5, "p3": 0.25}, "7": {"p1": 0.14, "p2": 0.3, "p3": 0.56}, "49": {"p1": 0.3, "p2": 0.5, "p3": 0.2}, "5": {"p1": 0.1, "p2": 0.5, "p3": 0.4}, "40": {"p1": 0.35, "p2": 0.3, "p3": 0.35}, "64": {"p1": 0.63, "p2": 0.1, "p3": 0.27}, "25": {"p1": 0.12, "p2": 0.7, "p3": 0.18}, "52": {"p1": 0.48, "p2": 0.2, "p3": 0.32}, "53": {"p1": 0.54, "p2": 0.1, "p3": 0.36}, "63": {"p1": 0.56, "p2": 0.2, "p3": 0.24}}, "3": {"60": {"p1": 0.35, "p2": 0.5, "p3": 0.15}, "53": {"p1": 0.54, "p2": 0.1, "p3": 0.36}, "49": {"p1": 0.3, "p2": 0.5, "p3": 0.2}, "32": {"p1": 0.4, "p2": 0.0, "p3": 0.6}, "28": {"p1": 0.24, "p2": 0.4, "p3": 0.36}, "58": {"p1": 0.21, "p2": 0.7, "p3": 0.09}, "62": {"p1": 0.49, "p2": 0.3, "p3": 0.21}, "50": {"p1": 0.36, "p2": 0.4, "p3": 0.24}, "61": {"p1": 0.42, "p2": 0.4, "p3": 0.18}, "39": {"p1": 0.3, "p2": 0.4, "p3": 0.3}, "17": {"p1": 0.18, "p2": 0.4, "p3": 0.42}, "27": {"p1": 0.2, "p2": 0.5, "p3": 0.3}, "36": {"p1": 0.15, "p2": 0.7, "p3": 0.15}, "9": {"p1": 0.18, "p2": 0.1, "p3": 0.72}, "29": {"p1": 0.28, "p2": 0.3, "p3": 0.42}, "47": {"p1": 0.18, "p2": 0.7, "p3": 0.12}, "74": {"p1": 0.64, "p2": 0.2, "p3": 0.16}, "31": {"p1": 0.36, "p2": 0.1, "p3": 0.54}, "19": {"p1": 0.24, "p2": 0.2, "p3": 0.56}, "48": {"p1": 0.24, "p2": 0.6, "p3": 0.16}}, "4": {"60": {"p1": 0.35, "p2": 0.5, "p3": 0.15}, "50": {"p1": 0.36, "p2": 0.4, "p3": 0.24}, "32": {"p1": 0.4, "p2": 0.0, "p3": 0.6}, "49": {"p1": 0.3, "p2": 0.5, "p3": 0.2}, "9": {"p1": 0.18, "p2": 0.1, "p3": 0.72}, "53": {"p1": 0.54, "p2": 0.1, "p3": 0.36}, "63": {"p1": 0.56, "p2": 0.2, "p3": 0.24}, "47": {"p1": 0.18, "p2": 0.7, "p3": 0.12}, "61": {"p1": 0.42, "p2": 0.4, "p3": 0.18}, "57": {"p1": 0.14, "p2": 0.8, "p3": 0.06}, "30": {"p1": 0.32, "p2": 0.2, "p3": 0.48}, "41": {"p1": 0.4, "p2": 0.2, "p3": 0.4}, "69": {"p1": 0.24, "p2": 0.7, "p3": 0.06}, "26": {"p1": 0.16, "p2": 0.6, "p3": 0.24}, "68": {"p1": 0.16, "p2": 0.8, "p3": 0.04}, "54": {"p1": 0.6, "p2": 0.0, "p3": 0.4}, "75": {"p1": 0.72, "p2": 0.1, "p3": 0.18}, "64": {"p1": 0.63, "p2": 0.1, "p3": 0.27}, "51": {"p1": 0.42, "p2": 0.3, "p3": 0.28}, "39": {"p1": 0.3, "p2": 0.4, "p3": 0.3}}, "5": {"72": {"p1": 0.48, "p2": 0.4, "p3": 0.12}, "52": {"p1": 0.48, "p2": 0.2, "p3": 0.32}, "27": {"p1": 0.2, "p2": 0.5, "p3": 0.3}, "21": {"p1": 0.3, "p2": 0.0, "p3": 0.7}, "73": {"p1": 0.56, "p2": 0.3, "p3": 0.14}, "63": {"p1": 0.56, "p2": 0.2, "p3": 0.24}, "47": {"p1": 0.18, "p2": 0.7, "p3": 0.12}, "37": {"p1": 0.2, "p2": 0.6, "p3": 0.2}, "74": {"p1": 0.64, "p2": 0.2, "p3": 0.16}, "38": {"p1": 0.25, "p2": 0.5, "p3": 0.25}, "18": {"p1": 0.21, "p2": 0.3, "p3": 0.49}, "68": {"p1": 0.16, "p2": 0.8, "p3": 0.04}, "65": {"p1": 0.7, "p2": 0.0, "p3": 0.3}, "53": {"p1": 0.54, "p2": 0.1, "p3": 0.36}, "30": {"p1": 0.32, "p2": 0.2, "p3": 0.48}, "48": {"p1": 0.24, "p2": 0.6, "p3": 0.16}, "51": {"p1": 0.42, "p2": 0.3, "p3": 0.28}, "46": {"p1": 0.12, "p2": 0.8, "p3": 0.08}, "76": {"p1": 0.8, "p2": -0.0, "p3": 0.2}, "10": {"p1": 0.2, "p2": 0.0, "p3": 0.8}}, "6": {"72": {"p1": 0.48, "p2": 0.4, "p3": 0.12}, "25": {"p1": 0.12, "p2": 0.7, "p3": 0.18}, "56": {"p1": 0.07, "p2": 0.9, "p3": 0.03}, "62": {"p1": 0.49, "p2": 0.3, "p3": 0.21}, "70": {"p1": 0.32, "p2": 0.6, "p3": 0.08}, "35": {"p1": 0.1, "p2": 0.8, "p3": 0.1}, "4": {"p1": 0.08, "p2": 0.6, "p3": 0.32}, "67": {"p1": 0.08, "p2": 0.9, "p3": 0.02}, "43": {"p1": 0.5, "p2": 0.0, "p3": 0.5}, "32": {"p1": 0.4, "p2": 0.0, "p3": 0.6}, "74": {"p1": 0.64, "p2": 0.2, "p3": 0.16}, "68": {"p1": 0.16, "p2": 0.8, "p3": 0.04}, "26": {"p1": 0.16, "p2": 0.6, "p3": 0.24}, "50": {"p1": 0.36, "p2": 0.4, "p3": 0.24}, "38": {"p1": 0.25, "p2": 0.5, "p3": 0.25}, "49": {"p1": 0.3, "p2": 0.5, "p3": 0.2}, "30": {"p1": 0.32, "p2": 0.2, "p3": 0.48}, "42": {"p1": 0.45, "p2": 0.1, "p3": 0.45}, "47": {"p1": 0.18, "p2": 0.7, "p3": 0.12}, "27": {"p1": 0.2, "p2": 0.5, "p3": 0.3}}, "7": {"68": {"p1": 0.16, "p2": 0.8, "p3": 0.04}, "75": {"p1": 0.72, "p2": 0.1, "p3": 0.18}, "35": {"p1": 0.1, "p2": 0.8, "p3": 0.1}, "59": {"p1": 0.28, "p2": 0.6, "p3": 0.12}, "26": {"p1": 0.16, "p2": 0.6, "p3": 0.24}, "60": {"p1": 0.35, "p2": 0.5, "p3": 0.15}, "72": {"p1": 0.48, "p2": 0.4, "p3": 0.12}, "67": {"p1": 0.08, "p2": 0.9, "p3": 0.02}, "43": {"p1": 0.5, "p2": 0.0, "p3": 0.5}, "7": {"p1": 0.14, "p2": 0.3, "p3": 0.56}, "74": {"p1": 0.64, "p2": 0.2, "p3": 0.16}, "71": {"p1": 0.4, "p2": 0.5, "p3": 0.1}, "8": {"p1": 0.16, "p2": 0.2, "p3": 0.64}, "38": {"p1": 0.25, "p2": 0.5, "p3": 0.25}, "50": {"p1": 0.36, "p2": 0.4, "p3": 0.24}, "42": {"p1": 0.45, "p2": 0.1, "p3": 0.45}, "73": {"p1": 0.56, "p2": 0.3, "p3": 0.14}, "28": {"p1": 0.24, "p2": 0.4, "p3": 0.36}, "47": {"p1": 0.18, "p2": 0.7, "p3": 0.12}, "40": {"p1": 0.35, "p2": 0.3, "p3": 0.35}}, "8": {"27": {"p1": 0.2, "p2": 0.5, "p3": 0.3}, "76": {"p1": 0.8, "p2": -0.0, "p3": 0.2}, "21": {"p1": 0.3, "p2": 0.0, "p3": 0.7}, "17": {"p1": 0.18, "p2": 0.4, "p3": 0.42}, "64": {"p1": 0.63, "p2": 0.1, "p3": 0.27}, "19": {"p1": 0.24, "p2": 0.2, "p3": 0.56}, "39": {"p1": 0.3, "p2": 0.4, "p3": 0.3}, "31": {"p1": 0.36, "p2": 0.1, "p3": 0.54}, "29": {"p1": 0.28, "p2": 0.3, "p3": 0.42}, "36": {"p1": 0.15, "p2": 0.7, "p3": 0.15}, "58": {"p1": 0.21, "p2": 0.7, "p3": 0.09}, "15": {"p1": 0.12, "p2": 0.6, "p3": 0.28}, "68": {"p1": 0.16, "p2": 0.8, "p3": 0.04}, "37": {"p1": 0.2, "p2": 0.6, "p3": 0.2}, "20": {"p1": 0.27, "p2": 0.1, "p3": 0.63}, "52": {"p1": 0.48, "p2": 0.2, "p3": 0.32}, "40": {"p1": 0.35, "p2": 0.3, "p3": 0.35}, "65": {"p1": 0.7, "p2": 0.0, "p3": 0.3}, "48": {"p1": 0.24, "p2": 0.6, "p3": 0.16}, "7": {"p1": 0.14, "p2": 0.3, "p3": 0.56}}, "9": {"30": {"p1": 0.32, "p2": 0.2, "p3": 0.48}, "36": {"p1": 0.15, "p2": 0.7, "p3": 0.15}, "50": {"p1": 0.36, "p2": 0.4, "p3": 0.24}, "48": {"p1": 0.24, "p2": 0.6, "p3": 0.16}, "40": {"p1": 0.35, "p2": 0.3, "p3": 0.35}, "58": {"p1": 0.21, "p2": 0.7, "p3": 0.09}, "49": {"p1": 0.3, "p2": 0.5, "p3": 0.2}, "35": {"p1": 0.1, "p2": 0.8, "p3": 0.1}, "29": {"p1": 0.28, "p2": 0.3, "p3": 0.42}, "4": {"p1": 0.08, "p2": 0.6, "p3": 0.32}, "47": {"p1": 0.18, "p2": 0.7, "p3": 0.12}, "15": {"p1": 0.12, "p2": 0.6, "p3": 0.28}, "61": {"p1": 0.42, "p2": 0.4, "p3": 0.18}, "17": {"p1": 0.18, "p2": 0.4, "p3": 0.42}, "28": {"p1": 0.24, "p2": 0.4, "p3": 0.36}, "69": {"p1": 0.24, "p2": 0.7, "p3": 0.06}, "57": {"p1": 0.14, "p2": 0.8, "p3": 0.06}, "37": {"p1": 0.2, "p2": 0.6, "p3": 0.2}, "31": {"p1": 0.36, "p2": 0.1, "p3": 0.54}, "54": {"p1": 0.6, "p2": 0.0, "p3": 0.4}}, "10": {"73": {"p1": 0.56, "p2": 0.3, "p3": 0.14}, "71": {"p1": 0.4, "p2": 0.5, "p3": 0.1}, "26": {"p1": 0.16, "p2": 0.6, "p3": 0.24}, "40": {"p1": 0.35, "p2": 0.3, "p3": 0.35}, "59": {"p1": 0.28, "p2": 0.6, "p3": 0.12}, "65": {"p1": 0.7, "p2": 0.0, "p3": 0.3}, "29": {"p1": 0.28, "p2": 0.3, "p3": 0.42}, "70": {"p1": 0.32, "p2": 0.6, "p3": 0.08}, "24": {"p1": 0.08, "p2": 0.8, "p3": 0.12}, "30": {"p1": 0.32, "p2": 0.2, "p3": 0.48}, "43": {"p1": 0.5, "p2": 0.0, "p3": 0.5}, "23": {"p1": 0.04, "p2": 0.9, "p3": 0.06}, "21": {"p1": 0.3, "p2": 0.0, "p3": 0.7}, "10": {"p1": 0.2, "p2": 0.0, "p3": 0.8}, "27": {"p1": 0.2, "p2": 0.5, "p3": 0.3}, "36": {"p1": 0.15, "p2": 0.7, "p3": 0.15}, "35": {"p1": 0.1, "p2": 0.8, "p3": 0.1}, "34": {"p1": 0.05, "p2": 0.9, "p3": 0.05}, "45": {"p1": 0.06, "p2": 0.9, "p3": 0.04}, "64": {"p1": 0.63, "p2": 0.1, "p3": 0.27}}, "11": {"56": {"p1": 0.07, "p2": 0.9, "p3": 0.03}, "45": {"p1": 0.06, "p2": 0.9, "p3": 0.04}, "13": {"p1": 0.06, "p2": 0.8, "p3": 0.14}, "21": {"p1": 0.3, "p2": 0.0, "p3": 0.7}, "67": {"p1": 0.08, "p2": 0.9, "p3": 0.02}, "34": {"p1": 0.05, "p2": 0.9, "p3": 0.05}, "29": {"p1": 0.28, "p2": 0.3, "p3": 0.42}, "64": {"p1": 0.63, "p2": 0.1, "p3": 0.27}, "2": {"p1": 0.04, "p2": 0.8, "p3": 0.16}, "62": {"p1": 0.49, "p2": 0.3, "p3": 0.21}, "25": {"p1": 0.12, "p2": 0.7, "p3": 0.18}, "51": {"p1": 0.42, "p2": 0.3, "p3": 0.28}, "14": {"p1": 0.09, "p2": 0.7, "p3": 0.21}, "38": {"p1": 0.25, "p2": 0.5, "p3": 0.25}, "58": {"p1": 0.21, "p2": 0.7, "p3": 0.09}, "32": {"p1": 0.4, "p2": 0.0, "p3": 0.6}, "0": {"p1": 0.0, "p2": 1.0, "p3": 0.0}, "49": {"p1": 0.3, "p2": 0.5, "p3": 0.2}, "30": {"p1": 0.32, "p2": 0.2, "p3": 0.48}, "46": {"p1": 0.12, "p2": 0.8, "p3": 0.08}}, "12": {"57": {"p1": 0.14, "p2": 0.8, "p3": 0.06}, "62": {"p1": 0.49, "p2": 0.3, "p3": 0.21}, "73": {"p1": 0.56, "p2": 0.3, "p3": 0.14}, "17": {"p1": 0.18, "p2": 0.4, "p3": 0.42}, "7": {"p1": 0.14, "p2": 0.3, "p3": 0.56}, "36": {"p1": 0.15, "p2": 0.7, "p3": 0.15}, "32": {"p1": 0.4, "p2": 0.0, "p3": 0.6}, "30": {"p1": 0.32, "p2": 0.2, "p3": 0.48}, "21": {"p1": 0.3, "p2": 0.0, "p3": 0.7}, "68": {"p1": 0.16, "p2": 0.8, "p3": 0.04}, "39": {"p1": 0.3, "p2": 0.4, "p3": 0.3}, "16": {"p1": 0.15, "p2": 0.5, "p3": 0.35}, "74": {"p1": 0.64, "p2": 0.2, "p3": 0.16}, "20": {"p1": 0.27, "p2": 0.1, "p3": 0.63}, "47": {"p1": 0.18, "p2": 0.7, "p3": 0.12}, "41": {"p1": 0.4, "p2": 0.2, "p3": 0.4}, "76": {"p1": 0.8, "p2": -0.0, "p3": 0.2}, "52": {"p1": 0.48, "p2": 0.2, "p3": 0.32}, "70": {"p1": 0.32, "p2": 0.6, "p3": 0.08}, "60": {"p1": 0.35, "p2": 0.5, "p3": 0.15}}, "13": {"37": {"p1": 0.2, "p2": 0.6, "p3": 0.2}, "19": {"p1": 0.24, "p2": 0.2, "p3": 0.56}, "18": {"p1": 0.21, "p2": 0.3, "p3": 0.49}, "26": {"p1": 0.16, "p2": 0.6, "p3": 0.24}, "58": {"p1": 0.21, "p2": 0.7, "p3": 0.09}, "36": {"p1": 0.15, "p2": 0.7, "p3": 0.15}, "46": {"p1": 0.12, "p2": 0.8, "p3": 0.08}, "16": {"p1": 0.15, "p2": 0.5, "p3": 0.35}, "75": {"p1": 0.72, "p2": 0.1, "p3": 0.18}, "61": {"p1": 0.42, "p2": 0.4, "p3": 0.18}, "35": {"p1": 0.1, "p2": 0.8, "p3": 0.1}, "68": {"p1": 0.16, "p2": 0.8, "p3": 0.04}, "70": {"p1": 0.32, "p2": 0.6, "p3": 0.08}, "64": {"p1": 0.63, "p2": 0.1, "p3": 0.27}, "53": {"p1": 0.54, "p2": 0.1, "p3": 0.36}, "49": {"p1": 0.3, "p2": 0.5, "p3": 0.2}, "41": {"p1": 0.4, "p2": 0.2, "p3": 0.4}, "21": {"p1": 0.3, "p2": 0.0, "p3": 0.7}, "6": {"p1": 0.12, "p2": 0.4, "p3": 0.48}, "63": {"p1": 0.56, "p2": 0.2, "p3": 0.24}}, "14": {"17": {"p1": 0.18, "p2": 0.4, "p3": 0.42}, "57": {"p1": 0.14, "p2": 0.8, "p3": 0.06}, "48": {"p1": 0.24, "p2": 0.6, "p3": 0.16}, "37": {"p1": 0.2, "p2": 0.6, "p3": 0.2}, "45": {"p1": 0.06, "p2": 0.9, "p3": 0.04}, "35": {"p1": 0.1, "p2": 0.8, "p3": 0.1}, "69": {"p1": 0.24, "p2": 0.7, "p3": 0.06}, "43": {"p1": 0.5, "p2": 0.0, "p3": 0.5}, "67": {"p1": 0.08, "p2": 0.9, "p3": 0.02}, "7": {"p1": 0.14, "p2": 0.3, "p3": 0.56}, "56": {"p1": 0.07, "p2": 0.9, "p3": 0.03}, "75": {"p1": 0.72, "p2": 0.1, "p3": 0.18}, "25": {"p1": 0.12, "p2": 0.7, "p3": 0.18}, "68": {"p1": 0.16, "p2": 0.8, "p3": 0.04}, "54": {"p1": 0.6, "p2": 0.0, "p3": 0.4}, "49": {"p1": 0.3, "p2": 0.5, "p3": 0.2}, "47": {"p1": 0.18, "p2": 0.7, "p3": 0.12}, "21": {"p1": 0.3, "p2": 0.0, "p3": 0.7}, "38": {"p1": 0.25, "p2": 0.5, "p3": 0.25}, "62": {"p1": 0.49, "p2": 0.3, "p3": 0.21}}, "15": {"64": {"p1": 0.63, "p2": 0.1, "p3": 0.27}, "32": {"p1": 0.4, "p2": 0.0, "p3": 0.6}, "36": {"p1": 0.15, "p2": 0.7, "p3": 0.15}, "58": {"p1": 0.21, "p2": 0.7, "p3": 0.09}, "59": {"p1": 0.28, "p2": 0.6, "p3": 0.12}, "52": {"p1": 0.48, "p2": 0.2, "p3": 0.32}, "68": {"p1": 0.16, "p2": 0.8, "p3": 0.04}, "61": {"p1": 0.42, "p2": 0.4, "p3": 0.18}, "60": {"p1": 0.35, "p2": 0.5, "p3": 0.15}, "10": {"p1": 0.2, "p2": 0.0, "p3": 0.8}, "63": {"p1": 0.56, "p2": 0.2, "p3": 0.24}, "27": {"p1": 0.2, "p2": 0.5, "p3": 0.3}, "28": {"p1": 0.24, "p2": 0.4, "p3": 0.36}, "29": {"p1": 0.28, "p2": 0.3, "p3": 0.42}, "30": {"p1": 0.32, "p2": 0.2, "p3": 0.48}, "20": {"p1": 0.27, "p2": 0.1, "p3": 0.63}, "31": {"p1": 0.36, "p2": 0.1, "p3": 0.54}, "75": {"p1": 0.72, "p2": 0.1, "p3": 0.18}, "76": {"p1": 0.8, "p2": -0.0, "p3": 0.2}, "41": {"p1": 0.4, "p2": 0.2, "p3": 0.4}}, "16": {"25": {"p1": 0.12, "p2": 0.7, "p3": 0.18}, "28": {"p1": 0.24, "p2": 0.4, "p3": 0.36}, "42": {"p1": 0.45, "p2": 0.1, "p3": 0.45}, "53": {"p1": 0.54, "p2": 0.1, "p3": 0.36}, "50": {"p1": 0.36, "p2": 0.4, "p3": 0.24}, "51": {"p1": 0.42, "p2": 0.3, "p3": 0.28}, "54": {"p1": 0.6, "p2": 0.0, "p3": 0.4}, "65": {"p1": 0.7, "p2": 0.0, "p3": 0.3}, "0": {"p1": 0.0, "p2": 1.0, "p3": 0.0}, "48": {"p1": 0.24, "p2": 0.6, "p3": 0.16}, "47": {"p1": 0.18, "p2": 0.7, "p3": 0.12}, "76": {"p1": 0.8, "p2": -0.0, "p3": 0.2}, "45": {"p1": 0.06, "p2": 0.9, "p3": 0.04}, "24": {"p1": 0.08, "p2": 0.8, "p3": 0.12}, "1": {"p1": 0.02, "p2": 0.9, "p3": 0.08}, "71": {"p1": 0.4, "p2": 0.5, "p3": 0.1}, "75": {"p1": 0.72, "p2": 0.1, "p3": 0.18}, "19": {"p1": 0.24, "p2": 0.2, "p3": 0.56}, "67": {"p1": 0.08, "p2": 0.9, "p3": 0.02}, "12": {"p1": 0.03, "p2": 0.9, "p3": 0.07}}, "17": {"47": {"p1": 0.18, "p2": 0.7, "p3": 0.12}, "69": {"p1": 0.24, "p2": 0.7, "p3": 0.06}, "8": {"p1": 0.16, "p2": 0.2, "p3": 0.64}, "72": {"p1": 0.48, "p2": 0.4, "p3": 0.12}, "41": {"p1": 0.4, "p2": 0.2, "p3": 0.4}, "10": {"p1": 0.2, "p2": 0.0, "p3": 0.8}, "58": {"p1": 0.21, "p2": 0.7, "p3": 0.09}, "26": {"p1": 0.16, "p2": 0.6, "p3": 0.24}, "38": {"p1": 0.25, "p2": 0.5, "p3": 0.25}, "42": {"p1": 0.45, "p2": 0.1, "p3": 0.45}, "27": {"p1": 0.2, "p2": 0.5, "p3": 0.3}, "9": {"p1": 0.18, "p2": 0.1, "p3": 0.72}, "61": {"p1": 0.42, "p2": 0.4, "p3": 0.18}, "57": {"p1": 0.14, "p2": 0.8, "p3": 0.06}, "28": {"p1": 0.24, "p2": 0.4, "p3": 0.36}, "54": {"p1": 0.6, "p2": 0.0, "p3": 0.4}, "46": {"p1": 0.12, "p2": 0.8, "p3": 0.08}, "65": {"p1": 0.7, "p2": 0.0, "p3": 0.3}, "39": {"p1": 0.3, "p2": 0.4, "p3": 0.3}, "20": {"p1": 0.27, "p2": 0.1, "p3": 0.63}}, "18": {"0": {"p1": 0.0, "p2": 1.0, "p3": 0.0}, "36": {"p1": 0.15, "p2": 0.7, "p3": 0.15}, "25": {"p1": 0.12, "p2": 0.7, "p3": 0.18}, "52": {"p1": 0.48, "p2": 0.2, "p3": 0.32}, "26": {"p1": 0.16, "p2": 0.6, "p3": 0.24}, "50": {"p1": 0.36, "p2": 0.4, "p3": 0.24}, "38": {"p1": 0.25, "p2": 0.5, "p3": 0.25}, "35": {"p1": 0.1, "p2": 0.8, "p3": 0.1}, "74": {"p1": 0.64, "p2": 0.2, "p3": 0.16}, "29": {"p1": 0.28, "p2": 0.3, "p3": 0.42}, "12": {"p1": 0.03, "p2": 0.9, "p3": 0.07}, "62": {"p1": 0.49, "p2": 0.3, "p3": 0.21}, "20": {"p1": 0.27, "p2": 0.1, "p3": 0.63}, "23": {"p1": 0.04, "p2": 0.9, "p3": 0.06}, "56": {"p1": 0.07, "p2": 0.9, "p3": 0.03}, "1": {"p1": 0.02, "p2": 0.9, "p3": 0.08}, "41": {"p1": 0.4, "p2": 0.2, "p3": 0.4}, "2": {"p1": 0.04, "p2": 0.8, "p3": 0.16}, "34": {"p1": 0.05, "p2": 0.9, "p3": 0.05}, "68": {"p1": 0.16, "p2": 0.8, "p3": 0.04}}, "19": {"32": {"p1": 0.4, "p2": 0.0, "p3": 0.6}, "10": {"p1": 0.2, "p2": 0.0, "p3": 0.8}, "28": {"p1": 0.24, "p2": 0.4, "p3": 0.36}, "51": {"p1": 0.42, "p2": 0.3, "p3": 0.28}, "76": {"p1": 0.8, "p2": -0.0, "p3": 0.2}, "20": {"p1": 0.27, "p2": 0.1, "p3": 0.63}, "25": {"p1": 0.12, "p2": 0.7, "p3": 0.18}, "70": {"p1": 0.32, "p2": 0.6, "p3": 0.08}, "17": {"p1": 0.18, "p2": 0.4, "p3": 0.42}, "62": {"p1": 0.49, "p2": 0.3, "p3": 0.21}, "71": {"p1": 0.4, "p2": 0.5, "p3": 0.1}, "39": {"p1": 0.3, "p2": 0.4, "p3": 0.3}, "61": {"p1": 0.42, "p2": 0.4, "p3": 0.18}, "37": {"p1": 0.2, "p2": 0.6, "p3": 0.2}, "50": {"p1": 0.36, "p2": 0.4, "p3": 0.24}, "65": {"p1": 0.7, "p2": 0.0, "p3": 0.3}, "31": {"p1": 0.36, "p2": 0.1, "p3": 0.54}, "27": {"p1": 0.2, "p2": 0.5, "p3": 0.3}, "49": {"p1": 0.3, "p2": 0.5, "p3": 0.2}, "47": {"p1": 0.18, "p2": 0.7, "p3": 0.12}}, "20": {"53": {"p1": 0.54, "p2": 0.1, "p3": 0.36}, "48": {"p1": 0.24, "p2": 0.6, "p3": 0.16}, "21": {"p1": 0.3, "p2": 0.0, "p3": 0.7}, "76": {"p1": 0.8, "p2": -0.0, "p3": 0.2}, "16": {"p1": 0.15, "p2": 0.5, "p3": 0.35}, "24": {"p1": 0.08, "p2": 0.8, "p3": 0.12}, "56": {"p1": 0.07, "p2": 0.9, "p3": 0.03}, "20": {"p1": 0.27, "p2": 0.1, "p3": 0.63}, "42": {"p1": 0.45, "p2": 0.1, "p3": 0.45}, "29": {"p1": 0.28, "p2": 0.3, "p3": 0.42}, "35": {"p1": 0.1, "p2": 0.8, "p3": 0.1}, "58": {"p1": 0.21, "p2": 0.7, "p3": 0.09}, "75": {"p1": 0.72, "p2": 0.1, "p3": 0.18}, "9": {"p1": 0.18, "p2": 0.1, "p3": 0.72}, "70": {"p1": 0.32, "p2": 0.6, "p3": 0.08}, "54": {"p1": 0.6, "p2": 0.0, "p3": 0.4}, "52": {"p1": 0.48, "p2": 0.2, "p3": 0.32}, "32": {"p1": 0.4, "p2": 0.0, "p3": 0.6}, "34": {"p1": 0.05, "p2": 0.9, "p3": 0.05}, "46": {"p1": 0.12, "p2": 0.8, "p3": 0.08}}, "21": {"46": {"p1": 0.12, "p2": 0.8, "p3": 0.08}, "28": {"p1": 0.24, "p2": 0.4, "p3": 0.36}, "63": {"p1": 0.56, "p2": 0.2, "p3": 0.24}, "9": {"p1": 0.18, "p2": 0.1, "p3": 0.72}, "59": {"p1": 0.28, "p2": 0.6, "p3": 0.12}, "31": {"p1": 0.36, "p2": 0.1, "p3": 0.54}, "10": {"p1": 0.2, "p2": 0.0, "p3": 0.8}, "61": {"p1": 0.42, "p2": 0.4, "p3": 0.18}, "45": {"p1": 0.06, "p2": 0.9, "p3": 0.04}, "38": {"p1": 0.25, "p2": 0.5, "p3": 0.25}, "32": {"p1": 0.4, "p2": 0.0, "p3": 0.6}, "30": {"p1": 0.32, "p2": 0.2, "p3": 0.48}, "20": {"p1": 0.27, "p2": 0.1, "p3": 0.63}, "34": {"p1": 0.05, "p2": 0.9, "p3": 0.05}, "76": {"p1": 0.8, "p2": -0.0, "p3": 0.2}, "8": {"p1": 0.16, "p2": 0.2, "p3": 0.64}, "67": {"p1": 0.08, "p2": 0.9, "p3": 0.02}, "75": {"p1": 0.72, "p2": 0.1, "p3": 0.18}, "37": {"p1": 0.2, "p2": 0.6, "p3": 0.2}, "7": {"p1": 0.14, "p2": 0.3, "p3": 0.56}}, "22": {"75": {"p1": 0.72, "p2": 0.1, "p3": 0.18}, "39": {"p1": 0.3, "p2": 0.4, "p3": 0.3}, "25": {"p1": 0.12, "p2": 0.7, "p3": 0.18}, "30": {"p1": 0.32, "p2": 0.2, "p3": 0.48}, "65": {"p1": 0.7, "p2": 0.0, "p3": 0.3}, "54": {"p1": 0.6, "p2": 0.0, "p3": 0.4}, "38": {"p1": 0.25, "p2": 0.5, "p3": 0.25}, "59": {"p1": 0.28, "p2": 0.6, "p3": 0.12}, "45": {"p1": 0.06, "p2": 0.9, "p3": 0.04}, "69": {"p1": 0.24, "p2": 0.7, "p3": 0.06}, "40": {"p1": 0.35, "p2": 0.3, "p3": 0.35}, "50": {"p1": 0.36, "p2": 0.4, "p3": 0.24}, "49": {"p1": 0.3, "p2": 0.5, "p3": 0.2}, "16": {"p1": 0.15, "p2": 0.5, "p3": 0.35}, "67": {"p1": 0.08, "p2": 0.9, "p3": 0.02}, "8": {"p1": 0.16, "p2": 0.2, "p3": 0.64}, "35": {"p1": 0.1, "p2": 0.8, "p3": 0.1}, "24": {"p1": 0.08, "p2": 0.8, "p3": 0.12}, "47": {"p1": 0.18, "p2": 0.7, "p3": 0.12}, "58": {"p1": 0.21, "p2": 0.7, "p3": 0.09}}, "23": {"34": {"p1": 0.05, "p2": 0.9, "p3": 0.05}, "18": {"p1": 0.21, "p2": 0.3, "p3": 0.49}, "28": {"p1": 0.24, "p2": 0.4, "p3": 0.36}, "72": {"p1": 0.48, "p2": 0.4, "p3": 0.12}, "0": {"p1": 0.0, "p2": 1.0, "p3": 0.0}, "63": {"p1": 0.56, "p2": 0.2, "p3": 0.24}, "75": {"p1": 0.72, "p2": 0.1, "p3": 0.18}, "52": {"p1": 0.48, "p2": 0.2, "p3": 0.32}, "65": {"p1": 0.7, "p2": 0.0, "p3": 0.3}, "76": {"p1": 0.8, "p2": -0.0, "p3": 0.2}, "61": {"p1": 0.42, "p2": 0.4, "p3": 0.18}, "20": {"p1": 0.27, "p2": 0.1, "p3": 0.63}, "31": {"p1": 0.36, "p2": 0.1, "p3": 0.54}, "69": {"p1": 0.24, "p2": 0.7, "p3": 0.06}, "13": {"p1": 0.06, "p2": 0.8, "p3": 0.14}, "41": {"p1": 0.4, "p2": 0.2, "p3": 0.4}, "21": {"p1": 0.3, "p2": 0.0, "p3": 0.7}, "70": {"p1": 0.32, "p2": 0.6, "p3": 0.08}, "30": {"p1": 0.32, "p2": 0.2, "p3": 0.48}, "59": {"p1": 0.28, "p2": 0.6, "p3": 0.12}}, "24": {"30": {"p1": 0.32, "p2": 0.2, "p3": 0.48}, "40": {"p1": 0.35, "p2": 0.3, "p3": 0.35}, "1": {"p1": 0.02, "p2": 0.9, "p3": 0.08}, "58": {"p1": 0.21, "p2": 0.7, "p3": 0.09}, "75": {"p1": 0.72, "p2": 0.1, "p3": 0.18}, "12": {"p1": 0.03, "p2": 0.9, "p3": 0.07}, "70": {"p1": 0.32, "p2": 0.6, "p3": 0.08}, "69": {"p1": 0.24, "p2": 0.7, "p3": 0.06}, "68": {"p1": 0.16, "p2": 0.8, "p3": 0.04}, "57": {"p1": 0.14, "p2": 0.8, "p3": 0.06}, "67": {"p1": 0.08, "p2": 0.9, "p3": 0.02}, "23": {"p1": 0.04, "p2": 0.9, "p3": 0.06}, "76": {"p1": 0.8, "p2": -0.0, "p3": 0.2}, "0": {"p1": 0.0, "p2": 1.0, "p3": 0.0}, "28": {"p1": 0.24, "p2": 0.4, "p3": 0.36}, "20": {"p1": 0.27, "p2": 0.1, "p3": 0.63}, "50": {"p1": 0.36, "p2": 0.4, "p3": 0.24}, "34": {"p1": 0.05, "p2": 0.9, "p3": 0.05}, "25": {"p1": 0.12, "p2": 0.7, "p3": 0.18}, "62": {"p1": 0.49, "p2": 0.3, "p3": 0.21}}, "25": {"53": {"p1": 0.54, "p2": 0.1, "p3": 0.36}, "41": {"p1": 0.4, "p2": 0.2, "p3": 0.4}, "6": {"p1": 0.12, "p2": 0.4, "p3": 0.48}, "74": {"p1": 0.64, "p2": 0.2, "p3": 0.16}, "25": {"p1": 0.12, "p2": 0.7, "p3": 0.18}, "26": {"p1": 0.16, "p2": 0.6, "p3": 0.24}, "67": {"p1": 0.08, "p2": 0.9, "p3": 0.02}, "76": {"p1": 0.8, "p2": -0.0, "p3": 0.2}, "50": {"p1": 0.36, "p2": 0.4, "p3": 0.24}, "30": {"p1": 0.32, "p2": 0.2, "p3": 0.48}, "62": {"p1": 0.49, "p2": 0.3, "p3": 0.21}, "21": {"p1": 0.3, "p2": 0.0, "p3": 0.7}, "17": {"p1": 0.18, "p2": 0.4, "p3": 0.42}, "59": {"p1": 0.28, "p2": 0.6, "p3": 0.12}, "47": {"p1": 0.18, "p2": 0.7, "p3": 0.12}, "57": {"p1": 0.14, "p2": 0.8, "p3": 0.06}, "18": {"p1": 0.21, "p2": 0.3, "p3": 0.49}, "65": {"p1": 0.7, "p2": 0.0, "p3": 0.3}, "72": {"p1": 0.48, "p2": 0.4, "p3": 0.12}, "63": {"p1": 0.56, "p2": 0.2, "p3": 0.24}}, "26": {"26": {"p1": 0.16, "p2": 0.6, "p3": 0.24}, "54": {"p1": 0.6, "p2": 0.0, "p3": 0.4}, "74": {"p1": 0.64, "p2": 0.2, "p3": 0.16}, "24": {"p1": 0.08, "p2": 0.8, "p3": 0.12}, "21": {"p1": 0.3, "p2": 0.0, "p3": 0.7}, "25": {"p1": 0.12, "p2": 0.7, "p3": 0.18}, "76": {"p1": 0.8, "p2": -0.0, "p3": 0.2}, "34": {"p1": 0.05, "p2": 0.9, "p3": 0.05}, "23": {"p1": 0.04, "p2": 0.9, "p3": 0.06}, "45": {"p1": 0.06, "p2": 0.9, "p3": 0.04}, "12": {"p1": 0.03, "p2": 0.9, "p3": 0.07}, "43": {"p1": 0.5, "p2": 0.0, "p3": 0.5}, "47": {"p1": 0.18, "p2": 0.7, "p3": 0.12}, "37": {"p1": 0.2, "p2": 0.6, "p3": 0.2}, "30": {"p1": 0.32, "p2": 0.2, "p3": 0.48}, "39": {"p1": 0.3, "p2": 0.4, "p3": 0.3}, "41": {"p1": 0.4, "p2": 0.2, "p3": 0.4}, "71": {"p1": 0.4, "p2": 0.5, "p3": 0.1}, "19": {"p1": 0.24, "p2": 0.2, "p3": 0.56}, "58": {"p1": 0.21, "p2": 0.7, "p3": 0.09}}, "27": {"75": {"p1": 0.72, "p2": 0.1, "p3": 0.18}, "37": {"p1": 0.2, "p2": 0.6, "p3": 0.2}, "19": {"p1": 0.24, "p2": 0.2, "p3": 0.56}, "68": {"p1": 0.16, "p2": 0.8, "p3": 0.04}, "30": {"p1": 0.32, "p2": 0.2, "p3": 0.48}, "0": {"p1": 0.0, "p2": 1.0, "p3": 0.0}, "21": {"p1": 0.3, "p2": 0.0, "p3": 0.7}, "47": {"p1": 0.18, "p2": 0.7, "p3": 0.12}, "59": {"p1": 0.28, "p2": 0.6, "p3": 0.12}, "64": {"p1": 0.63, "p2": 0.1, "p3": 0.27}, "31": {"p1": 0.36, "p2": 0.1, "p3": 0.54}, "13": {"p1": 0.06, "p2": 0.8, "p3": 0.14}, "73": {"p1": 0.56, "p2": 0.3, "p3": 0.14}, "65": {"p1": 0.7, "p2": 0.0, "p3": 0.3}, "53": {"p1": 0.54, "p2": 0.1, "p3": 0.36}, "63": {"p1": 0.56, "p2": 0.2, "p3": 0.24}, "70": {"p1": 0.32, "p2": 0.6, "p3": 0.08}, "1": {"p1": 0.02, "p2": 0.9, "p3": 0.08}, "15": {"p1": 0.12, "p2": 0.6, "p3": 0.28}, "20": {"p1": 0.27, "p2": 0.1, "p3": 0.63}}, "28": {"30": {"p1": 0.32, "p2": 0.2, "p3": 0.48}, "26": {"p1": 0.16, "p2": 0.6, "p3": 0.24}, "50": {"p1": 0.36, "p2": 0.4, "p3": 0.24}, "61": {"p1": 0.42, "p2": 0.4, "p3": 0.18}, "73": {"p1": 0.56, "p2": 0.3, "p3": 0.14}, "28": {"p1": 0.24, "p2": 0.4, "p3": 0.36}, "19": {"p1": 0.24, "p2": 0.2, "p3": 0.56}, "29": {"p1": 0.28, "p2": 0.3, "p3": 0.42}, "37": {"p1": 0.2, "p2": 0.6, "p3": 0.2}, "45": {"p1": 0.06, "p2": 0.9, "p3": 0.04}, "10": {"p1": 0.2, "p2": 0.0, "p3": 0.8}, "49": {"p1": 0.3, "p2": 0.5, "p3": 0.2}, "48": {"p1": 0.24, "p2": 0.6, "p3": 0.16}, "20": {"p1": 0.27, "p2": 0.1, "p3": 0.63}, "76": {"p1": 0.8, "p2": -0.0, "p3": 0.2}, "65": {"p1": 0.7, "p2": 0.0, "p3": 0.3}, "68": {"p1": 0.16, "p2": 0.8, "p3": 0.04}, "63": {"p1": 0.56, "p2": 0.2, "p3": 0.24}, "15": {"p1": 0.12, "p2": 0.6, "p3": 0.28}, "25": {"p1": 0.12, "p2": 0.7, "p3": 0.18}}, "29": {"35": {"p1": 0.1, "p2": 0.8, "p3": 0.1}, "18": {"p1": 0.21, "p2": 0.3, "p3": 0.49}, "75": {"p1": 0.72, "p2": 0.1, "p3": 0.18}, "43": {"p1": 0.5, "p2": 0.0, "p3": 0.5}, "46": {"p1": 0.12, "p2": 0.8, "p3": 0.08}, "8": {"p1": 0.16, "p2": 0.2, "p3": 0.64}, "20": {"p1": 0.27, "p2": 0.1, "p3": 0.63}, "63": {"p1": 0.56, "p2": 0.2, "p3": 0.24}, "57": {"p1": 0.14, "p2": 0.8, "p3": 0.06}, "50": {"p1": 0.36, "p2": 0.4, "p3": 0.24}, "65": {"p1": 0.7, "p2": 0.0, "p3": 0.3}, "27": {"p1": 0.2, "p2": 0.5, "p3": 0.3}, "25": {"p1": 0.12, "p2": 0.7, "p3": 0.18}, "41": {"p1": 0.4, "p2": 0.2, "p3": 0.4}, "30": {"p1": 0.32, "p2": 0.2, "p3": 0.48}, "10": {"p1": 0.2, "p2": 0.0, "p3": 0.8}, "59": {"p1": 0.28, "p2": 0.6, "p3": 0.12}, "47": {"p1": 0.18, "p2": 0.7, "p3": 0.12}, "62": {"p1": 0.49, "p2": 0.3, "p3": 0.21}, "67": {"p1": 0.08, "p2": 0.9, "p3": 0.02}}, "30": {"10": {"p1": 0.2, "p2": 0.0, "p3": 0.8}, "46": {"p1": 0.12, "p2": 0.8, "p3": 0.08}, "20": {"p1": 0.27, "p2": 0.1, "p3": 0.63}, "38": {"p1": 0.25, "p2": 0.5, "p3": 0.25}, "32": {"p1": 0.4, "p2": 0.0, "p3": 0.6}, "29": {"p1": 0.28, "p2": 0.3, "p3": 0.42}, "31": {"p1": 0.36, "p2": 0.1, "p3": 0.54}, "76": {"p1": 0.8, "p2": -0.0, "p3": 0.2}, "61": {"p1": 0.42, "p2": 0.4, "p3": 0.18}, "51": {"p1": 0.42, "p2": 0.3, "p3": 0.28}, "56": {"p1": 0.07, "p2": 0.9, "p3": 0.03}, "63": {"p1": 0.56, "p2": 0.2, "p3": 0.24}, "19": {"p1": 0.24, "p2": 0.2, "p3": 0.56}, "47": {"p1": 0.18, "p2": 0.7, "p3": 0.12}, "74": {"p1": 0.64, "p2": 0.2, "p3": 0.16}, "67": {"p1": 0.08, "p2": 0.9, "p3": 0.02}, "64": {"p1": 0.63, "p2": 0.1, "p3": 0.27}, "62": {"p1": 0.49, "p2": 0.3, "p3": 0.21}, "72": {"p1": 0.48, "p2": 0.4, "p3": 0.12}, "49": {"p1": 0.3, "p2": 0.5, "p3": 0.2}}} V1 = 0 V2 = 5 V3 = 10 NEUTRAL_DESCR = "This algorithm uses information from the box task to pick and order lotteries from the set of 50 lotteries." # endowment for algo choice ENDOWMENT = 3 PRIZES = [V1, V2, V3] class Subsession(BaseSubsession): pass # def creating_session(self): # for p in self.get_players(): # p.participant.vars['choices'] = {} # Initialize 'choices' # p.participant.vars['lotteries'] = {} class Group(BaseGroup): pass class Player(BasePlayer): choice = models.IntegerField( choices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] ) timing_group = models.StringField(initial='ex-ante') algo_group = models.StringField(initial='steering') algo_wtp = models.FloatField(initial=0) # r = models.FloatField(initial=0.5) def algo(self): participant = self.participant if participant.algo_order[0] == 'steering': if self.round_number < 11: a = 'steering' elif 10 < self.round_number < 21: a = 'eu' else: a = participant.third_round_algo else: if self.round_number < 11: a = 'eu' elif 10 < self.round_number < 21: a = 'steering' else: a = participant.third_round_algo return a def part(self): if self.round_number<21: p = 2 else: p = 3 return p def get_top_10_lotteries_steering(self): # top 10 steering selection algo with kappa1=1, kappa2=0.5 participant = self.participant r_value = participant.r clot_all = C.LOTTERIES order_num = participant.lottery_order[self.round_number-1] clot = clot_all[str(order_num)] d = {key: crra_eu(C.PRIZES, probas, r_value) for key, probas in clot.items()} dn = min_max_scale_dict(d) epi = {key: exp_pi(C.PRIZES, probas) for key, probas in clot.items()} epin = min_max_scale_dict(epi) I = {key: dn[key] - 0.7 * epin[key] for key in dn} sorted_pairs = sorted(I, key=I.get, reverse=True)[:10] sorted_dict = {} for i, j in enumerate(sorted_pairs): sorted_dict[i] = clot[j] return sorted_dict def get_top_10_lotteries_exp_u(self): participant = self.participant r_value = participant.r clot_all = C.LOTTERIES order_num = participant.lottery_order[self.round_number-1] clot = clot_all[str(order_num)] eu_results = {key: crra_eu(C.PRIZES, probas, r_value) for key, probas in clot.items()} sorted_pairs = sorted(eu_results, key=eu_results.get, reverse=True)[:10] sorted_dict = {} for i, j in enumerate(sorted_pairs): sorted_dict[i] = clot[j] return sorted_dict # PAGES class Instructions(Page): @staticmethod def is_displayed(player: Player): return player.round_number == 1 @staticmethod def vars_for_template(player: Player): pass def before_next_page(player: Player, timeout_happened): participant = player.participant participant.lottery_order = create_lottery_order() participant.algo_order = create_algo_order() co = create_color_order() participant.eu_col = co[0] participant.steering_col = co[1] participant.vars['choices'] = {} # Initialize 'choices' participant.vars['lotteries'] = {} class ListChoice(Page): form_model = "player" form_fields = ["choice"] @staticmethod def vars_for_template(player: Player): participant = player.participant if player.algo() == "eu": l = player.get_top_10_lotteries_exp_u() if participant.algo_order[0]=="eu": algo_label = "Algorithm 1" else: algo_label = "Algorithm 2" col = participant.eu_col else: l = player.get_top_10_lotteries_steering() if participant.algo_order[0]=="steering": algo_label = "Algorithm 1" else: algo_label = "Algorithm 2" col = participant.steering_col l = multiply_values_and_convert_to_int(l) participant.lotteries[player.round_number] = l return { "l": l, "algo_label" : algo_label, "color" : col } @staticmethod def before_next_page(player: Player, timeout_happened): participant = player.participant participant.choices[player.round_number] = player.choice class AlgoChoice(Page): form_model = "player" form_fields = ["algo_wtp"] @staticmethod def is_displayed(player: Player): return player.round_number == 20 def vars_for_template(player: Player): participant = player.participant if participant.algo_order[0]=="eu": col1 = participant.eu_col col2 = participant.steering_col else: col1 = participant.steering_col col2 = participant.eu_col return { "col1" : col1, "col2" : col2 } @staticmethod def before_next_page(player: Player, timeout_happened): participant = player.participant participant.payoff3 = cu(C.ENDOWMENT - C.ENDOWMENT*(player.algo_wtp)) participant.algo_wtp = player.algo_wtp participant.third_round_algo = random.choices(["steering", "eu"], weights = [player.algo_wtp, 1-player.algo_wtp], k=1)[0] class AlgoResults(Page): @staticmethod def is_displayed(player: Player): return player.round_number == 20 def vars_for_template(player: Player): participant = player.participant if (participant.third_round_algo=="eu" and participant.algo_order[0]=="eu"): third_round_algo_label = "Algorithm 1" third_round_col = participant.eu_col elif (participant.third_round_algo=="steering" and participant.algo_order[0]=="steering"): third_round_algo_label = "Algorithm 1" third_round_col = participant.steering_col elif (participant.third_round_algo=="eu" and participant.algo_order[1]=="eu"): third_round_algo_label = "Algorithm 2" third_round_col = participant.eu_col else: third_round_algo_label = "Algorithm 2" third_round_col = participant.steering_col algo1_proba = str(int((1-participant.algo_wtp)*100)) algo2_proba = str(int(participant.algo_wtp*100)) return { "algo1_proba" : algo1_proba, "algo2_proba" : algo2_proba, "third_round_algo_label" : third_round_algo_label, "third_round_col" : third_round_col } class Buffer(Page): @staticmethod def is_displayed(player: Player): return player.round_number==10 def vars_for_template(player: Player): participant = player.participant if participant.algo_order[0]=="eu": col1 = participant.eu_col col2 = participant.steering_col else: col1 = participant.steering_col col2 = participant.eu_col return { "col1" : col1, "col2" : col2 } class Results(Page): @staticmethod def is_displayed(player: Player): return player.round_number == C.NUM_ROUNDS def before_next_page(player: Player, timeout_happened): participant = player.participant # for payoff 2 round_number2 = random.randint(1, 20) lotteries_round2 = participant.lotteries[round_number2] choice_round2 = participant.choices[round_number2] chosen_lottery2 = lotteries_round2[choice_round2] outcome2 = random.choices(C.PRIZES, weights=list(chosen_lottery2.values()), k=1)[0] participant.outcome2 = outcome2 participant.payoff2 = cu(outcome2) participant.selected_round2 = round_number2 participant.selected_lottery2 = chosen_lottery2 # for payoff 3 round_number3 = random.randint(21, 30) lotteries_round3 = participant.lotteries[round_number3] choice_round3 = participant.choices[round_number3] chosen_lottery3 = lotteries_round3[choice_round3] outcome3 = random.choices(C.PRIZES, weights=list(chosen_lottery3.values()), k=1)[0] participant.outcome3 = outcome3 participant.payoff3 = cu(participant.payoff3 + outcome3) # add to payoff from algo selection participant.selected_round3 = round_number3 participant.selected_lottery3 = chosen_lottery3 page_sequence = [Instructions, ListChoice, Buffer, AlgoChoice, AlgoResults, Results]