AMPL

AMPL

AMPL – это язык для алгебраического моделирования и математического программирования: машиночитаемый язык для выражения задач оптимизации, таких как линейное программирование в алгебраической нотации. Скачать интерактивную карту экосистемы AMPL в формате *.PDF можно здесь. AMPL Ecosystem map.pdf содержит интерактивные элементы (При нажатии на интерактивный элемент слайда, для пользователя будет открыто окно со справочной информацией по выбранной теме).

Состав AMPLAMPL включает в себя: Все языковые блоки 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 на NEOS ServerЧтобы облегчить задачу тестирования решателей, AMPL, при сотрудничестве  с NEOS Server под эгидой Wisconsin Institutes for Discovery, организовали доступ к AMPL и решателям через открытый облачный сервис NEOS Server. Пользователи AMPL могут взаимодействовать с сервером NEOS одним из двух способов:
  • отправить модель и данные в облачный сервер (работа AMPL и решателей осуществляется на удаленном сервере);
  • с помощью подключения с локального компьютера к облачному серверу через дополнение AMPL – Kestrel (компиляция модели происходит в сеансе AMPL на локальном компьютере, а решение модели происходит с помощью удаленных решателей размещенных на облачном-серевере). Узнать больше о Kestrel можно здесь.
Эти услуги доступны бесплатно через любое подключение к Интернету. Однако, они предназначены в основном для тестирования, создания прототипов, а также для учебных целей. Согласно опубликованным условиям использования, NEOS Server не предоставляет гарантий надлежащей работы и конфиденциальности.
Удаленный AMPL с решателями на NEOS Server Это средство позволяет отправлять «задачу» на один из удаленных компьютеров NEOS Server. Задача состоит из файла модели c расширением (*.mod) и, необязательного файла данных и/или файла команд, содержащего сценарии AMPL, которые нужно выполнить. Когда вы отправляете задание, центральный планировщик NEOS Server находит соответствующий удаленный компьютер, на котором его можно запустить, и при необходимости помещает задание в очередь. Когда удаленный компьютер доступен, сервер отправляет ему инструкции для запуска копии процессора AMPL, после чего удаленный компьютер производит все необходимые вычисления. Таким образом, удаленный компьютер автоматически считывает и выполняет отправленные файлы, запускает выбранный пользователем решатель и отправляет результат вычислений на Сервер. Сервер сообщает на веб-странице взаимодействия с пользователем о полученных результатах, и при необходимости, отправляет копию результатов пользователю по электронной почте. Команды отображения или печати AMPL могут быть включены в командный файл для создания списков результатов, которые отправляются обратно AMPL вместе с другими сопутствующими данными. Чтобы воспользоваться этой возможностью, ознакомьтесь с инструкциями для интересующего вас решателя. В настоящее время для моделирования AMPL на NEOS Server доступны следующие решатели: Следующие решатели также принимают входные данные AMPL, но имеют ограниченный интерфейс AMPL, который не позволяет использовать командный файл (или «run file»):
  • Глобальная оптимизация: icos;
  • Смешанное целочисленное линейное программирование: feaspump, qsopt_ex.
Методы отправки данных на NEOS Server Cтраница отправки данных для каждого решателя содержит сводную информацию о решателе, ссылки на дополнительные источники информации и конкретные инструкции по отправке задания. Описываются три метода связи с сервером NEOS:
  • веб-отправка, путем загрузки на сервер локальных файлов, через формы расположенные на странице решателя;
  • отправка электронного письма по определенному шаблону, для которого предоставляется образец;
  • связь из клиентской программы на поддерживаемом языке (Python, Perl, PHP, C, C ++, Java, Ruby) через вызовы API NEOS на основе XML-RPC.
Используйте ссылки в правом верхнем углу страницы NEOS Server, чтобы выбрать способ отправки или запросить справочную информацию с примерами процедур отправки модели и данных через Интернет.
Локальный 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.
Распакуйте пакет в ту же папку или каталог, где находится исполняемый файл AMPL. Клиент Kestrel требует Python в Unix-подобных системах, таких как Linux и OS X, где он обычно предустановлен. Если в вашей системе нет Python, установите его, посетив раздел «Установка и использование Python» и следуйте инструкциям для вашей платформы.
Настройка и запуск клиента 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;
    • Проблемы комплементарности: KnitroPATH;
    • Глобальная оптимизация: CouenneLGORAPOSa;
    • Линейное программирование: CPLEXMOSEKOOQP;
    • Смешанное целочисленное линейное программирование: CbcCPLEXMINTOMOSEK;
    • Смешанная целочисленная оптимизация с нелинейными ограничениями: BonminCouenneFilMINTKnitroMINLP;
    • Оптимизация с нелинейными ограничениями: CONOPTfilterIpoptKNITROLANCELOTLOQOMINOSSNOPT.
* Для получения информации о командах, распознаваемых указанными решателями, перейдите по их ссылкам. Текущий список поддерживаемых имен решателей можно получить, указав следующее выражение:
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 и решателя, восстановление файлов лицензий, вызванное изменениями оборудования, а также техническую помощь при установке и использовании. Указанные на сайте цены включают в себя один год обслуживания и техподдержки. Последующее обслуживание и техподдержка оплачиваются дополнительно по годовой ставке, равной в настоящее время 20%, стоимости лицензии, по прейскуранту цен действующих на момент продления техподдержки. Счета за обслуживание и тех.поддержку выставляются ежегодно, если заказчик не отменит их в письменной форме до даты продления. Свяжитесь с нами mail@solverytic.com для получения информации об обновлениях до копий, которые в настоящее время не обслуживаются.
Документация Книга AMPL содержит подробное руководство, а также инструкции по всем основным и расширенным функциям среды. Вы можете ознакомиться с рускоязычным переводом AMPL-book на нашем сайте.
Примеры Ниже предоставлен доступ к многочисленным примерам, включая все модели и данные из книги AMPL, а также множество сценариев. Используйте эту страницу для загрузки всех файлов моделей, данных и сценариев, которые представлены в качестве примеров в книге AMPL (второе издание). Вы можете скачать все одним файлом:
  • zip-файл с окончаниями строк, характерными для Windows;
  • сжатый файл tar с окончанием строки, характерный для Unix.
Отдельные файлы моделей можно загрузить со страницы AMPL. Дополнительные примеры скриптов написанных на языке сценариев AMPL:
  • Часть 1: Анализ чувствительности и форматирование данных;
  • Часть 2: Итерационные схемы, включая генерацию столбцов, разложение Данцига-Вульфа и Бендерса и лагранжевую релаксацию.
Полное руководство по командным скриптам AMPL можно найти в главе 13 книги AMPL.
Поддержка Дополнительную информацию о подходах и методах работы с AMPL, а также консультацию по любым вопросам связанным с выбором, установкой, опробованием, работой, покупкой AMPL можно получить на форуме поддержки пользователей AMPL в Google группах или связаться с нами любым удобным для Вас способом.