AMPL
AMPL – это язык для алгебраического моделирования и математического программирования: машиночитаемый язык для выражения задач оптимизации, таких как линейное программирование в алгебраической нотации. Скачать интерактивную карту экосистемы AMPL в формате *.PDF можно здесь. AMPL Ecosystem map.pdf содержит интерактивные элементы (При нажатии на интерактивный элемент слайда, для пользователя будет открыто окно со справочной информацией по выбранной теме).Состав AMPL
AMPL включает в себя:- Язык моделирования, – с помощью которого происходит описание и разработка математических моделей, данных оптимизации, переменных, целей и ограничений;
- Командный язык, – для просмотра моделей и анализа результатов;
- Язык сценариев, – для сбора и обработки данных, а также для реализации различных схем последовательной оптимизации.
Преимущества AMPL
- Разносторонняя поддержка множеств и операторов множеств. Модели AMPL могут использовать наборы пар, троек и более длинные кортежи. Коллекции наборов, проиндексированных по другим наборам. Неупорядоченные, упорядоченные и круговые наборы объектов, и наборы чисел;
- Общий и естественный синтаксис для арифметических, логических и условных выражений. Интуитивно понятные соглашения суммирования и других операторов повторения;
- Автоматическая обработка линейных и выпуклых квадратичных задач с использованием непрерывных и целочисленных переменных;
- Дополнительные инструменты для нелинейного программирования, такие как начальные, первичные и двойные значения, пользовательские функции, быстрое автоматическое различие и автоматическое исключение «определенных» переменных;
- Удобные альтернативные обозначения сетевых потоков, кусочно-линейных функций, условий дополнительности и логических условий.
Дополнения для моделирования
- Интерактивная командная среда с параметрами пакетной обработки. Мощные команды вывода данных позволяют получить любую структурированную информацию о компонентах модели или выражениях. Вывод данных на экран либо в файл, используя автоматическое форматирование или собственные настройки пользователя;
- Мощный язык сценариев, включает циклы и команду if-then-else. Сценарии на командном языке AMPL могут определять сложные схемы обработки входных данных, многократно корректировать и решать комплексную задачу, состоящую из нескольких моделей. Подготавливать результаты для последующего анализа;
- Разделение логической модели и данных. Модели AMPL остаются краткими даже при увеличении размерности наборов и таблиц данных. Модели могут включать множество видов различных условий проверки данных;
- Импорт и экспорт данных. Краткие утверждения связывают данные модели с данными из реляционных таблиц.
Поддержка операционных систем
AMPL доступен для большинства популярных операционных систем (см.таблицу ниже).Компьютер / Процессор | Операционная система |
Apple Macintosh / Intel | OS X все версии |
IBM Power Systems | AIX |
IBM Power Systems | Linux |
Intel Itanium | Linux |
Intel x86 / x64 или совместимый | Linux все версии |
Intel x86 / x64 или совместимый | Solaris |
Intel x86 / x64 или совместимый | Windows все версии |
Sun SPARC | Solaris |
Подключение решателей
Решатели – это алгоритмы обработки моделей и чисел, которые вычисляют оптимальное решение. AMPL не включает в себя решатели. Вместо этого, AMPL предоставляет возможность подключать внешние решатели с поддержкой интерфейса AMPL. Таким образом, чтобы использовать AMPL в своей работе, пользователю необходимо подключить (минимум один) решатель с интерфейсом AMPL. Доступны несколько вариантов получения решателей для AMPL:- Покупка решателя у нас. Предлагаемая нами линейка профессиональных решателей включает в себя самые современные и мощные решатели для оптимизации, с интерфейсом подключения к AMPL;
- Скачать решатели с открытым исходным кодом. Интерфейс взаимодействия настроек решателей с AMPL включен в ряд популярных решателей, распространяемых по лицензиям с открытым исходным кодом. Мы предоставляем ссылки на предварительно скомпилированные файлы, чтобы вы могли быстро начать использование этих бесплатных решателей с AMPL;
- Приобретение решателей напрямую у разработчиков. Наш полный список решателей с интерфейсом AMPL включает множество вариантов, которые смогут удовлетворить все ваши потребности.
AMPL на NEOS Server
Чтобы облегчить задачу тестирования решателей, AMPL, при сотрудничестве с NEOS Server под эгидой Wisconsin Institutes for Discovery, организовали доступ к AMPL и решателям через открытый облачный сервис NEOS Server. Пользователи AMPL могут взаимодействовать с сервером NEOS одним из двух способов:- отправить модель и данные в облачный сервер (работа AMPL и решателей осуществляется на удаленном сервере);
- с помощью подключения с локального компьютера к облачному серверу через дополнение AMPL – Kestrel (компиляция модели происходит в сеансе AMPL на локальном компьютере, а решение модели происходит с помощью удаленных решателей размещенных на облачном-серевере). Узнать больше о Kestrel можно здесь.
Удаленный AMPL с решателями на NEOS Server
Это средство позволяет отправлять «задачу» на один из удаленных компьютеров NEOS Server. Задача состоит из файла модели c расширением (*.mod) и, необязательного файла данных и/или файла команд, содержащего сценарии AMPL, которые нужно выполнить. Когда вы отправляете задание, центральный планировщик NEOS Server находит соответствующий удаленный компьютер, на котором его можно запустить, и при необходимости помещает задание в очередь. Когда удаленный компьютер доступен, сервер отправляет ему инструкции для запуска копии процессора AMPL, после чего удаленный компьютер производит все необходимые вычисления. Таким образом, удаленный компьютер автоматически считывает и выполняет отправленные файлы, запускает выбранный пользователем решатель и отправляет результат вычислений на Сервер. Сервер сообщает на веб-странице взаимодействия с пользователем о полученных результатах, и при необходимости, отправляет копию результатов пользователю по электронной почте. Команды отображения или печати AMPL могут быть включены в командный файл для создания списков результатов, которые отправляются обратно AMPL вместе с другими сопутствующими данными. Чтобы воспользоваться этой возможностью, ознакомьтесь с инструкциями для интересующего вас решателя. В настоящее время для моделирования AMPL на NEOS Server доступны следующие решатели:- Оптимизация с ограничениями: L-BFGS-B;
- Проблемы комплементарности: filterMPEC, Knitro, PATH;
- Глобальная оптимизация: ASA, BARON, Couenne, PGAPack, PSwarm, SCIP;
- Линейное программирование: bpmpd, CPLEX, Gurobi, MOSEK, OOQP, Xpress;
- Целочисленное линейное программирование: CBC, CPLEX, Gurobi, MINTO, SCIP, Xpress;
- Смешанное целочисленное нелинейное программирование: BARON, Bonmin, Couenne, FilMINT, Knitro, MINLP, SCIP;
- Смешано-целочисленные задачи оптимального управления: MUSCOD-II;
- Недифференцируемая оптимизация: condor;
- Оптимизация с нелинейными ограничениями: CONOPT, filter, Ipopt, Knitro, LANCELOT, LOQO, MINOS, SNOPT;
- Полубесконечная оптимизация: nsips.
Методы отправки данных на NEOS Server
Cтраница отправки данных для каждого решателя содержит сводную информацию о решателе, ссылки на дополнительные источники информации и конкретные инструкции по отправке задания. Описываются три метода связи с сервером NEOS:- веб-отправка, путем загрузки на сервер локальных файлов, через формы расположенные на странице решателя;
- отправка электронного письма по определенному шаблону, для которого предоставляется образец;
- связь из клиентской программы на поддерживаемом языке (Python, Perl, PHP, C, C ++, Java, Ruby) через вызовы API NEOS на основе XML-RPC.
Локальный AMPL с удаленными решателями: клиент Kestrel
В этом режиме работы необходимо запустить собственную копию AMPL на локальном компьютере. Но вместо того, чтобы указывать решатель, установленный на компьютере пользователя или в локальной сети, необходимо вызвать Kestrel, «клиентскую» программу, которая отправит задачу решателю, запущенному на одном из удаленных компьютеров NEOS Server. Результаты с сервера NEOS возвращаются через Kestrel в AMPL, где пользователь может просматривать и управлять ими локально, любым способом. Таким образом, пользователь получает все преимущества использования локальной версии AMPL без необходимости устанавливать каждый решатель, который необходимо протестировать. Информация ниже охватывает все вопросы, которые необходимо знать при использовании Kestrel с AMPL. Информацию о более продвинутых функциях и других возможностях использования Kestrel можно найти в руководстве пользователя для Kestrel.Загрузка и установка клиента Kestrel
Чтобы начать использовать клиент Kestrel, необходимо скачать бесплатную программу Kestrel. Kestrel доступно в следующих вариациях:- kestrel.zip для систем Windows;
- kestrel.tar.gz для систем на базе Unix, включая Linux и OS X.
Настройка и запуск клиента Kestrel
Клиентская программа Kestrel работает как специальный решатель. После установки Kestrel в каталог, где располагается исполняемый файл AMPL, необходимо выбрать Kestrel путем ввода в модель AMPL следующей строки:option solver kestrel;Затем необходимо указать какой удаленный решатель нужно подключить:
option kestrel_options 'solver=loqo';Комманды для выбранного решателя указываются через параметр solvername_options:
option loqo_options 'minlocfil sigfig=8 outlev=2';Кроме того, NEOS требует адрес электронной почты для каждой загружаемой задачи. Поэтому необходимо отправить свой адрес в Kestrel, установив опцию option email:
option email 'mail@solverytic.com';В качестве примера мы можем вызвать Kestrel из локального сеанса AMPL, используя LOQO в качестве удаленного решателя:
ampl: model steelT.mod; ampl: data steelT.dat; ampl: option solver kestrel; ampl: option kestrel_options 'solver=loqo'; ampl: option loqo_options 'minlocfil sigfig=8 outlev=2'; ampl: option email 'info@ampl.com'; ampl: solve; Connecting to: neos-server.org:3333 Job 10219877 submitted to NEOS, password='MipoAHfd' Check the following URL for progress report : https://neos-server.org/neos/cgi-bin/nph-neos-solver.cgi?admin=results&jobnumber=10219877&pass=MipoAHfd Job 10219877 dispatched password: MipoAHfd ---------- Begin Solver Output ----------- Condor submit: 'neos.submit' Condor submit: 'watchdog.submit' Job submitted to NEOS HTCondor pool. LOQO 7.00: optimal solution (15 QP iterations, 15 evaluations) primal objective 515032.9977724714 dual objective 515033.0024976235Вот оно! Результаты решения возвратились в ampl:. Теперь их можно отобразить или манипулировать ими так, как если бы задача была решена с помощью локальной копии LOQO. Последующее использование команды solve; будет продолжать вызывать удаленный решатель, пока пользователь не изменит тип решателя или не завершит сеанс AMPL. В настоящее время распознаются следующие наименования решателей:
-
- Оптимизация с ограничениями: L-BFGS-B;
- Проблемы комплементарности: Knitro, PATH;
- Глобальная оптимизация: Couenne, LGO, RAPOSa;
- Линейное программирование: CPLEX, MOSEK, OOQP;
- Смешанное целочисленное линейное программирование: Cbc, CPLEX, MINTO, MOSEK;
- Смешанная целочисленная оптимизация с нелинейными ограничениями: Bonmin, Couenne, FilMINT, Knitro, MINLP;
- Оптимизация с нелинейными ограничениями: CONOPT, filter, Ipopt, KNITRO, LANCELOT, LOQO, MINOS, SNOPT.
option kestrel_options 'solver';Пользователь может передать команды любому из этих решателей, указав соответствующую команду, состоящую из имени решателя, за которым следует _options. В предыдущем примере мы запросили опцию «min local fill» LOQO, указали согласование основных и двойных целей до 8 значащих цифр и включили подробный вывод итераций, указав следующую команду AMPL перед решением:
option loqo_options 'minlocfil sigfig = 8 outlev = 2';
Просмотр вывода и результатов
Чтобы просмотреть выходные данные решателя во время его работы, необходимо указать в браузере URL-адрес, указанный в выходных данных Kestrel, как показано выше, и нажать «Просмотреть промежуточные результаты» “View Intermediate Results” на открывшейся веб-странице. Это перенаправит нас на другую страницу, на которой будут показаны все результаты, полученные решателем при решении задачи на данный момент. Чтобы отслеживать прогресс решателя, нужно просто периодически обновлять эту страницу. Чтобы получить результаты предыдущего запуска Kestrel, сначала необходимо подключить ту же модель AMPL и ее данные, которые ранее использовались при отправке задачи. Затем требуется установить, kestrel_options, чтобы указать номер задания и пароль, которые Kestrel сообщил при обработке предыдущего задания. Для приведенного выше примера соответствующие команды AMPL будут иметь следующий вид:model steelT.mod; data steelT.dat; option solver kestrel; option kestrel_options 'job=2746671 password=AnVsgUKc'; solve;После запуска комманды solve, Kestrel связывается с сервером NEOS, чтобы получить результаты указанного задания. После чего отображаются результаты решения. Эта функция позволяет получать результаты для любой проблемы, которая была успешно отправлена с Kestrel на сервер NEOS, даже если Kestrel и AMPL были прерваны до того, как результаты были получены. Однако сервер NEOS сохраняет результаты рашения в течение короткого времени – обычно в течение дня – поэтому эта функция не подходит для архивирования прогонов.
Управление запусками Kestrel
Чтобы отправить одновременно несколько проходов оптимизации, а затем восстановить их в том же порядке, необходимо использовать скрипты Ampl kestrelsub и kestrelret, которые распаковываются вместе с исполняемым файлом Kestrel. Подробные инструкции приведены в документе Kestrel: интерфейс систем моделирования оптимизации для сервера NEOS. Эту функцию следует использовать осторожно, чтобы не перегружать ресурсы Сервера. Чтобы отменить запуск оптимизации до того, как решатель завершит выполнение, нужно установить параметр, kestrel_options, чтобы указать соответствующий номер задания и пароль, а затем запустить сценарий AMPL kestrelkill. Например:option kestrel_options 'job=6893 password=FaahsrIh'; commands kestrelkill;Чтобы гарантировать, что AMPL найдет сценарий, необходимо поместить файл kestrelkill в каталог (или папку), который будет текущим при выполнении AMPL, или установить опцию, ampl_include, чтобы указать каталог, в котором можно найти сценарий.
Типы лицензий
Все продукты AMPL распространяются по следующим типам лицензий:- Однопользовательская: позволяет запускать продукт с любым количеством одновременных процессов на одном назначенном компьютере одним пользователем. Совместное использование идентификатора пользователя для разрешения доступа к однопользовательской лицензии нескольким пользователям категорически запрещено лицензионным соглашением.
- Плавающая: позволяет одновременно активизировать одного пользователя (AMPL, BARON, CONOPT, LGO, MINOS, SNOPT) или один процесс (CPLEX, Gurobi, Knitro, Xpress) на любом компьютере в сети, на котором установлен продукт. Один компьютер должен быть назначен сервером лицензий. Он может управлять любым количеством нефиксированных лицензий и может быть настроен для ограничения запросов определенным списком диапазонов сетевых (IP) адресов.
- Серверная: позволяет запускать продукт любому количеству пользователей с любым количеством одновременных процессов на одном назначенном компьютере. «Сокет» обозначает одну микросхему процессора, имеющую любое количество ядер. Цены на одно, двух и четырехпроцессорные платы применяются к компьютерам, имеющим соответственно один, два и четыре процессорных чипа.
Виды версий
Вы можете ознакомиться со всей необходимой информаций об интересующих вас версиях AMPL по ссылкам ниже:- AMPL для бизнеса ;
- AMPL academic ;
- Бесплатная 30-дневная пробная лицензия AMPL AMPL Trial ;
- Бесплатная демо-версия AMPL AMPL Demo ;
- Бесплатный AMPL для обучения AMPL for Courses ;
- Бесплатный AMPL для новых выпускников AMPL for New Graduates ;
- AMPL на NEOS Server ;
Техническая поддержка
Техническое обслуживание
Обслуживание и поддержка AMPL включает доступ к обновлениям программного обеспечения AMPL и решателя, восстановление файлов лицензий, вызванное изменениями оборудования, а также техническую помощь при установке и использовании. Указанные на сайте цены включают в себя один год обслуживания и техподдержки. Последующее обслуживание и техподдержка оплачиваются дополнительно по годовой ставке, равной в настоящее время 20%, стоимости лицензии, по прейскуранту цен действующих на момент продления техподдержки. Счета за обслуживание и тех.поддержку выставляются ежегодно, если заказчик не отменит их в письменной форме до даты продления. Свяжитесь с нами mail@solverytic.com для получения информации об обновлениях до копий, которые в настоящее время не обслуживаются.Документация
Книга AMPL содержит подробное руководство, а также инструкции по всем основным и расширенным функциям среды. Вы можете ознакомиться с рускоязычным переводом AMPL-book на нашем сайте.Примеры
Ниже предоставлен доступ к многочисленным примерам, включая все модели и данные из книги AMPL, а также множество сценариев. Используйте эту страницу для загрузки всех файлов моделей, данных и сценариев, которые представлены в качестве примеров в книге AMPL (второе издание). Вы можете скачать все одним файлом:- zip-файл с окончаниями строк, характерными для Windows;
- сжатый файл tar с окончанием строки, характерный для Unix.
- Часть 1: Анализ чувствительности и форматирование данных;
- Часть 2: Итерационные схемы, включая генерацию столбцов, разложение Данцига-Вульфа и Бендерса и лагранжевую релаксацию.