开源项目 learn2branch
使用教程
1、项目介绍
learn2branch
是一个用于精确组合优化的开源项目,它利用图卷积神经网络(Graph Convolutional Neural Networks, GCN)来解决组合优化问题。该项目在 NeurIPS 2019 上发表,并提供了官方实现。主要目标是帮助用户通过机器学习方法来优化组合问题,特别是在分支定界算法中的分支决策。
2、项目快速启动
安装
首先,克隆项目仓库到本地:
git clone https://github.com/ds4dm/learn2branch.git
cd learn2branch
安装必要的依赖:
pip install -r requirements.txt
生成实例
生成 MILP 实例:
python 01_generate_instances.py setcover
生成监督学习数据集:
python 02_generate_samples.py setcover -j 4 # 使用4个CPU
训练模型
训练图卷积神经网络模型:
for i in {0..4}; do
python 03_train_gcnn.py setcover -m baseline -s $i
python 03_train_gcnn.py setcover -m mean_convolution -s $i
python 03_train_gcnn.py setcover -m no_prenorm -s $i
done
训练竞争对手模型:
for i in {0..4}; do
python 03_train_competitor.py setcover -m competitor_model -s $i
done
3、应用案例和最佳实践
应用案例
learn2branch
主要应用于组合优化问题,如集合覆盖问题(Set Covering)。通过使用图卷积神经网络,项目能够有效地预测分支定界算法中的最佳分支决策,从而提高求解效率。
最佳实践
- 数据预处理:确保生成的实例和数据集质量高,这对于训练模型的性能至关重要。
- 模型选择:根据具体问题选择合适的模型架构,如 baseline、mean_convolution 或 no_prenorm。
- 超参数调优:通过实验调整学习率、批大小等超参数,以获得最佳模型性能。
4、典型生态项目
learn2branch-ecole
learn2branch-ecole
是 learn2branch
的一个重实现版本,使用 Ecole 库和 PyTorch 框架。它提供了更简洁和高效的实现,并且易于扩展和定制。
安装
git clone https://github.com/ds4dm/learn2branch-ecole.git
cd learn2branch-ecole
pip install -r requirements.txt
使用
生成数据集:
python 02_generate_dataset.py setcover
训练 GNN 模型:
python 03_train_gnn.py setcover
评估模型:
python 04_evaluate.py setcover
通过这些步骤,用户可以快速上手并利用 learn2branch
和 learn2branch-ecole
解决复杂的组合优化问题。