class Group(BaseGroup): def get_payoff_p1(self): return self.set_payoff_p1(player.sent_amount, player.sent_back_amount) def get_payoff_p2(self): return self.set_payoff_p2(self.sent_amount, self.sent_back_amount) sent_amount = models.StringField( choices=['Exert restrain', 'Be assertive'], widget=widgets.RadioSelect ) sent_belief = models.IntegerField(verbose_name='sent belief', min=0, max=100, initial=50, widget=widgets.SliderInput()) sent_back_amount = models.StringField( choices=['Do not challenge', 'Challenge'], widget=widgets.RadioSelect ) sent_back_belief = models.IntegerField(verbose_name='sent back belief', min=0, max=100, initial=50, widget=widgets.SliderInput())
class Group(BaseGroup): # max wage is dynamically set in views wage = models.PositiveIntegerField( doc="The wage the firm wants to set for the worker", widget=widgets.SliderInput(attrs={'step': '1'}), ) effort = models.FloatField( min=0.05, max=1.00, doc="The effort level that the worker chooses", widget=widgets.SliderInput(attrs={'step': '0.05'}) ) def set_payoffs(self): firm = self.get_player_by_role('firm') worker = self.get_player_by_role('worker') # the formula for calculating the respective payoffs are as follows: # payoff(firm) = (revenue - wage) * effort # payoff(worker = revenue - cost(effort) firm.payoff = (Constants.REVENUE[self.round_number] - self.wage) * self.effort worker.payoff = self.wage - cost_from_effort(self.effort) def get_payoff_by_role(self, role): if role == 'firm': payoff = self.get_player_by_role("firm").payoff return payoff elif role == "worker": payoff = self.get_player_by_role("worker").payoff return payoff
class Player(BasePlayer): age = models.PositiveIntegerField( min = 16, max = 120, verbose_name = "How old are you?", doc = "collect age data between 16 and 120", ) field_of_study = models.CharField( blank = True, # some subjects might not study verbose_name = "What do you study?", doc = "collect field of study data, open field", ) likes_experiment = models.CharField( choices = ["Yes, of course!", "No, suck it!", "Maybe..."], widget = widgets.RadioSelect(), verbose_name = "Doy you like the survey?", doc = "likes experiment - yes, no, or maybe", ) female = models.PositiveIntegerField( choices = [[0, "Male"], [1, "Female"], [2, "Other"]], widget = widgets.RadioSelect(), verbose_name = "What is your gender?", doc = "gender of participant", ) height = models.FloatField( initial = 1.0, min = 1.0, max = 2.5, widget = widgets.SliderInput(attrs={'step': '0.1'}), verbose_name = "What is your height in meters?",# doc = "height of participant in meters", ) weight = models.FloatField( initial = 30, min = 30, max = 300, widget = widgets.SliderInput(attrs={'step': '0.1'}), verbose_name = "How heavy are you in Kg?", doc = "weight of participant in kg", ) bmi = models.FloatField() bmi_eval = models.CharField() def calculate_bmi(self): self.bmi = round(self.weight / self.height ** 2, 2) def bmi_evaluation(self): if self.bmi < 18.5: self.bmi_eval = "You are underweight. Get help!" elif self.bmi > 25: self.bmi_eval = "You are overweight, you fat f**k!" else: self.bmi_eval = "Your weight is normal, good job!"
class Player(BasePlayer): prob = models.IntegerField(min=0, max=100) endowment = models.CurrencyField(min=0, max=100, initial=0) contribution = models.CurrencyField( verbose_name='Deslice hasta seleccionar la cantidad a enviar deseada', min=0, max=100, initial=0, widget=widgets.SliderInput()) roller = models.IntegerField( verbose_name='Deslice hasta seleccionar el número de la opción deseada', min=1, max=3, widget=widgets.SliderInput()) # Se está usando un slider para esta opción pues permite evitar confusiones en caso se use un grupo de botones # los cuales se podrían clickear en cualquier momento sin que el jugador entienda si ya se registró o no su decisión def role(self): if self.roller == 1: return 'A' elif self.roller == 2: return 'B' else: return 'C'
class Group(BaseGroup): ammount_given = models.CurrencyField( doc="""Amount the sender decided to give to the other player""", min=0, max=Constants.amount_allocated, widget=widgets.SliderInput(), verbose_name='I will give (from 0 to %i)' % Constants.amount_allocated) ammount_sent_back = models.CurrencyField( doc="""Amount the returner decided to sent_back to the other player""", min=0, widget=widgets.SliderInput())
class Player(BasePlayer): contribution = models.CurrencyField(min=0, max=Constants.endowment) contribution1 = models.CurrencyField(min=0, max=Constants.endowment) contribution_bot1 = models.CurrencyField() contribution_bot2 = models.CurrencyField() contribution_bot3 = models.CurrencyField() contribution1_bot1 = models.CurrencyField() contribution1_bot2 = models.CurrencyField() contribution1_bot3 = models.CurrencyField() Retaliation_amount = models.IntegerField(blank=True, min=0, max=10, initial=0, widget=widgets.SliderInput(), label="처벌하는 데 포인트를 얼마나 사용하시겠습니까?") xyz = models.BooleanField() Retaliation_player = models.StringField( label="누구를 처벌하시겠습니까?", blank=True, choices=["Player 2", "Player 3", "Player 4"]) participant_vars_dump = models.LongStringField() def truncate(self, decimals=-3): multiplier = 10**decimals return int(self.payoff * 10 * 2 * multiplier) / multiplier + 5000
class Player(BasePlayer): treatment = models.CharField() endowment = models.CurrencyField() def endowment_assignment(self): self.endowment = Constants.endowment_high_stakes if self.treatment == 'high_stakes' else Constants.endowment_low_stakes investment_decision = models.CurrencyField( min=0, # max = 100 if endowment == Constants.endowment_low_stakes else 1000, initial=0, widget=widgets.SliderInput(), doc="players investment decision", verbose_name= "Choose how much of your endowment you want to invest (in Euro).") did_player_win = models.BooleanField() def calculate_payoff(self): if random.uniform(0, 1) > Constants.win_probability: self.did_player_win = True self.payoff = ( self.endowment - self.investment_decision ) + self.investment_decision * Constants.win_multiplier else: self.did_player_win = False self.payoff = self.endowment - self.investment_decision
class Player(BasePlayer): endowment = models.PositiveIntegerField() cond = models.PositiveIntegerField() # treatment = models.CharField() def role(self): if self.id_in_group == 1: self.endowment = 20 return "rich" else: self.endowment = 15 return "poor" contri = models.PositiveIntegerField( min=0, widget=widgets.SliderInput(attrs={'step': '1'}), verbose_name= "Please decide how much you would like to invest in your common project" ) twenty = models.PositiveIntegerField() nineteen = models.PositiveIntegerField() eighteen = models.PositiveIntegerField() seventeen = models.PositiveIntegerField() sixteen = models.PositiveIntegerField() fifteen = models.PositiveIntegerField() fourteen = models.PositiveIntegerField() thirteen = models.PositiveIntegerField() twelve = models.PositiveIntegerField() eleven = models.PositiveIntegerField() ten = models.PositiveIntegerField() nine = models.PositiveIntegerField() eight = models.PositiveIntegerField() seven = models.PositiveIntegerField() six = models.PositiveIntegerField() five = models.PositiveIntegerField() four = models.PositiveIntegerField() three = models.PositiveIntegerField() two = models.PositiveIntegerField() one = models.PositiveIntegerField() zero = models.PositiveIntegerField() cond = models.PositiveIntegerField(initial=0) others_contri = models.PositiveIntegerField() def calc_con(self): self.others_contri = self.get_others_in_group()[0].contri con_lists = [ self.zero, self.one, self.two, self.three, self.four, self.five, self.six, self.seven, self.eight, self.nine, self.ten, self.eleven, self.twelve, self.thirteen, self.fourteen, self.fifteen, self.sixteen, self.seventeen, self.eighteen, self.nineteen, self.twenty ] for i in con_lists: if i == self.others_contri: self.cond = i
class Group(BaseGroup): p1_share = models.PositiveIntegerField( max=Constants.pie_size, widget=widgets.SliderInput(attrs={'step': '1'})) p2_share = models.PositiveIntegerField(max=Constants.pie_size) def set_p2_share(self): self.p2_share = Constants.pie_size - self.p1_share
class Player(BasePlayer): ammount_given = models.CurrencyField( doc="""Amount dictator decided to give to the other player""", min=0, max=Constants.allocated_amount, widget=widgets.SliderInput(), verbose_name='I will give (from 0 to %i)' % Constants.allocated_amount) trust_type = models.CharField(max_length=20, choices=Constants.ttypes)
class Player(BasePlayer): def set_payoff(self): self.payoff = 0 q_country = CountryField( verbose_name='What is your country of citizenship?') q_age = models.PositiveIntegerField(verbose_name='What is your age?', choices=range(13, 125), initial=None) q_gender = models.CharField(initial=None, choices=['Male', 'Female'], verbose_name='What is your gender?', widget=widgets.RadioSelect()) sw_bat = models.PositiveIntegerField(verbose_name=''' A bat and a ball cost 22 dollars in total. The bat costs 20 dollars more than the ball. How many dollars does the ball cost?''', min=0, max=20) sw_widget = models.PositiveIntegerField(verbose_name=''' "If it takes 5 machines 5 minutes to make 5 widgets, how many minutes would it take 100 machines to make 100 widgets?" ''') sw_choices = models.CharField(initial=None, choices=[ '0 Worst', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10 Best' ], verbose_name='How good was it?', widget=widgets.RadioSelectHorizontal()) sw_lake = models.PositiveIntegerField(verbose_name=''' In a lake, there is a patch of lily pads. Every day, the patch doubles in size. If it takes 48 days for the patch to cover the entire lake, how many days would it take for the patch to cover half of the lake? ''') sw_level = models.PositiveIntegerField(verbose_name='set the level', choices=[ [1, 'Low'], [2, 'Medium'], [3, 'High'], ]) sw_slider = models.PositiveIntegerField( verbose_name='set the slider', widget=widgets.SliderInput(attrs={'step': '0.01'})) offer_1 = models.BooleanField() offer_2 = models.BooleanField() offer_3 = models.BooleanField() offer_4 = models.BooleanField() offer_5 = models.BooleanField()
class Player(BasePlayer): ammount_given = models.CurrencyField( doc="""Amount dictator decided to give to the other player""", min=0, max=Constants.allocated_amount, widget=widgets.SliderInput(), verbose_name='I will give (from 0 to %i)' % Constants.allocated_amount) trust_scenario_you_are_A = models.CurrencyField( min=0, max=10, widget=widgets.SliderInput(attrs={'step': '1'}), verbose_name='I will give (from 0 to 10)') trust_scenario_you_are_B = models.CurrencyField( min=0, max=30, widget=widgets.SliderInput(attrs={'step': '1'}), verbose_name='I will give (from 0 to 30)') trust_type = models.CharField(max_length=20, choices=Constants.ttypes)
class Player(BasePlayer): sent_amount = models.StringField( choices=['Exert restrain', 'Be assertive'], widget=widgets.RadioSelect ) sent_belief = models.IntegerField(verbose_name='sent belief', min=0, max=100, initial=50, widget=widgets.SliderInput()) sent_back_amount = models.StringField( choices=['Do not challenge', 'Challenge'], widget=widgets.RadioSelect ) sent_back_belief = models.IntegerField(verbose_name='sent back belief', min=0, max=100, initial=50, widget=widgets.SliderInput())
class Player(BasePlayer): endowment = models.FloatField( min=0, max=Constants.endowment, doc="""Number of tokens this player receives""") contribution = models.FloatField( min=0, max=Constants.endowment, doc="""Number of tokens this player contributes""", widget=widgets.SliderInput(attrs={'step': '0.1'})) eval_p1 = models.FloatField( min=0, max=Constants.endowment, doc="""This player's evaluation of player 1""", widget=widgets.SliderInput(attrs={'step': '0.1'})) eval_p2 = models.FloatField( min=0, max=Constants.endowment, doc="""This player's evaluation of player 2""", widget=widgets.SliderInput(attrs={'step': '0.1'})) eval_p3 = models.FloatField( min=0, max=Constants.endowment, doc="""This player's evaluation of player 3""", widget=widgets.SliderInput(attrs={'step': '0.1'})) score_median = models.FloatField( doc="""The median of score_p1, score_p2, and score_p3""", min=0, max=Constants.endowment, ) group_grade = models.FloatField( doc= """This is the group grade that contributes to all player's final grade.""", ) p1_individual_grade = models.FloatField( doc="""This player's individual grade.""", ) p1_final_grade = models.FloatField(doc="""This player's final grade.""", )
class Player(BasePlayer): expect_other_player_to_return = models.IntegerField( doc="""What do you expect that the other player will return?""", min=0, max=300, widget=widgets.SliderInput(), verbose_name= 'What percentage do you think the other will return? (from 0 to 300%)') expect_other_player_to_return_revealed = models.IntegerField( doc="""What do you expect that the other player will return?""", min=0, max=300, widget=widgets.SliderInput(), verbose_name= 'What percentage do you think the other will return? (from 0 to 300%)') def role(self): return {1: Constants.sender, 2: Constants.returner}[self.id_in_group] @property def trust_type(self): return self.participant.vars["trust_type"]
class Player(BasePlayer): howLong = models.PositiveIntegerField( validators=[validate_nonzero], default=0, min=0, max=180, widget=widgets.SliderInput(attrs={'step': '5'})) bid = models.CurrencyField() pref1 = models.PositiveIntegerField(widget=widgets.RadioSelectHorizontal( choices=P1_CHOICES)) pref2 = models.PositiveIntegerField(widget=widgets.RadioSelectHorizontal( choices=P2_CHOICES)) pref3 = models.PositiveIntegerField(widget=widgets.RadioSelectHorizontal( choices=P3_CHOICES)) pref4 = models.PositiveIntegerField(widget=widgets.RadioSelectHorizontal( choices=P4_CHOICES)) pref5 = models.PositiveIntegerField(widget=widgets.RadioSelectHorizontal( choices=P5_CHOICES))
class Player(BasePlayer): endowment = models.CurrencyField() sent_amount = models.IntegerField( verbose_name='Deslice hasta escoger la cantidad a enviar deseada', min=0, max=100, initial=0, widget=widgets.SliderInput()) afterloss = models.CurrencyField() afterearn = models.CurrencyField() checkslider = models.IntegerField(blank=True) def role(self): if self.id_in_group == 1: return 'A' else: return 'B'
class Player(BasePlayer): # endow=Subsession.endowment endowment=models.IntegerField() invest = models.IntegerField( min=0, widget=widgets.SliderInput(attrs={'step':'1'}), verbose_name="Choose how much you would like to invest", doc="Investment choice" ) decision = models.CharField() def calc_payoff(self): outcome=random.choice(["win","lose"]) if outcome=="win": self.payoff=self.invest+self.endowment if self.decision=="lose": self.payoff=self.endowment-self.invest self.decision=outcome
class Player(BasePlayer): def set_payoff(self): """Calculate payoff, which is zero for the survey""" self.payoff = 0 q_country = CountryField( verbose_name='What is your country of citizenship?') q_age = models.PositiveIntegerField(verbose_name='What is your age?', choices=range(13, 125), initial=None, widget=widgets.SliderInput()) q_gender = models.CharField(initial=None, choices=['Male', 'Female'], verbose_name='What is your gender?', widget=widgets.RadioSelect()) crt_bat = models.PositiveIntegerField() crt_widget = models.PositiveIntegerField() crt_lake = models.PositiveIntegerField() title_tracker = FieldTracker(fields=['q_age'])
class Player(BasePlayer): contribution = models.CurrencyField(min=0, max=Constants.endowment) contribution_bot1 = models.CurrencyField() contribution_bot2 = models.CurrencyField() contribution_bot3 = models.CurrencyField() Retaliation_player = models.StringField( label="누구를 처벌하시겠습니까?", choices=["Player 2", "Player 3", "Player 4"], blank=True) Retaliation_amount = models.IntegerField(blank=True, min=0, max=10, initial=0, widget=widgets.SliderInput(), label="처벌하는 데 포인트를 얼마나 사용하시겠습니까?") xyz = models.BooleanField()
class Group(BaseGroup): offer = models.PositiveIntegerField( max=Constants.pot_size, min=0, widget=widgets.SliderInput(attrs={'step': '1'}), verbose_name= "Please decide about the quantity to share with the other player") accepted = models.BooleanField( choices=[(True, 'Yes'), (False, 'No')], verbose_name="Please decide about the other player's offer", doc="response choice") def calc_payoff(self): proposer = self.get_player_by_role('proposer') responder = self.get_player_by_role('responder') if self.accepted: proposer.payoff = Constants.pot_size - self.offer responder.payoff = self.offer else: proposer.payoff = c(0) responder.payoff = c(0)
class Player(BasePlayer): wager = models.PositiveIntegerField( default=0, max=Constants.endowment, widget=widgets.SliderInput(attrs={'step': '1'}), doc="money bet by the participant", verbose_name="How much of your endowment do you want to bet?") coin_toss = models.FloatField(default=round(random.uniform(0, 1), 2)) win_message = models.CharField() payoff = models.PositiveIntegerField() final_payoff = models.CurrencyField() coin_result = models.PositiveIntegerField() choice = models.PositiveIntegerField(choices=[[0, "heads"], [1, "tails"]], widget=widgets.RadioSelect, doc="choice heads or tails") def coin_side(self): if self.coin_toss > 0.5: self.coin_result = 0 # heads else: self.coin_result = 1 # tails def win_against_coin(self): if self.choice == self.coin_result: self.win_message = "Congratulations, you won!" self.payoff = self.wager * 2 else: self.win_message = "Unfortunately, you lost. Your money now belongs to the mighty oTree-Overlord!" self.payoff = 0 def calculate_payoff(self): self.final_payoff = Constants.endowment - self.wager + self.payoff
class Group(BaseGroup): actuale = models.IntegerField(initial=Constants.Endowment, min=1, max=100) #endowment wage = models.IntegerField(min=0) #the wage snet by the firm effort = models.FloatField(min=0, max=6, widget= widgets.SliderInput(attrs={'step': '0.25'})) #the effort of worker in normal rounds steffort= models.FloatField(min=0, max=6) #effort from strategy method random_round_payoff_1 = models.IntegerField() #rnd draw to choose decisional period to be paid random_round_payoff_2 = models.IntegerField() # " " questionnaire period to be paid random_task = models.IntegerField() # task paid random_line_belief = models.IntegerField() #line of belief table chosen to payment if accurate def get_variables(self): #function to get effort stated in the strategy method players = self.get_players() for p in players: if p.type == 'agent': if self.round_number==8 or self.round_number==13 or self.round_number==14 or self.round_number==18: if self.wage == 10: self.steffort = p.steffort10 elif self.wage == 2: self.steffort= p.steffort2 elif self.wage == 3: self.steffort= p.steffort3 elif self.wage == 4: self.steffort= p.steffort4 elif self.wage == 5: self.steffort= p.steffort5 elif self.wage == 6: self.steffort= p.steffort6 elif self.wage == 7: self.steffort= p.steffort7 elif self.wage == 8: self.steffort= p.steffort8 elif self.wage == 9: self.steffort= p.steffort9 elif self.wage == 11: self.steffort= p.steffort11 elif self.wage == 12: self.steffort= p.steffort12 elif self.wage == 13: self.steffort= p.steffort13 elif self.wage == 14: self.steffort= p.steffort14 elif self.wage == 15: self.steffort= p.steffort15 elif self.wage == 16: self.steffort= p.steffort16 else: self.steffort= p.steffort1 def calculate_payoff_final_1(self): #compute payoffs in decisional round print("***************COMPUTING PAYOFF 1*************") # choose randomly a round Liste_round_decisional = random.sample([x for x in list(range(4,Constants.num_rounds+1)) if x not in Constants.round_specials],1) self.random_round_payoff_1 = Liste_round_decisional[0] #decisional paid round self.random_round_payoff_2 = random.sample(Constants.round_specials,1)[0] #questionnaire paid round print("so round Decisional is ", self.random_round_payoff_1) print("so round Questionnaire is ", self.random_round_payoff_2) print("Direct response method is going on") # direct-repsponse method for p in self.get_players(): print("the type of the player", p.type) if p.type == "agent": p.final_payoff = float(p.in_round(self.random_round_payoff_1).payoff) p.payoff_decisional = p.final_payoff print("This is the payoff of decisional ", p.payoff_decisional) else: p.final_payoff = float(p.in_round(self.random_round_payoff_1).payoff) p.payoff_decisional = p.final_payoff print("This is the payoff of decisional ", p.payoff_decisional) def calculate_payoff_final_2(self): # compute payoffs for questionnaire rounds print("***************** I'm in the method calculate payoff final 2 *****************") self.random_task = np.random.choice( [0, 1], 1, p=[0.5, 0.5])[0] print("This is the method chosen (BELIEF (1) vs STRATEGY (0) ):", self.random_task) if self.random_task == 1: # Belief elicitation method for p in self.get_players(): if p.type == "agent": print("the type is the agent", p.type) print("this is the wage chosen for the strategy method", self.in_round(self.random_round_payoff_2).wage) print("this is the wagebelief " , p.in_round(self.random_round_payoff_2).wagebelief) # belief accuracy if p.in_round(self.random_round_payoff_2).wagebelief == self.in_round( self.random_round_payoff_2).wage: print("WORKER's beliefs is In the interval") p.belief_in_interval = 1 # PAYOFF ASSIGNINIG p.payoff_questionnaire = Constants.bonus_if_in_internal p.final_payoff += Constants.bonus_if_in_internal print("This is the payoff of questionnaire ", p.payoff_questionnaire) else: print("WORKER' belief is Out of interval") p.payoff_questionnaire = 0 p.belief_in_interval = 0 print("This is the payoff of questionnaire ", p.payoff_questionnaire) else: print("the type is principal", p.type) # draw a random line of the table self.random_line_belief = random.randint(1, self.in_round( self.random_round_payoff_2).actuale) agent = p.get_others_in_group()[0] print("this is the random line chosen from the table in round 2 ", self.random_line_belief) # extract beliefs from the table belief_effort = getattr(p.in_round(self.random_round_payoff_2), 'eleffort{}'.format(self.random_line_belief)) print("this is belief effort", belief_effort) #extract strategy effort strategy_effort = getattr(agent.in_round(self.random_round_payoff_2), 'steffort{}'.format(self.random_line_belief)) print("this is strategy effort", strategy_effort) # make the interval upper_bound_belief_effort = strategy_effort + 0.25 lower_bound_belief_effort = strategy_effort - 0.25 # check if in interval if lower_bound_belief_effort <= belief_effort <= upper_bound_belief_effort: p.belief_in_interval = 1 p.payoff_questionnaire = Constants.bonus_if_in_internal print("This is the payoff of questionnaire ", p.payoff_questionnaire) p.final_payoff += Constants.bonus_if_in_internal print("Employer's beliefs are in the interval") else: p.belief_in_interval = 0 p.payoff_questionnaire = 0 print("This is the payoff of questionnaire ", p.payoff_questionnaire) p.final_payoff += 0 print("Employer's beliefs are NOT in the interval") else: # strategy effort print("This is the strategy method") # compute payoffs for p in self.get_players(): if p.type == "agent": p.payoff_questionnaire = float(p.in_round(self.random_round_payoff_2).payoff) print("This is the payoff of questionnaire ", p.payoff_questionnaire) print("I'm here calculating WORKER PAYOFF") p.final_payoff += float(p.in_round(self.random_round_payoff_2).payoff) print("OKAY COMPUTED", p.final_payoff) else: print("I M here computing EMPLOYER's PAYOFF") p.payoff_questionnaire = float(p.in_round(self.random_round_payoff_2).payoff) print("This is the payoff of questionnaire ", p.payoff_questionnaire) p.final_payoff += float(p.in_round(self.random_round_payoff_2).payoff) print("OKAY COMPUTED", p.final_payoff) def calculate_payoff(self): #payoffs as the game unravels - not paid players= self.get_players() # this is to define the post shock endowment if self.round_number >= 13 and self.subsession.draw == 1: high=1 else: high=0 # this is to define thz agent's payoff both in normal and elicitation rounds for p in players: if p.type== 'agent': if self.round_number==8 or self.round_number==13 or self.round_number == 14 or self.round_number==18: if self.wage > 0: p.payoff = self.wage - ((self.steffort) ** 2) / 2 else: p.payoff = 0 else: if self.wage > 0: p.payoff = self.wage - ((self.effort) ** 2) / 2 else: p.payoff = 0 else: # this is to define the principal's payoff if self.round_number <= 13: #if self.round_number != 1 and self.round_number !=5 and self.round_number != 10 and self.round_number != 11 and self.round_number != 15: # p.payoff = (Constants.Endowment - self.wage)*self.effort if self.round_number == 8 : if self.wage >0: p.payoff = (Constants.Endowment - self.wage) * self.steffort print("This is ACTUALE and the round is 1 or 5", self.actuale) else: p.payoff = Constants.Endowment/2 elif self.round_number == 13: if self.wage >0: p.payoff = (Constants.Endowment - self.wage) * self.steffort print("This is ACTUALE and the round is 10", self.actuale) else: p.payoff = Constants.Endowment/2 # propagate the shock if high==1: for g in self.in_rounds(self.round_number+1, Constants.num_rounds): g.actuale = Constants.Endowmenthigh else: for g in self.in_rounds(self.round_number+1, Constants.num_rounds): g.actuale = Constants.Endowmentlow else: if self.wage >0: p.payoff = (Constants.Endowment - self.wage) * self.effort else: p.payoff = Constants.Endowment/2 else: if (self.round_number == 14 or self.round_number == 18) and self.wage >0 : p.payoff = (self.actuale - self.wage) * self.steffort elif (self.round_number == 14 or self.round_number == 18) and self.wage ==0: p.payoff = self.actuale/2 else : if self.wage >0: p.payoff = (self.actuale - self.wage) * self.effort else: p.payoff = self.actuale/2 def rounding(self): players= self.get_players() for p in players: p.final_payoff=round(p.final_payoff,1) def check_payoff(self): players= self.get_players() for p in players: if p.payoff < 0: p.payoff=0
class Group(BaseGroup): e_g = models.CurrencyField() shockround = models.IntegerField(min=0, max=Constants.num_rounds, initial=None) r = models.FloatField( widget=widgets.SliderInput(attrs={'step': '0.01', 'style': 'width:500px'}, show_value=False), min=0, initial=None, max=1, ) #For Slider check in Stage 1 checkr = models.FloatField(blank=True, initial=None) #History counter for Stage 1 historyc1 = models.IntegerField(blank=True, initial=0) #History counter for Stage 2 historyc2 = models.IntegerField(blank=True, initial=0) #History counter for results P1 historyr1 = models.IntegerField(blank=True, initial=0) #History counter for results P1 historyr2 = models.IntegerField(blank=True, initial=0) payoff1 = models.CurrencyField() payoff1f = models.FloatField( widget=widgets.SliderInput(attrs={'step': '0.01', 'style': 'width:500px'}, show_value=False), min=5, initial=None, max=15, blank=True ) #For Slider check in Stage 2 checkpayoff1f = models.FloatField(blank=True, initial=None) payoff2 = models.CurrencyField() rpayoff1 = models.CurrencyField() payoff_p1 = models.CurrencyField() payoff_p2 = models.CurrencyField() def define_e_group(self): p1 = self.get_player_by_id(1) self.e_g = p1.participant.vars.get('e') def define_shockround(self): p1 = self.get_player_by_id(1) self.shockround = p1.participant.vars.get('shockround') def calculate_rpayoff1(self): p1 = self.get_player_by_id(1) self.rpayoff1 = c(15) - self.e_g #p1.participant.vars.get('e') def calculate_payoff1(self): if self.r == 1: self.payoff1 = None else : self.payoff1 = c(self.payoff1f) def calculate_payoff2(self): if self.r == 1: self.payoff2 = None else : self.payoff2 = -1 * (self.payoff1 - c(20)) #For history table def calculate_payoff_p1_p2(self): if self.r == 1: self.payoff_p1 = self.r * (c(15) - self.e_g) self.payoff_p2 = self.r * c(5) else: self.payoff_p1 = self.r * (c(15) - self.e_g) + (1-self.r) * self.payoff1 self.payoff_p2 = self.r * c(5) + (1-self.r) * self.payoff2 def set_payoffs(self): p1 = self.get_player_by_id(1) p2 = self.get_player_by_id(2) if self.r == 1 : p1.payoff = self.r * (c(15) - self.e_g) p2.payoff = self.r * c(5) else : p1.payoff = self.r * (c(15) - self.e_g) + (1 - self.r) * self.payoff1 p2.payoff = self.r * c(5) + (1 - self.r) * self.payoff2
class Player(BasePlayer): #Personal code tn = models.StringField(blank=False) # tn = models.CharField( # blank=False, # max_length=5, # validators= # [RegexValidator( # r'^\d{5}$', # message='Your personal code should have 5 digits', # code='nomatch' # ) # ] # ) #Accept the conditions to participate accept_conditions = models.BooleanField(blank=False, widget=widgets.CheckboxInput) #Instruction1 checks Instr1a = models.IntegerField(blank=False, choices=[[1, 'True'],[2, 'False']], widget=widgets.RadioSelect) Instr1b = models.IntegerField(blank=False, choices=[[1, 'True'],[2, 'False']], widget=widgets.RadioSelect) Instr1c = models.IntegerField(blank=False, choices=[[1, 'True'],[2, 'False']], widget=widgets.RadioSelect) #Instructions 2 check accept_payoffs = models.BooleanField(blank=False, widget=widgets.CheckboxInput) #Instruction2a checks Instr2aa = models.IntegerField(blank=False, choices=[[1, 'True'],[2, 'False']], widget=widgets.RadioSelect) Instr2ab = models.IntegerField(blank=False, choices=[[1, 'True'],[2, 'False']], widget=widgets.RadioSelect) #Instruction2b checks Instr2ba = models.IntegerField(blank=False, choices=[[1, 'True'],[2, 'False']], widget=widgets.RadioSelect) Instr2bb = models.IntegerField(blank=False, choices=[[1, 'True'],[2, 'False']], widget=widgets.RadioSelect) Instr2bc = models.IntegerField(blank=False, choices=[[1, 'True'],[2, 'False']], widget=widgets.RadioSelect) Fakeslider2 = models.FloatField( widget=widgets.SliderInput(attrs={'step': '0.01', 'style': 'width:450px'}, show_value=False), min=0, initial=0.5, blank=True, max=1 ) #Instruction3 checks Instr3a = models.IntegerField(blank=False, choices=[[1, 'True'],[2, 'False']], widget=widgets.RadioSelect) Instr3b = models.IntegerField(blank=False, choices=[[1, 'True'],[2, 'False']], widget=widgets.RadioSelect) Instr3c = models.IntegerField(blank=False, choices=[[1, 'True'],[2, 'False']], widget=widgets.RadioSelect) Instr3d = models.IntegerField(blank=False, choices=[[1, 'True'],[2, 'False']], widget=widgets.RadioSelect) Fakeslider = models.FloatField( widget=widgets.SliderInput(attrs={'step': '0.01', 'style': 'width:450px'}, show_value=False), min=5, blank=True, initial=10, max=15 ) #History counter for Choice historyc = models.IntegerField(blank=True, initial=0) #History counter for Choice historyr = models.IntegerField(blank=True, initial=0) def get_partner(self): return self.get_others_in_group()[0]
class Player(BasePlayer): payment = models.FloatField( doc="Participant's payment" ) chocolate = models.CharField( doc="which chocolate will participant get" ) prob = models.FloatField( doc="if larger .7 eco is conv." ) Role = models.CharField( doc="role of participant, treatment or control" ) chocolate_choice = models.CharField( choices=["Bio" , "Konventionell"], widget=widgets.RadioSelect(), verbose_name="Welche Schokolade möchten Sie kaufen?", doc="participant's chocolate choice" ) BDM_eco_WTP = models.FloatField( min=0, max=2, widget=widgets.SliderInput(attrs={'step': '0.01'}), verbose_name="Höchster Preis, den ich für Bio-Schokolade zahlen würde", doc="Participant's WTP for eco chocolate" ) BDM_eco_price = models.FloatField( doc="Randomly chosen price for eco" ) BDM_conventional_WTP = models.FloatField( min=0, max=2, widget=widgets.SliderInput(attrs={'step': '0.01'}), verbose_name="Höchster Preis, den ich für konventionelle Schokolade zahlen würde", doc="Participant's WTP for conventional chocolate" ) BDM_conventional_price = models.FloatField( doc="Randomly chosen price for conv" ) BDM_eco_buy = models.CharField( doc="indicates whether participant will or will not buy at BDM price eco" ) BDM_conventional_buy = models.CharField( doc="indicates whether participant will or will not buy at BDM price conv" ) relevant_decision = models.CharField( doc="which decision determines payment" ) eco_buy = models.IntegerField( min=1, max=7, verbose_name="Auf einer Skala von 1 bis 7, wie wichtig finden Sie es, Bio Produkte zu kaufen? (1 bedeutet 'gar nicht wichtig', 7 bedeutet 'sehr wichtig')", doc="Participant's perceived importance of buying eco" ) eco_belief = models.IntegerField( min=0, max=100, verbose_name="Schätzen Sie: Wie viel Prozent der Produkte im Handel mit Bio-Zertifikat erfüllen auch die Bio-Standards?", doc="Participant's belief about how many eco are eco" ) eco_belief_experiment = models.IntegerField( min=0, max=100, verbose_name="Schätzen Sie: Wie hoch (in Prozent) war in diesem Experiment die Wahrscheinlichkeit, dass Sie bei der ersten Entscheidung konventionelle Schokolade bekommen, obwohl Sie Bio-Schokolade gekauft haben?", blank=True, doc="Participant's belief about how many eco are eco in experiment" ) ##### Any other demographics? Other experiments also include that?####### ##### Riskaversion??#### def BDM_eco_choice(self): #self.BDM_eco_price = random.uniform(0, 4) if self.BDM_eco_price <= self.BDM_eco_WTP: self.BDM_eco_buy = "kaufen" else: self.BDM_eco_buy = "nicht kaufen" def BDM_conventional_choice(self): #self.BDM_conventional_price = random.uniform(0, 4) if self.BDM_conventional_price <= self.BDM_conventional_WTP: self.BDM_conventional_buy = "kaufen" else: self.BDM_conventional_buy = "nicht kaufen" #def BDM_maybe_eco_choice(self): # #self.BDM_maybe_eco_price = random.uniform(0, 4) # if self.BDM_maybe_eco_price <= self.BDM_maybe_eco_WTP: # BDM_maybe_eco_buy = "kaufen" # else: # BDM_maybe_eco_buy = "nicht kaufen" #def calculate_payment(self): # self.relevant_decision = random.choice("choice", "BDM_eco", "BDM_conv") # if self.relevant_decision == "choice" and self.chocolate_choice == "Bio": # self.payment = Constants.endowment - Constants.eco_price # elif self.relevant_decision == "choice" and self.chocolate_choice == "Konventionell": # self.payment = Constants.endowment - Constants.conv_price # elif self.relevant_decision == "BDM_eco" and self.BDM_eco_buy == "kaufen": # self.payment = Constants.endowment - self.BDM_eco_price # elif self.relevant_decision == "BDM_eco" and self.BDM_eco_buy == "nicht kaufen": # self.payment = Constants.endowment # elif self.relevant_decision == "BDM_conv" and self.BDM_conventional_buy == "kaufen": # self.payment = Constants.endowment - self.BDM_conventional_price # else: # self.payment = Constants.endowment #BDM_maybe_eco_WTP = models.CurrencyField( # min=0, # max=Constants.endowment, # widget=widgets.SliderInput(attrs={'step': '0.01'}), # verbose_name="Hoechster Preis, den ich für Schokolade zahlen wuerde, bei der ich nicht genau weiss, ob sie wirklich bio ist", # doc="Participant's WTP for eco chocolate with maybe conventional" # ) #BDM_maybe_eco_price = models.CurrencyField( # doc="Randomly chosen price for maybe eco" # ) #BDM_maybe_eco_buy = models.CharField( # doc="indicates whether participant will or will not buy at BDM price maybe eco" # )
class Group(BaseGroup): actuale = models.IntegerField(initial=Constants.Endowment, min=1, max=100) #endowment wage = models.IntegerField(min=1) #the wage snet by the firm effort = models.FloatField( min=0, max=4, widget=widgets.SliderInput( attrs={'step': '0.1'})) #the effort of worker in normal rounds steffort = models.FloatField(min=0, max=4) #effort from strategy method draw = models.IntegerField(initial=np.random.random_integers( low=0, high=1)) #random draw to decide whether + or - shock random_round_payoff_1 = models.IntegerField( ) #rnd draw to choose rounds to pay random_round_payoff_2 = models.IntegerField() random_line_belief_payoff_1 = models.IntegerField() random_line_belief_payoff_2 = models.IntegerField() paidinspecialround_draw1 = models.IntegerField(initial=0) paidinspecialround_draw2 = models.IntegerField(initial=0) def get_variables( self): #function to get effort stated in the strategy method players = self.get_players() for p in players: if p.type == 'agent': if self.round_number == 8 or self.round_number == 13 or self.round_number == 14 or self.round_number == 18: if self.wage == 10: self.steffort = p.steffort10 elif self.wage == 2: self.steffort = p.steffort2 elif self.wage == 3: self.steffort = p.steffort3 elif self.wage == 4: self.steffort = p.steffort4 elif self.wage == 5: self.steffort = p.steffort5 elif self.wage == 6: self.steffort = p.steffort6 elif self.wage == 7: self.steffort = p.steffort7 elif self.wage == 8: self.steffort = p.steffort8 elif self.wage == 9: self.steffort = p.steffort9 else: self.steffort = p.steffort1 def calculate_payoff_final_1(self): #compute payoffs in the final round # choose randomly a round Liste_round = random.sample(list(range(4, Constants.num_rounds + 1)), 2) print("This is liste round", Liste_round) self.random_round_payoff_1 = 8 #Liste_round[0] self.random_round_payoff_2 = 5 #Liste_round[1] print("so round 1 is ", self.random_round_payoff_1) print("so round 2 is ", self.random_round_payoff_2) #if randomly choose round is in list then randomly choose a payoff method if self.random_round_payoff_1 in Constants.round_specials: self.paidinspecialround_draw1 = 1 for p in self.get_players(): if p.type == "agent": strategy_effort = getattr( p.in_round(self.random_round_payoff_1), 'steffort{}'.format( self.in_round(self.random_round_payoff_1).wage)) for p in self.get_players(): if p.type == "agent": print("the tye is the agent", p.type) print("this is the wage chosen for the strategy method", self.in_round(self.random_round_payoff_1).wage) print("this is the effort chosen for the strategy method", strategy_effort) print("this is the endowment in that period", self.in_round(self.random_round_payoff_1).actuale) p.final_payoff = self.in_round( self.random_round_payoff_1).wage - ( (strategy_effort)**2) / 2 #Step 3 belief accuracy print("now let's add the belief accuracy") if p.in_round(self.random_round_payoff_1 ).wagebelief == self.in_round( self.random_round_payoff_1).wage: print("WORKER In the interval") p.belief_in_interval_1 = 1 p.final_payoff += Constants.bonus_if_in_internal else: print("Out of interval") p.belief_in_interval_1 = 0 else: print("the type is principal", p.type) p.final_payoff = (self.in_round( self.random_round_payoff_1).actuale - self.in_round( self.random_round_payoff_1).wage) * strategy_effort agent = p.get_others_in_group()[0] self.random_line_belief_payoff_1 = random.randint( 1, self.in_round(self.random_round_payoff_2).actuale) print("this is the first random line", self.random_line_belief_payoff_1) belief_effort = getattr( p.in_round(self.random_round_payoff_1), 'eleffort{}'.format(self.random_line_belief_payoff_1)) print("this is belief effort", belief_effort) print("this is strategy effort", strategy_effort) # make the interval upper_bound_belief_effort = strategy_effort + 0.1 lower_bound_belief_effort = strategy_effort - 0.1 # check if in interval if lower_bound_belief_effort <= belief_effort <= upper_bound_belief_effort: p.belief_in_interval_1 = 1 p.final_payoff += Constants.bonus_if_in_internal else: p.belief_in_interval_1 = 0 else: print("Direct response method is going on") # direct-repsponse method for p in self.get_players(): print("the type of the player", p.type) print("The information that we want", self.in_round(self.random_round_payoff_1).wage) if p.type == "agent": p.final_payoff = self.in_round( self.random_round_payoff_1).wage - ((self.in_round( self.random_round_payoff_1).effort)**2) / 2 else: p.final_payoff = (self.in_round( self.random_round_payoff_1).actuale - self.in_round( self.random_round_payoff_1).wage) * self.in_round( self.random_round_payoff_1).effort def calculate_payoff_final_2(self): # compute payoffs in the final round 2 print( "***************** I'm in the method calculate payoff final 2 *****************" ) # if randomly choose round is in list then randomly choose a payoff method if self.random_round_payoff_2 in Constants.round_specials: self.paidinspecialround_draw2 = 1 for p in self.get_players(): if p.type == "agent": strategy_effort = getattr( p.in_round(self.random_round_payoff_2), 'steffort{}'.format( self.in_round(self.random_round_payoff_2).wage)) for p in self.get_players(): if p.type == "agent": # make the interval print("the tye is the agent", p.type) print("this is the wage chosen for the strategy method", self.in_round(self.random_round_payoff_2).wage) print("this is the effort chosen for the strategy method", strategy_effort) print("this is the endowment in that period", self.in_round(self.random_round_payoff_2).actuale) p.final_payoff += self.in_round( self.random_round_payoff_2).wage - ( (strategy_effort)**2) / 2 # check if in interval if p.in_round(self.random_round_payoff_2 ).wagebelief == self.in_round( self.random_round_payoff_2).wage: print("WORKER In the interval") p.belief_in_interval_2 = 1 p.final_payoff += Constants.bonus_if_in_internal else: print("Out of interval") p.belief_in_interval_2 = 0 else: print("the type is principal", p.type) p.final_payoff += (self.in_round( self.random_round_payoff_2).actuale - self.in_round( self.random_round_payoff_2).wage) * strategy_effort agent = p.get_others_in_group()[0] self.random_line_belief_payoff_2 = random.randint( 1, self.in_round(self.random_round_payoff_2).actuale) print("this is the second random line", self.random_line_belief_payoff_2) belief_effort = getattr( p.in_round(self.random_round_payoff_2), 'eleffort{}'.format(self.random_line_belief_payoff_2)) strategy_effort = getattr( agent.in_round(self.random_round_payoff_2), 'steffort{}'.format(self.random_line_belief_payoff_2)) print("this is belief effort", belief_effort) print("this is strategy effort", strategy_effort) # make the interval upper_bound_belief_effort = strategy_effort + 0.1 lower_bound_belief_effort = strategy_effort - 0.1 # check if in interval if lower_bound_belief_effort <= belief_effort <= upper_bound_belief_effort: p.belief_in_interval_2 = 1 p.final_payoff += Constants.bonus_if_in_internal else: p.belief_in_interval_2 = 0 else: print("Direct response method is going on") # direct-repsponse method for p in self.get_players(): print("the type of the player", p.type) print("The information that we want", self.in_round(self.random_round_payoff_2).wage) if p.type == "agent": p.final_payoff += self.in_round( self.random_round_payoff_2).wage - ((self.in_round( self.random_round_payoff_2).effort)**2) / 2 else: p.final_payoff += (self.in_round( self.random_round_payoff_2).actuale - self.in_round( self.random_round_payoff_2).wage) * self.in_round( self.random_round_payoff_2).effort def calculate_payoff(self): #payoffs as the game unravels - not paid players = self.get_players() if self.round_number >= 13 and self.in_round( 13 ).draw == 1: #important: the shock variable is defined in round 10 high = 1 else: high = 0 for p in players: if p.type == 'agent': if self.round_number == 8 or self.round_number == 13 or self.round_number == 14 or self.round_number == 18: p.payoff = self.wage - ((self.steffort)**2) / 2 else: p.payoff = self.wage - ((self.effort)**2) / 2 else: if self.round_number <= 13: #if self.round_number != 1 and self.round_number !=5 and self.round_number != 10 and self.round_number != 11 and self.round_number != 15: # p.payoff = (Constants.Endowment - self.wage)*self.effort if self.round_number == 8: p.payoff = (Constants.Endowment - self.wage) * self.steffort print("This is ACTUALE and the round is 1 or 5", self.actuale) elif self.round_number == 13: p.payoff = (Constants.Endowment - self.wage) * self.steffort print("This is ACTUALE and the round is 10", self.actuale) if high == 1: for g in self.in_rounds(self.round_number + 1, Constants.num_rounds): g.actuale = Constants.Endowmenthigh else: for g in self.in_rounds(self.round_number + 1, Constants.num_rounds): g.actuale = Constants.Endowmentlow else: p.payoff = (Constants.Endowment - self.wage) * self.effort else: if (self.round_number == 14 or self.round_number == 18): p.payoff = (self.actuale - self.wage) * self.steffort else: p.payoff = (self.actuale - self.wage) * self.effort def rounding(self): players = self.get_players() for p in players: p.final_payoff = round(p.final_payoff, 1) def check_payoff(self): players = self.get_players() for p in players: if p.payoff < 0: p.payoff = 0
class Player(BasePlayer): type = models.CharField() belief_in_interval_1 = models.IntegerField() belief_in_interval_2 = models.IntegerField() #FIRM: elicited effort eleffort1 = models.FloatField( min=0, max=4, widget=widgets.SliderInput(attrs={'step': '0.1'}), verbose_name="") eleffort2 = models.FloatField( min=0, max=4, widget=widgets.SliderInput(attrs={'step': '0.1'}), verbose_name="") eleffort3 = models.FloatField( min=0, max=4, widget=widgets.SliderInput(attrs={'step': '0.1'}), verbose_name="") eleffort4 = models.FloatField( min=0, max=4, widget=widgets.SliderInput(attrs={'step': '0.1'}), verbose_name="") eleffort5 = models.FloatField( min=0, max=4, widget=widgets.SliderInput(attrs={'step': '0.1'}), verbose_name="") eleffort6 = models.FloatField( min=0, max=4, widget=widgets.SliderInput(attrs={'step': '0.1'}), verbose_name="") eleffort7 = models.FloatField( min=0, max=4, widget=widgets.SliderInput(attrs={'step': '0.1'}), verbose_name="") eleffort8 = models.FloatField( min=0, max=4, widget=widgets.SliderInput(attrs={'step': '0.1'}), verbose_name="") eleffort9 = models.FloatField( min=0, max=4, widget=widgets.SliderInput(attrs={'step': '0.1'}), verbose_name="") eleffort10 = models.FloatField( min=0, max=4, widget=widgets.SliderInput(attrs={'step': '0.1'}), verbose_name="") eleffort11 = models.FloatField( min=0, max=4, widget=widgets.SliderInput(attrs={'step': '0.1'}), verbose_name="") eleffort12 = models.FloatField( min=0, max=4, widget=widgets.SliderInput(attrs={'step': '0.1'}), verbose_name="") #WORKER: strategy method effort steffort1 = models.FloatField( min=0, max=4, widget=widgets.SliderInput(attrs={'step': '0.1'}), verbose_name="") steffort2 = models.FloatField( min=0, max=4, widget=widgets.SliderInput(attrs={'step': '0.1'}), verbose_name="") steffort3 = models.FloatField( min=0, max=4, widget=widgets.SliderInput(attrs={'step': '0.1'}), verbose_name="") steffort4 = models.FloatField( min=0, max=4, widget=widgets.SliderInput(attrs={'step': '0.1'}), verbose_name="") steffort5 = models.FloatField( min=0, max=4, widget=widgets.SliderInput(attrs={'step': '0.1'}), verbose_name="") steffort6 = models.FloatField( min=0, max=4, widget=widgets.SliderInput(attrs={'step': '0.1'}), verbose_name="") steffort7 = models.FloatField( min=0, max=4, widget=widgets.SliderInput(attrs={'step': '0.1'}), verbose_name="") steffort8 = models.FloatField( min=0, max=4, widget=widgets.SliderInput(attrs={'step': '0.1'}), verbose_name="") steffort9 = models.FloatField( min=0, max=4, widget=widgets.SliderInput(attrs={'step': '0.1'}), verbose_name="") steffort10 = models.FloatField( min=0, max=4, widget=widgets.SliderInput(attrs={'step': '0.1'}), verbose_name="") steffort11 = models.FloatField( min=0, max=4, widget=widgets.SliderInput(attrs={'step': '0.1'}), verbose_name="") steffort12 = models.FloatField( min=0, max=4, widget=widgets.SliderInput(attrs={'step': '0.1'}), verbose_name="") #WORKER: elicited wage wagebelief = models.IntegerField(min=1, verbose_name='') #Payment at the end of the experiment final_payoff = models.FloatField()
class Player(BasePlayer): mid_question_1 = models.StringField(choices=['Right', 'Wrong'], widget=widgets.RadioSelect) mid_question_2 = models.StringField(choices=['Right', 'Wrong'], widget=widgets.RadioSelect) gender = models.StringField(choices=['Male', 'Female', 'Other'], widget=widgets.RadioSelect) age = models.IntegerField() studies = models.StringField(choices=['Social Sciences', 'Hard Sciences'], widget=widgets.RadioSelect) question_4 = models.IntegerField(verbose_name='question_4', min=0, max=6, widget=widgets.SliderInput()) question_5 = models.IntegerField(verbose_name='question_5', min=0, max=6, widget=widgets.SliderInput()) question_6 = models.IntegerField(verbose_name='question_6', min=0, max=10, widget=widgets.SliderInput()) ############################# sent_amount = models.StringField( choices=['Exert restrain', 'Be assertive'], widget=widgets.RadioSelect) sent_belief = models.IntegerField(verbose_name='sent belief', min=0, max=100, initial=50, widget=widgets.SliderInput()) sent_back_amount = models.StringField( choices=['Do not challenge', 'Challenge'], widget=widgets.RadioSelect) sent_back_belief = models.IntegerField(verbose_name='sent back belief', min=0, max=100, initial=50, widget=widgets.SliderInput()) ############################# lottery1 = models.StringField(choices=['Accept', 'Reject'], widget=widgets.RadioSelect) lottery2 = models.StringField(choices=['Accept', 'Reject'], widget=widgets.RadioSelect) lottery3 = models.StringField(choices=['Accept', 'Reject'], widget=widgets.RadioSelect) lottery4 = models.StringField(choices=['Accept', 'Reject'], widget=widgets.RadioSelect) lottery5 = models.StringField(choices=['Accept', 'Reject'], widget=widgets.RadioSelect) lottery6 = models.StringField(choices=['Accept', 'Reject'], widget=widgets.RadioSelect) ############################# risk1 = models.StringField(choices=[ '50% chance gaining 0 € and 50% chance of gaining 10 €.', '0' ], widget=widgets.RadioSelect) risk2 = models.StringField(choices=[ '50% chance gaining 0 € and 50% chance of gaining 10 €.', '1' ], widget=widgets.RadioSelect) risk3 = models.StringField(choices=[ '50% chance gaining 0 € and 50% chance of gaining 10 €.', '2' ], widget=widgets.RadioSelect) risk4 = models.StringField(choices=[ '50% chance gaining 0 € and 50% chance of gaining 10 €.', '3' ], widget=widgets.RadioSelect) risk5 = models.StringField(choices=[ '50% chance gaining 0 € and 50% chance of gaining 10 €.', '4' ], widget=widgets.RadioSelect) risk6 = models.StringField(choices=[ '50% chance gaining 0 € and 50% chance of gaining 10 €.', '5' ], widget=widgets.RadioSelect) risk7 = models.StringField(choices=[ '50% chance gaining 0 € and 50% chance of gaining 10 €.', '6' ], widget=widgets.RadioSelect) risk8 = models.StringField(choices=[ '50% chance gaining 0 € and 50% chance of gaining 10 €.', '7' ], widget=widgets.RadioSelect) risk9 = models.StringField(choices=[ '50% chance gaining 0 € and 50% chance of gaining 10 €.', '8' ], widget=widgets.RadioSelect) risk10 = models.StringField(choices=[ '50% chance gaining 0 € and 50% chance of gaining 10 €.', '9' ], widget=widgets.RadioSelect) risk11 = models.StringField(choices=[ '50% chance gaining 0 € and 50% chance of gaining 10 €.', '10' ], widget=widgets.RadioSelect) ############################ test buttons ############################ test_button1 = models.IntegerField(choices=['1'], widget=widgets.RadioSelect)
class Player(BasePlayer): type = models.CharField() belief_in_interval = models.IntegerField() #FIRM: elicited effort eleffort1 = models.FloatField(min=0, max=6, widget=widgets.SliderInput(attrs={'step': '0.25'}),verbose_name="") eleffort2 = models.FloatField(min=0, max=6, widget=widgets.SliderInput(attrs={'step': '0.25'}),verbose_name="") eleffort3 = models.FloatField(min=0, max=6, widget=widgets.SliderInput(attrs={'step': '0.25'}),verbose_name="") eleffort4 = models.FloatField(min=0, max=6, widget=widgets.SliderInput(attrs={'step': '0.25'}),verbose_name="") eleffort5 = models.FloatField(min=0, max=6, widget=widgets.SliderInput(attrs={'step': '0.25'}),verbose_name="") eleffort6 = models.FloatField(min=0, max=6, widget=widgets.SliderInput(attrs={'step': '0.25'}),verbose_name="") eleffort7 = models.FloatField(min=0, max=6, widget=widgets.SliderInput(attrs={'step': '0.25'}),verbose_name="") eleffort8 = models.FloatField(min=0, max=6, widget=widgets.SliderInput(attrs={'step': '0.25'}),verbose_name="") eleffort9 = models.FloatField(min=0, max=6, widget=widgets.SliderInput(attrs={'step': '0.25'}),verbose_name="") eleffort10 = models.FloatField(min=0, max=6, widget=widgets.SliderInput(attrs={'step': '0.25'}),verbose_name="") eleffort11 = models.FloatField(min=0, max=6, widget=widgets.SliderInput(attrs={'step': '0.25'}),verbose_name="") eleffort12 = models.FloatField(min=0, max=6, widget=widgets.SliderInput(attrs={'step': '0.25'}),verbose_name="") eleffort13 = models.FloatField(min=0, max=6, widget=widgets.SliderInput(attrs={'step': '0.25'}),verbose_name="") eleffort14 = models.FloatField(min=0, max=6, widget=widgets.SliderInput(attrs={'step': '0.25'}),verbose_name="") eleffort15 = models.FloatField(min=0, max=6, widget=widgets.SliderInput(attrs={'step': '0.25'}),verbose_name="") eleffort16 = models.FloatField(min=0, max=6, widget=widgets.SliderInput(attrs={'step': '0.25'}),verbose_name="") #WORKER: strategy method effort steffort1 = models.FloatField(min=0, max=6, widget=widgets.SliderInput(attrs={'step': '0.25'}), verbose_name="") steffort2 = models.FloatField(min=0, max=6, widget=widgets.SliderInput(attrs={'step': '0.25'}), verbose_name="") steffort3 = models.FloatField(min=0, max=6, widget=widgets.SliderInput(attrs={'step': '0.25'}), verbose_name="") steffort4 = models.FloatField(min=0, max=6, widget=widgets.SliderInput(attrs={'step': '0.25'}), verbose_name="") steffort5 = models.FloatField(min=0, max=6, widget=widgets.SliderInput(attrs={'step': '0.25'}), verbose_name="") steffort6 = models.FloatField(min=0, max=6, widget=widgets.SliderInput(attrs={'step': '0.25'}), verbose_name="") steffort7 = models.FloatField(min=0, max=6, widget=widgets.SliderInput(attrs={'step': '0.25'}), verbose_name="") steffort8 = models.FloatField(min=0, max=6, widget=widgets.SliderInput(attrs={'step': '0.25'}), verbose_name="") steffort9 = models.FloatField(min=0, max=6, widget=widgets.SliderInput(attrs={'step': '0.25'}), verbose_name="") steffort10 = models.FloatField(min=0, max=6, widget=widgets.SliderInput(attrs={'step': '0.25'}), verbose_name="") steffort11 = models.FloatField(min=0, max=6, widget=widgets.SliderInput(attrs={'step': '0.25'}), verbose_name="") steffort12 = models.FloatField(min=0, max=6, widget=widgets.SliderInput(attrs={'step': '0.25'}), verbose_name="") steffort13 = models.FloatField(min=0, max=6, widget=widgets.SliderInput(attrs={'step': '0.25'}), verbose_name="") steffort14 = models.FloatField(min=0, max=6, widget=widgets.SliderInput(attrs={'step': '0.25'}), verbose_name="") steffort15 = models.FloatField(min=0, max=6, widget=widgets.SliderInput(attrs={'step': '0.25'}), verbose_name="") steffort16 = models.FloatField(min=0, max=6, widget=widgets.SliderInput(attrs={'step': '0.25'}), verbose_name="") #WORKER: elicited wage wagebelief = models.IntegerField(min=1, verbose_name='') #payoff from questionnaire period chosen randomly payoff_questionnaire = models.FloatField(initial=0) #payoff from decisional period chosen randomly payoff_decisional = models.FloatField(initial=0) #Payment at the end of the experiment final_payoff = models.FloatField(initial=0) #gender gender = models.IntegerField(choices=[[1,'Male'], [2,'Female'], [3,'Other']], verbose_name='') #education undergrad = models.IntegerField(choices=[[1,'Yes'], [0,'No']],verbose_name='') #comments comments = models.TextField( blank=True, max_length=3000, verbose_name = 'Please, write here any comment concerning the experiment (for example: game length, instructions, game). We would love to hear your opinion about it.' )