Найти оптимальное решение задачи целочисленного линейного программирования

Метод Гомори

Метод Гомори используют для нахождения целочисленного решения в задачах линейного программирования.
Пусть найдено решение задачи ЛП: . Решение Li будет целым числом, если т.е. . i> — дробная часть нецелочисленного оптимального решения xi, i> — дробная часть не базисных переменных. Данное соотношение определяет правильное отсечение Гомори (см. рисунок).

Инструкция . Выберите количество переменных и количество строк (количество ограничений), нажмите Далее . Полученное решение сохраняется в файле Word . Дополнительно создается шаблон решения в формате Excel . При этом ограничения типа xi ≥ 0 не учитывайте.

Виды алгоритма Гомори

  1. Первый алгоритм Гомори решения полностью целочисленных задач.
  2. Второй алгоритм Гомори для частично целочисленных задач линейного программирования.
  1. Решается задача линейного программирования без учета целочисленности.
  2. Среди дробных чисел выбирается элемент с наибольшей дробной частью и составляется дополнительное ограничение.
  3. Неравенство преобразуется в уравнение путем введения дополнительной неотрицательной переменной.
  4. Полученная задача решается двойственным симплекс-методом.

Геометрическая интерпретация отсечения Гомори

Геометрическая интерпретация отсечения Гомори Пример . Научно-производственное объединение «Стрела» занимается изготовлением комплектующих изделий для предприятий ВПК. При изготовлении изделий типа А и типа В используются сталь и цветные металлы. Технологический процесс также включает обработку изделий на токарных и фрезерных станках. По технологическим нормам на производство одного изделия типа А и одного изделия типа В требуется определенное количество сырья и некоторый объем станко-часов для обработки на станках в цеху. Технологические данные производственного процесса приведены в таблице.
В течение месяца цеха НПО «Стрела» располагает ограниченными ресурсами по сырью и по времени работы в производственных цехах (см. таблицу). Прибыль от реализации одного изделия типа А составляет 100 руб., а от единицы изделия типа В – 250 руб.

Сырье Работа в цеху, станко-час Прибыль от реализации, руб.
Цветные металлы Сталь Токарные работы Фрезерные работы
Изделие А 10 25 41 90 100
Изделие В 30 25 90 50 250
Ресурсы 4500 6250 14100 18000
Читайте также:  Язык python визуальное программирование

Найти оптимальный план производства для НПО «Стрела» (количество изделия типа А и типа В – целые числа), дающий наибольшую прибыль. Решение.
Экономико-математическая модель задачи.
x1 – план производства изделий типа А, x2 – план производства изделий типа В,
x1, x2 — целые числа.
Ограничения по ресурсам
10x1 + 30x2 ≤ 4500
25x1 + 25x2 ≤ 6250
41x1 + 90x2 ≤ 14100
90x1 + 50x2 ≤ 18000
Целевая функция
100x1 + 250x2 → max Решим прямую задачу линейного программирования симплексным методом. В результате получаем следующий оптимальный план:

Базис B x1 x2 x3 x4 x5 x6
x2 1450 /11 0 1 41 /330 0 -1 /33 0
x4 17500 /11 0 0 245 /66 1 -50 /33 0
x1 600 /11 1 0 -3 /11 0 1 /11 0
x6 6500 0 0 55 /3 0 -20 /3 1
F(X3) 422500 /11 0 0 125 /33 0 50 /33 0

x1 = 54 6 /11, x2 = 131 9 /11
F(X) = 250•131 9 /11 + 100•54 6 /11 = 38409 1 /11 Полученный оптимальный план не является целочисленным, поэтому применяем метод Гомори. Наибольшая дробная часть находится во втором уравнении у переменной x4 ( 10 /11). Составляем дополнительное ограничение:
q2 — q21•x1 — q22•x2 — q23•x3 — q24•x4 — q25•x5 — q26•x6≤0
q2 = b2 — [b2] = 1590 10 /11 — 1590 = 10 /11
q21 = a21 — [a21] = 0 — 0 = 0
q22 = a22 — [a22] = 0 — 0 = 0
q23 = a23 — [a23] = 3 47 /66 — 3 = 47 /66
q24 = a24 — [a24] = 1 — 1 = 0
q25 = a25 — [a25] = -1 17 /33 + 2 = 16 /33
q26 = a26 — [a26] = 0 — 0 = 0
Дополнительное ограничение имеет вид:
10 /11— 47 /66x3— 16 /33x5 ≤ 0
Преобразуем полученное неравенство в уравнение:
10 /11— 47 /66x3— 16 /33x5 + x7 = 0
коэффициенты которого введем дополнительной строкой в оптимальную симплексную таблицу.
Поскольку двойственный симплекс-метод используется для поиска минимума целевой функции, делаем преобразование F(x) = -F(X).

Базис B x1 x2 x3 x4 x5 x6 x7
x2 1450 /11 0 1 41 /330 0 -1 /33 0 0
x4 17500 /11 0 0 245 /66 1 -50 /33 0 0
x1 600 /11 1 0 -3 /11 0 1 /11 0 0
x6 6500 0 0 55 /3 0 -20 /3 1 0
x7 -10 /11 0 0 -47 /66 0 -16 /33 0 1
F(X0) -422500 /11 0 0 -125 /33 0 -50 /33 0 0
Читайте также:  Язык программирования лого кратко

Первая итерация Гомори. 1. Проверка критерия оптимальности. План в симплексной таблице является псевдопланом, поэтому определяем ведущие строку и столбец.
2. Определение новой свободной переменной. Среди отрицательных значений базисных переменных выбираем наибольшее по модулю. Ведущей будет пятая строка, а переменную x7 следует вывести из базиса.
3. Определение новой базисной переменной. Минимальное значение θ соответствует пятому столбцу, т.е. переменную x5 необходимо ввести в базис. На пересечении ведущих строки и столбца находится разрешающий элемент (РЭ), равный ( -16 /33).

Базис B x1 x2 x3 x4 x5 x6 x7
x2 131 9 /11 0 1 41 /330 0 -1 /33 0 0
x4 1590 10 /11 0 0 3 47 /66 1 -1 17 /33 0 0
x1 54 6 /11 1 0 -3 /11 0 1 /11 0 0
x6 6500 0 0 18 1 /3 0 -6 2 /3 1 0
x7 -10 /11 0 0 -47 /66 0 -16 /33 0 1
F(X0) -38409 1 /11 0 0 -3 26 /33 0 -1 17 /33 0 0
θ -3 26 /33 : ( -47 /66) = 5 15 /47 -1 17 /33 : ( -16 /33) = 3 1 /8

4. Пересчет симплекс-таблицы выполняем с помощью метода Жордано-Гаусса.

Базис B x1 x2 x3 x4 x5 x6 x7
x2 1055 /8 0 1 27 /160 0 0 0 -1 /16
x4 6375 /4 0 0 95 /16 1 0 0 -25 /8
x1 435 /8 1 0 -13 /32 0 0 0 3 /16
x6 13025 /2 0 0 225 /8 0 0 1 -55 /4
x5 15 /8 0 0 47 /32 0 1 0 -33 /16
F(X0) -153625 /4 0 0 -25 /16 0 0 0 -25 /8

В полученном оптимальном плане присутствуют дробные числа. По первому уравнению с переменной x2, получившей нецелочисленное значение в оптимальном плане с наибольшей дробной частью 7 /8, составляем дополнительное ограничение:
q1 — q11•x1 — q12•x2 — q13•x3 — q14•x4 — q15•x5 — q16•x6 — q17•x7≤0
q1 = b1 — [b1] = 131 7 /8 — 131 = 7 /8
q11 = a11 — [a11] = 0 — 0 = 0
q12 = a12 — [a12] = 1 — 1 = 0
q13 = a13 — [a13] = 27 /160 — 0 = 27 /160
q14 = a14 — [a14] = 0 — 0 = 0
q15 = a15 — [a15] = 0 — 0 = 0
q16 = a16 — [a16] = 0 — 0 = 0
q17 = a17 — [a17] = -1 /16 + 1 = 15 /16
Дополнительное ограничение имеет вид:
7 /8— 27 /160x3— 15 /16x7 ≤ 0
Преобразуем полученное неравенство в уравнение:
7 /8— 27 /160x3— 15 /16x7 + x8 = 0
коэффициенты которого введем дополнительной строкой в оптимальную симплексную таблицу.

Базис B x1 x2 x3 x4 x5 x6 x7 x8
x2 1055 /8 0 1 27 /160 0 0 0 -1 /16 0
x4 6375 /4 0 0 95 /16 1 0 0 -25 /8 0
x1 435 /8 1 0 -13 /32 0 0 0 3 /16 0
x6 13025 /2 0 0 225 /8 0 0 1 -55 /4 0
x5 15 /8 0 0 47 /32 0 1 0 -33 /16 0
x8 -7 /8 0 0 -27 /160 0 0 0 -15 /16 1
F(X0) -153625 /4 0 0 -25 /16 0 0 0 -25 /8 0

Вторая итерация Гомрои. 1. Проверка критерия оптимальности. План в симплексной таблице является псевдопланом, поэтому определяем ведущие строку и столбец.
2. Определение новой свободной переменной. Среди отрицательных значений базисных переменных наибольшей по модулю является переменная x8. Ее следует вывести из базиса.
3. Минимальное значение θ соответствует седьмому столбцу, т.е. переменную x7 необходимо ввести в базис.

Базис B x1 x2 x3 x4 x5 x6 x7 x8
x2 131 7 /8 0 1 27 /160 0 0 0 -1 /16 0
x4 1593 3 /4 0 0 5 15 /16 1 0 0 -3 1 /8 0
x1 54 3 /8 1 0 -13 /32 0 0 0 3 /16 0
x6 6512 1 /2 0 0 28 1 /8 0 0 1 -13 3 /4 0
x5 1 7 /8 0 0 1 15 /32 0 1 0 -2 1 /16 0
x8 -7 /8 0 0 -27 /160 0 0 0 -15 /16 1
F(X0) -38406 1 /4 0 0 -1 9 /16 0 0 0 -3 1 /8 0
θ -1 9 /16 : ( -27 /160) = 9 7 /27 -3 1 /8 : ( -15 /16) = 3 1 /3

4. Выполняем преобразование Новых отсечений Гомори.

Базис B x1 x2 x3 x4 x5 x6 x7 x8
x2 1979 /15 0 1 9 /50 0 0 0 0 -1 /15
x4 4790 /3 0 0 13 /2 1 0 0 0 -10 /3
x1 271 /5 1 0 -11 /25 0 0 0 0 1 /5
x6 19576 /3 0 0 153 /5 0 0 1 0 -44 /3
x5 19 /5 0 0 46 /25 0 1 0 0 -11 /5
x7 14 /15 0 0 9 /50 0 0 0 1 -16 /15
F(X0) -115210 /3 0 0 -1 0 0 0 0 -10 /3

В оптимальном плане присутствуют дробные числа. Наибольшая дробная часть у переменной x2 ( 14 /15). Составляем дополнительное ограничение: q1 — q11•x1 — q12•x2 — q13•x3 — q14•x4 — q15•x5 — q16•x6 — q17•x7 — q18•x8≤0
q1 = b1 — [b1] = 131 14 /15 — 131 = 14 /15
q11 = a11 — [a11] = 0 — 0 = 0
q12 = a12 — [a12] = 1 — 1 = 0
q13 = a13 — [a13] = 9 /50 — 0 = 9 /50
q14 = a14 — [a14] = 0 — 0 = 0
q15 = a15 — [a15] = 0 — 0 = 0
q16 = a16 — [a16] = 0 — 0 = 0
q17 = a17 — [a17] = 0 — 0 = 0
q18 = a18 — [a18] = -1 /15 + 1 = 14 /15
Дополнительное ограничение имеет вид:
14 /15— 9 /50x3— 14 /15x8 ≤ 0
Преобразуем полученное неравенство в уравнение:
14 /15— 9 /50x3— 14 /15x8 + x9 = 0
коэффициенты которого введем дополнительной строкой в оптимальную симплексную таблицу.

Базис B x1 x2 x3 x4 x5 x6 x7 x8 x9
x2 1979 /15 0 1 9 /50 0 0 0 0 -1 /15 0
x4 4790 /3 0 0 13 /2 1 0 0 0 -10 /3 0
x1 271 /5 1 0 -11 /25 0 0 0 0 1 /5 0
x6 19576 /3 0 0 153 /5 0 0 1 0 -44 /3 0
x5 19 /5 0 0 46 /25 0 1 0 0 -11 /5 0
x7 14 /15 0 0 9 /50 0 0 0 1 -16 /15 0
x9 -14 /15 0 0 -9 /50 0 0 0 0 -14 /15 1
F(X0) -115210 /3 0 0 -1 0 0 0 0 -10 /3 0

Третья итерация методом Гомори. Переменную x9 следует вывести из базиса. Минимальное значение θ соответствует восьмому столбцу, т.е. переменную x8 необходимо ввести в базис.

Базис B x1 x2 x3 x4 x5 x6 x7 x8 x9
x2 131 14 /15 0 1 9 /50 0 0 0 0 -1 /15 0
x4 1596 2 /3 0 0 6 1 /2 1 0 0 0 -3 1 /3 0
x1 54 1 /5 1 0 -11 /25 0 0 0 0 1 /5 0
x6 6525 1 /3 0 0 30 3 /5 0 0 1 0 -14 2 /3 0
x5 3 4 /5 0 0 1 21 /25 0 1 0 0 -2 1 /5 0
x7 14 /15 0 0 9 /50 0 0 0 1 -1 1 /15 0
x9 -14 /15 0 0 -9 /50 0 0 0 0 -14 /15 1
F(X0) -38403 1 /3 0 0 -1 0 0 0 0 -3 1 /3 0
θ -1 : ( -9 /50) = 5 5 /9 -3 1 /3 : ( -14 /15) = 3 4 /7

4. Выполняем преобразование.

Базис B x1 x2 x3 x4 x5 x6 x7 x8 x9
x2 132 0 1 27 /140 0 0 0 0 0 -1 /14
x4 1600 0 0 50 /7 1 0 0 0 0 -25 /7
x1 54 1 0 -67 /140 0 0 0 0 0 3 /14
x6 6540 0 0 234 /7 0 0 1 0 0 -110 /7
x5 6 0 0 317 /140 0 1 0 0 0 -33 /14
x7 2 0 0 27 /70 0 0 0 1 0 -8 /7
x8 1 0 0 27 /140 0 0 0 0 1 -15 /14
F(X0) -38400 0 0 -5 /14 0 0 0 0 0 -25 /7

Решение получилось целочисленным. Оптимальный целочисленный план можно записать так: x1 = 54, x2 = 132. F(X) = 38400

Источник

Оцените статью