stringtranslate.com

AMPL

AMPL ( язык математического программирования ) — это язык алгебраического моделирования для описания и решения задач высокой сложности для крупномасштабных математических вычислений (например, крупномасштабных задач оптимизации и планирования ). [1] Он был разработан Робертом Фурером , Дэвидом Гэем и Брайаном Керниганом в Bell Laboratories . AMPL поддерживает десятки решателей , как с открытым исходным кодом , так и с коммерческим программным обеспечением , включая CBC, CPLEX , FortMP , MOSEK , MINOS , IPOPT , SNOPT , KNITRO и LGO. Задачи передаются решателям в виде файлов nl . AMPL используется более чем 100 корпоративными клиентами, а также государственными учреждениями и академическими учреждениями. [2]

Одним из преимуществ AMPL является сходство его синтаксиса с математической записью задач оптимизации . Это позволяет очень кратко и понятно определить проблемы в области оптимизации . Многие современные решатели, доступные на сервере NEOS (ранее размещенном в Аргоннской национальной лаборатории , в настоящее время размещенном в Университете Висконсина, Мэдисон [3] ), принимают входные данные AMPL. Согласно статистике NEOS, AMPL — самый популярный формат для представления задач математического программирования.

Функции

AMPL сочетает в себе декларативный и императивный стили программирования. Формулирование моделей оптимизации происходит с помощью элементов декларативного языка, таких как множества, скалярные и многомерные параметры, переменные решения, цели и ограничения , которые позволяют кратко описать большинство проблем в области математической оптимизации.

Процедуры и операторы потока управления доступны в AMPL для

Чтобы поддержать повторное использование и упростить построение крупномасштабных задач оптимизации, AMPL позволяет разделить модель и данные.

AMPL поддерживает широкий спектр типов задач, среди них:

AMPL вызывает решатель в отдельном процессе, который имеет следующие преимущества:

Взаимодействие с решателем осуществляется через четко определенный интерфейс nl .

Доступность

AMPL доступен для многих популярных 32- и 64-разрядных операционных систем , включая Linux , macOS , Solaris , AIX и Windows . [5] Переводчик является проприетарным программным обеспечением, поддерживаемым ООО «АМПЛ Оптимизация». Однако существует несколько онлайн-сервисов, предоставляющих бесплатные средства моделирования и решения с использованием AMPL. [6] [7] Также доступны бесплатная студенческая версия с ограниченной функциональностью и бесплатная полнофункциональная версия для академических курсов. [8]

AMPL можно использовать из Microsoft Excel через надстройку SolverStudio Excel.

Библиотека решателей AMPL (ASL), которая позволяет читать файлы nl и обеспечивает автоматическое дифференцирование, имеет открытый исходный код. Он используется во многих решателях для реализации соединения AMPL.

История статусов

В этой таблице представлены важные этапы в истории AMPL.

Пример модели

Транспортная задача Джорджа Данцига используется для создания примера модели AMPL. Эта задача позволяет найти наименее затратный график поставок, отвечающий потребностям рынков и поставкам на заводах. [15]

 набор «Растения» ; установить рынки ;    # Мощность завода p в случаях param Мощность { p in Plants };     # Спрос на рынке m в случаях param Demand { m in Markets };     # Расстояние в тысячах миль param Distance { Plants , Markets };    # Фрахт в долларах за ящик на тысячу миль param Freight ;   # Стоимость перевозки в тысячах долларов за ящик param TransportCost { p в ​​Plants , m в Markets } : = Freight * Distance [ p , m ] / 1000 ;               # Количества отгрузки в случаях var Shipping { Plants , Markets } >= 0 ;      # Общие транспортные расходы в тысячах долларов минимизируют стоимость : sum { p in Plants , m in Markets } TransportCost [ p , m ] * доставка [ p , m ];              # Соблюдайте лимит подачи на заводе p s.t. поставка { p на заводах }: сумма { м на рынках } отгрузка [ п , м ] <= Мощность [ п ];            # Удовлетворение спроса на рынке м.ст. спрос { м на рынках }: сумма { п на растениях } отгрузка [ п , м ] >= Спрос [ м ];            данные ; set Plants : = Сиэтл Сан - Диего ; набор Рынки : = Нью - Йорк , Чикаго, Топика ;           Параметр Емкость : = Сиэтл 350 Сан - Диего 600 ;       параметр Спрос : = Нью - Йорк 325 Чикаго 300 Топика 275 ;         param Расстояние : Нью - Йорк, Чикаго, Топика : = Сиэтл 2,5 1,7 1,8 Сан - Диего 2,5 1,8 1,4 ;               параметр Грузовые перевозки : = 90 ;   

Решатели

Вот неполный список решателей , поддерживаемых AMPL: [16]

Смотрите также

Рекомендации

  1. ^ аб Фурер, Роберт ; Гей, Дэвид М; Керниган, Брайан В. (2003). AMPL: язык моделирования для математического программирования . США: Duxbury Press/Brooks/Cole Publishing Company. ISBN 978-0-534-38809-6.
  2. ^ «Доступная позиция». Архивировано из оригинала 11 сентября 2011 года . Проверено 29 июля 2011 г.
  3. ^ "О" . Проверено 11 августа 2015 г.
  4. ^ аб Фурер, Роберт ; Гей, Дэвид М. (2002). «Расширение языка алгебраического моделирования для поддержки программирования с ограничениями». ИНФОРМС Журнал по вычислительной технике . 14 (4): 322–344. CiteSeerX 10.1.1.8.9699 . дои : 10.1287/ijoc.14.4.322.2825. 
  5. ^ «Платформы». AMPL Optimizations Inc. Архивировано из оригинала 14 мая 2022 года . Проверено 1 ноября 2019 г.
  6. ^ «Сервер NEOS для оптимизации» . Проверено 11 августа 2015 г.
  7. ^ "Попробуйте AMPL!" . Проверено 11 августа 2015 г.
  8. ^ «Загрузки AMPL» . Архивировано из оригинала 26 мая 2015 года . Проверено 11 августа 2015 г.
  9. ^ Фурер, Роберт ; Гей, Дэвид М.; Керниган, Брайан В. (1990). «Язык моделирования для математического программирования» (PDF) . Наука управления . 36 (5): 519–554–83. дои : 10.1287/mnsc.36.5.519.
  10. ^ ИНФОРМ. «ИКС-ИНФОРМС» (PDF) . Архивировано из оригинала (PDF) 7 октября 2006 года . Проверено 11 августа 2015 г.
  11. ^ «Группы Google».
  12. ^ ИНФОРМ. «Приз ИНФОРМС Импакт». Архивировано из оригинала 22 октября 2013 года . Проверено 11 августа 2015 г.
  13. ^ «Книга AMPL: подробное руководство по построению моделей оптимизации для начинающих и опытных пользователей» . Проверено 5 марта 2021 г.
  14. ^ «Группы Google» . Проверено 11 августа 2015 г.
  15. ^ Данциг, Джордж (2016) [1963]. «3. Формулировка модели линейного программирования». Линейное программирование и расширения . Издательство Принстонского университета. стр. 32–62. ISBN 978-1-4008-8417-9.
  16. ^ "Решатели - AMPL" . Архивировано из оригинала 27 февраля 2014 года . Проверено 21 января 2018 г.
  17. ^ "Куэнн". Архивировано из оригинала 29 октября 2013 года . Проверено 27 октября 2013 г.
  18. ^ «mp/solvers/ilogcp на мастере · ampl/mp · GitHub». Гитхаб . Проверено 11 августа 2015 г.
  19. ^ «mp/solvers/gecode на мастере · ampl/mp · GitHub». Гитхаб . Проверено 11 августа 2015 г.
  20. ^ «mp/solvers/jacop at master · ampl/mp · GitHub» . Гитхаб . Проверено 11 августа 2015 г.
  21. ^ "ЛГО - АМПЛ" . Проверено 11 августа 2015 г.
  22. ^ «Использование lpsolve из AMPL» . Проверено 11 августа 2015 г.
  23. ^ «mp/solvers/sulum в мастере · ampl/mp · GitHub» . Гитхаб . Проверено 11 августа 2015 г.
  24. ^ "Официальный сайт ГЛПК" . Проверено 17 сентября 2020 г.

Внешние ссылки