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

  1. Accuracy Rate: How often you answer correctly
  2. Response Time: How quickly you respond
  3. Consistency: Stability of your performance
  4. User Confidence: Self-reported understanding
  5. 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:

  1. Optimal Challenge: Maintains the "desirable difficulty" zone
  2. Efficient Learning: Focuses time on challenging material
  3. Reduced Frustration: Prevents excessive difficulty
  4. Motivation Maintenance: Balances success and challenge
  5. 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:

  1. You review a card and answer correctly but slowly
  2. 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)
  3. Weighted combination: +0.02
  4. Card difficulty increases slightly from 0.45 to 0.47
  5. Next review interval is adjusted accordingly

🚀 Advanced Features

FlashGenie's difficulty system includes advanced capabilities:

  1. Difficulty Clustering: Identifies groups of similarly difficult content
  2. Concept Difficulty Mapping: Recognizes challenging knowledge areas
  3. Adaptive Session Planning: Creates balanced study sessions
  4. Difficulty Forecasting: Predicts future performance
  5. Learning Velocity Analysis: Tracks improvement rate by difficulty

Next: Explore the Cognitive Science Foundation behind FlashGenie.