OR-Tools – Инструменты оптимизации Google
Программный пакет Google для комбинаторной оптимизации.
Оглавление
- О OR-инструментах
- Кодовая карта
- Установка
- Быстрый старт
- Документация
- Содействие
- Лицензия
О OR-инструментах
Инструменты оптимизации Google (также известные как OR-Tools) — это быстрый и портативный программный пакет с открытым исходным кодом для решения задач комбинаторной оптимизации.
В комплект входит:
- Два решателя программирования ограничений (CP* и CP-SAT);
- Два решателя линейного программирования (Glop и PDLP);
- Оболочки коммерческих и других решателей с открытым исходным кодом, включая решатели смешанных целых чисел;
- Алгоритмы упаковки контейнеров и ранцев;
- Алгоритмы решения задачи коммивояжера и задачи выбора маршрута транспортного средства;
- Алгоритмы графов (кратчайшие пути, минимальный поток затрат, максимальный поток, присвоение линейной суммы).
Мы написали OR-Tools на C++, но предоставляем оболочки на Python, C# и Java.
Кодовая карта
Этот программный пакет состоит из следующих компонентов:
- Makefile Верхний уровень для сборки на основе GNU Make.
- makefiles Дочерняя компания Создание файлов, CI и документации по системе сборки.
- CMakeLists.txt Верхний уровень для сборки на основе CMake.
- cmake Вспомогательные файлы CMake, документация по CI и системе сборки.
- РАБОЧАЯ ПРОСТРАНСТВА Верхний уровень для сборки на основе Bazel.
- bazel Дочерние файлы Bazel, документация по CI и системе сборки.
- ortools Корневой каталог для исходного кода.
- базовые базовые утилиты.
- алгоритмы Основные алгоритмы.
- образцы Тщательно созданные образцы.
- граф Графовые алгоритмы.
- образцы Тщательно созданные образцы.
- Linear_solver Оболочка линейного решателя.
- образцы Тщательно созданные образцы.
- glop Решатель линейного программирования на основе симплекса.
- образцы Тщательно созданные образцы.
- pdlp Решатель линейного программирования первого порядка.
- образцы Тщательно созданные образцы.
- lp_data Структуры данных для линейных моделей.
- ограничитель_solver Решатель ограничений и маршрутизации.
- docs Документация компонента.
- образцы Тщательно созданные образцы.
- решатель SAT.
- docs Документация компонента.
- образцы Тщательно созданные образцы.
- bop Булев решатель на основе SAT.
- util Утилиты, необходимые для решателя ограничений
- примеры Корневой каталог для всех примеров.
- вклад Примеры от сообщества.
- cpp примеры C++.
- примеры dotnet.Net.
- Java примеры Java.
- Python Примеры Python.
- Блокнот Блокноты Jupyter/IPython.
- Flatzinc Примеры FlatZinc.
- тесты Модульные тесты и отчеты об ошибках.
- инструменты Инструменты доставки (например, двоичные файлы Windows GNU, сценарии, докеры выпуска)
Установка
Этот пакет программного обеспечения был протестирован под:
- Ubuntu 18.04 LTS и более поздние версии (64-разрядная версия);
- Apple macOS Mojave с Xcode 9.x (64-разрядная версия);
- Microsoft Windows с Visual Studio 2022 (64-разрядная версия).
OR-Tools в настоящее время строится с помощью Makefile, но также обеспечивает поддержку Bazel и CMake.
Инструкции по установке (как исходного, так и двоичного) можно найти на странице https://developers.google.com/optimization/introduction/installing.
Сборка из исходного кода с помощью Make (устаревшая версия)
Мы предоставляем сборку на основе Make.
Пожалуйста, ознакомьтесь с инструкциями по сборке Make.
Сборка из исходного кода с помощью CMake
Мы предоставляем сборку на основе CMake.
Пожалуйста, ознакомьтесь с инструкциями по сборке CMake.
Сборка из исходного кода с использованием Bazel
Мы предоставляем сборку на базе Bazel.
Пожалуйста, ознакомьтесь с инструкциями по сборке Bazel.
Быстрый старт
Лучший способ научиться использовать OR-Tools — следовать инструкциям в нашем руководстве для разработчиков:
https://developers.google.com/optimization/introduction/get_started
Если вы хотите учиться на примерах кода, взгляните на примеры в каталоге примеров.
Документация
Полная документация по OR-Tools доступна по адресу: https://developers.google.com/optimization/.
Содействие
Файл CONTRIBUTING.md содержит инструкции о том, как отправить Лицензионное соглашение участника перед отправкой любых запросов на включение (PR). Конечно, если вы новичок в проекте, обычно лучше обсудить любые предложения и достичь консенсуса, прежде чем отправлять свой первый PR.
Лицензия
Программный пакет OR-Tools лицензируется на условиях Apache License 2.0.
См. ЛИЦЕНЗИЮ для получения дополнительной информации.