Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Вычислительная инфраструктура для исследования операций ( COIN-OR ) - это проект, который направлен на «создание для математического программного обеспечения того, что есть в открытой литературе по математической теории ». Открытая литература (например, исследовательский журнал) предоставляет сообществу исследователей операций (OR) процесс рецензирования и архив. Статьи в журналах исследования операций по математической теории часто содержат подтверждающие численные результаты вычислительных исследований. Программные реализации, модели и данные, используемые для получения численных результатов, обычно не публикуются. Статус-кво мешал исследователям воспроизводить результаты вычислений, проводить справедливые сравнения и расширять существующие знания.

Успех Linux , Apache и других проектов популяризировал модель разработки и распространения программного обеспечения с открытым исходным кодом. Группа из IBM Research предложила открытый исходный код как аналогичный, но жизнеспособный способ публикации программного обеспечения, моделей и данных. COIN-OR был задуман как инициатива по продвижению открытого исходного кода в сообществе исследователей вычислительных операций и по предоставлению онлайн-ресурсов и услуг хостинга, необходимых для того, чтобы другие могли запускать свои собственные проекты программного обеспечения с открытым исходным кодом .

Веб-сайт COIN-OR был запущен в качестве эксперимента в 2000 году в связи с 17-м Международным симпозиумом по математическому программированию в Атланте, штат Джорджия. В 2007 году у COIN-OR было 25 прикладных проектов [1], включая инструменты для линейного программирования (например, COIN-OR CLP ), нелинейного программирования (например, IPOPT ), целочисленного программирования (например, CBC, Bcp и COIN-OR SYMPHONY ). , языки алгебраического моделирования (например, Coopr ) и другие. К 2011 году это количество выросло до 48 проектов. [2] COIN-OR размещается в Институте операционных исследований и управленческих наук, INFORMS., и управляется образовательным некоммерческим фондом COIN-OR.

Проекты [ править ]

CLP [ править ]

COIN-OR LP (CLP или Clp) - это решающая программа для линейного программирования с открытым исходным кодом , написанная на C ++ . Он опубликован под Общей общественной лицензией, поэтому его можно использовать в проприетарном программном обеспечении без каких-либо ограничений Стандартной общественной лицензии GNU . CLP в первую очередь предназначен для использования в качестве вызываемой библиотеки, хотя может быть создана автономная исполняемая версия. Он разработан, чтобы быть таким же надежным, как и любой коммерческий решатель (хотя и немного медленнее), и иметь возможность решать очень большие проблемы.

CLP предназначен для решения таких задач линейного программирования, как:

свести к минимуму
  • с учетом ограничений задачи следующего вида
  • и неотрицательные переменные

с миллионами переменных и / или ограничений. Его основной алгоритм - симплексный алгоритм .

CLP используется в других проектах COIN-OR, таких как SYMPHONY , Branch Cut and Price (BCP), COIN-OR Branch and Cut ( CBC ) и других.

CBC [ править ]

COIN-OR branch and cut (CBC или Cbc) - это решающая программа смешанного целочисленного программирования с открытым исходным кодом, написанная на C ++ . Его можно использовать как автономный исполняемый файл, так и как вызываемую библиотеку (через язык математического программирования ( AMPL ) [изначально], систему общего алгебраического моделирования (GAMS) [с использованием ссылок, предоставленных службами оптимизации COIN-OR (OS ) и GAMSlinks проекты], MPL [через CoinMP проекта], AIMMS [через AIMMSlinks проекта], Pulp , CmpL ,OpenSolver для Excel , JuMP или MiniZinc ).

СИМФОНИЯ [ править ]

Одно- или мульти-процесс оптимизации через сети (СИМФОНИЯ) является открытым исходным кодом отрасли и вырезать основу для решения смешанных целочисленных программ (MIPS) более разнородных сетей. [3] Он может использовать CLP , CPLEX , XPRESS или другие решатели линейного программирования для решения лежащих в основе линейных программ.

SYMPHONY - это вызываемая библиотека, которая реализует как последовательные, так и параллельные версии ветвления, сокращения и цены для решения MILP. Алгоритм ветвления, отсечения и цены аналогичен алгоритму ветвей и границ , но дополнительно включает методы секущей плоскости.и алгоритмы ценообразования. Пользователь библиотеки может настраивать алгоритм любым количеством способов, предоставляя специфичные для приложения подпрограммы для чтения в пользовательских файлах данных, создания специфичных для приложения плоскостей резки или применения пользовательских правил ветвления, что приводит к индивидуальному алгоритму ветвления и разреза. Большинство компонентов алгоритма, например, управление деревом поиска, управление решениями линейного программирования, управление пулом разрезов и управление связью, являются внутренними по отношению к библиотеке, и пользователь не должен их касаться. Исполняемые файлы могут быть построены в любом количестве конфигураций, от полностью последовательных до полностью параллельных с независимо функционирующими генераторами вырезок, пулами вырезок и решателями LP. Распределенная версия в настоящее время работает в любой среде, поддерживаемой PVM.протокол передачи сообщений. Тот же исходный код также может быть скомпилирован для архитектур с общей памятью с использованием любого компилятора, совместимого с OpenMP .

SYMPHONY читает файлы MPS (через программу чтения COIN-OR MPS) и файлы GNU MathProg . SYMPHONY не имеет собственного LP-решателя, но может использоваться с такими решателями, как Clp, Cplex, Xpress, через интерфейс Osi. Вырезы создаются с использованием библиотеки генерации вырезок COIN: CGL. СИМФОНИЯ также имеет специфическую структуру реализацию для задач , таких как задача коммивояжера , транспортная средство маршрутизации проблемы , поставленная задачи разделения , смешанные проблемы почтальона и т.д. СИМФОНИЧЕСКИЕ также имеет интерактивную оболочку , где пользователь может вводить команды для выполнения и управления программой.

PuLP [ править ]

PuLP - это средство моделирования LP / IP, написанное на Python . [4] Он может генерировать файлы MPS или LP и вызывать GLPK , CLP / CBC , CPLEX и Gurobi для решения линейных задач. PuLP - это инструмент оптимизации по умолчанию в SolverStudio для Excel .

СМИ [ править ]

SMI - это модельер и решатель стохастического программирования , написанный на C ++. [5] Он может читать стохастический MPS и предлагает прямые интерфейсы для построения стохастических программ. Он генерирует детерминированную эквивалентную линейную программу, решает ее и предоставляет интерфейсы для доступа к решениям сценария.

См. Также [ править ]

  • Решатели COIN-OR доступны в системах моделирования AIMMS , AMPL и GAMS , а также в решателе FortSP . Их также можно использовать из Excel через надстройки OpenSolver и SolverStudio .

Ссылки [ править ]

  1. ^ Годовой отчет COIN-OR, 2007 г.
  2. ^ Годовой отчет COIN-OR, 2011 г.
  3. ^ СИМФОНИЯ
  4. ^ PuLP
  5. ^ "СМИ" . Архивировано из оригинала на 2014-10-15 . Проверено 3 января 2014 .

Дальнейшее чтение [ править ]

  • Дж. Т. Линдерот и Т. К. Ральфс: Некоммерческое программное обеспечение для смешанно-целочисленного линейного программирования . В: Целочисленное программирование: теория и практика , Джон Карлоф (редактор), CRC Press Operations Research Series, 2005, 253-303. (Версия рабочего документа)
  • Т. Ральфс: Введение в пакет оптимизации COIN-OR: инструменты с открытым исходным кодом для построения и решения моделей оптимизации . Дни оптимизации, Монреаль, 7 мая 2013 г. (слайды презентации)

Внешние ссылки [ править ]

  • Официальный сайт COIN-OR, Вычислительная инфраструктура для исследования операций