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

Зад лин прогр и мет их решения 16 12 08

.pdf
Скачиваний:
29
Добавлен:
29.03.2016
Размер:
7.61 Mб
Скачать

170

Наличие люфта в векторе требований на форматы

Постановка задачи

Пусть вектор требований на форматы «размыт» допусками. т.е.

в2[M] в[M] в1[M]

Рассмотрим теперь задачу определения раскладок (способов раскроя) по ширине тамбура и числа съемов, вырезаемых по этим раскладкам (интенсивностей использования способов раскроя) при которых нарезаемое количество рулонов каждого формата лежит в заданных пределах

в2[M ] A[M,N] x[M] в1[M]

и минимизируется суммарное количество попутных отходов.

Данная задача, по сути дела, есть целочисленная задача линейного раскроя с дополнительными ограничениями. Переходим к ее постановке.

Пусть имеется одномерное сырье длины l0 (ширина тамбура), из которого необходимо нарезать заготовки (форматы в заявке) различных типов из множества M ( M = m– число

элементов в множестве M , в нашей задаче m – число различных форматов в заявке). Длины заготовок задаются вектором l[M ]. Требуется, удовлетворив требования на заготовки по каждому типу (по количеству рулонов каждого формата) b[ M ] , достичь этого, израсходовав минимальное количество штук сырья. Пусть теперь N – множество номеров всех возможных способов раскроя тамбура (множество номеров всех возможных раскладок, включая и нетехнологичные, либо по количеству вырезаемых заготовок, либо с большим отходом). N = n – число всех возможных способов раскроя. Составим из способов раскроя целочисленную неотрицательную матрицу A[M , N], где A[M , j] – способ раскроя с номером j . A[i, j] – количество заготовок i -го типа, вырезаемых j -м способом раскроя (число рулонов i -го формата в j – ой раскладке). Неотрицательный вектор способа раскроя A[M , j], очевидно, удовлетворяет ограничению

(1)A[M, j] l[M ] l0

так как суммарная длина вырезаемых в способе заготовок не должна превышать длины сырья.

Введем целочисленный неотрицательный вектор неизвестных x[N] – интенсивности

использования способов раскроя. x[N]

– количество раз применения j - го способа

раскроя. Кроме того, введем дополнительные (люфтовые) переменные

x[M1]:b[M] = b1[M]x[M]

 

 

 

и

x

[M1]: b[M ] = b2[M ]+

x

[M ].

Тогда

 

 

 

 

 

A[M, N] x[N]+ x[M1] = b1[M ]

(*).

A[M, N] x[N]x[M2 ] = b2[M ]

Вычитая из первой системы вторую, получаем вместо (*)

A[M, N] x[N] + x[M1]

= b1[M ]

 

 

 

 

(+)

 

x[M1] + x[M2

] = b1[M ] b2[M ]

171

Ясно, что однократное использование способа раскроя приводит к израсходованию одной штуки сырья длиной l0 . Тогда линейная функция f (x) = 1[N] x[N]l0 l[M ]b[M ]

выражает суммарные отходы при вырезании всех требуемых заготовок. Данную функцию можно преобразовать, удалив из нее константы

f(x) = 1[N] x[N]l0 l[M ]b[M ] =

=1[N] x[N]l0 l[M ](b1[M]x[M1]) =

=1[N] x[N]l0 l[M ](b2[M ]+ x[M2 ])

Таким образом, приходим к следующим линейным целевым функциям: f1 = 1[N] x[N]l0 + l[M ] x[M1]

f2 = 1[N] x[N]l0 l[M ] x[M2 ]

Беря первую из них, рассматриваем в качестве системы ограничений систему (+) в которой столбцы матрицы A[M , N] удовлетворяют ограничению (1).

Если добавить к ограничению (1) еще два ограничения (соответствующих максимуму концевого отхода и максимальному количеству вырезаемых в способе раскроя заготовок)

(2)

A[M , j]l[M ] l0 p ,

p – максимальный концевой отход.

(3)

A[M , j] l[M ] k 1,

k – максимальное число ножей на ПРС,

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

 

f1 = 1[N] x[N]l0 + l[M ] x[M1] min

A[M, N] x[N]+ x[M1]

= b1[M ]

 

 

 

 

 

 

 

 

 

 

 

 

 

x[M1]+ x[M2

] = b1[M ]b2

[M ]

 

 

 

 

 

 

 

x[N] 0[N], x[M1] 0[M1],

x

[M2 ] 0[M2 ]

(+)

 

 

x[N], x[M1],

x

[M2 ]целочисленный

 

Алгоритм решения

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

обратная к базисной выглядят следующим образом:

 

 

 

 

A[M M , N'M1]

 

 

 

 

B[N'M1,M M ]

 

0

 

 

1

0

 

 

1

0

 

 

 

 

 

 

1

0

 

 

 

1

 

 

 

 

 

 

 

 

 

1

 

 

 

1

 

 

 

 

1

 

 

 

 

 

 

 

 

1

 

 

 

...

 

 

 

 

 

...

 

 

 

...

 

 

 

 

 

 

 

 

...

 

 

 

0

1

 

 

0

1

 

 

0

1

 

 

 

 

 

0

1

 

 

 

0

 

1

0

 

0

0

 

 

 

+1

0

 

 

 

0

 

 

 

 

 

 

 

0

 

 

1

 

 

 

 

0

 

 

 

 

 

 

 

 

+1

 

 

 

...

 

 

 

 

 

...

 

 

 

...

 

 

 

 

 

 

 

 

...

 

 

 

0

0

 

0

1

 

 

0

0

 

 

 

0

+1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Выпишем вектор двойственных переменных на нулевом шаге и начальное базисное решение

172

(u[M ],v[M ]) = l0[M ],l[M ]l0[M ]

.

(x[N'], x[M1], x[M2 ]) = b2[M ],b1[M ]b2[M ],0[M ]

Ясно, что на первом шаге оценки в части люфтовых переменных не будут нарушать условия оптимальности (на последующих шагах это уже не будет выполняться). На каждом шаге оценки в части люфтовых переменных вычисляются (их немного), а «раскладочные» оценки генерируются из r – задачи.

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

A[M, N] {x*[N]}+

{x*[M ]}

 

 

 

1

 

нецелочисленный

=b [M ] A[M, N] [x*[N]][x*[M ]].

1 1

целочисленный

Далее можно поступить следующим образом:

1.Округлим оптимальное значение целевой функции (значение суммарного остатка) вверх до целого следующим образом:

0

(

 

)

+ l[M ]

(

1

)

f * = l

1[N] x[N] +1

x[M

]+1

2. Введем дополнительное ограничение и дополнительную переменную

1[N] x[N] l0 +l[M] x[M1]+ x[n3 ]= f *

3. Получим линейную нецелочисленную задачу:

f1 = 1[N] x[N]l0 + l[M ] x[M1] min

A[M, N] x[N]+ x[M1] = b1[M ]

 

 

 

 

 

 

 

 

x[M1]+ x[M2 ] = b1[M ]b2[M ]

 

 

1[N] x[N]l

+ l[M ] x[M

]+ x

[n

]= f *

 

0

1

 

3

 

x[N] 0[N], x[M1] 0[M1], x[M2 ] 0[M2 ] (++)

Найдем её оптимальное (нецелочисленное) решение, со значением целевой функции равным f *

4. Выберем в качестве новой целевой функции следующую:

g = (m m')

+ 1[N]{x[N]}

+ 1[N]

x[N]

min

 

 

{

}

число положительных

сумма дробных частей

сумма дробных частей

компонент в базисе

интенсивностей

люфтовых переменных

 

 

5.В число "кандидатов" для ввода в базис включим все столбцы системы ограничений с нулевой оценкой.

173

Минимизация попутчиков и люфт

Постановка задачи

Вектор требований b[M ] жестко задан и люфта не имеет. Минимизация суммарного

отхода достигается за счет выбора оптимальных раскладок (ЦЗЛР) и ввода дополнительных форматов – «попутчиков» ( M0, l0 [M0 ]). Как правило, в «попутчики»

включается небольшое множество форматов, легко реализуемых при продаже. Оптимальное решение ЗЛР с целочисленной функцией цели

Пусть x* [N ] - оптимальное решение ЗЛР

 

 

 

[

]

[

 

]

min

 

 

 

 

 

f =1

 

N

x

N

 

 

 

 

 

 

 

 

 

( )

 

 

 

 

 

 

]=b[M ]

A[M ,N] x[N

 

 

 

 

 

 

 

 

 

 

 

x[N

]0

[N]

 

 

 

 

 

 

 

 

 

 

 

и

пусть

 

 

N '

-

 

 

 

соответствующий

 

 

оптимальный

базис

x* [N']0[N'], x* [N N']0[N N']

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[

 

]

- базисная матрица,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A M, N '

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

B[N ', M ] - обратная базисная матрица.

 

 

 

 

 

 

 

 

 

 

 

 

 

f * =1[N ] x* [N ]=

f *

+{f *}, {f *}>0,

f * нецелое

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Добавим к задаче

(

 

)

ограничение на целочисленность f *

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

[

]

x

*

[

N

]

 

[

]

=

 

f

*

+1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

N

 

 

 

+ x

n +1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

и получим

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[

 

 

 

]

 

 

 

 

 

 

 

 

 

 

 

 

 

f =

 

 

 

 

 

 

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n +1 min

 

 

 

 

 

 

 

 

A M,

N

x*

N

]

 

 

 

 

 

=b

M

]

 

 

 

 

 

 

 

 

( )

 

[

 

 

 

]

 

 

[

 

 

 

 

 

 

 

[

 

 

1[N ] x* [N ]+ x[n+1]= f * +1

новую задачу ЛР.

В качестве начального базиса возьмем N '' = N ' {n +1}. Тогда базисная матрица и обратная к ней будут выглядеть следующим образом:

 

 

 

 

0

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

*

[N

 

 

 

 

*

[N ']

*

[n +1])

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

x

'']=(x

, x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

где

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[

 

]

.

 

 

 

 

[

N ',M

]

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

*

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

*

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A M, N '

 

 

.

 

 

 

 

B

 

.

 

 

 

 

 

 

x [n+1]=−v[M ] b[M ]+ f

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+1

=

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

*

 

 

 

 

 

0

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f

+1=

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

=−1[N '] B[N ',M ] b[M ]+

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 1 . . .1

1

 

 

 

 

v[M ]

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

=−f * + f

* +1

=1{f *}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Подсчитаем вектор двойственных переменных

]

(

 

 

[

]

)

 

 

 

 

 

 

[

M

1 ]

[

]

[

N '', M

1 ]

(

0

[

 

]

 

)

 

[

N '', M

1

 

 

 

 

 

 

 

 

v

 

=C

N ''

B

 

=

 

N '

,1

B

 

 

=

 

v

M ,1

 

 

 

 

 

 

и оценки небазисных раскроев

 

[

 

1

0 ]

=

(

 

[

 

 

 

0

]

 

)

 

 

 

 

 

 

 

A

M

, j

 

 

A

M, j

 

,1

 

 

 

 

 

 

 

ε1[ j0 ]=−v[M, j0 ] A[M, j0 ]+1=−ε[ j0 ]0 (решение неоптимально) Начальная симплекс таблица имеет вид

 

 

 

 

 

 

 

 

 

174

 

 

 

 

 

 

1{f *}

v[M ]

 

1

ε[ j0 ]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

x*

N '

]

B

N ', M

]

.

z

N '

]

 

[

 

[

 

.

[

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

1{f *}

v[M ]

 

1

ε[ j0 ]

 

 

 

 

 

 

 

 

 

 

 

Вводим любой небазисный раскрой в базис

(его оценка ε[ j0 ]

и вектор

z[N '']=(z[N '],ε[ j0 ]) выделены

в таблице) и

получим оптимальное

решение

(возможно и целочисленное) задачи

().

 

 

Если в оптимальном решении ЗЛР f * - целое, то в правой части вводимого ограничения

задачи

()

 

следует брать

 

f * , а переменную x* [n+1] нужно вводить в базис с нулевым

значением вместо

 

1f *

.

 

 

Итак, пусть имеется оптимальное решение ЦЗЛР без использования попутчиков

 

 

 

 

[

N

]

x

[

N

]

min

 

 

 

 

 

 

 

f =1

 

 

 

 

 

( )

 

[

 

 

]

 

 

[

N

]

 

[

M

]

 

 

 

 

 

 

 

 

*

A

M ,N x

 

 

=b

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x[N]0[N],x[N]целочисл.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f * минимальное число съемов

x* [N ]оптимальные интенсивности использ. раскл.

L0 минимальный суммарный отход

 

L

L

 

 

 

 

 

L

 

 

 

 

 

 

 

 

 

 

f * L

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(

- отход в раскладке)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Задача уменьшения L0 с использованием попутчиков состоит в выборе целевого вектора

x0 [M0 ], являющегося решением Р-задачи.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x0 [M0 ] l0 [M0 ]max

 

 

 

 

 

x0 [M0 ] l0 [M0 ]L0

 

 

при котором новая ЦЗЛР (l0 [M1 ]=(l[M ],l0 [M0 ]),

b0 [M1 ]=(b[M ], x0 [M0 ])).

 

 

 

 

f

0

 

[

N

1

]

[

N

1

]

min

 

 

 

 

 

 

 

 

 

 

=1

 

 

x

 

 

 

 

 

 

A0 [M1, N1 ] x[N1 ]=b0 [M1 ]

 

 

 

 

 

 

(+)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x[N1 ]целочисл.

 

 

 

x[N1 ]0[N1],

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

]=

(

 

 

 

 

 

0

0 )

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x[N

 

x[N ], x [M

]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

имела бы минимальное значение целевой функции f0* = f * .

175

Попутчики используются для «забивания» ими отходных частей раскладок (см. рис.). Например, если в оптимальном решении, без попутчиков почти все раскладки являются безотходными (большой отход имеется только в последней малоинтенсивной раскладке), то с помощью решения Р-задачи просто «забивается» отход L0 и все поместившиеся попутчики добавляются в последнюю раскладку. Если же значительный минимальный суммарный отход L0 составляется из небольших отходов в каждой раскладке (особенно,

если их величины меньше длины наименьшего попутчика), то решение такой задачи перестает быть очевидным .

Применим для решения поставленной задачи соображения люфта в векторе требований. Будем считать, что вектор требований задачи с попутчиками имеет люфт только в части относящейся к попутчикам, причем люфт в большую сторону. Тогда

b0 [M1 ]=

b[M ]

 

+

0[M ]

 

 

, причем x0

[i]L0

/l0

[i]

 

x0 [M0

 

 

0[M0

]

 

]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Изменим в (+) целевую функцию на следующую:

g = L 1[N1 ] x[N1

]l[M1 ] b[M1

]=

= L0 l[M0 ] x0 [M0 ]

-минимальный отход при использовании попутчиков.

 

Заметим, что при

x0 [M0 ]=0[M0 ] g = L 1[N ] x* [N ]l[M ] b[M ]= L0

Перенесем часть вектора требований, связанную с попутчиками, в левую часть системы ограничений (+), после чего она примет вид

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

b[M

]

 

 

 

A0 [M, N1 ]

 

 

 

 

 

0[M,M0 ]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

× x[N

]

 

 

 

 

 

 

 

 

×

x0 [M

 

] =

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A0 [M

0, N1 ]

 

 

 

 

 

E[M0, M0 ]

 

 

 

 

 

 

 

 

 

 

 

 

0[M

0 ]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A M

,N

 

 

 

 

 

A

M

,N

0 ]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[ 1

1]

 

 

 

 

 

 

1[

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

b1[M1]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Окончательно получим линейную задачу раскроя.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

= L

 

 

 

 

 

l

 

[

M

0 ]

x

0 [

M

 

 

]

min

 

 

 

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

0

 

 

 

 

 

 

0

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

()

 

 

[M1, N1 ] x[N1 ]A1[M1, M

0 ] x0 [M0 ]=b1[M1 ]

 

 

 

 

 

A0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x[N1 ]0[N1], x0 [M0 ]0[M0 ]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1. Алгоритм решения

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Пусть A* [M, N ']

-

оптимальная

 

базисная

 

матрица

 

в

ЗЛР

(), а B* [N ',M ] -

 

соответствующая ей обратная базисная матрица. Построим начальный базис ЗЛР (),

 

 

 

 

 

 

 

 

 

A* [M, N ']

 

 

 

 

 

 

 

 

 

 

0[M, M0 ]

 

 

 

добавлением справа к матрице

 

 

 

 

 

 

 

матрицы

 

 

 

.

 

 

 

 

 

 

 

 

 

 

 

0[M0, N ']

 

 

 

 

 

 

 

 

E[M0, M

0 ]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Тогда начальная базисная матрица

A1[M1, N1 ']

и обратная к ней

 

B1[N1 ', M1 ] будут

 

иметь вид:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A* [M, N ']

0[M, M0 ]

 

 

0[M0, N ']

E[M0, M0 ]

 

 

B* [N ',M ]

0[N ', M0 ]

 

 

0[N '',M0 ]

E[N '', M0 ]

 

 

176

(| N '' |= M0 )

Начальное базисное решение

x0Б =(B[N ',M ] b[M ], E[N '',M0 ] 0[M0 ])=(x* [N '],0[N ''])

Значение целевой функции

g0 (x0 )= L0

соответствует минимальному суммарному отходу L0 (без попутчиков). Подсчитаем вектор двойственных переменных v[M1 ]=c[N1 '] B[N1 ',M1 ]

v[M1 ]=(0[M ], l0 [M0 ]).

Тогда начальная симплекс-таблица МСМ для задачи () будет выглядеть следующим

образом:

L0

0[M ]

l0 [M0 ]

 

 

 

x* [N ']

B* [N ',M ]

0[N ', M0 ]

 

 

 

0[N '']

0[N '', M ]

E[N '', M0 ]

 

 

 

Пусть теперь A1[M1, j]=(A* [M1, j], A0 [M0, j]), так что A0 [M0, j]>0[M0 ] (в один из «старых» раскроев помещается попутчик)

Подсчитаем его оценку.

ε [ j]=0[M ] A* [M, j]+l [M ] A [M , j]0 =l [M ] A[M , j]>0

1 0 0 0 0 0 0 0

=0

Решение неоптимально и его можно улучшить в рамках МСМ.

1. Если вводимый в базис раскрой имеет вид

A1[M1, j]=

 

A* [M, j]

 

(«старый» базисный

вектор,

в который

поместились

 

 

 

 

 

 

A0 [M0

, j]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

попутчики), тогда вектор направления z[N1 '] выглядит следующим образом:

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

...

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Улучш. реш.

x* [00]

 

 

 

 

 

 

 

1

i

 

 

 

 

(1)

 

 

 

 

 

 

 

 

 

0

 

 

формула Гаусса

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

z[N ']=

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a0

[M0, j]

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

...

 

 

a0 M

0, j

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

Изменения в базисной части решения.

(j)x* [i0 ]

x* [i0 ] a0 [M, j]

остальные компоненты не изменяются.

2. Оценка любого раскроя только из попутчиков

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

177

 

 

 

 

 

ε[ j]

 

 

0[M ] 0[M ]+l0 [M0 ] A0 [M0, j]0 >0

 

 

 

 

 

тоже нарушает условие оптимальности.

 

 

 

 

 

 

3. Решение целочисленной задачи

 

 

 

 

 

 

 

 

Пусть

(x* [N1 ], x0* [M0 ])

оптимальное

решение ЗЛП (), и выделим его целую и

дробную части. Тогда будем иметь

 

 

 

 

 

 

 

 

A0 [M1, N1

] x* [N1

] + A0 [M1, N1 ] {x* [N1 ]}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A

[

M , M

]

x

*

[

M

A

[

M , M

]

x

*

M

]

=b

[

M

 

]

 

 

 

 

 

 

 

]

 

 

 

[

 

 

 

 

1

 

 

1

 

0 0

 

 

 

0

1 1

0 { 0

 

 

0 }

1

 

 

1

 

или

A0 [M1, N1 ] {x* [N1 ]}A1[M1, M0 ] {x0* [M0 ]}=

=b0* [M1 ]A0 [M1, N1 ] x* [N1 ]

b[M1]

где b0* [M1 ]=(b[M ], x0* [M0 ] ) - целочисленный.

Разбиваем целочисленный неотрицательный вектор остатка b[M1 ] в правой части на минимальное число (К) раскладок. Получаем целочисленное решение для вектора требований b0* [M1 ]:

K

A0 [M1, N1 ] x* [N1 ] +rj [M1 ]=b0* [M1 ]

j=1

с отходом

L(1[N1 ] x* [N1 ] +K)l[M1 ] b0* [M1 ]

Примеры:

(1)Рассмотрим пример, в котором целочисленное решение содержит только безотходные раскладки кроме последней, имеющей значительный отход.

Исходные данные: L =35, l =(9,5,3), b =(101,101,102)

Матрица всех технологичных способов раскроя

 

1

2

3

4

 

5

6

7

8

9 10 1112 1314 1516 17 18 19

20

номер

 

3322221111110000 00 0 0

 

 

 

A =1032105432107 6 54 32 1 0 раскрой

 

12024502357801 35 681011

 

 

0 2 2 1 0 2 1 0 2 1 0

2 0 2 1 0 2 1 0

2

отход

 

Оптимальная базисная матрица

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

8

 

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

1

 

2

 

 

 

 

 

 

 

 

 

 

A[M, N ']=

 

 

 

 

4

 

 

 

и соответствующая ей симплекс-таблица

 

 

1

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

2

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

344

 

 

9

 

 

 

 

 

 

5

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7

 

 

 

 

35

 

 

 

 

 

 

35

 

 

 

35

 

 

 

 

 

1

20

 

 

 

14

 

 

 

 

 

 

0

 

 

 

7

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

35

 

 

 

 

 

 

 

 

 

 

 

 

35

 

 

 

 

8

121

 

3

 

 

 

 

 

10

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7

 

 

 

 

 

 

35

 

 

 

 

35

 

 

 

35

 

 

 

 

5

83

 

 

2

 

 

 

 

5

 

 

11

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7

 

 

 

 

 

 

35

 

 

 

 

 

35

 

 

35

 

 

 

 

 

178

Полученное решение оптимально, но нецелочисленное и значение целевой функции

нецелое 49+ 1 .

7

 

Введем дополнительное ограничение

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6

 

 

1[N ] x[N ]+ x[n +1]=50

 

 

 

x[n +1]=

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7

 

Построим начальную симплекс-таблицу новой задачи ЛР ()

 

N '' = N '

{

 

 

 

 

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n +1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

1

 

 

 

 

2

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

4

 

 

 

 

1

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A[M1, N '']

=

 

 

2

 

 

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

1

 

 

 

 

1

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6

 

 

 

 

9

 

 

 

 

5

 

 

 

 

3

 

2

 

 

 

 

30

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7

 

 

 

 

 

35

 

 

 

 

 

 

 

 

 

35

 

 

 

 

 

 

 

 

 

 

35

 

 

 

 

 

 

 

 

 

35

 

 

 

 

 

 

 

 

 

1

 

20

 

 

14

 

 

 

 

 

 

0

 

 

 

 

 

7

 

0

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

35

 

 

 

 

 

 

 

35

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8

 

121

 

3

 

 

 

 

 

10

 

 

 

 

 

1

 

0

 

 

 

 

10

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7

 

 

 

 

 

35

 

 

 

 

 

35

 

 

 

 

 

 

 

 

 

 

 

35

 

 

 

 

 

 

 

 

 

35

 

 

 

 

 

 

 

 

 

5

 

83

 

 

2

 

 

 

 

5

 

11

 

 

0

 

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7

 

 

 

 

 

35

 

 

 

 

 

 

 

 

 

35

 

35

 

 

 

 

 

 

 

 

 

 

35

 

 

 

 

 

 

 

 

6

 

 

 

 

 

 

 

9

 

 

 

 

 

 

 

 

 

5

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n +1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

30

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

7

 

 

 

 

 

35

 

 

 

 

 

 

 

 

 

35

 

 

 

 

 

 

 

 

 

 

35

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

35

 

 

 

 

Введем в базис раскрой (*) (0, 1, 0, 1) с отходом 30.

 

Его оценка ε1 (*)

=−

5

 

+1=

30

>0.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

35

 

 

 

 

 

 

 

 

 

35

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Он вводится в базис вместо раскроя (n +1).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

0

 

 

 

 

 

 

0

 

 

 

 

 

0

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

1

 

20

 

 

14

 

 

 

 

 

0

 

 

 

 

7

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

35

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

35

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8

 

17

 

 

0

 

 

 

 

 

 

1

 

 

 

 

 

 

0

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

5

 

12

 

 

1

 

 

 

 

1

 

 

 

 

3

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10

 

 

 

 

6

 

 

 

 

10

 

 

 

 

6

 

 

 

 

 

 

 

 

 

 

 

 

 

*

 

1

 

 

 

9

 

 

 

5

 

 

3

 

 

 

35

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

30

 

 

 

30

 

 

 

30

 

 

 

30

 

 

 

 

 

Получено оптимальное целочисленное решение (50 раскладок, все безотходные, кроме последней с отходом 30)

 

3

1

2

0

101

20

1 +17

 

4 +12

 

1 +1

 

1

= 101

 

 

 

 

 

 

 

 

 

 

 

1

 

2

 

4

 

0

102

 

 

 

 

 

 

 

 

 

 

 

(0)

(0)

(0)

(30)

 

 

Попробуем уменьшить отход добавлением попутчика длины 4. Выпишем целевую функцию ЗЛР () и ее начальную симплекс-таблицу.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

179

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

g0 =304 x0 min

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

30

 

 

 

 

 

0

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

4

 

28

 

 

 

 

 

 

 

 

Введем в базис столбец

 

 

 

 

 

 

 

 

 

 

 

 

14

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(

 

) (

0,1,0,1,7

)

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

20

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

0

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

35

 

 

 

 

 

 

 

 

 

 

 

 

 

35

 

 

 

 

 

 

 

 

 

 

 

 

 

с оценкой 70+287028>0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8

 

17

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

1

 

 

 

 

 

0

 

0

 

1

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+0 =0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5

 

12

 

 

1

 

 

 

 

 

1

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

0

0

 

 

0

1

+0+

1

+0 =0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10

 

 

 

 

 

 

 

6

 

 

 

 

10

 

 

 

 

 

 

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6

 

 

 

 

 

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

*

 

1

 

9

 

 

 

5

 

 

 

3

 

 

 

 

35

 

 

 

 

 

 

0

 

(1)

 

 

5

+

35

+0 =1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

30

 

 

 

 

 

 

30

 

 

 

 

 

 

30

 

 

 

30

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

30

 

 

 

30

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(+)

 

0

 

 

 

 

 

0

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

-1

 

-7

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Проверим оптимальность решения

 

 

2

 

252

 

 

 

 

 

140

 

 

 

 

84

 

 

 

 

 

 

 

980

 

4

 

 

 

8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(2, 2, 1, 1, 1)

 

 

()

 

 

 

 

 

 

 

 

 

30

 

 

 

 

 

 

30

 

 

 

 

 

30

 

 

 

 

 

 

 

 

 

 

 

 

 

30

 

 

 

 

 

 

30

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

20

 

14

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

7

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

0

 

 

18

 

 

 

 

 

 

 

504+280+84980

+

120

=

8

>0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

35

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

35

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

30

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

30

 

 

 

 

 

 

 

 

30

30

 

 

 

 

8

 

17

 

 

 

 

 

0

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

1

 

 

 

 

0

 

 

10

 

 

 

 

 

 

 

 

 

 

 

 

 

Решение неоптимально

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

30

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

1

 

 

2

 

 

0

 

101

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

4

 

 

1

 

 

1

 

101

 

0

5

12

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10

 

 

 

 

6

 

 

 

 

 

10

 

 

 

 

 

 

 

 

 

 

 

 

 

6

 

 

 

 

 

 

 

30

 

 

 

 

 

 

 

20

1

 

+17

2

+12

 

4

+1

 

0

=

 

+

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

102

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9

 

 

 

 

 

 

 

 

 

5

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

35

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

0

 

 

0

 

 

7

 

 

 

 

 

 

( )

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

7

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

30

 

 

 

 

 

 

30

 

 

 

 

 

30

 

 

 

 

 

30

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(4 раскладки, 7 попутчиков,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

30

 

 

 

 

 

 

 

 

 

 

 

(+)

 

7

 

63

 

 

 

 

35

 

 

 

21

 

 

 

 

 

245

 

 

 

-1

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

отход 2)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

30

 

 

 

 

 

 

30

 

 

 

 

 

30

 

 

 

 

 

30

 

 

 

 

 

 

 

 

 

 

30

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

9

 

5

 

3

 

-35

4

1

31

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8

29

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5

25

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

()

 

15

 

9

 

5

 

3

 

35

 

0

 

 

 

 

 

 

 

 

 

 

2

 

4

 

4

 

4

 

4

 

 

(+)

15

 

 

 

 

 

 

 

 

 

 

 

 

 

-1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Решение оптимально, т.к. для любого раскроя с учетом попутчиков выполняется

r[M1 ] l[M1 ]L.

(компоненты вектора v[M1 ] равны l[M1 ] и L )