Нелинейное программирование (NLP, англ. NonLinear Programming) — случай математического программирования, который не сводится к постановке задачи линейного программирования (например, в котором целевой функцией или ограничением является нелинейная функция)[1].
Задача нелинейного программирования ставится как задача нахождения оптимума определённой целевой функции при выполнении условий
где — параметры, — ограничения, — количество параметров, — количество ограничений.
В отличие от задачи линейного программирования, в задаче программирования нелинейного оптимум не обязательно лежит на границе области, определённой ограничениями.
Одним из методов, которые позволяют свести задачу нелинейного программирования к решению системы уравнений, является метод неопределенных множителей Лагранжа.
Если целевая функция является линейной, а ограниченным пространством является политоп, то задача является задачей линейного программирования, которая может быть решена с помощью хорошо известных решений линейного программирования.