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

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

Особливості

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

Лінійне програмування Квадратичне програмування Нелінійне програмування Частково цілочисельне програмування Частково цілочисельне квадратичне програмування з (або без) опуклими квадратичними обмеженнями Частково цілочисельне нелінійне програмування Глобальна оптимізація Напіввизначене програмування задач з білінійними матричними нерівностями Задачі доповнюваності (MPECs) в дискретних або неперервних змінних AMPL викликає розв'язувача в окремому процесі, що має такі переваги: збої розв'язувача не впливають на інтерпретатора 32-розрядна версія AMPL може використовуватися з 64-бітного розв'язувача, і навпаки.

Доступність

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

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

Історія

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

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

Див. також AIMMS GAMS Щербина О.О. Короткий вступ до AMPL - сучасної алгебраїчної мови моделювання , препринт, 2012. Мова моделювання

Примітки