Skip to content

Using GNN and DQN to find a baetter branching heuristic for a CDCL Solver

License

Notifications You must be signed in to change notification settings

NVIDIA/GraphQSat

Repository files navigation

GQSAT

Can Q-learning with Graph Networks learn a Generalizable Branching Heuristic for a SAT solver?

How to add metadata for evaluation

python3 add_metadata.py --eval-problems-paths <path_to_folder_with_cnf>

How to train

./train.sh

How to evaluate

  • add the path to the model to the script first
  • choose the evaluation dataset
  • ./evaluate.sh

How to build a solver (you need this only if you changed the c++ code)

Run make && make python-wrap in the minisat folder.

How to build swig code (if you changed minisat-python interface, e.g. in GymSolver.i)

Go to minisat/minisat/gym, run swig -fastdispatch -c++ -python3 GymSolver.i and then repeat the building procedure from the previous step.

Individual Contributor License Agreement

Please fill out the following CLA and email to sgodil@nvidia.com: https://www.apache.org/licenses/icla.pdf

Cite

@inproceedings{kurin2019improving,
  title={Can Q-Learning with Graph Networks Learn a Generalizable Branching Heuristic for a SAT Solver?},
  author={Kurin, Vitaly and Godil, Saad and Whiteson, Shimon and Catanzaro, Bryan},
  booktitle = {Advances in Neural Information Processing Systems 32},
  year={2020}
}

Acknowledgements

We would like to thank Fei Wang whose initial implementation of the environment we used as a start, and the creators of Minisat on which it is based on. We would also like to thank the creators of Pytorch Geometric whose MetaLayer and Graph Nets implementation we built upon.

About

Using GNN and DQN to find a baetter branching heuristic for a CDCL Solver

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published