Outerloop Controllers

BaseController

class al_outerloop.controllers.base.OuterLoopController
new_student(student_id, action_space=None, outer_loop_args=None)
next_problem(student=None)
update(step, reward, feedback_type, question_file)

RandomController

class al_outerloop.controllers.random.Random

Bases: al_outerloop.controllers.base.OuterLoopController

new_student(student_id, action_space=None, outer_loop_args=None)

Initializes the controller to train a new agent.

next_problem(student=None)

Called when the apprentice learner agent needs a new problem. Returns a dictionary that should either be empty (signals the policy is done tutoring), or have at least the key “question_file” indicating which question the agent should do.

update(step, reward, action_type)

Called after every step in the problem to track performance, which many policies use for deciding what problem to assign. For the random controller, this just prints out and saves the step type and correctness for debugging purposes.

BKTController

class al_outerloop.controllers.bkt.BKT

Bases: al_outerloop.controllers.base.OuterLoopController

all_skills_mastered()

Returns true if all skills that we have problems for are above mastery threshold

get_problem_kcs(problem)
map_interface_to_skill(problem_name, step)

‘ Returns the skill associated with this step and problem name. Behavior depends on two fields in the BKT config file: – If interface_to_skill is present, then the step name is re-mapped to its

value in interface_to_skill
– If include_problem_start_in_kc is true, then the skill begins with any part
of the problem name that occurs before a space (e.g., if the problem name is AD 5_6_plus_1_7.brd, then AD will be prepended before the skill name).
new_student(student_id, action_space=None, outer_loop_args=None)
next_problem(student=None)
resolve_kcs(step)
update(step, reward, action_type)

StreakController

class al_outerloop.controllers.streak.Streak

Bases: al_outerloop.controllers.base.OuterLoopController

all_skills_mastered()

Returns true if all skills that we have problems for are above mastery threshold

get_problem_kcs(problem)
new_student(student_id, action_space=None, outer_loop_args=None)
next_problem(student=None)
resolve_kcs(step)
update(step, reward, action_type)