inetmanet-4.x icon indicating copy to clipboard operation
inetmanet-4.x copied to clipboard

Implement Q-learning routing protocol

Open Copilot opened this issue 5 months ago • 1 comments

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 QLearning and QLearningExamples features 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.

Copilot avatar Nov 06 '25 12:11 Copilot