Coder Social home page Coder Social logo

lanceshih / elegantrl_solver Goto Github PK

View Code? Open in Web Editor NEW

This project forked from ai4finance-foundation/rlsolver

0.0 0.0 0.0 62.35 MB

Solvers for optimization problems with an emphasis on reinforcement learning and GPU computing.

License: MIT License

Python 99.34% MATLAB 0.66%

elegantrl_solver's Introduction

RLSolver: High-performance GPU-based Solvers for Nonconvex and NP-Complete Problems

We aim to showcase that reinforcement learning (RL) or machine learning (ML) with GPUs delivers the best benchmark performance for large-scale nonconvex and NP-complete problems. RL with the help of GPU computing can obtain high-quality solutions within short time.

Problem-oriented Repos

Key Technologies

  • RL/ML tricks such as learn to optimize and curriculum learning.
  • OR tricks such as local search and tabu search.
  • Massively parallel sampling of Markov chain Monte Carlo (MCMC) simulations on GPU using thousands of CUDA cores and tensor cores.
  • Podracer scheduling on a GPU cloud such as DGX-2 SuperPod.

Key References

  • Mazyavkina, Nina, et al. "Reinforcement learning for combinatorial optimization: A survey." Computers & Operations Research 134 (2021): 105400.

  • Bengio, Yoshua, Andrea Lodi, and Antoine Prouvost. "Machine learning for combinatorial optimization: a methodological tour d’horizon." European Journal of Operational Research 290.2 (2021): 405-421.

  • Peng, Yun, Byron Choi, and Jianliang Xu. "Graph learning for combinatorial optimization: a survey of state-of-the-art." Data Science and Engineering 6, no. 2 (2021): 119-141.

  • Nair, Vinod, et al. "Solving mixed integer programs using neural networks." arXiv preprint arXiv:2012.13349 (2020).

  • Makoviychuk, Viktor, et al. "Isaac Gym: High performance GPU based physics simulation for robot learning." Thirty-fifth Conference on Neural Information Processing Systems Datasets and Benchmarks Track (Round 2). 2021.

Workflow

Datasets

  • Maxcut:

    1. Gset is stored in the "data" folder of this repo. The number of nodes is from 800 to 10000.

    2. Syn is the synthetic data obtained by calling the function generate_write in util.py. The number of nodes is from 10 to 50000. The (partial) synthetic data is stored in the "data" folder of this repo. If users need all the synthetic data, please refer to Google Drive or Baidu Wangpan (CODE hojh for China users).

  • TSP: TSPLIB

Benchmarks

  • Learning to branch

code 2023 AAAI Reinforcement Learning for Branch-and-Bound Optimisation using Retrospective Trajectories

code 2021 AAAI Parameterizing Branch-and-Bound Search Trees to Learn Branching Policies

  • Learning to cut

code 2020 ICML Reinforcement learning for integer programming: Learning to cut

  • RL/ML-based heuristic

code (greedy) 2017 NeurIPS Learning Combinatorial Optimization Algorithms over Graphs

code (local search) 2023, A Monte Carlo Policy Gradient Method with Local Search for Binary Optimization

code (LKH for TSP) 2021 AAAI Combining reinforcement learning with Lin-Kernighan-Helsgaun algorithm for the traveling salesman problem

  • Variational annealing

code (VCA_RNN) 2023 Machine_Learning Supplementing recurrent neural networks with annealing to solve combinatorial optimization problems

code (VNA) 2021 Nature_Machine_Intelligence Variational neural annealing

Solvers to Compare with

Gurobi is the state-of-the-art solver. The license is required, and professors/students at universities can obtain the academic license for free.

SCIP is a well-known open-source solver, and its simplex is commonly used in "learning to branch/cut". SCIP is open-source and free.

Other Solvers

COPT: a mathematical optimization solver for large-scale problems.

CPLEX: a high-performance mathematical programming solver for linear programming, mixed integer programming, and quadratic programming.

Xpress: an extraordinarily powerful, field-installable Solver Engine.

BiqMac: a solver only for binary quadratic or maxcut. Users should upload txt file, but the response time is not guaranteed. If users use it, we recommend to download the sources and run it by local computers.

Store Results

Partial results are stored in the folder "result" of this repo. All the results are stored in Google Drive or Baidu Wangpan (CODE: hojh for China users).

With respect to maxcut, please refer to Maxcut. With respect to TSP, please refer to TSP.

Performance

Maxcut. TSP. Quantum circuits MIMO Compressive sensing

File Structure

RLSolver
└──helloworld
   └──maxcut
        └──data
        └──result
        └──util.py
        └──mcmc.py
        └──l2a.py (ours)
        └──baseline
            └──greedy.py
            └──gurobi.py
            └──random_walk.py
            └──simulated_annealing.py
            └──variational_classical_annealing_RNN
            └──variational_neural_annealing
└──benchmark
   └──maxcut.md
   └──graph_partitioning.md
   └──tsp.md
   └──tnco.md
└──rlsolver (main folder)
   └──util.py
   └──data
      └──graph
      └──quantum_circuits
      └──milp_coefs
      └──binary_coefs
   └──problems
      └──maxcut
          └──baseline
          └──mcmc.py
          └──l2a.py(ours)
      └──tnco
          └──baseline
          └──mcmc.py
          └──l2a.py(ours)
      └──mimo
          └──baseline
          └──mcmc.py
          └──l2a.py(ours)




Finished

  • MIMO
  • Maxcut
  • TNCO
  • quantum circuits

TODO

  • TSP
  • VRP (Vehicle routing problem)
  • Graph partitioning
  • Minimum vertex cover
  • MILP
  • Portfolio allocation

Related Websites

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.