Дробно-линейное программирование
Если в задаче с линейными ограничениями задана дробно-линейная целевая функция, то такая задача может быть преобразована к традиционному виду путем несложных преобразований. Преобразованная модель может быть разрешена симплексным методом, а найденное решение трансформировано в решение исходной задачи дробно-линейного программирования. Все этапы алгоритма проиллюстрируем на конкретном примере.
1. Систему ограничений приводят к каноническому виду:
где ![]() | ─ основные переменные; |
![]() | ─ дополнительные переменные; |
![]() | ─ искусственные переменные. |
2. Знаменатель целевой функции обозначают через , это приводит к следующему:
§ появится дополнительное ограничение или
;
§ функция цели приобретет вид .
3. Все ограничения умножают на и к ним добавляют дополнительное соотношение.
4. Вводят обозначения:
;
;
;
;
;
;
.
Упорядочивают систему относительно новых переменных, перенося из правой части элементы, связанные с . Кроме того, в дополнительное ограничение вводят искусственную переменную со следующим номером, в данном случае вводят
. Это необходимо для формирования начального базиса. В результате указанных преобразований задача приобретает вид:
5. Задача приобрела каноническую форму, ее решение может быть выполнено симплексным методом. Учитывая, что индексы векторов должны соответствовать индексам переменных ( ,
,
и т.д.), вектор свободных членов обозначают через
- это избавит от путаницы.
![]() | ![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() | ![]() |
Таблица 1
Начальное симплекс-решение
Б | С | ![]() | ![]() | ![]() | ![]() | С.о. | ||||||
![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ||||
![]() | ![]() | -6 | -1 | |||||||||
![]() | ![]() | -14 | -1 | |||||||||
![]() | -5 | |||||||||||
![]() | ![]() | 1/5 | ||||||||||
![]() | -3 | -2 | ||||||||||
![]() | -20 | -1 | -1 |
Данной таблице соответствуют такие значения переменных:
;
;
;
;
;
;
;
;
.
Это решение не оптимально.
В таблице 1 получено три одинаковых симплексных отношения, - все они равны нулю. При выборе ключевой строки руководствуются правилом: берут ту, которая соответствует большему элементу ключевого столбца. В данном случае выбирают первую строку, и генеральный элемент равен 6.
Таблица 2
Вторая симплексная таблица
Б | С | ![]() | ![]() | ![]() | С.о. | ||||||
![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ||||
![]() | -1 | 1/6 | -1/6 | ||||||||
![]() | ![]() | -12 | 40/6 | 2/6 | -1 | ||||||
![]() | -4 | 5/6 | 1/6 | ||||||||
![]() | ![]() | 19/6 | 5/6 | 6/19 | |||||||
![]() | -2 | -16/6 | -2/6 | ||||||||
![]() | -7 | 59/6 | 7/6 | -1 |
Второе решение выглядит так:
;
;
;
;
;
;
;
;
.
Оно не оптимально.
Переход к третьей таблице выполняется по обычным правилам с учетом комментария к выбору ключевой строки, сделанного после таблицы 1.
Таблица 3
Третье симплексное решение
Б | С | ![]() | ![]() | С.о. | ||||||
![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ||||
![]() | -28/40 | -7/40 | 1/40 | - | ||||||
![]() | -72/40 | 2/40 | -6/40 | - | ||||||
![]() | -100/40 | 5/40 | 5/40 | - | ||||||
![]() | ![]() | 428/40 | 27/40 | 19/40 | 40/428 | |||||
![]() | -272/40 | -8/40 | -16/40 | |||||||
![]() | 428/40 | 27/40 | 19/40 |
Третье решение:
.
Условие оптимальности все еще не выполняется, переходят к следующей таблице.
Анализ показывает, что значения большинства переменных будут равны нулю до тех пор, пока ключевой строкой будет оставаться строка с нулевым элементом в . Как только ключевой станет строка с ненулевым элементов в
, так базисные переменные обретут конкретные значения.
Таблица 4
Четвертое симплексное решение
Б | С | ![]() | С.о. | ||||||
![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ||||
![]() | 28/428 | -56/428 | 24/428 | - | |||||
![]() | 72/428 | 70/428 | -30/428 | 72/70 | |||||
![]() | 100/428 | 121/428 | 101/428 | 100/121 | |||||
![]() | 40/428 | 27/428 | 19/428 | 40/27 | |||||
![]() | 272/428 | 98/428 | -42/428 |
Решение, соответствующее таблице 4, имеет вид:
,
,
,
,
.
Оно не является оптимальным, строят следующее симплекс-преобразование.
Таблица 5
Пятое симплексное решение
Б | С | ![]() | ||||||
![]() | ![]() | ![]() | ![]() | ![]() | ![]() | |||
![]() | 21/121 | 20/121 | 56/121 | |||||
![]() | 4/121 | -25/121 | -70/121 | |||||
![]() | 100/121 | 101/121 | 428/121 | |||||
![]() | 5/121 | -1/121 | -27/121 | |||||
![]() | 54/121 | -35/121 | -98/121 |
В таблице 5 получено решение, удовлетворяющее условию оптимальности:
,
,
,
,
.
6. Определяют значения исходных переменных:
Таким образом, решение задачи дробно-линейного программирования будет следующим:
.
7. Дают, если возможно, геометрическую интерпретацию задачи:
§ находят область допустимых значений;
§ отмечают точки, соответствующие симплекс-таблицам.
Областью решений является треугольник . Первые реальные значения переменных
появились в четвертой симплексной таблице, им соответствуют такие значения исходных неизвестных:
. На графике – это вершина
, она оптимальной не является. Оптимальное решение обеспечивает вершина
.
![]() | ![]() | |||||||||||||||||||||||||
А | ||||||||||||||||||||||||||
С | В | |||||||||||||||||||||||||
![]() | ||||||||||||||||||||||||||
-5 | -4 | -3 | -2 | -1 | ||||||||||||||||||||||
-1 |
Замечание. Дробно-линейную задачу с двумя переменными можно решать графическим методом, основываясь на таких правилах:
1. По системе заданных ограничений строят область допустимых решений.
2. Выбирают произвольное значение и строят соответствующую прямую
– она обязательно пройдет через начало координат.
3. Обозначим
§ если , то, поворачивая прямую
против часовой стрелки до опорного положения, получим точку минимума (для получения максимума прямую поворачивают по часовой стрелке);
§ если , то для получения минимума прямую
поворачивают по часовой стрелке до опорного положения (для максимума – против часовой стрелки).
4. Определив оптимальные точки, находят их координаты – это и будут оптимальные значения переменных, после чего вычисляют величину функции цели.
Пример. Найти решение дробно-линейной задачи.
, рассмотрим 2 варианта функции
а) ![]() | б) ![]() |
1. Строим область допустимых решений – она определяется тремя неравенствами и представляем собой треугольник .
2. Строим прямую
а)
б)
;
;
а) ;
;
;
;
б) ;
;
;
;