Предположение о возможности описать зависимости между управляемыми переменными с помощью линейных функций вообще говоря не всегда адекватно природе моделируемого объекта. Например, в рассмотренных моделях цена товара считается независимой от количества произведенного продукта, однако в повседневной жизни мы постоянно сталкиваемся с тем, что она может зависеть от объема партии товара. Аналогичные замечания могут быть сделаны и по поводу технологических ограничений: расход определенных видов сырья и ресурсов происходит не линейно, а скачкообразно (в зависимости от объема производства). Попытки учесть эти факторы приводят к формулировке более общих и сложных оптимизационных задач. Изучение методов их решения составляет предмет научной области, получившей названия нелинейного программирования.
Общая задача нелинейного программирования (ОЗНП) определяется как задача нахождения максимума (или минимума) целевой функции на множестве D, определяемом системой ограничений
(1)
где хотя бы одна из функций f или является нелинейной.
По аналогии с линейным программированием ЗНП однозначно определяется парой и кратко может быть записана в следующем виде
(2)
Для определенности, в дальнейшем по умолчанию будем рассматривать задачи максимизации.
Как и в ЗЛП, вектор называется допустимым планом, а если для любого выполняется неравенство , то называют оптимальным планом. В этом случае является точкой глобального максимума.
С точки зрения экономической интерпретации может рассматриваться как доход, который получает фирма (предприятие) при плане выпуска х, а как технологические ограничения на возможности выпуска продукции. В данном случае они являются обобщением ресурсных ограничений в ЗЛП
Задача (2) является общей, т. к. допускает запись логических условий, например:
или запись условий дискретности множеств:
.
Набор ограничений, определяющих множество D, при необходимости всегда можно свести либо к системе, состоящей из одних неравенств:
либо, добавив фиктивные переменные у, к системе уравнений:
Перечислим свойства ЗНП, которые существенно усложняют процесс их решения по сравнению с задачами линейного программирования:
1. Множество допустимых планов D может иметь очень сложную структуру (например, быть невыпуклым или несвязным).
2. Глобальный максимум (минимум) может достигаться как внутри множества D, так и на его границах (где он, вообще говоря, будет не совпадать ни с одним из локальных экстремумов).
3. Целевая функция f может быть недифференцируемой, что затрудняет применение классических методов математического анализа.
В силу названных факторов задачи нелинейного программирования настолько разнообразны, что для них не существует общего метода решения.