#1 by utilisaction
Hello everyone,
I am trying to implement bots in an OTree experiment with iterative rounds. In each round, there are multiple WaitPages and Page.
First question : HOW TO IMPLEMENT A WAITPAGE FUNCTION FOR BOTS ? My WaitPage assigns different values for each player according to a function run over all the players (simultaneously).
OTree does not record variables assigned to the player in WaitPage1 for the bots whereas it works for regular players.
My WaitPage1 runs a function over the object group called Group within which there is a loop for to implement an attribute called attribut over each player. This function can be run only one time : it randomly assign a player to an other player.
Then, according to the result of the global function over the group an attribute specific to each player is implemented within the loop :
for player in group.get_players():
Problem : in WaitPage1,
for player in self.group.get_players():
print('Accord', player.attribut)
assert player.attribut is None, "Attribute is not correctly defined"
For the first bot player, WaitPage works but for the second, it fails.
MY QUESTION IS: How to implement a function over all bot players (run only one time), which defines a different variable for each player ?
Should I :
- use a WaitPage for the bots ?
- recode the WaitPage in Bots ? But how to implement an overall synchronous function over every bot ?
Second question : is the following way to implement a differing form_fields right for bots ?
The following page, Page1, requires different form form_fields différents according to the Boolean value of this attribute :
def get_form_fields(player):
if player.attribut:
return [‘complete_variable’]
else :
player.complete_variable = False
In tests.py :
yield WaitPage1
print(f"Attribute in WaitPage1 for the bot : {self.field_maybe_none(‘attribut)}")
form_fields_page1 = AchatEffectif.get_form_fields(self.player)
if ‘complete_variable’ in form_fields_page1:
yield Page1, dict(complete_variable=random.choice([True, False]))
(But here the formfields depend on a variable implemented in WaitPage1, and which is (inexplicably) considered as None in Page1, but only for Bots).
Any help appreciated ! Thank you very much !