- •Лекция 1
- •Лекция 2
- •Уравнении с одним неизвестным
- •Метод деления отрезка пополам (метод бисекции).
- •Метод Ньютона (метод касательных).
- •Метод простой итерации.
- •Лекция 3 Системы линейных уравнений
- •3.Прямые методы
- •Итерационные методы
- •Метод Гаусса — Зейделя.
- •Системы уравнений.
- •Лекция 4 Аппроксимация функций.
- •Точечная аппроксимация.
- •Многочлены Чебышева.
- •Линейная и квадратичная интерполяция.
- •Сплайны.
- •Многочлен Лагранжа.
- •Лекция 5.
- •Метод Симпсона.
- •Использование сплайнов.
- •Кратные интегралы.
- •Метод Монте-Карло.
- •Лекция 6. Численное дифференцированно.
- •Погрешность численного дифференцирования.
- •Метод неопределенных коэффициентов.
- •Улучшение аппроксимации.
- •Частные производные.
- •Лекция 7.
- •Основные понятия.
- •Задачи оптимизации.
- •Одномерная оптимизация.
- •1. Задачи на экстремум.
- •Метод золотого сечения.
- •Метод градиентного спуска.
- •Лекция 8. Задачи с ограничениями.
- •Линейное программирование.
- •Геометрический метод.
- •Симплекс-метод.
- •Задача о ресурсах.
Симплекс-метод.
Рассмотренный геометрический метод решения задач линейного программирования достаточно прост и нагляден для случая двух и даже трех переменных. Для большего числа переменных применение геометрического метода становится невозможным.
Правда, мы видели, что оптимальные
значения целевой функции достигаются
на границе области допустимых решений.
Поэтому в случае
неизвестных (
)
можно построить
-
мерный многогранник решений, найти
его вершины и вычислить значения целевой
функции в этих точках. Наименьшее среди
полученных значений можно принять за
искомое, а координаты соответствующей
вершины - за оптимальные значения
проектных параметров.
Однако решение задачи линейного
программирования не так просто, как
может показаться на первый взгляд.
Сложность состоит в том, что количество
проектных параметров в реальных
задачах (особенно в экономических)
может достигать сотен и даже тысяч. При
этом число вершин многогранника
может быть настолько большим, что перебор
вершин и вычисление в них значений
целевой функции приведет к такому объему
вычислений, который практически
невозможно осуществить в течение
разумного времени даже с помощью ЭВМ.
Одним из методов, позволяющих эффективно решать подобные задачи, причем с гораздо меньшим числом операций, является симплекс-метод.
Симплексом называется простейший
выпуклый многогранник при данном
числе измерений. В частности, при
- произвольный треугольник,
- произвольный тетраэдр.
Идея симплекс-метода состоит в следующем. Примем в качестве начального приближения координаты некоторой вершины многогранника допустимых решений и найдем все ребра, выходящие из этой вершины. Двигаемся вдоль того ребра, по которому линейная целевая функция убывает. Приходим в новую вершину, находим все выходящие из нее ребра, двигаемся по одному из них и т.д. В конце концов мы придем в такую вершину, движение из которой вдоль любого ребра приведет к возрастанию целевой функции. Следовательно, минимум достигнут, и координаты этой последней вершины принимаются в качестве оптимальных значений рассматриваемых проектных параметров.
Отметим, что (поскольку
— линейная функция, а многогранник
выпуклый) данный вычислительный процесс
сходится к решению задачи, причем за
конечное число шагов
.
В данном случае их число порядка
,
т.е. значительно меньше числа шагов в
методе простого перебора вершин, где
может быть порядка
.
Пусть задача линейного программирования
состоит в том, что нужно найти такие
неотрицательные значения проектных
параметров
,
которые минимизируют линейную целевую
функцию
(1)
при заданных ограничениях в виде системы линейных уравнений
(2).
Если в качестве ограничений заданы
неравенства, то их можно преобразовать
в равенства путем введения дополнительных
неотрицательных переменных, которые
называются балансовым. Например,
имея некоторое неравенство
,
можно всегда ввести новую переменную
такую, что после ее прибавления к
левой части данного неравенства получим
равенство
.
Будем считать, что все уравнения системы
(2) линейно независимы, т.е. ни одно из
них нельзя получить как линейную
комбинацию других. В противном случае
линейно зависимые уравнения можем
отбросить. И кроме того, эта система
совместна, т.е. среди уравнений системы
нет противоречивых. Ясно, что при этих
предположениях число уравнений
меньше числа переменных
,
поскольку при
система (2) имеет единственное решение,
что исключает всякую оптимизацию;
при
не выполняются сделанные выше
предположения.
Выразим первые
переменных
через остальные с помощью уравнений
(2):
(3).
Переменные
называются базисными, а вектор
-
базисом;
- свободные переменные.
Используя соотношения (3), можно выразить линейную целевую функцию (1) через свободные переменные:
(4).
Процесс оптимизации начнем с некоторого начального (опорного) решения, например при нулевых значениях свободных переменных. Тогда получим
(5).
При этом целевая функция (4) принимает
значение
.
Дальнейшее решение задачи симплекс-методом распадается на ряд этапов, заключающихся в том, что от одного решения нужно перейти к другому с таким условием, чтобы целевая функция не возрастала. Это достигается выбором нового базиса и значений свободных переменных.
Выясним, является ли опорное решение
(5) оптимальным. Для этого проверим,
можно ли уменьшить соответствующее
этому решению значение целевой функции
при изменении каждой свободной переменной.
Поскольку
,
то мы можем лишь увеличивать их значения.
Если коэффициенты
в формуле (4) неотрицательны, то при
увеличении любой свободной переменной
целевая функция не может уменьшиться.
В этом случае решение (5) окажется
оптимальным.
Пусть теперь среди коэффициентов
формулы (4) хотя бы один отрицательный,
например
.
Это означает, что при увеличении
переменной
целевая функция уменьшается по
сравнению со значением
,
соответствующим решению (5). Поэтому
в качестве нового опорного выбирается
решение при следующих значениях свободных
параметров:
(6).
При этом базисные переменные, вычисляемые по формулам (3), равны
(7).
Если все коэффициенты
неотрицательны, то
можно увеличивать неограниченно; в этом
случае не существует оптимального
решения задачи. Однако на практике такие
случаи, как правило, не встречаются.
Обычно среди коэффициентов
имеются отрицательные, а это влечет за
собой угрозу сделать некоторые переменные
в (7) отрицательными из-за большого
значения
.
Следовательно, переменную
можно увеличивать лишь до тех пор, пока
базисные переменные остаются
неотрицательными. Это и является условием
выбора значения
.
Его можно записать в виде
(8).
Среди всех отрицательных коэффициентов
найдем наибольший по модулю. Пусть его
значение равно
,
а соответствующее ему значение
равно
.
Тогда из (8) получим максимально
возможное значение переменной
на данном шаге оптимизации:
,
и новое опорное решение запишем в виде
,
,
,
(9).
целевая функция при этих значениях проектных параметров равна
(10).
Полученное значение целевой функции
меньше предыдущего, поскольку в данной
формуле второй член правой части
больше нуля (
).
На этом заканчивается первый шаг
оптимизации. Теперь нужно сделать
второй шаг, используя аналогичную
процедуру. Для этого необходимо выбрать
новый базис, принимая в качестве базисных
переменных параметры
.
После второго шага мы либо найдем новые
оптимальные значения переменных и
соответствующее им значение целевой
функции
,
либо покажем, что решение (9) является
оптимальным. В любом случае после
конечного числа шагов мы придем к
оптимальному решению. Еще раз подчеркнем,
что в отличие от метода перебора
симплекс-метод дает возможность
вести поиск целенаправленно, уменьшая
на каждом шаге значение целевой
функции.
В качестве примера, иллюстрирующего симплекс-метод, рассмотрим задачу об использовании ресурсов.
