Skip to content
Merged
Show file tree
Hide file tree
Changes from 68 commits
Commits
Show all changes
69 commits
Select commit Hold shift + click to select a range
3de6f24
feat(mab): add LocalSearchOperator concept and AdaptiveLocalSearchSel…
lv416e Oct 14, 2025
71a7cb9
docs(tasks): mark Task 6.2 as complete
lv416e Oct 14, 2025
99d9111
fix(mab): add bounds checking in apply_local_search to prevent reward…
lv416e Oct 14, 2025
e730748
refactor(mab): use move semantics and mutable lambda in add_operator
lv416e Oct 14, 2025
4fe1254
refactor(test): extract TSP instance creation to helper struct
lv416e Oct 14, 2025
12c5563
fix(mab): add empty operator checks to prevent crashes
lv416e Oct 14, 2025
0b1ae9e
fix(mab): prevent adding more operators than configured capacity
lv416e Oct 14, 2025
b910aed
refactor(test): use stat.success_rate directly instead of recalculating
lv416e Oct 14, 2025
6b8f5a4
refactor(mab): remove duplicate LocalSearchOperator concept
lv416e Oct 14, 2025
45b0b46
fix(mab): add tracking state checks to prevent API misuse
lv416e Oct 14, 2025
c66be00
refactor(mab): improve robustness and exception safety
lv416e Oct 14, 2025
b6705c4
perf(mab): measure only operator execution time, excluding validation
lv416e Oct 14, 2025
07d12f9
docs(mab): document future refactoring consideration
lv416e Oct 14, 2025
12879a4
refactor(mab): apply pass-by-value-and-move idiom to add_operator
lv416e Oct 14, 2025
5e3478c
fix(tests): add double overload for assert_ge and improve test robust…
lv416e Oct 14, 2025
d44870b
docs(mab): document future LocalSearchOperator concept extension
lv416e Oct 14, 2025
00dabf4
feat(mab): improve AdaptiveOperatorSelector consistency and robustness
lv416e Oct 14, 2025
c750468
docs(mab): enhance refactoring TODO with detailed analysis and rationale
lv416e Oct 14, 2025
e680338
refactor(mab): remove duplicate CrossoverOperator concept definition
lv416e Oct 14, 2025
9bc8750
fix(test): correct operation-report interleaving in hybrid MAB test
lv416e Oct 14, 2025
25c4848
feat(test): add assert_lt overload for double values
lv416e Oct 14, 2025
be34345
test(mab): strengthen local search improvement assertion
lv416e Oct 14, 2025
7484230
refactor(mab): remove AI tool reference from TODO comment
lv416e Oct 14, 2025
87dcae0
refactor(mab): remove AI tool reference from design TODO
lv416e Oct 14, 2025
5b01461
docs(mab): add minimization assumption comment for consistency
lv416e Oct 14, 2025
1b27520
refactor(test): remove TDD RED prefixes from test comments
lv416e Oct 14, 2025
6033376
fix(test): add missing <numeric> header for std::iota
lv416e Oct 14, 2025
df33e98
refactor(mab): add forward declarations for get_thread_rng()
lv416e Oct 14, 2025
c285aae
refactor(test): introduce test fixtures for MAB local search tests
lv416e Oct 14, 2025
e6effa1
docs(mab): add TODO for aggregate timing metrics in OperatorStats
lv416e Oct 14, 2025
c2e6ac2
refactor(mab): deduplicate get_thread_rng() as namespace-level function
lv416e Oct 14, 2025
df900c6
test(mab): add comprehensive error handling tests
lv416e Oct 14, 2025
ad971b2
feat(mab): add num_operators validation to AdaptiveOperatorSelector
lv416e Oct 15, 2025
598dc20
feat(mab): add num_operators validation to AdaptiveLocalSearchSelector
lv416e Oct 15, 2025
5df4626
test(mab): add zero operators validation tests
lv416e Oct 15, 2025
5a3dbc1
fix(mab): add missing <utility> header for std::pair
lv416e Oct 15, 2025
a20bbe3
fix(test): add missing <utility> header for std::pair
lv416e Oct 15, 2025
9a40cbf
fix(mab): improve thread-local RNG seeding for better entropy
lv416e Oct 15, 2025
6064e87
fix(mab): use full 64-bit clock entropy for RNG seeding
lv416e Oct 15, 2025
3b55b36
refactor(mab): condense TODO comment for better readability
lv416e Oct 15, 2025
047ed83
fix(mab): use runtime_error for operator configuration checks
lv416e Oct 15, 2025
788f83f
fix(mab): add expected/actual counts to crossover out-of-bounds error
lv416e Oct 15, 2025
cbbacb4
fix(mab): add expected/actual counts to local search out-of-bounds error
lv416e Oct 15, 2025
31aa2b4
docs(mab): refine TODO comments for clarity and measurability
lv416e Oct 15, 2025
6d5fa23
test(mab): strengthen performance and improvement rate test assertions
lv416e Oct 15, 2025
7c8d1d2
test(mab): strengthen success_rate assertion to verify 100% success
lv416e Oct 15, 2025
efad2d7
fix(test): replace report_fitness_change with report_fitness_improvement
lv416e Oct 15, 2025
bbb2ef1
docs(test): add explanatory comment for using namespace directives
lv416e Oct 15, 2025
90c4f4b
refactor(test): remove unused add_three_operators() method
lv416e Oct 15, 2025
86cc59f
docs(test): clarify crossover fitness reporting simplification
lv416e Oct 15, 2025
c51d4fa
refactor(mab): add LocalSearchFn type alias for improved readability
lv416e Oct 16, 2025
156135b
refactor(mab): add CrossoverFn type alias for consistency
lv416e Oct 16, 2025
d65b4cc
fix(mab): add explicit #include <string> for std::to_string portability
lv416e Oct 16, 2025
fc1a7f3
docs(mab): update TODO to acknowledge duplication threshold reached
lv416e Oct 16, 2025
798b8bc
docs(mab): add GitHub Issue #32 reference to refactoring TODO
lv416e Oct 16, 2025
2ec43fb
refactor(mab): enhance error messages with contextual debugging info
lv416e Oct 16, 2025
63e394f
docs(mab): clarify entropy distribution in RNG initialization
lv416e Oct 16, 2025
34df53c
docs(mab): add critical documentation for research-grade quality
lv416e Oct 16, 2025
bfeac49
refactor(mab): extract lengthy validation TODO to Issue #33
lv416e Oct 16, 2025
1d8ccf8
refactor(mab): add sstream header for efficient error message constru…
lv416e Oct 16, 2025
e29eca6
refactor(mab): use stringstream for AdaptiveOperatorSelector::add_ope…
lv416e Oct 16, 2025
cc9e09e
refactor(mab): use stringstream for AdaptiveOperatorSelector::apply_c…
lv416e Oct 16, 2025
17340c3
refactor(mab): use stringstream for AdaptiveLocalSearchSelector::add_…
lv416e Oct 16, 2025
2a9b56d
refactor(mab): use stringstream for AdaptiveLocalSearchSelector::appl…
lv416e Oct 16, 2025
2fba385
refactor(mab): add thread header for enhanced RNG seeding
lv416e Oct 16, 2025
3161259
refactor(mab): incorporate thread ID in RNG seed for collision preven…
lv416e Oct 16, 2025
1c8ccd8
refactor(mab): use perfect forwarding in AdaptiveOperatorSelector::ad…
lv416e Oct 16, 2025
c5de55f
refactor(mab): use perfect forwarding in AdaptiveLocalSearchSelector:…
lv416e Oct 16, 2025
daa8aa9
test(helpers): add tolerance parameters to floating-point assertions
lv416e Oct 16, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 10 additions & 6 deletions .kiro/specs/evolab/tasks.md
Original file line number Diff line number Diff line change
Expand Up @@ -114,13 +114,17 @@
- _Requirements: FR-LS-003_
- _Pull Request: Ready for review_

- [ ] 6.2 Integrate Lin-Kernighan with Multi-Armed Bandit scheduler
- Extend AdaptiveOperatorSelector to support local search operators alongside crossover
- Implement performance tracking for Lin-Kernighan moves (improvement rate, execution time)
- Add Lin-Kernighan as optional local search component in configuration system
- Create hybrid Memetic GA configuration templates combining crossover and Lin-Kernighan
- [x] 6.2 Integrate Lin-Kernighan with Multi-Armed Bandit scheduler
- ✅ Extended AdaptiveOperatorSelector pattern to support local search operators alongside crossover
- ✅ Implemented LocalSearchOperator concept for type-safe local search algorithm interface
- ✅ Created AdaptiveLocalSearchSelector class with UCB and Thompson Sampling support
- ✅ Added performance tracking: execution time (chrono-based) and improvement rate via OperatorStats
- ✅ Comprehensive test suite with 21 tests (test_mab_local_search.cpp) - all passing
- ✅ Support for LinKernighan, TwoOpt, and Random2Opt local search operators
- ⚠️ Configuration system integration deferred (requires runtime operator selection design)
- ⚠️ Hybrid Memetic GA templates deferred (awaiting config system enhancement)
- _Requirements: FR-LS-003, FR-AC-001_
- _Note: Basic LK integration with GA complete; MAB scheduler extension is future enhancement_
- _Note: Core MAB local search integration complete; config templates are future enhancement_

#### 7. Diversity Maintenance Implementation
- [ ] 7.1 Implement population diversity metrics
Expand Down
1 change: 1 addition & 0 deletions include/evolab/evolab.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@
#include <evolab/operators/selection.hpp>

// Local search algorithms - memetic algorithm components
#include <evolab/local_search/lk.hpp>
#include <evolab/local_search/two_opt.hpp>

// Adaptive operator scheduling - multi-armed bandit approaches
Expand Down
Loading