This is an official implementation of Comyco for $QoE_\texttt{lin}$. Compared with the original Comyco, we made several changes here.
Instant solver: we upgrade the "MPC-based solver" to "Beam-search solver", which extends the future look horizon to 15 (default: 8). In other words, by leveraging beam search technologies, Comyco can obtain more precise expert strategies with lower execution costs.
Discounted bandwidth: Considering that Comyco sometimes tends to pick higher bitrates due to the almost omniscient Instant Solver, we integrate a discount factor of 0.9 for computing bandwidth. This has proven to be effective in helping Comyco avoid rebuffering events.
Neural network: For the sack of fairness, Comyco's neural network is aligned with the Pensieve's.
Loss function: We adjust the weight of entropy to 0.1 for reducing exploration. Note that this differs slightly from the description in the original paper.
We use pybind11 to implement a beam-search solver. To install it please do the following steps:
pip install pybind11
cd cc
sh build.sh
The pre-build version was built using Python 3.7.9 and runs on Ubuntu 20.04.
Just type
python train.py
if you have already installed Tensorflow, TFlearn and tqdm. You can monitor the learning process during training using Tensorboard. We have saved one of the training logs in the ./logs/ directory.
Just type
python test.py path_to_your_model
to test the trained model. Here we provide a pre-trained model in
python test.py pretrained/model
plot the figure using
pip install matplotlib
python plot.py
Results are reported in 'imgs/cdf.png'. As shown, Comyco improves the average QoE of 6.5\% compared to Pensieve.
HSDPA
FCC
Oboe