Современные языки алгебраического моделирования для решения задач оптимизации.

Многочисленные экономические модели имеют оптимизационный характер, т.е. состоят в выборе наилучшего решения (по некоторому критерию) среди некоторого множества решений, или матема­тически: min{(X): при ограничениях }, где (X) - целевая функция, определенная на области C допустимых решений. Подобные оптимизационные задачи могут быть реально решены с помощью развитых в настоящее время методов оптимизации.

Экономико-математическое моделирование является трудоемким итеративным процессом, состоящим из следующих этапов:

1.     постановка задачи;

2.     формулировка задачи в виде модели оптимизации;

3.     сбор информации;

4.     решение полученной математической задачи;

5.     анализ и интерпретация результатов.

Шаги 1-3 особенно трудоемки и заканчиваются построением математической модели. Если полученное решение неудов­летворительно с точки зрения практики, приходится возвращаться к шагу 1, корректировать постановку задачи и, соответственно, строить новую модель. Понятно, что каждый раз корректировать модель, переделывая программу для решения соответствующей оптимизационной задачи - довольно трудоемкое и неблагодарное занятие. Если учесть, что реальные экономические модели могут иметь тысячи переменных и ограничений, которые вряд ли возможно построить вручную, то становится ясной сложность этой задачи.

Модель может быть записана и решена с помощью компьютера различными методами:

·        На основе неструктурированных подходов, в которых для записи модели и данных используется некоторый язык программирования (например, FORTRAN, C/C++). При этом в результате либо формируется матрица или какой-то другой входной файл для коммерческого пакета решения оптимизационных задач (обычно называемый  решатель или сольвер - от solver - решатель), либо подключается дополнительно алгоритм решения (который еще нужно написать и отладить). Этот подход имеет несколько недостатков, некоторые из них: трудность понимания алгоритма другими людьми, трудность поддержания программы в работоспособном состоянии, зависимость от операционных систем и компиляторов. Тем не менее, достаточно часто предпочитается именно этот подход.

·        На основе подходов, использующих табличные процессоры (например, Excel), в которых математическая структура задачи задана табличными шаблонами, заполняемыми данными. В прошлом этот подход часто использовался в коммерческих пакетах. При этом обычно решались линейные задачи оптимизации или нелинейные с очень специальной структурой. Эти подходы обычно вызывают проблемы управления данными, ограниченными размерностью 2 (так как таблицы предполагают именно эту размерность), и требуют много рутинной работы.

·        Языки алгебраического моделирования (ЯАМ) - намного лучший подход. Они позволяют записывать оптимизационные задачи в форме, близкой к обычной математической записи, являются гибкими и позволяют быстрое изменение моделей.

Наиболее важные особенности ЯАМ:

Ш  могут использоваться переменные и ограничения с произвольными именами (идентификаторами);

Ш  множества, индексы, алгебраические выражения (возможно, нелинейные);

Ш  обозначения близки к обычной математической записи;

Ш  структура (символическая запись) задачи не зависит и рассматривается отдельно от данных;

Ш  одни и те же модели могут применяться как для решения небольших задач, так и для решения реальных практических задач большой размерности;

Ш  большинство утверждений (операторов) являются декларативными, кроме условных операторов, циклов и очень немногочисленных процедурных операторов;

Ш  гибкость типов определения моделей;

Ш  удобства для специалиста по моделированию;

Ш  простота интерфейса между ЯАМ и сольвером:

o       должен легко соединять сольвер с ЯАМ и иметь простой доступ к модели, данным и производной информации, такой как производные (автоматическое дифференцирование);

o       возвращение данных сольвером обратно в ЯАМ в виде отчетов, решений, сообщений об ошибках должно быть непосредственным;

o       простая и мощная поддержка работы с данными (ODBC, интерфейс с табличным процессором, файлы данных).

Отметим, что при решении достаточно многих практически важных прикладных задач и моделей были использованы именно языки моделирования.

После того, как модель запрограммирована, далее используется решатель или сольвер, т.е. часть программного обеспечения, способного решать описанные выше задачи оптимизации. В идеале сольвер находит оптимальное решение, хотя в действительности бывает так, что при решении реальных прикладных оптимизационных задач иногда получают сообщение сольвера "задача недопустима" или "задача не имеет допустимых решений". В связи с этим, система моделирования должна также поддерживать идентификацию задач, не имеющих допустимых решений.

Языки алгебраического моделирования (ЯАМ) берут на себя задачу перевода математической постановки задачи в форму, понятную для соответствующего сольвера.

ЯАМ позволяют работать с моделями, заданными во входном файле в виде алгебраических уравнений и неравенств.

ЯАМ транслирует входной файл в понятный для сольвера вид и осуществляет вызов этого сольвера. В данном случае сольвер рассматривается как "черный ящик" (известно, какие исходные данные требуются для него и что будет получено в результате его работы). В ряде случаев сольвер может запросить дополнительную информацию, необходимую для его работы. Как только сольвер решит задачу, решение возвращается ЯАМ, и результаты сообщаются пользователю в удобной форме.

ЯАМ позволяют специалисту в области экономико-математического моделирования записать модель в математической форме, использующей множества индексов, параметры, переменные и константы. Очень важна возможность ЯАМ записывать подобные ограничения в виде множеств, к которым затем можно обращаться, используя соответствующие индексы. Это позволяет компактно записывать модели в виде, близком к естественной математической записи.

К основным языкам моделирования относятся AMPL, LINGO, AIMSS, GAMS.