Difficulty Adjustment.md - himent12/FlashGenie GitHub Wiki
🎚️ Difficulty Adjustment
FlashGenie's intelligent difficulty adjustment system automatically calibrates each flashcard's difficulty level based on your performance, creating an optimal learning challenge.
🎯 Multi-Factor Difficulty Calculation
FlashGenie uses a sophisticated multi-factor approach to determine and adjust card difficulty:
graph TD
A[Review Performance] --> B[Accuracy Factor]
A --> C[Response Time Factor]
A --> D[Consistency Factor]
E[User Confidence] --> F[Confidence Factor]
G[Historical Data] --> H[Trend Factor]
B & C & D & F & H --> I[Weighted Combination]
I --> J[New Difficulty Level]
J --> K[Adaptive Scheduling]
Primary Factors
- Accuracy Rate: How often you answer correctly
- Response Time: How quickly you respond
- Consistency: Stability of your performance
- User Confidence: Self-reported understanding
- Performance Trend: Recent improvement or decline
Mathematical Model
The difficulty adjustment uses a weighted combination:
$$D_{new} = D_{current} + \sum_{i=1}^{n} w_i \times f_i$$
Where:
- $D_{new}$ is the new difficulty level
- $D_{current}$ is the current difficulty level
- $w_i$ is the weight for factor $i$
- $f_i$ is the adjustment contribution from factor $i$
🧠 Adaptive Learning Benefits
FlashGenie's difficulty adjustment creates several learning advantages:
- Optimal Challenge: Maintains the "desirable difficulty" zone
- Efficient Learning: Focuses time on challenging material
- Reduced Frustration: Prevents excessive difficulty
- Motivation Maintenance: Balances success and challenge
- Personalized Experience: Adapts to individual learning patterns
📊 Difficulty Scale
FlashGenie uses a normalized difficulty scale from 0.0 to 1.0:
Difficulty Range | Category | Characteristics |
---|---|---|
0.0 - 0.3 | Easy | High accuracy, fast response, high confidence |
0.3 - 0.6 | Medium | Good accuracy, moderate response time |
0.6 - 0.8 | Challenging | Occasional errors, longer response time |
0.8 - 1.0 | Difficult | Frequent errors, slow response, low confidence |
🔧 Customization Options
You can customize the difficulty adjustment system:
# Adjust factor weights
python -m flashgenie config set difficulty.accuracy_weight 0.4
python -m flashgenie config set difficulty.response_time_weight 0.3
python -m flashgenie config set difficulty.consistency_weight 0.1
python -m flashgenie config set difficulty.confidence_weight 0.2
# Set adjustment sensitivity
python -m flashgenie config set difficulty.adjustment_sensitivity 0.05
# Configure minimum reviews before adjustment
python -m flashgenie config set difficulty.min_reviews_for_adjustment 3
📈 Difficulty Progression
FlashGenie tracks difficulty changes over time:
# View difficulty progression
python -m flashgenie analyze difficulty-progression "Spanish Vocabulary"
# Compare difficulty distributions
python -m flashgenie analyze difficulty-distribution "Spanish" "French"
🔍 Real-World Example
Here's how difficulty adjustment works in practice:
- You review a card and answer correctly but slowly
- FlashGenie calculates:
- Accuracy factor: +0.0 (correct answer)
- Response time factor: +0.05 (slow response)
- Consistency factor: -0.02 (consistently correct)
- Confidence factor: +0.03 (medium confidence)
- Trend factor: -0.01 (improving trend)
- Weighted combination: +0.02
- Card difficulty increases slightly from 0.45 to 0.47
- Next review interval is adjusted accordingly
🚀 Advanced Features
FlashGenie's difficulty system includes advanced capabilities:
- Difficulty Clustering: Identifies groups of similarly difficult content
- Concept Difficulty Mapping: Recognizes challenging knowledge areas
- Adaptive Session Planning: Creates balanced study sessions
- Difficulty Forecasting: Predicts future performance
- Learning Velocity Analysis: Tracks improvement rate by difficulty
Next: Explore the Cognitive Science Foundation behind FlashGenie.