Giter Site home page Giter Site logo

mines-opt-ml / fpo-dys Goto Github PK

View Code? Open in Web Editor NEW
1.0 3.0 0.0 60.64 MB

Operator splitting can be used to design easy-to-train models for predict-and-optimize tasks, which scale effortlessly to problems with thousands of variables.

Home Page: http://fpo-dys.research.typal.academy

License: MIT License

Python 20.33% Jupyter Notebook 79.27% JavaScript 0.03% CSS 0.22% Shell 0.15%
machine-learning operator-splitting predict-and-optimize learning-to-optimize

fpo-dys's Introduction

License: MIT Docs

Faster Predict-and-Optimize (FPO) with Davis-Yin Splitting (DYS)

In many practical settings, a combinatorial problem must be repeatedly solved with similar, but distinct parameters. Yet, the parameters $w$ are not directly observed; only contextual data $d$ that correlates with $w$ is available. It is tempting to use a neural network to predict $w$ given $d$, but training such a model requires reconciling the discrete nature of combinatorial optimization with the gradient-based frameworks used to train neural networks. One approach to overcoming this issue is to consider a continuous relaxation of the combinatorial problem. While existing such approaches have shown to be highly effective on small problems (10--100 variables) they do not scale well to large problems. In this work, we show how recent results in operator splitting can be used to design such a system which is easy to train and scales effortlessly to problems with thousands of variables.

Installation

See src/requirements.txt for standard required packages. In addition, the code in this repository also requires PyEPO package.

Quick Start

After installation, type

python -m src.knapsack.train --model_type DYS --num_item 20 --num-knapsack 2

to train our DYS model on a sample knapsack task. To duplicate, for example, our shortest path experiment, type

bash shortest_path_experiment.sh

Publication

Learning to Optimize Integer Linear Programs with Davis-Yin Splitting (arXiv Link)

@article{mckenzie2023faster,
  title={Faster Predict-and-Optimize with Davis-Yin Splitting},
  author={McKenzie, Daniel and Wu Fung, Samy and Heaton, Howard},
  journal={arXiv preprint arXiv:2301.13395},
  year={2023}
}

See documentation site for more details.

fpo-dys's People

Contributors

danielmckenzie avatar howardheaton avatar swufung avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

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.