Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Дискретная математика & математическая логика

..pdf
Скачиваний:
48
Добавлен:
15.11.2022
Размер:
19.42 Mб
Скачать

Таким образом, делаем свободной х4 и переходим к новому базису х1, х3, х5.

Выразим систему уравнений относительно нового базиса. В правой части уравнений должны остаться х2, х4.

Из второго уравнения получим х1:

x1 = 2 x4 + 2x2 .

Подставим это уравнение в первое и третье вместо х1:

x3 = 2 + 2(2 x4 + 2x2 ) x2 , x5 = 5 (2 x4 + 2x2 ) x2 .

Получим

x3 = 6 2x4 + 3x2 , x5 = 3 + x4 3x2 .

Выполним подстановку в целевую функцию:

q′ = 2 x4 + 2x2 x2 = 2 + x2 x4 max.

Получим следующую систему:

x1 = 2 + 2x2 x4 ,

= + −

x3 6 3x2 2x4 ,

x5 = 3 3x2 + x4 ,

 

2

4

max.

q′ = 2

+ x

x

Проанализируем результат. Переменная х2 входит в выражение целевой функции со знаком +. Значит, максимум целевой функции недостигнутипеременнуюх2 следуетсделатьбазисной. Пустьх2 = 1:

131

x1 = 2,

x2 =1,

x3 = 9,

x4 = 0,x5 = 0,q′ = 3.

Новый базис х1, х2, х3, поэтому в правой части должны ос-

таться х4, х5.

Возвращаемся к исходной системе уравнений:

2x1 + x2 + x3 = 2,

 

 

 

 

 

2x2 + x4 = 2,

 

 

 

 

x1

 

 

 

 

x1 + x2 + x5 = 5,

 

 

 

 

q

= −q = −(x

x ) = x

x

max.

 

2

1

1

 

2

 

Выражаем х1, х2, х3 через х4, х5:

x1 = 2x2 x4 + 2,

x3 = 2 x2 + 2x1 , x2 = 5 x5 x1.

Подставляем выражение х2 в х1:

x1 = 2(5 x5 x1) x4 + 2 =10 2x5 2x1 x4 + 2 = 122x5 2x1 x4 + 2.

Отсюда

3x1 =12 x4 2x5 ,

или

x1 = 4 1 x4 2 x5 . 3 3

132

Подставим это выражение в уравнение для х2:

 

x2 = 5 x5 4 +

1

x4 +

2

x5 .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

3

 

 

 

 

Получим

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x2

=1 +

 

1

x4

1

x5 .

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Наконец, выражения для х1 и х2 подставим в выражение для х3:

x3

= 2 1

1

x4 +

1

x5 + 2(4

1

x4

2

x5 ).

 

 

 

 

 

3

 

3

 

 

 

 

 

 

 

3

 

 

3

 

Тогда

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x3 = 9 x4 x5 ,

 

 

 

 

 

 

т.е.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

= 4

1

 

2

 

 

,

 

 

 

 

 

 

x1

 

 

 

x4

 

 

 

 

x5

 

 

 

 

 

 

3

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

1

 

 

 

 

 

 

 

 

 

 

x2

=1 +

 

 

x4

 

 

x5

,

 

 

 

 

 

 

 

3

 

3

 

 

 

 

 

 

x3 = 9 x4 x5 .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Определим целевую функцию через х4, х5:

 

 

 

q′ = x1 x2

= 4

1

x4

2

x5

1

1

x4

+

1

x5

= 3

2

x4

1

x5 .

 

 

 

 

 

 

 

3

3

 

3

3

3

 

3

Таким образом, при увеличении х4, х5 целевая функция уменьшается. При данном базисе достигается максимум целевой функции и решение имеет вид

133

x1 = 4,

x2 =1,

x3 = 9,

x4 = 0,x5 = 0,

q '= 3.

Табличный метод решения задачи нахождения оптимального решения

Преобразуем систему уравнений

x3

x4x5

q'

=2 + 2x1 x2 ,

=2 x1 + 2x2 ,

=5 x1 x2 ,

= −q = x1 x2 max.

к виду

q' = 0 (x1 + x2 ),

 

= 2

(2x1 + x2 ),

x3

x4

= 2 (x1 2x2 ),

x = 5

(x + x

).

5

1

2

Здесь выделены свободные члены. Построим таблицу (матрицу) коэффициентов вида

 

 

1

х1

х2

 

q

0

–1

1

 

х3

2

–2

1

 

х4

2

(1)

–2

 

х5

5

1

1

Выделенные красным цифры – это коэффициенты преобразованной системы уравнений. Проверяем, не найдено ли оптимальное

134

решение. В строке qкоэффициент при х1 отрицательный, то опти-

мальное решение не найдено и переменную х1 следует сделать базисной. Если отрицательными окажутся несколько свободных переменных, то в базисную можно переводить любую.

Определим, какую из базисных переменных сделать свободной. Такую, для которой коэффициент в столбце х1 положительный и отношение к этому положительному коэффициенту минимальное. Это х4 (2/1 < 5/1). Этот коэффициент λ (1) называется генеральным. Теперь получаем нижние значения таблицы. Решение задачи сим-

плекс-методом – первая итерация:

 

 

 

1

 

 

х1

х2

 

q

 

0

 

 

 

1

1

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

2

 

 

 

 

 

 

 

 

х3

 

2

 

 

 

2

1

 

 

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

4

 

 

 

 

 

 

 

 

х4

 

 

2

 

 

 

(1)

 

 

–2

 

 

 

 

2

 

 

 

1

 

 

 

–2

 

 

 

 

 

 

 

 

 

 

 

 

х5

 

5

 

 

1

 

 

1

 

 

 

 

 

–2

 

 

–1

 

2

 

 

 

 

 

 

 

 

 

 

 

Заполнение нижних коэффициентов выполняется по следующим правилам:

1.В клетку на пересечении отмеченных строки и столбца записываем 1/λ .

2.В клетках отмеченной строки записываем верхние коэффи-

циенты, умноженные на (1/λ ?)λ .

3.В клетках отмеченного столбца записываем коэффициенты, умноженные на (–1/ λ ?) – λ .

4.В остальных клетках записываем произведение уже полу-

ченных нижних коэффициентов из столбца х1 и верхнего коэффициента соответствующего для данной клетки столбца, на пересечении которых стоит.

Строим следующую таблицу, в которой х1 становится базисной переменной, а х4 – свободной. Верхние числа этой таблицы получаются следующим образом:

135

1.Это строка и столбец, соответствующие новым свободной

ибазисной переменным.

2.В остальных клетках записываются суммы коэффициентов из предыдущей таблицы.

 

Решение задачи симплекс-методом –

вторая итерация:

 

 

 

 

 

 

 

 

 

 

 

1

 

х4

 

х2

 

q

 

2

 

1

 

–1

 

х3

 

6

2

 

–3

 

х1

2

1

 

–2

 

 

 

х5

 

3

 

–1

 

(3)

В новой таблице в строке qкоэффициент при х2 отрицательный, следовательно, оптимальное решение не найдено и переменную х2 следует сделать базисной. Здесь генеральный коэффициент

λ= 3. Получаем нижние коэффициенты по следующим правилам:

1.В клетку на пересечении отмеченных строки и столбца за-

писываем 1/λ = 1/3.

2.В клетках отмеченной строки записываем верхние коэффициенты, умноженные на 1/λ = 1/3.

3.В клетках отмеченного столбца записываем коэффициенты,

умноженные на – λ .

4. В остальных клетках записываем произведение уже полученных нижних коэффициентов из столбца х2 на верхний коэффициент соответствующего для данной клетки столбца, на пересечении которых стоит.

Третья итерация

 

 

 

1

 

 

х4

 

 

х2

 

q

 

2

 

1

 

 

 

–1

 

 

1

 

 

–1/3

 

1/3

 

 

 

 

 

 

 

 

 

х3

 

6

 

2

 

 

 

–3

 

 

3

 

 

–1

 

1

 

 

 

 

 

 

 

 

 

х1

 

2

 

1

 

 

 

–2

 

 

2

 

 

–2/3

 

2/3

 

 

 

 

 

 

 

 

 

х5

 

 

3

 

 

–1

 

 

 

(3)

 

 

 

 

1

 

 

–1/3

 

 

1/3

 

 

 

 

 

 

 

 

 

 

136

Переходим к базису х3, х2, х1. Оптимум найден:

 

 

 

 

1

 

 

х4

 

 

х5

 

 

 

 

 

 

 

 

 

 

 

q

3

 

2/3

 

1/3

 

 

х3

 

9

 

1

 

1

 

 

х1

 

4

 

1/3

 

2/3

 

 

 

 

 

 

 

х2

 

1

 

 

–1/3

1/3

 

 

 

 

 

 

В строке qвсе коэффициенты положительны, значит, оптимальноерешениедостигнуто, онозаписановстолбцесвободныхчленов:

x1 = 4,

x2 =1,

x3 = 9,

x4 = 0,x5 = 0,q′ = 3.

Таким образом, табличный метод (алгоритм) – это формализация вышеописанных процедур решения уравнений путём выражения одних переменных через другие.

4.4. ЦЕЛОЧИСЛЕННОЕ ПРОГРАММИРОВАНИЕ

Целочисленное программирование – разновидность линейного программирования, подразумевающая, что искомые значения должны быть целыми числами.

В предыдущем примере (подразд. 4.3) получено целочисленное решение. Допустим, что это некие стоимости. В принципе, они могут получиться и не целочисленными. Но если речь идёт о производстве продукции, например компьютеров, то результат решения не может быть не целочисленным.

Простейший метод решения задачи целочисленного программирования – сведение её к задаче линейного программирования с проверкой результата на целочисленность. Рассмотрим пример.

137

Задача о раскрое

Необходимо из 800 листов фанеры вырезать заготовки двух видов – А, В – для 1000 изделий.

На одно изделие идёт две заготовки первого вида (А) и три второго (В).

Были предложены три способа раскроя (рис. 4.8–4.10).

Рис. 4.8. Первый способ: из листа фанеры получается пять заготовок типа А и две типа В

Рис. 4.9. Второй способ: из листа фанеры получается одна заготовка типа А и пять заготовок типа В

Рис. 4.10. Третий способ: из листа фанеры получается три заготовки типа А и четыре заготовки типа В

138

Чёрным цветом обозначена обрезь. Достаточно ли для выполнения заказа листов фанеры, имеющихся на складе? Сколько листов фанеры нужно кроить по каждому способу раскроя?

Обозначим х1, х2, х3 количество листов фанеры, раскроенных соответственно по первому, второму и третьему способам.

Тогда 5х1

+ х2 + 3х3

количество заготовок первого вида

и 2х1 + 5х2 + 4х3

количество заготовок второго вида.

По условию для выполнения заказа требуется 2000 заготовок

первого вида и 3000 второго.

 

Получаем

 

 

 

 

5x1 + x2 + 3x3 ≥ 2000,

 

 

 

 

 

2x1 + 5x2 + 4x3 ≥ 3000,

 

x

+ x

+ x = 800.

 

1

2

3

Чтобы заменить неравенства строгими равенствами, обозначим х4 количество заготовок первого вида, которое придётся изготовить сверх 2000 шт. заготовок первого вида (А), необходимых для 1000 требуемых изделий; х5 – количество заготовок второго вида (В), которое придётся изготовить сверх 3000 шт. заготовок второго вида. Тогда

5x1 + x2 + 3x3 x4 = 2000,

 

= 3000,

2x1 + 5x2 + 4x3 x5

 

 

x1 + x2 + x3 = 800.

 

Задача заключается в отыскании решения системы уравнений в целых числах.

Имеется три уравнения и пять неизвестных, поэтому два неизвестных будут свободными, а три – зависимыми. В качестве зависимых следует брать переменные с единичными коэффициентами. Выразим х3 через х1 и х2 из третьего уравнения и подставим х3 в первые два уравнения. Получим

139

x4

= 400

+ 2x1 2x2 ,

x5

= 200

2x1 + x2 ,

x3 = 800

x1 x2 .

Перебирая целые значения х1, х2 так, чтобы х3, х4, х5 были положительными, можно получить решение системы в целых числах:

х1

0

0

0

100

100

100

100

200

200

200

300

300

х2

0

100

200

0

100

200

300

200

300

400

400

500

х3

800

700

600

700

600

500

400

400

300

200

100

0

х4

400

200

0

600

400

200

0

400

200

0

200

0

х5

200

300

400

0

100

200

300

0

100

200

0

100

Вариант второго столбца 0, 100, 700, 200, 300 – самый лучший, так как образуются «лишние» заготовки ещё для 100 изделий. В других вариантах «лишние» будут некомплектны: нужно две заготовки первого вида (А) и три второго (В).

Но нужно ли кроить все 800 листов? Ведь необходимо только

1000 изделий, а не 1100.

Можно поставить задачу так: какое наименьшее количество листов фанеры нужно взять, чтобы выполнить заказ? Получаем задачу минимизации.

5x1 + x2 + 3x3 x4

= 2000,

 

x5 = 3000,

2x1 + 5x2 + 4x3

 

min.

f = x1 + x2 + x3

На время забудем о целочисленности нашей задачи. Попытаемся решить задачу удачным выбором свободных неизвестных. Выразим х1, х2 через х3, х4, х5:

5x1 = −x2 3x3 + x4 + 2000,

 

4x3

+ x5 + 3000,

5x2 = −2x1

 

+ x3

min.

f = x1 + x2

Необходимо убрать в первом уравнении х2, во втором – х1:

140

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]