Общая запись задач оптимизации задаёт большое разнообразие их классов. От класса задачи зависит подбор метода (эффективность её решения). Классификацию задач определяют: целевая функция и допустимая область (задаётся системой неравенств и равенств или более сложным алгоритмом).
Методы оптимизации классифицируют в соответствии с задачами оптимизации:
- Локальные методы: сходятся к какому-нибудь локальному экстремуму целевой функции. В случае унимодальной целевой функции, этот экстремум единственен, и будет глобальным максимумом/минимумом.
- Глобальные методы: имеют дело с многоэкстремальными целевыми функциями. При глобальном поиске основной задачей является выявление тенденций глобального поведения целевой функции.
Существующие в настоящее время методы поиска можно разбить на три большие группы:
- детерминированные;
- случайные (стохастические);
- комбинированные.
По критерию размерности допустимого множества, методы оптимизации делят на методы одномерной оптимизации и методы многомерной оптимизации.
|
|
По виду целевой функции и допустимого множества, задачи оптимизации и методы их решения можно разделить на следующие классы:
- Задачи оптимизации, в которых целевая функция и ограничения являются линейными функциями, разрешаются так называемыми методами линейного программирования.
- В противном случае имеют дело с задачей нелинейного программирования и применяют соответствующие методы. В свою очередь из них выделяют две частные задачи:
- если и — выпуклые функции, то такую задачу называют задачей выпуклого программирования;
- если , то имеют дело с задачей целочисленного (дискретного) программирования.
По требованиям к гладкости и наличию у целевой функции частных производных, их также можно разделить на:
- прямые методы, требующие только вычислений целевой функции в точках приближений;
- методы первого порядка: требуют вычисления первых частных производных функции;
- методы второго порядка: требуют вычисления вторых частных производных, то есть гессиана целевой функции.
Помимо того, оптимизационные методы делятся на следующие группы:
- аналитические методы (например, метод множителей Лагранжа и условия Каруша-Куна-Таккера);
- численные методы;
- графические методы.
В зависимости от природы множества X задачи математического программирования классифицируются как:
- задачи дискретного программирования (или комбинаторной оптимизации) — если X конечно или счётно;
- задачи целочисленного программирования — если X является подмножеством множества целых чисел;
- задачей нелинейного программирования, если ограничения или целевая функция содержат нелинейные функции и X является подмножеством конечномерного векторного пространства.
- Если же все ограничения и целевая функция содержат лишь линейные функции, то это — задача линейного программирования.
Разделами математического программирования являются параметрическое программирование, динамическое программирование и стохастическое программирование. Математическое программирование используется при решении оптимизационных задач исследования операций.
|
|
Способ нахождения экстремума полностью определяется классом задачи. Но перед тем, как получить математическую модель, нужно выполнить 4 этапа моделирования:
- Определение границ системы оптимизации
- Отбрасываем те связи объекта оптимизации с внешним миром, которые не могут сильно повлиять на результат оптимизации, а, точнее, те, без которых решение упрощается
- Выбор управляемых переменных
- «Замораживаем» значения некоторых переменных (неуправляемые переменные). Другие оставляем принимать любые значения из области допустимых решений (управляемые переменные)
- Определение ограничений на управляемые переменные
- … (равенства и\или неравенства)
- Выбор числового критерия оптимизации
- Создаём целевую функцию
При решении конкретной задачи оптимизации исследователь прежде всего должен выбрать математический метод, который приводил бы конечным результатам с наименьшими затратами на вычисления или же давал возможность получить наибольший объем информации об искомом решении. Выбор того или иного метода в значительной степени определяется постановкой оптимальной задачи, а также используемой математической моделью объекта оптимизации.
В настоящее время для решения оптимальных задач применяют в основном следующие методы:
· методы исследования функций классического анализа;
· методы, основанные на использовании неопределенных множителей Лагранжа;
· вариационное исчисление;
· динамическое программирование;
· принцип максимума;
· линейное программирование;
· нелинейное программирование.
· В последнее время разработан и успешно применяется для решения определенного класса задач метод геометрического программирования.
Мы остановимся только на изучении численных методов оптимизации, поскольку это наиболее распространенные и эффективные методы. И хотя все численные методы оптимизации носят итерационный характер, а, следовательно, достаточно трудоемки, они очень алгоритмичны. Именно это свойство позволяет исключить ручные расчеты и полностью их автоматизировать (программировать).
Численные методы оптимизации реализованы и широко используются в математических пакетах.
При этом наличие готовых программных средств (математических библиотек и пакетов) не только не снимает необходимость изучения методов, а наоборот, делает подготовку в этом направлении еще более актуальной. Это связано с тем, что при решении реальной задачи от специалиста требуется грамотная математическая постановка задачи, ее формализация, обоснование и выбор наиболее эффективного метода расчета, а также умение производить оценку адекватности и точности полученных результатов.