Математическое программирование [mathematical programming] — (см. также Оптимальное программирование) — раздел математики, который «… изучает методы решения задач на нахождение экстремума функций (показателя качества решения) при ограничениях в форме уравнений и неравенств»[1]. Оно объединяет различные математические методы и дисциплины исследования операций: линейное программирование, нелинейное программирование, динамическое программирование, выпуклое программирование, геометрическое программирование, целочисленное программирование и др.
Общая задача М.п. состоит в нахождении оптимального (максимального или минимального) значения целевой функции, причем значения переменных должны принадлежать некоторой области допустимых значений(см. Область допустимых решений). В самом общем виде задача записывается так:
U = f(x) → max; x ∈ M,
где x = (x1, x2,…, xn); M — область допустимых значений переменных x1,…, xn; f(x) — целевая функция.
Частный случай задачи М.п. — «классическая задача«. В ней область M представлена равенствами:
g (x) = b,
где g (x) — вектор функций ограничений, b — вектор констант ограничений.
Названные выше разнообразные дисциплины отличаются друг от друга видом целевой функции f(x) и области М. Например, если f(x) и M — линейны, имеем задачу линейного программирования; если же дополнительно ставится условие, чтобы переменные были целочисленны, — имеем задачу целочисленного программирования; если зависимость U от x (т.е. форма f) носит нелинейный характер — задачу нелинейного программирования.
Развивающаяся область — стохастическое программирование, задачи которого в отличие от детерминированных характеризуются тем, что их исходные данные (все или часть) — суть случайные величины.