Skip to content

Adaptation

SamGomes edited this page Jul 1, 2024 · 16 revisions

Adaptation

Adaptation

Adaptation encapsulates all the functionalities of GIMME. It is the highest level class, responsible for initializing and executing adaptation iterations. As instances of Adaptation can be initialized and executed whenever, adaptations can dynamically be reconfigured with different arguments. No direct coupling exists between the player and task models and Adaptation and so, even if, e.g., the number of players or tasks changes, the module can be executed.

Constructor and Attributes

Constructor

+ Adaptation()

Attributes

Name: expected type Default value Description
playerModelBridge: PlayerModelBridge - The connector for the player data models.
taskModelBridge: TaskModelBridge - The connector for the task data models.
configsGenAlg: ConfigsGenAlg - The group formation (coalitions structure generation) algorithm to be used.
name: string - A name for the Adaptation (for debug or if identification is needed).

Methods

+ init(
            playerModelBridge: PlayerModelBridge,
            taskModelBridge: TaskModelBridge,
            configsGenAlg: ConfigsGenAlg,
            name:string

    ): void

Description

This method initializes the Adaptation, getting it ready for the execution of iterations.

Parameters

Name: expected type Default value Description
playerModelBridge: PlayerModelBridge - The connector for the player data models.
taskModelBridge: TaskModelBridge - The connector for the task data models.
configsGenAlg: ConfigsGenAlg - The group formation (coalitions structure generation) algorithm to be used.
name: string - A name for the Adaptation (for debug or if identification is needed).

+ iterate(): dict { groups: int[][], profiles: InteractionsProfile[], avgCharacteristics: PlayerCharacteristics[], tasks: int[] }

Description

This method triggers the beginning of a new iteration using the current Adaptation configuration.

Return

Returns a dictionary with the following entries:

Name: expected type Description
groups: int[][] An array of groups, with each group represented as an array of IDs.
profiles: InteractionsProfile[] The profiles for each group, in the order that the groups appear in groups.
avgCharacteristics: PlayerCharacteristics[] The average learning states of each group, in the order that the groups appear in groups.
tasks: int[] The tasks assigned for each group, in the order that the groups appear in groups.

+ bootstrap(numBootstrapIterations: int): void

Description

This method performs a bootstrap on the current adaptation process, simulating the learners progression over a number of iterations.

Parameters

Name: expected type Default value Description
numBootstrapIterations: int - The number of bootstrap iterations.

- selectTask(possibleTaskIds: int[], bestConfigProfile: InteractionProfile, avgCharacteristics: PlayerCharacteristics): int

Parameters

This method selects a new task tailored to a group through its profile and average state. It returns the ID of that task in the TaskModelBridge.

Name: expected type Default value Description
possibleTaskIds: int[] - a list of possible tasks to choose
bestConfigProfile: InteractionsProfile - The profile of the group.
avgCharacteristics: PlayerCharacteristics - The average characteristics of the group.

Return

Expected type Description
int The chosen task.

- simulateReaction(playerID: int): PlayerState

Parameters

This method simulates the reaction of a given player to the task attributed to their group.

Name: expected type Default value Description
playerID: int - The ID of the player to simulate.

Return

Expected type Description
PlayerState The simulated learning state.

- calcReaction(state: PlayerState, playerID: int): PlayerState

Parameters

An auxiliary method of simulateReaction.

Name: expected type Default value Description
state: PlayerState - The state of the learner before the progression simulation.
playerID: int - The ID of the player to simulate.

Return

Expected type Description
PlayerState The simulated learning state.

Example

statisticsCourseAdapt = Adaptation()
statisticsCourseAdapt.init(playerBridge, taskBridge, regAlg = KNNRegression(3), configsGenAlg = GIMMEConfigsGen(numberOfConfigChoices=50, preferredNumberOfPlayersPerGroup = 5, PlayerCharacteristics(ability=0.5, engagement=0.5)), fitAlg = WeightedFitness(), name="Statistics Course Adaptation")

#do 50 iterations of statisticsCourseAdapt and print each chosen configuration
for i in range(50):
    print(statisticsCourseAdapt.iterate()["groups"]) #print chosen configuration

Clone this wiki locally