OR-Tools - Ferramentas de otimização do Google
Pacote de software do Google para otimização combinatória.
Índice
- Sobre ferramentas OR
- Mapa de código
- Instalação
- Início rápido
- Documentação
- Contribuindo
- Licença
Sobre ferramentas OR
Google Optimization Tools (também conhecido como OR-Tools) é um pacote de software de código aberto, rápido e portátil para resolver problemas de otimização combinatória.
A suíte contém:
- Solucionador de programação com duas restrições (CP* e CP-SAT);
- Dois solucionadores de programação linear (Glop e PDLP);
- Wrappers em torno de solucionadores comerciais e outros solucionadores de código aberto, incluindo solucionadores de números inteiros mistos;
- Algoritmos de empacotamento e mochila;
- Algoritmos para o Problema do Caixeiro Viajante e Problema de Roteamento de Veículos;
- Algoritmos gráficos (caminhos mais curtos, fluxo de custo mínimo, fluxo máximo, atribuição de soma linear).
Escrevemos OR-Tools em C++, mas fornecemos wrappers em Python, C# e Java.
Mapa de código
Este conjunto de software é composto pelos seguintes componentes:
- Makefile de nível superior para construção baseada em GNU Make.
- Makefiles Subsidiária Faça arquivos, CI e construa documentação do sistema.
- CMakeLists.txt Nível superior para construção baseada em CMake.
- cmake Arquivos CMake subsidiários, CI e documentação do sistema de construção.
- WORKSPACE Nível superior para construção baseada em Bazel.
- bazel Arquivos subsidiários do Bazel, CI e documentação do sistema de compilação.
- ortools Diretório raiz do código-fonte.
- base Utilitários básicos.
- algoritmos Algoritmos básicos.
- amostras Amostras cuidadosamente elaboradas.
- gráfico Algoritmos de gráfico.
- amostras Amostras cuidadosamente elaboradas.
- linear_solver Wrapper do solucionador linear.
- amostras Amostras cuidadosamente elaboradas.
- glop Solucionador de programação linear baseado em Simplex.
- amostras Amostras cuidadosamente elaboradas.
- pdlp Solucionador de programação linear de primeira ordem.
- amostras Amostras cuidadosamente elaboradas.
- lp_data Estruturas de dados para modelos lineares.
- restrição_solver Solucionador de restrições e roteamento.
- docs Documentação do componente.
- amostras Amostras cuidadosamente elaboradas.
- solucionador sat SAT.
- docs Documentação do componente.
- amostras Amostras cuidadosamente elaboradas.
- bop Solucionador booleano baseado em SAT.
- util Utilitários necessários para o solucionador de restrições
- exemplos Diretório raiz para todos os exemplos.
- contrib Exemplos da comunidade.
- Exemplos de cpp em C++.
- Exemplos dotnet .Net.
- exemplos JavaJava.
- exemplos de python.
- notebook Cadernos Jupyter/IPython.
- exemplos de flatzinc FlatZinc.
- testes Testes unitários e relatórios de bugs.
- ferramentas Ferramentas de entrega (por exemplo, binários do Windows GNU, scripts, dockers de lançamento)
Instalação
Este conjunto de software foi testado em:
- Ubuntu 18.04 LTS e superior (64 bits);
- Apple macOS Mojave com Xcode 9.x (64 bits);
- Microsoft Windows com Visual Studio 2022 (64 bits).
OR-Tools atualmente é compilado com um Makefile, mas também fornece suporte para Bazel e CMake.
Para obter instruções de instalação (fonte e binária), visite https://developers.google.com/optimization/introduction/installing.
Construir a partir do código-fonte usando Make (legado)
Nós fornecemos uma construção baseada em Make.
Por favor, verifique as instruções de criação do Make.
Construa a partir do código-fonte usando CMake
Fornecemos uma construção baseada em CMake.
Por favor, verifique as instruções de construção do CMake.
Construa a partir do código-fonte usando Bazel
Fornecemos uma compilação baseada em Bazel.
Verifique as instruções de construção do Bazel.
Início rápido
A melhor maneira de aprender como usar o OR-Tools é seguir os tutoriais em nosso guia do desenvolvedor:
https://developers.google.com/optimization/introduction/get_started
Se você quiser aprender com exemplos de código, dê uma olhada nos exemplos no diretório de exemplos.
Documentação
A documentação completa do OR-Tools está disponível em: https://developers.google.com/optimization/
Contribuindo
O arquivo CONTRIBUTING.md contém instruções sobre como enviar o Contrato de Licença do Colaborador antes de enviar qualquer solicitação pull (PRs). Claro, se você é novo no projeto, geralmente é melhor discutir quaisquer propostas e chegar a um consenso antes de enviar seu primeiro PR.
Licença
O conjunto de software OR-Tools é licenciado sob os termos da Licença Apache 2.0.
Consulte LICENÇA para obter mais informações.