183476 (629845), страница 2
Текст из файла (страница 2)
для достаточно малых . Аналогично можно показать, что при этом и
. Так как
то получаем противоречие с определением крайней точки. Для направленного просмотра крайних точек допустимого многогранника применяют симплекс-метод, предложенный Дж. Данцигом и затем усовершенствованный многочисленными математиками. Основная идея метода заключается в разбиении множества переменных x = x1, x2, . . ., xn на базисные
и небазисные
. Не умаляя общности, можно считать, что базисные переменные являются первыми в векторе x, т.е. x = (xB, xN ).
Система ограничений канонической формы задачи линейного программирования может быть соответственно переписана в виде:
Предположим, что матрица имеет полный ранг, т.е.
- невырожденная. Тогда из равенства (5) следует
Целевая функция задачи ЛПР также может быть разбита на базисную и не базисную части:
Подстановка (6) дает
Предположим, что мы находимся в некоторой начальной точке со значением целевой функции
Каким образом можно уменьшить далее значение целевой функции? Из соотношения (5) следует, что для этого достаточно сделать положительными те компоненты вектора , которым соответствуют отрицательные значения координат вектора модифицированных стоимостей
сохраняя при этом неотрицательность базисных переменных .
Увеличение может быть проделано различным образом, и за время существования симплекс-метода были проделаны многочисленные эксперименты по поиску наиболее эффективных стратегий увеличения
Здесь будет рассмотрена простейшая:
-
соответствующая небазисная переменная
получает максимально возможное приращение, сохраняющее неотрицательность базисных переменных.
Поскольку при увеличении -й компоненты вектор
приобретает вид:
где это
-й орт, а
-- степень увеличения этой переменной или шаг алгоритма, то модифицированный базисный вектор выражается следующим образом:
где -
-й столбец матрицы
Шаг
определяется при этом из условия:
Максимально возможное значение определится при этом как
Пусть -- номер
, на которой достигается минимум (6). Очевидно, что при этом
При этом говорят, что переменная выводится из базиса (обращается в нуль), а переменная
вводится в базис. Целевая функция при этом уменьшается на величину
Важную роль в теории симплекс-метода играет условие невырожденности, в котором предполагается полный ранг AB и строгая положительность базисного решения β. При этом λ > 0 и δcx < 0, то есть целевая функция уменьшается при переходе к новому базису.
Поскольку в задаче линейного программрования может быть лишь конечное число базисов, а на каждой итерации происходит уменьшение целевой функции, базисы не могут повторяться. Следовательно, после конечного числа итераций вектор модифицированных стоимостей станет неотрицательным, а это означает, что дальнейшее уменьшение целевой функции невозможно, т.е. будет получено одно из оптимальных решений.
В силу выпуклости задачи любое другое оптимальное решение будет иметь также значение целевой функции, т.е. будет в этом смысле эквивалентно.
Геометрический метод
Рассмотрим задачу линейного программирования в стандартной форме с двумя переменными (n = 2). К такой форме может быть сведена и каноническая задача (с ограничениями в виде уравнений), когда число переменных n больше числа уравнений m на 2, т. е. n – m = 2.
Пусть геометрическим изображением системы ограничений является многоугольник ABCDE (рис. 1). Необходимо среди точек этого многоугольника найти такую точку, в которой линейная функция F=c1x1+c2x2 принимает максимальное (или минимальное) значение.
Рассмотрим так называемую линию уровня линейной функции F, т. е. линию вдоль которой эта функция принимает одно и тоже значение a, т.е. F = a, или
c1x1+c2x2 = а (1)
линии уровня широко используются, например, на картах прогноза погоды, где извилистые линии – так называемые изотермы есть ничто иное, как линии уровня температуры Т = с. Ещё более простым примером линий уровня являются параллели на географической карте. Это линии уровня широты.
Предположим надо найти самую северную точку какой-либо области, например страны или материка. Это будет точка, имеющая наибольшую широту, т. е. точка через которую проходит параллель (линия уровня) с самой большой широтой (уровнем).
Именно так и надо поступать при геометрическом решении задач линейного программирования . на многоугольнике решений следует найти точку, через которую проходит линия уровня функции F с наибольшим (если линейная функция максимизируется) или наименьшим (если она минимизируется) уровнем.
Уравнение линии функции (1) есть уравнение прямой линии. При различных уровнях а
Линии уровня параллельны, так как их угловые коэффициенты определяются только соотношением между коэффициентами c1 и c2 и следовательно, равны. Таким образом, линии уровня функции F – это своеобразные “параллели ”, расположенные обычно под углом к осям координат.
Важное свойство линии уровня линейной функции состоит в том, что при параллельном смещении линии в одну сторону уровень только возрастает, а при смещении линии в другую сторону – только убывает.
Пусть имеются три линии уровня :
F=c1x1 + c2x2 = а1 (I)
F=c1x1 + c2x2 = а2 (II)
F=c1x1 + c2x2 = а3 (III)
Причём линия II заключена между линиями I и III. Тогда а1 < а2 < а3 и а1 > а2 > а3.
В самом деле, на штриховой линии (перпендикулярной к линиям уровня на рис. 2) уровень является линейной функцией, а значит, при смещении в одном направлении возрастает, а в другом – убывает.
Для определения направления возрастания рекомендуется изобразить две линии уровня и определить, на какой них уровень больше. Например, одну из линий взять проходящей через начало координат (если линия функция имеет вид F=c1x1 + c2x2, т. е. без свободного члена, то это соответствует нулевому уровню). Другую линию можно провести произвольно, так, например, чтобы она проходила через множество решений системы ограничений. Далее найдём точку, в которой функция принимает максимальное значение, подобно тому как на карте находится самая северная или самая южная точка (на рис. 1 – это точка С или А).
II. Практический раздел
2.1 Решение транспортной задачи
Имеются два склада с сырьём. Ежедневно вывозится с первого склада 60 т сырья, со второго – 80 т. сырьё используется двумя заводами, причём первый завод получает – 50 т, а второй – 90 т. нужно организовать оптимальную (наиболее дешёвую) схему перевозок, если известно, что доставка 1 т сырья с первого склада на первый завод стоит 7 рублей, с первого склада на второй завод – 9 рублей, со второго склада на первый завод – 10 рублей, со второго склада на второй завод – 8 рублей.
Решение:
Обозначим через х1, х2 количество сырья, который нужно доставить с первой базы соответственно на первый, второй заводы, а через х3, х количество сырья, который нужно доставить со второй базы соответственно на первый, второй заводы. Составим выражения, которые в соответствии с исходными данными должны удовлетворять следующим условиям:
х1 + х2 = 60;
х3 + х4 = 80; (1)
х1 + х3 = 50;
х2 + х4 = 90.
Первое и второе уравнения описывают количество сырья, которое необходимо вывезти с первого и второго складов, а третье и четвёртое – сколько нужно завести сырья на первый и второй заводы. К данной системе уравнений нужно добавить систему неравенств:
хi ≥ 0, где i = 1, . ., 4, (2)
которая означает, что сырьё обратно с заводов на склады не вывозится. Тогда общая стоимость перевозок с учётом приведённых в таблице расценок выразится формулой :
f = 7х1 + 9 х2 + 10 х3 + 8х 4. (3)
Таким образом, мы пришли к типичной задаче линейного программирования : найти оптимальные значения проектных параметров хi (i = 1, . ., 4), удовлетворяющим условиям (2), (3) и минимизирующим стоимость перевозок (3).
Из анализа системы уравнений (1) следует, что только первые два уравнения являются независимыми, а последние можно получить из них. Поэтому фактически имеем систему :
х 1 + х2 = 60;
х3 + х4 = 80; (4)
х3 = 50 - х1;
х4 = 90 - х2.
Поскольку в соответствии с (2) все проектные параметры должны быть неотрицательны, то с учётом (4) получим следующую систему неравенств:
х1 ≥ 0, х2 ≥ 0, 50 - х1 ≥ 0, 90 - х2 ≥ 0.
Эти неравенства можно записать в более компактном виде :
0 ≤ х1 ≤ 50, 0 ≤ х2 ≤ 90. (5)