Математическая оптимизация (альтернативно пишется оптимизация ) или математическое программирование — это выбор наилучшего элемента, с учетом некоторых критериев, из некоторого набора доступных альтернатив. [1] [2] Обычно она делится на две подобласти: дискретная оптимизация и непрерывная оптимизация . Задачи оптимизации возникают во всех количественных дисциплинах от компьютерных наук и инженерии [3] до исследования операций и экономики , а разработка методов решения представляла интерес для математиков на протяжении столетий. [4] [5]
В более общем подходе задача оптимизации состоит в максимизации или минимизации действительной функции путем систематического выбора входных значений из допустимого набора и вычисления значения функции. Обобщение теории и методов оптимизации на другие формулировки составляет большую область прикладной математики . [6]
Задачи оптимизации можно разделить на две категории в зависимости от того, являются ли переменные непрерывными или дискретными :
Задачу оптимизации можно представить следующим образом:
Такая формулировка называется задачей оптимизации или задачей математического программирования (термин, не имеющий прямого отношения к компьютерному программированию , но все еще используемый, например, в линейном программировании – см. Историю ниже). Многие реальные и теоретические задачи могут быть смоделированы в этой общей структуре.
Поскольку следующее справедливо
достаточно решать только задачи минимизации. Однако обратная точка зрения, рассматривающая только задачи максимизации, также была бы справедливой.
Задачи, сформулированные с использованием этой техники в области физики, могут ссылаться на технику как на минимизацию энергии , [7] говоря о значении функции f как представляющей энергию моделируемой системы . В машинном обучении всегда необходимо непрерывно оценивать качество модели данных с использованием функции стоимости , где минимум подразумевает набор возможно оптимальных параметров с оптимальной (наименьшей) ошибкой.
Обычно A — это некоторое подмножество евклидова пространства , часто определяемое набором ограничений , равенств или неравенств, которым должны удовлетворять члены A. Область A функции f называется пространством поиска или множеством выбора , в то время как элементы A называются потенциальными решениями или допустимыми решениями .
Функция f по-разному называется целевой функцией , критериальной функцией , функцией потерь , функцией стоимости (минимизация), [8] функцией полезности или функцией пригодности (максимизация), или, в некоторых областях, энергетической функцией или энергетическим функционалом . Допустимое решение, которое минимизирует (или максимизирует) целевую функцию, называется оптимальным решением .
В математике традиционные задачи оптимизации обычно формулируются в терминах минимизации.
Локальный минимум x * определяется как элемент, для которого существует некоторое δ > 0 такое, что
выражение f ( x *) ≤ f ( x ) справедливо;
то есть, в некоторой области вокруг x * все значения функции больше или равны значению в этом элементе. Локальные максимумы определяются аналогично.
В то время как локальный минимум по крайней мере так же хорош, как и любые близлежащие элементы, глобальный минимум по крайней мере так же хорош, как и каждый допустимый элемент. Как правило, если целевая функция не является выпуклой в задаче минимизации, может быть несколько локальных минимумов. В выпуклой задаче , если есть локальный минимум, который является внутренним (не на краю множества допустимых элементов), он также является глобальным минимумом, но невыпуклая задача может иметь более одного локального минимума, не все из которых должны быть глобальными минимумами.
Большое количество алгоритмов, предложенных для решения невыпуклых задач, включая большинство коммерческих решателей, не способны различать локально оптимальные решения и глобально оптимальные решения и будут рассматривать первые как фактические решения исходной задачи. Глобальная оптимизация — это раздел прикладной математики и численного анализа , который занимается разработкой детерминированных алгоритмов, способных гарантировать сходимость за конечное время к фактическому оптимальному решению невыпуклой задачи.
Задачи оптимизации часто выражаются специальными обозначениями. Вот несколько примеров:
Рассмотрим следующие обозначения:
Это обозначает минимальное значение целевой функции x 2 + 1 при выборе x из множества действительных чисел . Минимальное значение в этом случае равно 1, что происходит при x = 0 .
Аналогично, обозначение
запрашивает максимальное значение целевой функции 2 x , где x может быть любым действительным числом. В этом случае такого максимума нет, поскольку целевая функция неограниченна, поэтому ответом будет « бесконечность » или « не определено ».
Рассмотрим следующие обозначения:
или эквивалентно
Это представляет собой значение (или значения) аргумента x в интервале ( −∞,−1] , которое минимизирует (или минимизирует) целевую функцию x 2 + 1 (фактическое минимальное значение этой функции не соответствует тому, что требуется в задаче). В этом случае ответом будет x = −1 , поскольку x = 0 недопустимо, то есть не принадлежит допустимому множеству .
Сходным образом,
или эквивалентно
представляет собой пару (или пары) { x , y } , которая максимизирует (или максимизирует) значение целевой функции x cos y , с добавленным ограничением, что x лежит в интервале [−5,5] (опять же, фактическое максимальное значение выражения не имеет значения). В этом случае решениями являются пары вида {5, 2 k π } и {−5, (2 k + 1) π } , где k пробегает все целые числа .
Операторы arg min и arg max иногда также записываются как argmin и argmax и обозначают аргумент минимума и аргумент максимума .
Ферма и Лагранж нашли формулы для определения оптимумов, основанные на исчислении, в то время как Ньютон и Гаусс предложили итерационные методы движения к оптимуму.
Термин « линейное программирование » для некоторых случаев оптимизации был введен Джорджем Б. Данцигом , хотя большая часть теории была введена Леонидом Канторовичем в 1939 году. ( В данном контексте программирование не относится к компьютерному программированию , а происходит от использования программы военными США для обозначения предлагаемых учебных и логистических графиков, которые были проблемами, которые Данциг изучал в то время.) Данциг опубликовал алгоритм Simplex в 1947 году, а Джон фон Нейман и другие исследователи работали над теоретическими аспектами линейного программирования (например, теорией двойственности ) примерно в то же время. [9]
Среди других известных исследователей в области математической оптимизации можно назвать следующих:
В ряде подобластей методы предназначены в первую очередь для оптимизации в динамических контекстах (то есть принятия решений с течением времени):
Добавление более чем одной цели к задаче оптимизации добавляет сложности. Например, для оптимизации структурной конструкции может потребоваться конструкция, которая является одновременно легкой и жесткой. Когда две цели конфликтуют, необходимо создать компромисс. Может быть одна самая легкая конструкция, одна самая жесткая конструкция и бесконечное количество конструкций, которые являются некоторым компромиссом веса и жесткости. Набор компромиссных конструкций, которые улучшают один критерий за счет другого, известен как множество Парето . Созданная кривая, отображающая вес против жесткости лучших конструкций, известна как граница Парето .
План считается «оптимальным по Парето» (эквивалентно «эффективным по Парето» или входящим в множество Парето), если он не доминируется никаким другим планом: если он хуже другого плана в некоторых отношениях и не лучше ни в одном отношении, то он доминируется и не является оптимальным по Парето.
Выбор среди «оптимальных по Парето» решений для определения «предпочтительного решения» делегируется лицу, принимающему решения. Другими словами, определение проблемы как многокритериальной оптимизации сигнализирует о том, что некоторая информация отсутствует: желаемые цели даны, но их комбинации не оценены относительно друг друга. В некоторых случаях недостающая информация может быть получена в ходе интерактивных сеансов с лицом, принимающим решения.
Задачи многокритериальной оптимизации были далее обобщены до задач векторной оптимизации , где (частичный) порядок больше не определяется порядком Парето.
Задачи оптимизации часто являются многомодальными; то есть они имеют несколько хороших решений. Они все могут быть глобально хорошими (одинаковое значение функции стоимости) или может быть смесь глобально хороших и локально хороших решений. Получение всех (или, по крайней мере, некоторых) множественных решений является целью многомодального оптимизатора.
Классические методы оптимизации из-за их итеративного подхода не дают удовлетворительных результатов при использовании для получения нескольких решений, поскольку нет гарантии, что будут получены разные решения даже при разных начальных точках в нескольких запусках алгоритма.
Распространенные подходы к глобальным задачам оптимизации, в которых могут присутствовать множественные локальные экстремумы, включают эволюционные алгоритмы , байесовскую оптимизацию и имитацию отжига .
Проблема выполнимости , также называемая проблемой осуществимости , — это просто проблема нахождения любого осуществимого решения вообще без учета объективного значения. Это можно рассматривать как особый случай математической оптимизации, где объективное значение одинаково для каждого решения, и, таким образом, любое решение является оптимальным.
Многие алгоритмы оптимизации должны начинаться с допустимой точки. Один из способов получить такую точку — ослабить условия допустимости с помощью переменной slack ; при достаточном slack любая начальная точка допустима. Затем минимизируйте эту переменную slack, пока slack не станет нулевым или отрицательным.
Теорема об экстремальном значении Карла Вейерштрасса гласит, что непрерывная вещественная функция на компактном множестве достигает своего максимального и минимального значения. В более общем смысле, полунепрерывная снизу функция на компактном множестве достигает своего минимума; полунепрерывная сверху функция на компактном множестве достигает своей максимальной точки или вида.
Одна из теорем Ферма утверждает, что оптимумы задач без ограничений находятся в стационарных точках , где первая производная или градиент целевой функции равен нулю (см. тест первой производной ). В более общем смысле, они могут находиться в критических точках , где первая производная или градиент целевой функции равен нулю или не определен, или на границе множества выбора. Уравнение (или набор уравнений), утверждающее, что первая производная(ые) равна(ы) нулю во внутреннем оптимуме, называется «условием первого порядка» или набором условий первого порядка.
Оптимумы задач с ограничениями типа равенства можно найти с помощью метода множителей Лагранжа . Оптимумы задач с ограничениями типа равенства и/или неравенства можно найти с помощью « условий Каруша–Куна–Таккера ».
В то время как тест первой производной определяет точки, которые могут быть экстремумами, этот тест не отличает точку, которая является минимумом, от точки, которая является максимумом, или от точки, которая не является ни тем, ни другим. Когда целевая функция дважды дифференцируема, эти случаи можно различить, проверив вторую производную или матрицу вторых производных (называемую матрицей Гессе ) в задачах без ограничений, или матрицу вторых производных целевой функции и ограничений, называемых ограниченным Гессеном, в задачах с ограничениями. Условия, которые отличают максимумы или минимумы от других стационарных точек, называются «условиями второго порядка» (см. « Тест второй производной »). Если возможное решение удовлетворяет условиям первого порядка, то удовлетворение условий второго порядка также достаточно для установления по крайней мере локальной оптимальности.
Теорема огибающей описывает , как изменяется значение оптимального решения при изменении базового параметра . Процесс вычисления этого изменения называется сравнительной статикой .
Максимумная теорема Клода Бержа (1963) описывает непрерывность оптимального решения как функцию базовых параметров.
Для задач без ограничений с дважды дифференцируемыми функциями некоторые критические точки могут быть найдены путем нахождения точек, где градиент целевой функции равен нулю (то есть стационарных точек). В более общем смысле, нулевой субградиент подтверждает, что локальный минимум был найден для задач минимизации с выпуклыми функциями и другими локально липшицевыми функциями , которые встречаются при минимизации функции потерь нейронной сети. Оценка положительно-отрицательного импульса позволяет избежать локального минимума и сходится к глобальному минимуму целевой функции. [10]
Далее критические точки можно классифицировать с использованием определенности матрицы Гессе : если гессиан положительно определен в критической точке, то точка является локальным минимумом; если матрица Гессе отрицательно определена, то точка является локальным максимумом; наконец, если неопределенна, то точка является своего рода седловой точкой .
Задачи с ограничениями часто можно преобразовать в задачи без ограничений с помощью множителей Лагранжа . Лагранжева релаксация также может обеспечить приближенные решения сложных задач с ограничениями.
Когда целевая функция является выпуклой функцией , то любой локальный минимум будет также глобальным минимумом. Существуют эффективные численные методы минимизации выпуклых функций, такие как методы внутренней точки .
В более общем смысле, если целевая функция не является квадратичной функцией, то многие методы оптимизации используют другие методы, чтобы гарантировать, что некоторая подпоследовательность итераций сходится к оптимальному решению. Первый и все еще популярный метод обеспечения сходимости основан на линейных поисках , которые оптимизируют функцию вдоль одного измерения. Второй и все более популярный метод обеспечения сходимости использует доверительные области . Как линейные поиски, так и доверительные области используются в современных методах недифференцируемой оптимизации . Обычно глобальный оптимизатор намного медленнее продвинутых локальных оптимизаторов (таких как BFGS ), поэтому часто эффективный глобальный оптимизатор можно построить, запустив локальный оптимизатор из разных начальных точек.
Для решения проблем исследователи могут использовать алгоритмы , которые завершаются за конечное число шагов, или итерационные методы , которые сходятся к решению (для некоторого определенного класса задач), или эвристики , которые могут предоставлять приближенные решения некоторых задач (хотя их итерации не обязательно сходятся).
Итерационные методы, используемые для решения задач нелинейного программирования, различаются в зависимости от того, оценивают ли они гессианы , градиенты или только значения функций. Хотя оценка гессианов (H) и градиентов (G) улучшает скорость сходимости, для функций, для которых эти величины существуют и изменяются достаточно плавно, такие оценки увеличивают вычислительную сложность (или вычислительную стоимость) каждой итерации. В некоторых случаях вычислительная сложность может быть чрезмерно высокой.
Одним из основных критериев для оптимизаторов является просто количество требуемых оценок функций, поскольку это часто уже требует больших вычислительных усилий, обычно гораздо больше, чем в самом оптимизаторе, который в основном должен работать с N переменными. Производные предоставляют подробную информацию для таких оптимизаторов, но их еще сложнее вычислить, например, аппроксимация градиента требует не менее N+1 оценок функций. Для аппроксимаций 2-х производных (собранных в матрице Гессе) количество оценок функций составляет порядка N². Метод Ньютона требует производных 2-го порядка, поэтому для каждой итерации количество вызовов функций составляет порядка N², но для более простого чистого оптимизатора градиента это всего лишь N. Однако оптимизаторам градиента обычно требуется больше итераций, чем алгоритму Ньютона. Какой из них лучше с точки зрения количества вызовов функций, зависит от самой проблемы.
Помимо (конечно завершающихся) алгоритмов и (сходящихся) итерационных методов , существуют эвристики . Эвристика — это любой алгоритм, который не гарантирует (математически) нахождения решения, но который, тем не менее, полезен в определенных практических ситуациях. Список некоторых известных эвристик:
Задачи динамики твердого тела (в частности, динамики сочлененного твердого тела) часто требуют математических методов программирования, поскольку можно рассматривать динамику твердого тела как попытку решения обыкновенного дифференциального уравнения на многообразии ограничений; [11] ограничениями являются различные нелинейные геометрические ограничения, такие как «эти две точки всегда должны совпадать», «эта поверхность не должна пересекать никакую другую» или «эта точка всегда должна лежать где-то на этой кривой». Кроме того, задача вычисления контактных сил может быть решена путем решения линейной задачи дополнительности , которую также можно рассматривать как задачу квадратичного программирования (QP).
Многие проблемы проектирования также могут быть выражены в виде программ оптимизации. Это приложение называется оптимизацией проектирования. Одно из подмножеств — это инженерная оптимизация , а другое недавнее и растущее подмножество этой области — многопрофильная оптимизация проектирования , которая, хотя и полезна для решения многих задач, в частности, применяется к задачам аэрокосмической инженерии .
Этот подход может быть применен в космологии и астрофизике. [12]
Экономика достаточно тесно связана с оптимизацией агентов , поэтому влиятельное определение описывает экономику как науку как «изучение человеческого поведения как отношения между целями и ограниченными средствами» с альтернативными вариантами использования. [13] Современная теория оптимизации включает в себя традиционную теорию оптимизации, но также пересекается с теорией игр и изучением экономического равновесия . Коды журнала экономической литературы классифицируют математическое программирование, методы оптимизации и смежные темы под кодами JEL:C61-C63 .
В микроэкономике задача максимизации полезности и ее двойственная задача , задача минимизации расходов , являются задачами экономической оптимизации. Поскольку они ведут себя последовательно, предполагается, что потребители максимизируют свою полезность , в то время как фирмы обычно предполагают, что они максимизируют свою прибыль . Кроме того, агенты часто моделируются как не склонные к риску , тем самым предпочитая избегать риска. Цены на активы также моделируются с использованием теории оптимизации, хотя базовая математика опирается на оптимизацию стохастических процессов , а не на статическую оптимизацию. Международная торговая теория также использует оптимизацию для объяснения торговых моделей между странами. Оптимизация портфелей является примером многокритериальной оптимизации в экономике.
Начиная с 1970-х годов экономисты моделировали динамические решения с течением времени, используя теорию управления . [14] Например, динамические модели поиска используются для изучения поведения на рынке труда . [15] Важное различие существует между детерминированными и стохастическими моделями. [16] Макроэкономисты строят динамические стохастические модели общего равновесия (DSGE) , которые описывают динамику всей экономики как результат взаимозависимых оптимизирующих решений работников, потребителей, инвесторов и правительств . [17] . [18] [19]
Некоторые распространенные приложения методов оптимизации в электротехнике включают активную разработку фильтров, [20] уменьшение поля рассеяния в сверхпроводящих магнитных системах хранения энергии, проектирование пространственного картирования микроволновых структур, [21] антенны телефонов, [22] [23] [24] проектирование на основе электромагнитных полей. Электромагнитно-проверенная оптимизация проектирования микроволновых компонентов и антенн широко использовала соответствующую основанную на физике или эмпирическую суррогатную модель и методологии пространственного картирования с момента открытия пространственного картирования в 1993 году. [25] [26] Методы оптимизации также используются в анализе потока мощности . [27]
Оптимизация широко используется в гражданском строительстве. Управление строительством и транспортная инженерия являются одними из основных отраслей гражданского строительства, которые в значительной степени полагаются на оптимизацию. Наиболее распространенными проблемами гражданского строительства, которые решаются с помощью оптимизации, являются выемка и засыпка дорог, анализ жизненного цикла конструкций и инфраструктур, [28] выравнивание ресурсов , [29] [30] распределение водных ресурсов , управление дорожным движением [31] и оптимизация расписания.
Другая область, которая широко использует методы оптимизации, — это исследование операций . [32] Исследование операций также использует стохастическое моделирование и имитацию для поддержки улучшенного принятия решений. Все чаще исследование операций использует стохастическое программирование для моделирования динамических решений, которые адаптируются к событиям; такие проблемы можно решить с помощью крупномасштабной оптимизации и методов стохастической оптимизации .
Математическая оптимизация используется во многих современных разработках контроллеров. Высокоуровневые контроллеры, такие как управление с прогнозированием модели (MPC) или оптимизация в реальном времени (RTO), используют математическую оптимизацию. Эти алгоритмы работают в режиме онлайн и многократно определяют значения для переменных решения, таких как отверстия штуцеров на технологическом предприятии, итеративно решая математическую задачу оптимизации, включая ограничения и модель системы, которой нужно управлять.
Методы оптимизации регулярно используются в задачах оценки геофизических параметров. При наличии набора геофизических измерений, например, сейсмических записей , обычно решают физические свойства и геометрические формы подстилающих пород и жидкостей. Большинство задач в геофизике являются нелинейными, и широко используются как детерминированные, так и стохастические методы.
Нелинейные методы оптимизации широко используются в конформационном анализе .
Методы оптимизации используются во многих аспектах биологии вычислительных систем, таких как построение моделей, оптимальное экспериментальное проектирование, метаболическая инженерия и синтетическая биология. [33] Линейное программирование применялось для расчета максимально возможных выходов продуктов ферментации [33] и для выведения сетей регуляции генов из множественных наборов данных микрочипов [34] , а также сетей регуляции транскрипции из высокопроизводительных данных. [35] Нелинейное программирование применялось для анализа энергетического метаболизма [36] и применялось к метаболической инженерии и оценке параметров в биохимических путях. [37]