Парадигма | Многопарадигма : декларативная, императивная |
---|---|
Разработан | Роберт Фурер Дэвид Гей Брайан Керниган Bell Labs |
Разработчик | AMPL Optimization, Inc. |
Впервые появился | 1985; 35 лет назад (1985 г.) |
Стабильный выпуск | 20131012/12 октября 2013 г.; 7 лет назад (12.10.2013) |
OS | Кроссплатформенность : Linux, macOS, Solaris, AIX, Windows |
Лицензия | Патентованная (translator), бесплатная и с открытым исходным кодом (библиотека AMPL Solver) |
Расширения имен файлов | .mod ,.dat,.run |
Веб-сайт | www |
Под влиянием | |
AWK, C | |
Под влиянием | |
Pyomo |
AMPL(Язык математического программирования) - это язык алгебраического моделирования для описания и решения задач высокой сложности для крупномасштабных математических вычислений (например, крупномасштабной оптимизации и планирования -тип проблем). Его разработали Роберт Фурер, Дэвид Гей и Брайан Керниган в Bell Laboratories. AMPL поддерживает десятки решателей, как с открытым исходным кодом, так и коммерческое программное обеспечение, включая CBC, CPLEX, FortMP, Гуроби, MINOS, IPOPT, SNOPT, KNITRO и LGO. Проблемы передаются решателям в виде файлов nl. AMPL используется более чем 100 корпоративными клиентами, а также государственными учреждениями и академическими учреждениями.
Одним из преимуществ AMPL является схожесть его синтаксиса с математической нотацией задач оптимизации. Это позволяет дать очень краткое и удобочитаемое определение проблем в области оптимизации. Многие современные решатели, доступные на сервере NEOS (ранее размещенном в Аргоннской национальной лаборатории, в настоящее время размещенном в Университете Висконсина, Мэдисон ) принимают ввод AMPL. Согласно статистике NEOS, AMPL - самый популярный формат для представления задач математического программирования.
AMPL представляет собой сочетание декларативного и императивного стилей программирования. Формулирование моделей оптимизации происходит с помощью элементов декларативного языка, таких как множества, скалярные и многомерные параметры, переменные решения, цели и ограничения, которые позволяют кратко описать большинство проблем в области математической оптимизации.
В AMPL доступны процедуры и поток управления для
Для поддержки повторного использования и упрощения построения крупномасштабных задач оптимизации AMPL позволяет разделить модель и данные.
AMPL поддерживает широкий спектр типов задач, среди которых:
AMPL вызывает решающую программу в отдельном процессе, который имеет следующие преимущества:
Взаимодействие с решателем осуществляется через четко определенный интерфейс nl.
AMPL доступен для многих популярные 32- и 64-разрядные операционные системы, включая Linux, macOS, Solaris, AIX и Windows. Переводчик представляет собой проприетарное программное обеспечение, поддерживаемое AMPL Optimization LLC. Однако существует несколько онлайн-сервисов, предоставляющих бесплатные средства моделирования и решения с использованием AMPL. Также доступны бесплатная версия для студентов с ограниченной функциональностью и бесплатная полнофункциональная версия для академических курсов.
AMPL можно использовать из Microsoft Excel через SolverStudio Надстройка Excel.
Библиотека решателя AMPL (ASL), которая позволяет читать файлы nl и обеспечивает автоматическое различение, имеет открытый исходный код. Он используется во многих решателях для реализации соединения AMPL.
В этой таблице представлены важные шаги в истории AMPL.
Год | Основные моменты |
---|---|
1985 | Был разработан и внедрен AMPL |
1990 | Статья с описанием языка моделирования AMPL была опубликована в Management Science |
1991 | AMPL поддерживает нелинейное программирование и автоматическое дифференцирование |
1993 | Роберт Фурер, Дэвид Гей и Брайан Керниган были награждены призом ORSA / CSTS от Американского общества исследования операций за работы по проектированию систем математического программирования и языка моделирования AMPL |
1995 | Расширения для представления кусочно-линейные и сетевые структуры |
1995 | Конструкции сценариев |
1997 | Расширенная поддержка нелинейных решателей |
1998 | AMPL поддерживает теория дополнительности проблемы |
2000 | доступ к реляционным базам данных и электронным таблицам |
2002 | Поддержка программирования с ограничениями |
2003 | AMPL Optimization LLC была основана изобретателями AMPL Робертом Фурером, Дэвидом Гей и Брайан Керниган. Новая компания взяла на себя разработку и поддержку языка моделирования AMPL от Lucent Technologies, Inc. |
2005 | Язык моделирования AMPL Группа Google открыла |
2008 | Kestrel: Представлен интерфейс AMPL для сервера NEOS. |
2012 | Роберт Фурер, Дэвид Гей и Брайан Керниган были удостоены премии INFORMS Impact Prize 2012 года как создатели одной из самых важных алгебраических задач. языки моделирования. |
2012 | Книга AMPL становится свободно доступной в Интернете |
2013 | Доступна новая кроссплатформенная интегрированная среда разработки (IDE) для AMPL |
Транспортная проблема от Джорджа Данцига используется для предоставления образца модели AMPL. Эта задача позволяет найти график отгрузки с наименьшими затратами, который соответствует требованиям на рынках и поставкам на заводах.
set Plants; установить рынки; # Производительность установки p в случаях param Capacity {p in Plants}; # Спрос на рынке m в случаях param Demand {m in Markets}; # Расстояние в тысячах миль param Distance {Plants, Markets}; # Фрахт в долларах за ящик за тысячу миль param Freight; # Транспортные расходы в тысячах долларов за ящик param TransportCost {p на заводах, м на рынках}: = фрахт * расстояние [p, м] / 1000; # Количество отгрузки в случаях var shipment {Plants, Markets}>= 0; # Общие транспортные расходы в тысячах долларов минимизируют затраты: сумма {p в заводах, m в рынках} TransportCost [p, m] * отгрузка [p, m]; # Соблюдайте лимит подачи на заводе p s.t. предложение {p на заводах}: сумма {m на рынках} отгрузка [p, m] <= Capacity[p]; # Satisfy demand at market m s.t. demand{m in Markets}: sum{p in Plants} shipment[p, m] >= спрос [m]; данные; набор Plants: = сиэтл сан-диего; set Markets: = нью-йорк чикаго топика; param Вместимость: = сиэтл 350 сан-диего 600; param Спрос: = нью-йорк 325 чикаго 300 топика 275; param Расстояние: нью-йорк чикаго топика: = сиэтл 2,5 1,7 1,8 сан-диего 2,5 1,8 1,4; param Freight: = 90;
Вот неполный список решателей, поддерживаемых AMPL:
Решатель | Поддерживаемые типы проблем |
---|---|
APOPT | смешанное целое число нелинейное программирование |
Artelys Knitro | линейное, квадратичное и нелинейное программирование |
Bonmin | смешанное целочисленное нелинейное программирование |
BPMPD | линейное и квадратичное программирование |
COIN-OR CBC | смешанное целочисленное программирование |
COIN-OR CLP | линейное программирование |
CONOPT | нелинейное программирование |
Couenne | смешанное целочисленное нелинейное программирование (MINLP) |
CPLEX | линейное, квадратичное конусное программирование второго порядка и смешанное целочисленное программирование |
CPLEX CP Optimizer | программирование ограничений |
FILTER | нелинейное программирование |
FortMP | линейное, квадратичное и смешанное целочисленное программирование |
Gecode | программирование в ограничениях |
Gurobi | линейное, квадратичное, конусное программирование второго порядка и смешанное целочисленное программирование |
IPOPT | нелинейное программирование |
JaCoP | программа с ограничениями g |
LGO | глобальная и локальная нелинейная оптимизация |
lp_solve | линейное и смешанное целочисленное программирование |
MINOS | линейное и нелинейное программирование |
MINTO | смешанное целочисленное программирование |
MOSEK | линейное, смешанное целочисленное линейное, квадратичное, смешанное целочисленное квадратичное, квадратично ограниченное, коническое и выпуклое нелинейное программирование |
Octeract Engine | Все типы задач оптимизации без дифференциала или интегральные члены, включая прерывистые задачи с минимальными и максимальными элементарными функциями. |
SCIP | смешанное целочисленное программирование |
SNOPT | нелинейное программирование |
Sulum | линейное и смешанное целочисленное программирование |
WORHP | нелинейное программирование |
XA | линейное и смешанное целочисленное программирование |
Xpress | линейная и выпуклая квадратичная оптимизация и их смешанные целочисленные аналоги |