inetmanet-4.x
inetmanet-4.x copied to clipboard
Implement Q-learning routing protocol
Adds reinforcement learning-based routing using Q-learning algorithm. Nodes learn optimal routes through experience rather than predefined metrics.
Core Protocol (src/inet/routing/qlearning/)
- QLearn.{h,cc,ned}: Main protocol implementation with Q-table for (destination, next_hop) → quality mappings
- QLearningPacket.msg: HELLO (17B) and UPDATE (21B) message definitions
- QLearningPacketSerializer.{h,cc}: Network serialization
- Q-value updates via:
Q(s,a) ← Q(s,a) + α[R + γ·max(Q(s',a')) - Q(s,a)] - Epsilon-greedy route selection (exploration vs exploitation)
- Periodic neighbor discovery via HELLO broadcasts
Node & Examples
- QLearningRouter.ned: AdhocHost extension with integrated Q-learning
- examples/qlearning/: Three test scenarios (static, mobile, 3-node)
- tests/module/QLearningSimpleTest.test: Basic functionality verification
Configuration
Tunable parameters:
- Learning:
learningRate(α=0.5),discountFactor(γ=0.9),explorationRate(ε=0.1) - Protocol:
helloInterval(2s),routeTimeout(10s),qUpdateInterval(5s) - Rewards:
successReward(+1.0),failurePenalty(-1.0),hopPenalty(-0.1/hop)
Usage:
network MyNetwork {
submodules:
node[10]: QLearningRouter {
qlearn.learningRate = 0.5;
qlearn.explorationRate = 0.1;
}
}
Build Integration
- Added
QLearningandQLearningExamplesfeatures to.oppfeatures - Statistics: packets sent/received/forwarded/dropped, Q-table size, neighbor count
Original prompt
I want to implement q-learning routing
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.