- •Содержание
- •Предисловие
- •Глава I. Начала линейного программирования
- •§1. Задача линейного программирования. Типичные задачи линейного программирования, их математические модели.
- •1.1 . Задача линейного программирования
- •1.2. Типичные злп и их математические модели
- •1.3. Упражнения.
- •§2. Общая злп. Канонический вид злп.
- •2.2. Канонический вид злп
- •§3. Теоретические основы решения злп. Геометрическая интерпретация злп. Идея аналитического решения
- •3.1. Теоретические основы решения злп
- •3.2. Геометрическая интерпретация злп
- •3.4. Идея аналитического решения злп
- •3.5. Теоретические основы решения злп (продолжение)
- •§4. Симплекс-метод решения злп
- •4.1. Алгоритм симплекс-метода
- •4.2. Симплекс-таблицы.
- •§5. Метод искусственного базиса
- •5.1. Суть метода искусственного базиса
- •Глава II. Двойственность и целочисленность в линейном программировании. Транспортная задача.
- •§1. Теория двойственности
- •1.1. Задача, приводящая к паре двойственных задач
- •1.2. Пара симметричных двойственных задач
- •1.3. Пара несимметричных двойственных задач
- •1.4. Теоремы двойственности
- •1.5. Упражнения.
- •§2. Элементы целочисленного программирования
- •2.1. Постановка и геометрическая интерпретация
- •2.2. Метод Гомори
- •2.3. Упражнения.
- •§3. Транспортная задача
- •3.1. Постановка и математическая модель транспортной задачи
- •3.2. Теоретические основы решения транспортной задачи
- •3.3. Алгоритм метода потенциалов.
- •3.3.1. Основные пункты алгоритма:
- •3.3.2. Построение первоначального опорного плана.
- •3.3.4. Переход к новому опорному плану (построение очередного опорного плана).
- •3.3.5. Метод наименьших затрат построения первоначального опорного плана.
- •3.4. Сведение задачи открытого типа к задаче закрытого типа
- •3.5. Упражнения.
- •Задание лп-4
- •Задание лп-5
- •Задание лп-6
- •1. Приводим задачу к каноническому виду.
- •Задание лп-4
- •Задание лп-5
- •Задание лп-6
3.5. Теоретические основы решения злп (продолжение)
Как мы увидели в предыдущем пункте, при решении ЗЛП аналитическим методом имеются определённые признаки, по которым можно определить, является ли данное опорное решение оптимальным. Конечно, те признаки, которыми мы пользовались, чисто интуитивные. Мы приведём здесь научные признаки.
Пусть X1 некоторое опорное решение ЗЛП (1.6), причём в (1.6) базисные переменные уже выражены через свободные, то есть в этой системе базисные переменные уже исключены из всех уравнений, кроме одного, в который она входит с коэффициентом 1. Например, если в X1 базисными являются x1, x2, …, xn, то (1.6) имеет вид
c1x1+c2x2+…+cnxnmax(min)
(1.7)
Обозначим
через Iб=(i1,
i2,
…,
im)
вектор индексов переменных, входящих
в базис, а через Cб=(
,
,
…,
)
вектор коэффициентов целевой функции
при базисных переменных. Например, если
мы имеем ситуацию (1.7), то Iб=(1,
2, …,
m),
Cб=(c1,
c2,
…,
cm).
Величина
k=CбAkck=
ck
называется оценкой
разложения вектора условий Ak
по базису опорного решения.
Так
в ситуации (1.7) имеем k=
ck.
Ясно, что если kIб
(то есть если переменная xk
базисная), то k=0.
Пусть
опорное решение X2
получено из X1
переводом некоторой переменной xk
из свободных в базисные. Введём обозначение
k=
Можно доказать, что тогда
3.5.1. CX2CX1=kk. Другими словами, при переходе от опорного решения X1 к опорному решению X2 включением в число базисных переменных xk значение целевой функции меняется на kk.
Отсюда получаем, что
3.5.2. Для получения более высокого значения целевой функции (при решении задачи на максимум) необходимо включить в число базисных переменных переменную xk такую, что k<0. Для получения более низкого значения целевой функции (при решении задачи на минимум) необходимо включить в число базисных переменных переменную xk такую, что k>0.
3.5.3. Если в опорном решении X для всех свободных переменных xk имеет место оценка k≥0, то на X достигается максимум целевой функции, а если k≤0, то минимум.
Условия k≥0 для максимума и k≤0 для минимума называются достаточными условиями решения задачи. Если они не выполняются или для всех свободных переменных xk имеет место aik≤0 при любом iIб, то ЗЛП не имеет решений.
§4. Симплекс-метод решения злп
4.1. Алгоритм симплекс-метода
Пусть имеется ЗЛП (1.6). Из предыдущего параграфа вытекает, что для нахождения решения ЗЛП достаточно последовательно перебрать угловые точки (число которых конечное) области допустимых решений задачи и выбрать ту, в которой достигается экстремум целевой функции. На этом строится симплекс-метод решения ЗЛП, алгоритм которого следующий:
1. Привести задачу к каноническому виду.
2. С помощью метода Жордана-Гаусса найти очередное опорное решение.
3. Проверить на оптимальность очередное опорное решение. Если оно оптимальное, то задача решена. В противном случае перейти к пункту 2.
Опорное решение, полученное на первом шаге, называется первоначальным опорным планом.
Для нахождения первоначального опорного плана (после приведения задачи к каноническому виду) поступаем следующим образом:
Из векторов условий A1, A2, …, An включаем в базис те, которые являются стандартными единичными (то есть те, у которых все координаты нулевые, кроме одной, которая равна 1; среди них обязательно окажутся те, которые соответствуют дополнительным переменным с положительным знаком). Соответствующие переменные будут включены в базис. Если число таких векторов условий равно m, то первоначальный опорный план построен: им является решение системы ограничений, полученное приравниванием свободных переменных к 0. В противном случае идём к пункту 2.
Допустим, переменная xk пока не вошла в базис. Тогда выбираем уравнение, в котором отношение
(где aik>0)
будет минимальным. Это (i-е)
уравнение будет ведущим: разделив его
на коэффициент aik
при xk,
добиваемся, чтобы коэффициент при xk
стал равным 1, а из остальных уравнений
xk
исключаем (применяем метод Жордана-Гаусса).
Процесс продолжаем до тех пор, пока
базис не будет содержать m
переменных.
Если во всех уравнениях коэффициент при xk будет неположительным (то есть aik0), то xk нельзя включать в базис. Кроме того, если минимум чисел достигается в уравнении, в котором имеется базисная переменная xl, то при включении xk в базис переменная xl из базиса исключится. Поэтому для включения в базис очередной переменной xk (без исключения из базиса другой) необходимо в качестве базисной выбрать такую переменную, чтобы минимум чисел достигался в уравнении, не содержащем базисных переменных.
Пример 1. Найти первоначальный опорный план задачи:
3x1+x2+2x3max(min)
Решение. Решим задачу вначале «вручную».
1. Приведём задачу к каноническому виду. Для этого сначала умножим второе неравенство системы ограничений на (1) (добиваемся, чтобы правые части всех нетривиальных ограничений имели знак «+»). Получаем систему ограничений
Теперь добавляем во второе и третье неравенства системы дополнительные переменные x4 и x5:
Таким образом, получаем канонический вид исходной задачи:
3x1+x2+2x3max(min)
2.
С помощью метода Жордана-Гаусса найдём
первоначальный опорный план. Прежде
всего замечаем, что дополнительная
переменная x4
входит только во второе уравнение. И
она уже в базисе. Так как для x2
min
=2
достигается в первом уравнении (при
определении этого min
второе уравнение не участвует, так как
коэффициент при x2
в нём равен 0), то x2
включаем в базис, исключив его из третьего
уравнения (для этого первое уравнение
вычитаем из третьего):
Две
базисные переменные из первого и второго
уравнений выбраны. Осталось выбрать
третью базисную переменную из третьего
уравнения. Переменные x3
и x5
для этого не годятся, так как коэффициенты
при них отрицательны. Остаётся только
x1.
Для того, чтобы её ввести в базис
необходимо, чтобы минимум отношений
свободных членов к положительным
коэффициентам достигался в третьем
уравнении. Так оно и есть: min
=2
достигается в третьем уравнении. Поэтому
третье уравнение делим на 2, затем
прибавляем его к первому и вычитаем из
второго:
Таким образом, при x3=0, x5=0 имеем x1=2, x2=4, x4=2 и X1=(2; 4; 0; 2; 0) первоначальный опорный план.
Ответ: X1=(2; 4; 0; 2; 0) первоначальный опорный план.
Проверка опорного плана на оптимальность проводится по следующей схеме:
Находятся оценки k=CбAkck= ck для всех k=0, 1, …, n. При этом 0 это значение целевой функции при данном опорном плане, и k=0 для всех базисных переменных xk (то есть последние вычислять необязательно, а достаточно сразу положить k=0).
Если условие оптимальности опорного плана выполнено (k0 для всех k=1, …, n при поиске максимума, k0 для всех k=1, …, n при поиске минимума), то задача решена. В противном случае переходят к другому опорному плану.
Переход к другому опорному плану проводится по следующей схеме:
Для всех k, для которых нарушается условие оптимальности задачи, вычисляются k= , а по ним величины kk.
Выбирается xk такой, что |kk| является максимальным. Эту xk и вводим в базис, выводя из него xi, в которой достигается минимальное k, по методу Жордана-Гаусса.
Пример 2. Решить задачу предыдущего примера (найти экстремумы).
Решение. При решении предыдущего примера канонический вид задачи и её первоначальный опорный план найдены.
Проверим на оптимальность решение X1. Для этого необходимо вычислить k=CбAkck для k индексов свободных переменных. При k=3 имеем
3=CбA3c3=(1,
0, 3)
2=1
+0
+(3)
2=1,
то есть 3=1≥0. В частности, в X1 минимум не достигается.
5=CбA5c5=(1,
0, 3)
0=1
+0
+(3)
=1,
то есть 5=1≥0. Так как k≥0 для всех k=1, 2, 3, 4, 5, то в X1 достигается максимум целевой функции, который равен 0=CX=32+4+20=2. Минимум в этой точке не достигается.
Перейдём к другому опорному плану. Для 3 и 5, для которых нарушается условие оптимальности, вычислим 3 и 5, а по ним величины 33 и 55:
3=
=
=
=
(достигается при x4),
33= 1= ,
5=
=
=4,
(достигается снова при x4,
то есть в любом случае x4
будем выводить из базиса),
55=41=4.
Так как |55|=|4|>| |=|33|, то в базис будем вводить x5 вместо x4. Для этого второе уравнение прибавляем к первому и третьему, и умножаем его на 2:
Получили новый опорный план X2=(4; 6; 0; 0; 4), который проверяем на оптимальность:
3=CбA3c3=(1,
0, 3)
2=13+03+(3)12=2,
4=CбA4c4=(1,
0, 3)
0=11+02+(3)10=2.
Таким образом, 3=2<0, 4=2<0, то есть k≤0 для всех k=1, 2, 3, 4, 5. Значит, X2 оптимальное решение задачи с точки зрения минимизации. В нём CX=34+6+20=6.
Ответ: Fmin=6, минимум достигается в точке X2=(4; 6; 0);
Fmax=2, максимум достигается в точке X1=(2; 4; 0).
