Белая лестница с плавным изгибом и перилами в современном архитектурном пространстве.

Краткое введение в нелинейную оптимизацию с ограничениями и кусочно-линейными приближениями

Кусочно-линейные аппроксимации — это практичный способ обработки нелинейных моделей с ограничениями, использующих решатели LP/MIP, такие как Gurobi.

Делиться

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

Общая задача оптимизации с ограничениями состоит в выборе nn действительных переменных решения x0, x1, …, xn−1x_0, x_1,dots,x_{n-1} из заданной допустимой области таким образом, чтобы оптимизировать (минимизировать или максимизировать) заданную целевую функцию.

[f(x_0,x_1,dots,x_{n-1}).]

Обычно мы обозначаем xx вектором из nn действительных переменных решения x0, x1, …, xn−1.x_0, x_1, …, x_{n-1}. То есть, x=(x0, x1, …, xn−1)x=(x_0, x_1, …, x_{n-1}), и записываем общую нелинейную программу следующим образом:

[begin{aligned}text{ Максимизировать }&f(x)\text{ При условии }&g_i(x)leq b_i&&qquad(i=0,1,dots,m-1)\&xinmathbb{R}^nend{aligned}]

где каждая из функций ограничения g0g_0 до gm−1g_{m-1} задана, а каждый bib_i является константой (Брэдли и др., 1977).

Это лишь один из возможных способов сформулировать задачу. Минимизация f(x)f(x) эквивалентна максимизации −f(x)⋅-f(x). Аналогично, равенство h(x)=bh(x)=b можно выразить как пару неравенств h(x)≤bh(x)leq b и −h(x)≤−b⋅-h(x)leq-b. Более того, добавив дополнительную переменную, любое неравенство можно преобразовать в равенство (Bradley et al., 1977).

Подобные проблемы встречаются во многих областях применения, например, в бизнесе, где компания стремится максимизировать прибыль или минимизировать затраты, работая в условиях ограниченных ресурсов или финансирования (Черри, 2016).

Если f(x) — линейная функция, а ограничения — линейные, то задача называется задачей линейного программирования (ЛП) (Черри, 2016).

«Задача называется задачей нелинейного программирования (НЛП), если целевая функция нелинейна и/или допустимая область определяется нелинейными ограничениями» (Брэдли и др., 1977, с. 410).

Допущения и приближения, используемые в линейном программировании, иногда позволяют получить подходящую модель для интересующих диапазонов переменных решения. Однако в других случаях нелинейное поведение целевой функции и/или ограничений имеет важное значение для точной формулировки приложения в виде математической программы (Брэдли и др., 1977).

Нелинейное программирование относится к методам решения задач нелинейного программирования. Хотя существует множество зрелых программ для решения задач линейного программирования, задачи нелинейного программирования, особенно те, которые включают нелинейности более высокого порядка, как правило, сложнее решить (Cherry, 2016).

Сложные задачи нелинейного программирования возникают в таких областях, как проектирование электронных схем, оптимизация финансового портфеля, оптимизация газовых сетей и проектирование химических процессов (Черри, 2016).

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

Чтобы перейти от теории к работающей модели на Python, мы рассмотрим следующие разделы:

  • Разделяемые функции
  • Пример
  • Комплекты типа 2, изготавливаемые по специальному заказу.
  • О выпуклых и вогнутых функциях
  • Реализация на Python
  • Дополнительная литература
  • Заключение
  • Ссылки

Данный текст предполагает некоторое знакомство с математическим программированием. После определения разделяемых функций мы приводим пример разделяемой нелинейной максимизации и описываем подход, основанный на кусочно-линейных (PWL) аппроксимациях нелинейной целевой функции.

Далее мы определяем специальные упорядоченные множества типа 2 и объясняем, как они подтверждают численную формулировку.

Далее мы представим теоретические основы, изложенные в работе «О выпуклых и вогнутых функциях», а также инструменты, используемые на протяжении всей оставшейся части этой работы по нелинейному программированию (НЛП).

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

Источник: towardsdatascience.com

ОСТАВЬТЕ СВОЙ КОММЕНТАРИЙ

Image Not Found
Трое людей используют смартфоны на складе, один в жилете, все с беспроводными наушниками.

Компания DeepL, известная своими функциями перевода текста, теперь хочет переводить и ваш голос.

Источник изображения: DeepL Компания DeepL, специализирующаяся на переводе и известная своими текстовыми инструментами, сегодня выпустила…

Апр 16, 2026
ideipro logotyp

Лучшая камера GoPro (2026): компактная, бюджетная, аксессуары

Вы — герой боевиков, и вам нужна соответствующая камера. Мы поможем вам разобраться во всех моделях, дадим рекомендации по аксессуарам и…

Апр 16, 2026
Родео: ковбой на скачущей лошади в загоне, стильная обработка изображения.

Почему мнения об ИИ так разделились

Стефани Арнетт/MIT Technology Review | Getty Images Эта статья первоначально появилась в The Algorithm, нашей еженедельной рассылке об…

Апр 16, 2026
ideipro logotyp

Вложенное древовидное пространство: геометрическая основа для кофилогении

arXiv:2604.05056v2 Тип объявления: replace-cross Аннотация: Вложенные (или согласованные) филогенетические деревья моделируют…

Апр 16, 2026

Впишите свой почтовый адрес и мы будем присылать вам на почту самые свежие новости в числе самых первых

ИдеиPRO