- •Основные принципы и правила составления математических моделей
- •Транспортная задача. Граф перевозок. Признак оптимальности. Метод потенциалов.
- •Задача линейного программирования: общая формулировка. Основные идеи и алгоритм симплекс-метода
- •Пример решения задачи лп на максимум с ограничениями-равенствами симплекс-методом
- •Динамическое программирование. Основное рекуррентное соотношение Беллмана. Общие принципы решения задач динамического программирования
- •Специальные задачи математического программирования. Задача о назначениях. Задача о коммивояжере
- •1°. Задача о назначениях
Задача линейного программирования: общая формулировка. Основные идеи и алгоритм симплекс-метода
Линейное программирование (ЛП) объединяет методы решения задач, которые описываются линейными уравнениями или неравенствами, причем целевая функция также линейна; оно широко используется при составлении оптимального по прибыли плана, выборе наилучшей схемы перевозок, наименьшего уровня потребления ресурсов при заданном нормативном расходе их на единицу продукции.
Задача:
1. Целевая функция представляет собой линейную сумму от неизвестных переменных xj вида
где cj – известные коэффициенты. Такую целевую функцию часто называют линейной формой и обозначают L.
2. Ограничения, накладываемые на область возможных решений, имеют вид линейных уравнений или неравенств ,
где aij, bi – известные величины, причем bi положительные.
СИМЛЕКС-метод
Он состоит в направленном переборе допустимых базисных решений (ДБР) вплоть до нахождения оптимума, когда все «оценки» становятся неотрицательными. «Оценки» вычисляются как компоненты вектора, соответствующего решению двойственной задачи ЛП.
Этапы решения задачи симплекс-методом:
1) формирование начального ДБР;
2) проверка его на оптимальность с помощью признака оптимальности;
3) поиск вектора, вводимого в базис, и вектора, выводимого из базиса (в случае неоптимальности);
4) изменение базиса и пересчет симплекс-таблицы (получение нового ДБР);
5) возвращение к п. 2.
Пример решения задачи лп на максимум с ограничениями-равенствами симплекс-методом
Дано: С = (3, 2, 1, –1, 0),
b = A =
Требуется найти max (3x1 + 2x2 + x3 – x4 + 0x5 )
при ограничениях: 3x1 + x2 + 3x3 – x4 + 2x5 = 5,
3x1 + 2x2 + x3 + x5 = 5,
7x1 + 2x2 + 2x3 – x5 = 5,
x1÷5 0.
ВАЖНО Если ограничения – неравенства, то нужно привести к стандартному виду:
- путем ввода ДОПОЛНИТЕЛЬНЫХ переменных (если <= то + хn’, если >= то –хn’)
- справа всегда неотрицательное число;
- в случае, если нет ограничения на знак (например, х1 – любое, то заменяется разностью двух положительных переменных)
ВАЖНО Если функция на min(a+b), то меняется на –(max(-a-b)).
Вводим искусственные переменные в каждое из ограничений и с большим по абсолютной величине отрицательным числом в целевой функции:
max (3x1 + 2x2 + x3 – x4 + 0x5 – 100x6 – 100x7 – 100x8).
3x1 + x2 + 3x3 + x4 + 2x5 + x6 = 5,
3x1 + 2x2 + x3 + x5 + x7 = 5,
7x1 – 2x2 + 2x3 – x5 + x8 = 5,
x1÷8 0.
Построим начальную симплекс-таблицу 7.1:
L = –1500 |
x1 |
x2 |
x3 |
x4 |
x5 |
x6 |
x7 |
x8 |
Θ |
|
cbase |
xbase |
3 |
2 |
1 |
–1 |
0 |
–100 |
–100 |
–100 |
|
100 |
x6=5 |
3 |
1 |
3 |
1 |
2 |
1 |
0 |
0 |
5/3 |
100 |
x7=5 |
3 |
2 |
1 |
0 |
1 |
0 |
1 |
0 |
5/3 |
100 |
x8=5 |
7 |
–2 |
2 |
0 |
–1 |
0 |
0 |
1 |
5/7 |
j |
–1303 |
–102 |
–601 |
–99 |
–200 |
0 |
0 |
0 |
|
Получено НДБР. Проверим его на оптимальность, т.е. посчитаем j и добавим результаты в таблицу:
1 = 3 (–100) + 3 (–100) + 7 (–100) – 3 = 1303,
2 = 1 (–100) + 2 (–100) – 2 (–100) – 2 = 102,
3 = 3 (–100) + 1 (–100) + 2 (–100) – 1 = 601,
4 = 1 (–100) – (–1) = 99,
5 = 2 (–100) + 1 (–100) – 1 (–100) – 0 = 200.
И т.д. пока не будет отрицательных . Потом не забыть преобразовать max в min, доп. переменные в начальные и т.д., посчитать значение целевой функции.