This repository contains a federated learning framework for multi-objective reinforcement learning using the OptSFC (Optimal Service Function Chaining) environment.
The project is now split into two main packages:
Optimal Service Function Chaining Environment and Training Framework
-
Purpose: Multi-objective 5G network environment and RL training utilities
-
Key Components:
optsfc.envs.mo_fiveg_mdp: Core MO 5G network environmentoptsfc.envs.morl_train: MORL training utilities (EUPG, Envelope)optsfc.envs.short_simulated_testbed: Testing and validationoptsfc.envs.short_space_dict: Environment space definitions
-
Dependencies: gymnasium, stable-baselines3, sb3-contrib, morl-baselines, torch, numpy, matplotlib, scipy
Federated Learning Framework
-
Purpose: Flower-based federated learning with OptSFC environment
-
Key Components:
MTDFed.client_rl_mtd: Federated learning client implementationMTDFed.server_rl_mtd: Federated learning serverMTDFed.custom_strategy: Custom aggregation strategies
-
Dependencies: flwr, torch, optsfc (as dependency)
# Install OptSFC first
cd OptSFC
pip install -e .
# Install MTDFed
cd ../MTDFed
pip install -e .# OptSFC
cd OptSFC
pip install -r requirements.txt
pip install -e .
# MTDFed
cd ../MTDFed
pip install -r requirements.txt
pip install -e .from optsfc import MOfiveG_net, train_eupg
# Create environment
env = MOfiveG_net("MlpPolicy", budget_reset="episodic")
# Train EUPG agent
train_eupg(
total_timesteps=100000,
model_name="eupg_model",
budget_reset="episodic"
)# Start server
flwr run MTDFed
# Or use individual components
python -c "from MTDFed.server_rl_mtd import app; app.run()"Requirements were generated using:
# Auto-detect dependencies
pipreqs OptSFC --force --savepath OptSFC.requirements.in
pipreqs . --force --savepath MTDFed.requirements.in --ignore OptSFC
# Pin to current versions
pip freeze > requirements.full.txtpython test_package_separation.py- Before: All code was in
fedl/fedl/mofiveg_momdp/ - After: OptSFC is independent package, MTDFed imports from
optsfc - Imports Changed:
- From:
from .OptSFC.envs.mo_fiveg_mdp import ... - To:
from optsfc.envs.mo_fiveg_mdp import ...
- From:
- Modularity: OptSFC can be reused in other projects
- Clean Dependencies: Each package has minimal, focused dependencies
- Independent Development: OptSFC and MTDFed can be versioned separately
- Better Testing: Each package can have its own test suite
- Distribution: OptSFC can be published to PyPI independently
MTDFedX/
├── OptSFC/ # OptSFC Package
│ ├── optsfc/
│ │ ├── __init__.py
│ │ └── envs/
│ │ ├── mo_fiveg_mdp.py
│ │ ├── morl_train.py
│ │ ├── short_simulated_testbed.py
│ │ └── short_space_dict.py
│ ├── pyproject.toml
│ ├── requirements.txt
│ └── README.md
├── MTDFed/ # MTDFed Package
│ ├── MTDFed/
│ │ ├── __init__.py
│ │ ├── client_rl_mtd.py
│ │ ├── server_rl_mtd.py
│ │ └── custom_strategy.py
│ ├── pyproject.toml
│ ├── requirements.txt
│ └── README.md
├── test_package_separation.py
└── README.md # This file