AMPL (англ. A Mathematical Programming Language, буквально «мова математичного програмування») — мова алгебраїчного моделювання для описування і розв'язування задач високої складності для великомасштабних математичних обчислень (наприклад, великомасштабної оптимізації і задач планування).[1] Вона була розроблена англ. Robert Fourer, англ. David Gay і Браяном Керніганом у Bell Laboratories. AMPL підтримує дюжину розв'язувачів, як з відкритим вихідним кодом, так і комерційних, у тому числі CBC, CPLEX, FortMP, Gurobi, MINOS, IPOPT, SNOPT і KNITRO. Задачі передаються розв'язувачам як nl файли.

AMPL
Парадигмадекларативне програмування і імперативне програмування
Дата появи1990
ТворціRobert Fourer
David Gay
Brian Kernighan
Bell Labs
РозробникBell Laboratories
Останній реліз20131012 (12 жовтня 2013; 11 років тому (2013-10-12))
Під впливом відAWK, C
Операційна системаCross-platform (multi-platform)
ЛіцензіяProprietary (translator), free and open-source (AMPL Solver Library)
Звичайні розширення файлів.mod .dat .run
ВебсайтОфіційна сторінка AMPL

Особливою перевагою AMPL є подібність її синтаксису і математичного запису задач оптимізації. Це дозволяє сформулювати дуже коротко і легко для читання задачу в галузі оптимізації. Багато сучасних розв'язувачів, що доступні на сервері NEOS[2] наданому Аргонською національною лабораторією, сприймають введення моделей на AMPL. За даними статистики NEOS AMPL є найпопулярнішим форматом для представлення задач математичного програмування.

Особливості

ред.

AMPL підтримує широкий діапазон типів задач, у тому числі:

AMPL викликає розв'язувача в окремому процесі, що має такі переваги:

  • збої розв'язувача не впливають на інтерпретатора
  • 32-розрядна версія AMPL може використовуватися з 64-бітного розв'язувача, і навпаки.

Доступність

ред.
 
Статистика входу NEOS за січень 2011.

AMPL доступна для багатьох популярних 32- і 64-бітових платформ, включаючи Linux, Mac OS X і Windows. Сам транслятор є пропрієтарним програмним забезпеченням, що в наш час[коли?] підтримується AMPL Optimization LLC. Однак існує декілька онлайн-послуг[2][3], що забезпечують безплатні можливості моделювання і розв'язування з використанням AMPL. Також доступна для студентів безкоштовна версія з обмеженими функціональними можливостями.[4]

Бібліотека AMPL Solver Library (ASL), яка дозволяє читати nl-файли і забезпечує автоматичне диференціювання функцій, має відкритий вихідний код. Вона використовується в багатьох розв'язувачах для здійснення зв'язку з AMPL.

Історія

ред.

У цій таблиці представлено значні події в історії AMPL.

Рік Основна подія
1985 Розроблено і реалізовано AMPL[1]
1990 Опубліковано статтю з описом мови моделювання AMPL у Management Science[5]
1991 AMPL підтримує нелінійне програмування й автоматичне диференціювання
1993 Роберт Форер, Девід Гей і Брайан Керніган були нагороджені премією ORSA/CSTS[6] від Operations Research Society of America за праці з розробки математичних систем програмування і мови моделювання AMPL
1995 Розширення для представлення кусково-лінійних і мережевих структур
1995 Скриптові конструкції
1997 Розширено підтримку для нелінійного розв'язувача
1998 AMPL підтримує задачі взаємодоповнюваності
2000 Доступ до реляційних баз даних та електронних таблиць
2005 Відкрито Google-групу AMPL Modeling Language[7]
2008 Kestrel: Введено AMPL-інтерфейс для сервера NEOS

Приклад моделі

ред.

Див. також

ред.

Примітки

ред.
  1. а б Fourer, Robert; David M. Gay, Brian W. Kernighan (2002). AMPL: A Modeling Language for Mathematical Programming. Duxbury Press. ISBN 978-0534388096.
  2. а б Архівована копія. Архів оригіналу за 6 травня 2011. Процитовано 18 травня 2011.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
  3. Архівована копія. Архів оригіналу за 18 червня 2011. Процитовано 31 травня 2011.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
  4. Архівована копія. Архів оригіналу за 26 травень 2015. Процитовано 31 травень 2011.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
  5. Robert Fourer, David M. Gay, Brian W. Kernighan (1990). A Modeling Language for Mathematical Programming (PDF). Management Science. 36: 519–554–83. Архів оригіналу (PDF) за 16 липня 2011. Процитовано 10 липня 2011.
  6. Архівована копія (PDF). Архів оригіналу (PDF) за 7 жовтня 2006. Процитовано 10 липня 2011.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання) [Архівовано 2006-10-07 у Wayback Machine.]
  7. Архівована копія. Архів оригіналу за 29 червня 2011. Процитовано 10 липня 2011.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
  NODES