Commit 7e984525c9fd745a6b3da054df48469ed0420d62
1 parent
5d859a41
Exists in
master
and in
1 other branch
fix forgetting factor (was hardcoded)
Showing
2 changed files
with
8 additions
and
6 deletions
Show diff stats
aprendizations/student.py
| @@ -12,11 +12,12 @@ logger = logging.getLogger(__name__) | @@ -12,11 +12,12 @@ logger = logging.getLogger(__name__) | ||
| 12 | 12 | ||
| 13 | 13 | ||
| 14 | # ---------------------------------------------------------------------------- | 14 | # ---------------------------------------------------------------------------- |
| 15 | -# kowledge state of each student....?? | 15 | +# kowledge state of a student |
| 16 | # Contains: | 16 | # Contains: |
| 17 | -# state - dict of topics with state of unlocked topics | 17 | +# state - dict of unlocked topics and their levels |
| 18 | # deps - access to dependency graph shared between students | 18 | # deps - access to dependency graph shared between students |
| 19 | -# topic_sequence - list with the order of recommended topics | 19 | +# topic_sequence - list with the recommended topic sequence |
| 20 | +# current_topic - nameref of the current topic | ||
| 20 | # ---------------------------------------------------------------------------- | 21 | # ---------------------------------------------------------------------------- |
| 21 | class StudentState(object): | 22 | class StudentState(object): |
| 22 | # ======================================================================= | 23 | # ======================================================================= |
| @@ -34,13 +35,13 @@ class StudentState(object): | @@ -34,13 +35,13 @@ class StudentState(object): | ||
| 34 | 35 | ||
| 35 | # ------------------------------------------------------------------------ | 36 | # ------------------------------------------------------------------------ |
| 36 | # Updates the proficiency levels of the topics, with forgetting factor | 37 | # Updates the proficiency levels of the topics, with forgetting factor |
| 37 | - # FIXME no dependencies are considered yet... | ||
| 38 | # ------------------------------------------------------------------------ | 38 | # ------------------------------------------------------------------------ |
| 39 | def update_topic_levels(self): | 39 | def update_topic_levels(self): |
| 40 | now = datetime.now() | 40 | now = datetime.now() |
| 41 | for tref, s in self.state.items(): | 41 | for tref, s in self.state.items(): |
| 42 | dt = now - s['date'] | 42 | dt = now - s['date'] |
| 43 | - s['level'] *= 0.98 ** dt.days # forgetting factor | 43 | + forgetting_factor = self.deps.node[tref]['forgetting_factor'] |
| 44 | + s['level'] *= forgetting_factor ** dt.days # forgetting factor | ||
| 44 | 45 | ||
| 45 | # ------------------------------------------------------------------------ | 46 | # ------------------------------------------------------------------------ |
| 46 | # Unlock topics whose dependencies are satisfied (> min_level) | 47 | # Unlock topics whose dependencies are satisfied (> min_level) |
demo/demo.yaml
| @@ -4,7 +4,7 @@ title: Example | @@ -4,7 +4,7 @@ title: Example | ||
| 4 | database: students.db | 4 | database: students.db |
| 5 | 5 | ||
| 6 | 6 | ||
| 7 | -# values applie to each topic, if undefined there | 7 | +# values applied to each topic, if undefined there |
| 8 | file: questions.yaml | 8 | file: questions.yaml |
| 9 | shuffle_questions: true | 9 | shuffle_questions: true |
| 10 | choose: 6 | 10 | choose: 6 |
| @@ -27,3 +27,4 @@ topics: | @@ -27,3 +27,4 @@ topics: | ||
| 27 | name: Sistema solar | 27 | name: Sistema solar |
| 28 | deps: | 28 | deps: |
| 29 | - math | 29 | - math |
| 30 | + forgetting_factor: 0.1 |