Giter Club home page Giter Club logo

or-tools's Introduction

OR-Tools - Google Optimization Tools

Build Status Build status PyPI version NuGet version

Google's software suite for combinatorial optimization.

Table of Contents

About OR-Tools

Google Optimization Tools (a.k.a., OR-Tools) is an open-source, fast and portable software suite for solving combinatorial optimization problems.

The suite contains:

  • A constraint programming solver;
  • A linear programming solvers;
  • Wrappers around commercial and other open source solvers, including mixed integer solvers;
  • Bin packing and knapsack algorithms;
  • Algorithms for the Traveling Salesman Problem and Vehicule Routing Problem;
  • Graph algorithms (shortest paths, min cost flow, max flow, linear sum assignment).

We wrote OR-Tools in C++, but also provide wrappers in Python, C# and Java.

Codemap

This software suite is composed of the following components:

├── Makefile              <- Top-level Makefile
├── makefiles             <- Subsidiary makefiles
├── CMakeLists.txt        <- Top-level CMakeLists.txt
├── cmake                 <- Subsidiary CMake files
├── ortools               <- Root directory for Source code
│   ├── base              <- Basic utilities
│   ├── algorithms        <- Basic algorithms
│   │   ├── csharp        <- C# wrapper
│   │   ├── java          <- Java wrapper
│   │   └── python        <- Python wrapper
│   ├── util              <- Utilities needed by the constraint solver
│   ├── constraint_solver <- Constraint solver
│   │   ├── csharp        <- C# wrapper
│   │   ├── java          <- Java wrapper
│   │   └── python        <- Python wrapper
│   ├── sat               <- Sat solver
│   │   ├── csharp        <- C# wrapper
│   │   ├── java          <- Java wrapper
│   │   └── python        <- Python wrapper
│   ├── bop               <- Boolean solver based on SAT
│   ├── linear_solver     <- Linear solver wrapper
│   │   ├── csharp        <- C# wrapper
│   │   ├── java          <- Java wrapper
│   │   └── python        <- Python wrapper
│   ├── glop              <- Linear solver
│   ├── lp_data           <- Data structures for linear models
│   ├── graph             <- Graph algorithms
│   │   ├── csharp        <- C# wrapper
│   │   ├── java          <- Java wrapper
│   │   └── python        <- Python wrapper
│   ├── flatzinc          <- FlatZinc interpreter
│   └── com
│       └── google
│           └── ortools   <- C# and Java source files
├── examples              <- Root directory for all examples
│   ├── data              <- Data files for examples
│   ├── cpp               <- C++ examples
│   ├── python            <- Python examples
│   ├── notebook          <- Jupyter/IPython notebooks
│   ├── csharp            <- C# examples
│   ├── fsharp            <- F# examples
│   ├── com               <- Java examples
│   ├── flatzinc          <- FlatZinc examples
│   └── tests             <- Unit tests and bug reports
├── LICENSE-2.0.txt       <- Apache license
├── gen                   <- Generated files
└── tools                 <- Delivery Tools (e.g. Windows GNU binaries, scripts, dockers)

Installation

This software suite has been tested under:

  • Ubuntu 16.04 and up (64-bit);
  • Mac OSX El Capitan with Xcode 7.x (64-bit);
  • Microsoft Windows with Visual Studio 2015 and 2017 (64-bit).

OR-Tools currently builds with a Makefile, but also provides Bazel support.

For installation instructions (both source and binary), please visit https://developers.google.com/optimization/introduction/installing.

Experimental Build with CMake

We also provide experimental CMake support.
Please check the CMake build instructions.

Quick Start

The best way to learn how to use OR-Tools is to follow the tutorials in our developer guide:

https://developers.google.com/optimization/introduction/using

If you want to learn from code examples, take a look at the examples in the examples directory.

Documentation

The complete documentation for OR-Tools is available at: https://developers.google.com/optimization/

Contributing

The CONTRIBUTING.md file contains instructions on how to submit the Contributor License Agreement before sending any pull requests (PRs). Of course, if you're new to the project, it's usually best to discuss any proposals and reach consensus before sending your first PR.

License

The OR-Tools software suite is licensed under the terms of the Apache license.
See LICENSE-2.0 for more information.

or-tools's People

Contributors

lperron avatar mizux avatar furnon avatar ambasta avatar mjfwest avatar acco32 avatar nazavode avatar cjdrake avatar legrosbuffle avatar oratier1a avatar simonlynen avatar thecoolrob avatar orwant avatar kapeck avatar supermihi avatar kennethalton avatar darkstego avatar skosch avatar petters avatar ondrasej avatar nielsdv avatar dotgourav avatar glennon avatar rhartert avatar narfunikita avatar hxd1011 avatar avinassh avatar amoshag avatar wendellduncan avatar celebio avatar

Watchers

Govind Sharma 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.