Learning-based Solver¶
|
A unsupervised learning solver that uses Graph Auto-Encoder (GAE) to cluster the physical nodes. |
|
An Unsupervised Learning-based solver that uses Hopfield Network to construct the subgraph. |
|
A Reinforcement Learning-based solver for VNE that uses Monte Carlo Tree Search (MCTS) algorithm. |
|
A Reinforcement Learning-based solver that uses Policy Gradient (PG) as the training algorithm and Convolutional Neural Network (CNN) as the neural network model. |
|
A Reinforcement Learning-based solver that uses Policy Gradient (PG) as the training algorithm and Convolutional Neural Network (CNN) as the neural network model. |
|
A Reinforcement Learning-based solver that uses Policy Gradient (PG) as the training algorithm and Convolutional Neural Network (CNN) as the neural network model. |
Unsupervised Learning-based Solver¶
GaeClusteringSolver¶
Documentation
- class virne.solver.learning.GaeClusteringSolver(controller, recorder, counter, logger, num_features=1, num_clusters=4, **kwargs)[source]¶
A unsupervised learning solver that uses Graph Auto-Encoder (GAE) to cluster the physical nodes.
References
Farzad Habibi et al. “Accelerating Virtual Network Embedding with Graph Neural Networks”. In CNSM, 2020.
- Variables:
num_features (int) – The number of features of the physical nodes.
num_clusters (int) – The number of clusters.
argva (ARGVA) – The auto-encoder model.
discriminator_optimizer (torch.optim) – The optimizer for the discriminator.
argva_optimizer (torch.optim) – The optimizer for the auto-encoder.
pretrain_max_epochs (int) – The maximum number of epochs for pre-training.
fine_tune_max_epochs (int) – The maximum number of epochs for fine-tuning.
max_num_attempts (int) – The maximum number of attempts to find a good clustering.
num_arrived_v_nets (int) – The number of virtual networks that have arrived.
HopfieldNetworkSolver¶
Reinfocement Learning-based Solver¶
MctsSolver¶
Documentation
- class virne.solver.learning.MctsSolver(controller, recorder, counter, logger, config, **kwargs)[source]¶
A Reinforcement Learning-based solver for VNE that uses Monte Carlo Tree Search (MCTS) algorithm.
References
Soroush Haeri et al. “Virtual Network Embedding via Monte Carlo Tree Search”. TCYB, 2018.
- Variables:
computation_budget – the number of times to run the search algorithm
exploration_constant – the exploration constant in the UCB1 formula
- best_child(node, is_exploration)[source]¶
Use the UCB algorithm to blance the exploration and exploitation Return the node with highest value (When inference phase, directly use greedy stratagy)
- search(node)[source]¶
Monte Carlo Tree Search
Starting from a root node, find one subnode with highest exploitation value based on the exploration experience
- Selection
- Select one worth node to explore. There are three types nodes:
Never visited (2) Uncompleted expanded (3) Completed expanded
- Expansion
Add statistic information to selected node
- Simulation
Get the final reward estimating the quality of visited nodes.
- Backpropagation
Update the exploitation value of visited nodes using the obtained reward
Inference: Selected the subnode with highest exploitation value
PgMlpSolver¶
PgCnnSolver¶
PgCnn2Solver¶
Documentation
- class virne.solver.learning.PgCnn2Solver(controller, recorder, counter, logger, config, **kwargs)[source]¶
A Reinforcement Learning-based solver that uses Policy Gradient (PG) as the training algorithm and Convolutional Neural Network (CNN) as the neural network model. Additionally, more graph features are used as the input of the CNN.