®¹i häc th¸i nguyªn
Tr-êng ®¹i häc khoa häc
VŨ VĂN CÔNG
MỘT CẢI TIẾN CÁCH CHỌN VÉC TƠ ĐƯA
VÀO CƠ SỞ CỦA PHƯƠNG PHÁP NÓN XOAY
GIẢI BÀI TOÁN QUY HOẠCH TUYẾN TÍNH
LUẬN VĂN THẠC SĨ TOÁN HỌC
th¸i nguyªn - n¨m 2014
®¹i häc th¸i nguyªn
Tr-êng ®¹i häc KHOA HäC
VŨ VĂN CÔNG
[
MỘT CẢI TIẾN CÁCH CHỌN VÉC TƠ ĐƯA
VÀO CƠ SỞ CỦA PHƯƠNG PHÁP NÓN XOAY
GIẢI BÀI TOÁN QUY HOẠCH TUYẾN TÍNH
LUẬN VĂN THẠC SĨ TOÁN HỌC
Chuyên ngành: Toán ứng dụng
Mã số: 60 46 01 12
Người hướng dẫn khoa học: TS. NGUYỄN ANH TUẤN
Thái Nguyên, 2014
1
Mục lục
Mục lục 1
Mở đầu 2
Chương 1 Bài toán quy hoạch tuyến tính và phương pháp giải 4
1. Bài toán quy hoạch tuyến tính tổng quát 4
1.1. Dạng chuẩn và dạng chính tắc 5
1.2. Đưa bài toán quy hoạch tuyến tính về dạng chuẩn hoặc chính
tắc 5
2. Phương pháp đơn hình và phương pháp nón xoay 7
2.1. Phương pháp đơn hình giải bài toán QHTT dạng chính tắc 7
2.2. Phương pháp nón xoay giải bài toán quy hoạch tuyến tính với
miền ràng buộc là hệ bất phương trình tuyến tính 11
2.2.1. Khái niệm về nón đơn hình tuyến tính 11
2.2.2. Khái niệm về cạnh của nón đơn hình 11
2.2.3. Khái niệm nón xoay M(r,s) sinh ra từ nón M 14
2.2.4. §Þnh nghÜa Nón cực tiểu (Nón-min) 17
2.3. Phương pháp nón xoay tuyến tính 18
2.3.1. Thuật toán nón xoay tuyến tính 19
2.3.2. Bảng lặp giải bài toán qui hoạch tuyến tính bởi thuật toán
nón xoay tuyến tính và ví dụ minh hoạ 21
Chương 2 Một cách chọn véc tơ đưa vào cơ sở 26
2.1. Lựa chọn chỉ số đưa vào cơ sở 26
2.2. Ví dụ bằng số minh hoạ 30
Tài liệu tham khảo 32
2
Mở đầu
Như chúng ta đã biết, bài toán quy hoạch tuyến tính (QHTT) có hai dạng
cơ bản là dạng chuẩn và dạng chính tắc, hai dạng này có quan hệ mật thiết với
nhau. Bài toán quy hoạch tuyến tính dạng chuẩn là bài toán có miền ràng buộc
là một hệ bất phương trình tuyến tính, còn bài toán quy hoạch tuyến tính dạng
chính tắc là bài toán quy hoạch có miền ràng buộc là một hệ phương trình
tuyến tính với các biến của nó có dấu không âm. Trong thế kỷ trước, cùng với
sự phát triển mạnh mẽ của công nghệ thông tin, lý thuyết tối ưu đã có những
bước tiến lớn, trong đó phải nói đến các phương pháp và các thuật toán giải
bài toán quy hoạch tuyến tính, gắn liền với tên tuổi của nhiều nhà toán học
như L.V. Kantorovich (1939), George Dantzig (1947), Lemke (1954), Leonid
Khachian (1979), Karmarkar (1984),
Nội dung của luận văn là đề nghị một quy tắc chọn chỉ số đưa vào cơ sở
trong thuật toán nón xoay tuyến tính trình bày ở cuốn sách [5] giải trực tiếp
bài toán quy hoạch tuyến tính với miền ràng buộc là hệ bất phương trình
tuyến tính. Cụ thể là chúng ta đề nghị một quy tắc chọn chỉ số ràng buộc đưa
vào cơ sở mới thay cho cơ sở cũ làm cho số bước lặp đi tới lời giải là giảm đi.
Luận văn gồm 2 chương:
Chương 1: Trình bày bài toán quy hoạch tuyến tính tổng quát và hai dạng
cơ bản của bài toán quy hoạch tuyến tính là dạng chính tắc và dạng chuẩn với
hai phương pháp giải bài toán quy hoạch tuyến tính là phương pháp đơn hình
và phương pháp nón xoay.
Chương 2: Nội dung dựa trên phương pháp nón xoay tuyến tính trình bày
trong chương 1, đề nghị một quy tắc MAX giải bài toán quy hoạch tuyến tính
với miền ràng buộc là hệ bất phương trình tuyến tính và ví dụ bằng số minh
họa.
3
Luận văn này hoàn thành dựa trên cuốn sách “Quy hoạch tuyến tính với
phương pháp nón xoay” [5] và trên các sách, tài liệu có trong phần tài liệu tham
khảo.
Tác giả
Vũ Văn Công
4
Chương 1
Bài toán quy hoạch tuyến tính và phương pháp giải
Trong chương này chúng tôi trình bày bài toán quy hoạch tuyến tính tổng
quát và hai dạng của bài toán quy hoạch tuyến tính là dạng chính tắc và dạng
chuẩn. Sau đó trình bày phương pháp đơn hình giải bài toán quy hoạch tuyến
tính dạng chính tắc và phương pháp nón xoay giải bài toán quy hoạch tuyến
tính với miền ràng buộc là hệ bất phương trình tuyến tính.
1. Bài toán quy hoạch tuyến tính tổng quát
Để nhất quán lập luận ta xét bài toán tìm cực đại, sau đó ta sẽ xét cách
chuyển bài toán tìm cực tiểu sang tìm cực đại.
Bài toán tổng quát của quy hoạch tuyến tính có dạng:
1
( ) , . ax
n
i i
i
f x C x c x m
=
=< >= →
∑
(1.1)
1
. ( , , ) , 1,2, ,
=
≤ = ≥ =
∑
n
ij j i
j
a x b i m
(1.2)
0, 1,2, , .
j
x j n
≥ =
(1.3)
Nếu gặp bài toán Min, tức là:
1
( ) min
n
j j
j
f x c x
=
= →
∑
x D
∈
Thì giữ nguyên ràng buộc và đưa về bài toán Max bằng cách:
1
( ) ax
n
j j
j
f x c x m
=
= − →
∑
x D
∈
Nếu bài toán Max có phương án tối ưu là
*
x
thì bài toán Min cũng có
phương án là
*
x
và
min ax
m
f f
= −
.
Thật vậy, vì
*
x
là phương án tối ưu của bài toán Max nên ta có:
5
*
ax
1 1
,
n n
m j j j j
j j
f c x c x x D
= =
= − ≥ − ∀ ∈
∑ ∑
Hay
*
1 1
,
n n
j j j j
j j
c x c x x D
= =
≤ ∀ ∈
∑ ∑
Chứng tỏ
*
x
là phương án tối ưu của bài toán Min và
*
min ax
1
n
j j m
j
f c x f
=
= = −
∑
.
1.1. Dạng chuẩn và dạng chính tắc
Người ta thường xét bài toán quy hoạch tuyến tính dưới hai dạng sau:
• Dạng chuẩn:
1
ax
n
j j
j
c x m
=
→
∑
ij
1
, 1, ,
0, 1, ,
n
j i
j
j
a x b i m
x j n
=
≤ =
≥ =
∑
• Dạng chính tắc:
1
ax
n
j j
j
c x m
=
→
∑
ij
1
, 1, ,
0, 1, ,
n
j j
j
j
a x b i m
x j n
=
= =
≥ =
∑
1.2. Đưa bài toán QHTT về dạng chuẩn hoặc chính tắc
Bất kỳ quy hoạch tuyến tính nào cũng có thể đưa về một trong hai dạng
chuẩn hoặc chính tắc nhờ phép biến đổi tuyến tính sau:
1. Một ràng buộc
6
ij
1
n
i
j
a b
=
≥
∑
Có thể đưa về ràng buộc:
ij
1
n
j i
j
a x b
=
− ≤ −
∑
,
bằng cách nhân hai vế với (-1) và viết lại
' '
ij
1
.
=
≤
∑
n
j i
j
a x b
2. Một ràng buộc đẳng thức
ij
1
n
j i
j
a x b
=
=
∑
Có thể thay bằng hai ràng buộc bất đẳng thức:
ij ij
1 1
; .
= =
≤ − ≤ −
∑ ∑
n n
j i j i
j j
a x b a x b
3. Một biến
j
x
không bị ràng buộc dấu có thể thay bởi hiệu của hai
biến không âm bằng cách đặt:
j j j
x x x
+ −
= −
với
0, 0 .
+ −
≥ ≥
j j
x x
4. Một ràng buộc bất đẳng thức
ij
1
n
j i
j
a x b
=
≤
∑
Có thể đưa về ràng buộc đẳng thức bằng cách đưa vào biến phụ
0
i
y
≥
:
ij
1
.
=
+ =
∑
n
j i i
j
a x y b
Về nguyên tắc, áp dụng nhiều lần các phép biến đổi 1, 2 và 3 ta có thể đưa
một bài toán quy hoạch tuyến tính bất kỳ về dạng chuẩn, sau đó áp dụng
nhiều lần phép biến đổi 4 ta sẽ đưa nó về dạng chính tắc.
7
2. Phương pháp đơn hình và phương pháp nón xoay
Trong mục này chúng tôi trình bày sơ lược về phương pháp đơn hình giải
bài toán quy hoạch tuyến tính dạng chính tắc và phương pháp nón xoay [5]
giải bài toán quy hoạch tuyến tính với miền ràng buộc là hệ bất phương trình
tuyến tính.
2.1. Phương pháp đơn hình giải bài toán QHTT dạng chính tắc
Phương pháp đơn hình giải bài toán QHTT dạng chính tắc do nhà toán học
Dantzig người Mỹ đề xuất năm 1947, sau đây chúng tôi xin tóm tắt sơ lược
phương pháp này.
Xét bài toán QHTT dạng chính tắc sau:
, ax
c x m
< >→
(1.4)
Ax b
=
(1.5)
0
x
≥
(1.6)
Trong đó A là ma trận kích thước m.n, với m
≤
n và hạng của ma trận A
bằng m. Cơ sở của thuật toán đơn hình chúng ta có thể xem trong sách [3]. Để
ngắn gọn chúng tôi chỉ trình bày tóm tắt các bước giải của thuật toán đơn hình
dưới đây như sau:
Thuật toán đơn hình
Bước 1: Xây dựng bảng đơn hình xuất phát. Tìm một phương án cực biên
xuất phát
x
và cơ sở của nó
,
j
A j J
∈
Xác định các số
jk
z
bởi hệ phương trình:
jk j k
j J
z A A
∈
=
∑
(1.7)
Đối với mỗi
k J
∉
, tính các ước lượng:
k jk j k
j J
z c c
∈
∆ = −
∑
(1.8)
Còn với
0
j
≠
thì
0
j
∆ =
.
8
Tính giá trị hàm mục tiêu
0
.
∈
=
∑
j j
j J
Z c x
Bước 2: Kiểm tra tối ưu
Nếu
0,
k
k J
∆ ≥ ∉
thì
x
là phương án tối ưu, dừng thuật toán. Trái lại,
chuyển sang bước 3.
Bước 3: Tìm véctơ đưa vào cơ sở . Có hai khả năng xảy ra:
Tồn tại
k J
∉
sao cho
0
k
∆ <
và
0,
jk
z j J
≤ ∈
thì bài toán
QHTT không có lời giải tối ưu (Z không bị chặn trên). Dừng
thuật toán.
Đối với mỗi
k J
∉
sao cho
0
k
∆ <
đều tồn tại
: 0
jk
j J z
∈ >
.
Khi đó chọn chỉ số s theo tiêu chuẩn:
{
}
min / 0
s k k
∆ = ∆ ∆ <
(1.9)
Đưa véctơ
s
A
vào cơ sở.
Bước 4: Tìm véctơ loại khỏi cơ sở. Xác định
s s
min / 0
j
r
r jk
r r
x
x
z
z z
θ
= > =
(1.10)
Và đưa véctơ
r
A
ra khỏi cơ sở.
Bước 5: Chuyển sang phương án cực biên mới và cơ sở mới. Cơ sở mới là
{
}
'
,
j
A j J
∈
với
{
}
{
}
'
\
J J r s
= ∪
.
'
j J
∀ ∈
các thành phần của phương án cực
biên mới
'
x
được tính theo công thức:
−
≠
=
=
'
( / ) ,
/ ,
j r rs js
j
r rs
x x z z
nÕu j s
x
x z
nÕu j s
(1.11)
Khai triển của các véctơ
k
A
theo các véctơ cơ sở mới được tính theo công
thức (1.12). Quay lên bước 2.
9
Công thức đổi cơ sở và bảng đơn hình
Ta xét các công thức chuyển từ phương án cực biên
x
với cơ sở J sang
phương án cực biên
'
x
với cơ sở J'. Ta đã có công thức (1.11) để tính các
thành phần của
'
x
.
Bây giờ ta thiết lập công thức tính các số
'
jk
z
ta có:
s
s j j
j J
A z A
∈
=
∑
, từ đẳng thức này qua các phép biến đổi (xem [6]) ta có
công thức sau:
− ≠
=
=
s s
'
s
( / ) ,
/ ,
jk rk r j
jk
rk r
z z z z nÕu j r
z
z z nÕu j r
(1.12)
Sau khi có
'
jk
z
ta tính:
∈
∆ = −
∑
'
' '
k jk j k
j J
z c c
(1.13)
Để dễ tính toán, trong mỗi bước lặp ta thiết lập bảng đơn hình.
Nếu tất cả các số trong dòng cuối (trừ hàm mực tiêu
f
) đều không âm,
nghĩa là
∆ ≥ ∀
0,
k
k
, khi đó
x
là phương án tối ưu.
1
c
…
j
c
…
r
c
…
m
c
…
k
c
…
s
c
…
n
c
j
c
Cơ sở
Phương
án
A
…
j
A
…
r
A
…
m
A
…
k
A
…
s
A
…
n
A
1
c
…
j
c
…
r
c
…
m
c
1
A
…
j
A
…
r
A
…
m
A
1
x
…
j
x
…
r
x
…
m
x
1 … 0 … 0 … 0 …
1
k
z
…
1s
z
…
1
n
z
0 … 1 … 0 … 0 …
jk
z
…
s
j
z
…
jn
z
0 … 0 … 1 … 0 …
rk
z
…
rs
z
…
rn
z
0 … 0 … 0 … 1 …
mk
z
…
s
m
z
…
mn
z
f
0 … 0 … 0 … 0 …
k
∆
…
s
∆
…
n
∆
10
Nếu dòng cuối (không kể
f
) có những số âm thì xem thử có cột nào cắt
dòng cuối ở một số âm mà mọi số trong cột đó đều âm hay không. Nếu có cột
nào như thế thì bài toán không có phương án tối ưu.
Nếu trái lại thì chọn cột
s
sao cho
{
}
min / 0
s k k
∆ = ∆ ∆ <
, rồi chọn (trong số
các dòng cắt cột
s
ở những số dương) dòng
r
sao cho:
0 s
s s
min / 0
j
r
j
r j
x
x
z
z z
θ = = >
.
Cột
s
gọi là cột quay, véctơ
s
A
được đưa vào cơ sở. Dòng
r
gọi là dòng
quay. Véctơ
r
A
bị đưa ra khỏi cơ sở.
Phần tử
s
0
r
z
>
là giao của cột quay và dòng quay gọi là phần tử chính của
phép quay. Các phần tử
s
,
j
z j r
≠
gọi là phần tử quay.
Các công thức (1.11), (1.12) và (1.13) gọi là các công thức đổi cơ sở. Bảng
đơn hình mới suy được từ bảng cũ bằng cách thay
r
c
,
r
A
trong dòng quay
bằng
s
c
,
s
A
. Sau đó thực hiện các phép biến đổi dưới đây:
1) Chia mỗi phần tử ở dòng quay cho phần tử chính (được số 1 ở vị trí của
s
r
z
cũ). Kết quả thu được gọi là dòng chính.
2) Lấy mỗi dòng khác trừ đi tích của dòng chính nhân với phần tử quay
tương ứng được số 0 ở mọi vị trí còn lại của cột quay.
Dòng mới
=
dòng cũ tương ứng
−
dòng chính
×
phần tử quay. Lưu ý
rằng sau phép quay thì ở vị trí
s
∆
ta thu được số 0 vì lúc này
s
A
trở thành
véctơ đơn vị cơ sở, nghĩa là ta đã làm mất số âm nhỏ nhất ở dòng cuối của
bảng cũ.
Toàn thể phép biến đổi trên gọi là phép xoay quanh phần tử chính
s
r
z
. Sau
khi thực hiện phép quay ta có một phương án mới và một cơ sở mới. Nếu
chưa đạt yêu cầu, nghĩa là còn
0
k
∆ <
thì ta lại tiếp tục quá trình.
11
2.2. Phng phỏp nún xoay gii bi toỏn QHTT vi min rng
buc l h bt phng trỡnh tuyn tớnh
Chỳng ta ó bit, bt k mt bi toỏn quy hoch tuyn tớnh no cng d
dng a v bi toỏn quy hoch tuyn tớnh vi min rng buc l h bt
phng trỡnh tuyn tớnh sau õy:
{
}
1
( ) , . min
( )
: : , 0, 1, 2, ,
=
=< >=
= < > + =
n
i i
i
n i
L i
f x C x c x
L
x P x R A x b i m
x
R
n
, A
i
l vộct dũng v A
i
R
n
, m
n, A
i
(a
i1
, a
i2
, , a
in
) O(0,,0),
C(c
1
, c
2
, , c
n
), b
i
R
1
, i=1, 2, , m. Hng ca h A
i
(i=1, 2, , m) bng
n, gi thit ny rt bỡnh thng bi min rng buc P
L
ca bi toỏn quy hoch
tuyn tớnh bao gi cng cú rng buc v du ca bin x.
2.2.1. Khỏi nim v nún n hỡnh tuyn tớnh
Xột tp M đợc xác định từ n ràng buộc tuyến tính nào đó của P
L
, cụ thể
là:
M:={x
R
n
: <A
i
, x>+ b
i
0 i
I} (2.1)
Trong đó I:=
{
}
1 2
, , ,
n
i i i
{1, 2, , m}, /I/ = n ( õy /I/ l s o hay l s phn
t ca tp I) và A
i
vi i
I là một h độc lập tuyến tính. Tp M gi l nún n
hỡnh tuyn tớnh ca h rng buc P
L
với đỉnh x
M
là nghiệm (đợc xác định)
tho món hệ sau:
<A
i
, x>+ b
i
= 0, i
I (2.2)
H vộc t A
i
với i
I c gi l c s ca nún M, hay cũn gi l c s
ca nh x
M
. Tp I gi l tp ch s ca c s ca nún M.
2.2.2. Khỏi nim v cnh ca nún n hỡnh
Vi mi i
I, tp hp cỏc im x
R
n
tha món h:
12
<A
r
, x>+ b
r
= 0, ∀r
∈
I\{i} (2.3)
gọi là đường thẳng i của nón M.
Tập các điểm x thoả mãn hệ:
{
}
, 0, \
, 0
r
r
i
i
A x b r I i
A x b
< > + = ∀ ∈
< > + ≤
gọi là cạnh i của nón M.
Với mỗi i (i
∈
I), VÐc t¬
i
M
z
(i
∈
I), x¸c ®Þnh bëi hệ:
, 0, ,
, 1
r i
M
i i
M
A z r I r i
A z
>= ∀ ∈ ≠
< >= −
(2.4)
gọi là véc tơ chỉ phương của cạnh i của nón M.
Đỉnh x
M
của nón M có thể xác định từ (2.2), trong trường hợp biết hệ véc
tơ chỉ phương
i
M
z
(i
∈
I) thì chúng ta có thể sử dụng công thức sau:
.
M i
i M
i I
x b z
∈
=
∑
(2.5)
Định lý 2.1. Nếu x
M
là đỉnh của nón đơn hình M được xác định từ (2.2) và
hệ véc tơ chỉ phương
i
M
z
(i
∈
I) của cạnh i của nón M xác định từ (2.4) thì
chúng ta có thể xác định đỉnh x
M
từ công thức sau:
.
M i
i M
i I
x b z
∈
=
∑
Chứng minh:
Thật vậy, với mỗi i’ (i’
∈
I), chúng ta thay x=
.
i
i M
i I
b z
∈
∑
vào vế trái của (2.2)
ta được:
, ,
, , , ,
, . . 0
i i i i
i M i M
i i i i
i I i I
A b z b b A z b b b
∈ ∈
< > + = < > + = − + =
∑ ∑
(Vì
i
M
z
thoả mãn (2.4))
Mặt khác do hệ A
i’
(
∀
i’
∈
I) là hệ độc lập tuyến tính nên nghiệm của hệ
(2.2) là duy nhất, suy ra ta có công thức (2.5)
Vậy từ định lý 2.1 ta suy ra trong trường hợp biết hệ véctơ chỉ phương
i
M
z
(i
∈
I) thì chúng ta có thể xác định đỉnh x
M
từ công thức sau:
.
M i
i M
i I
x b z
∈
=
∑
13
D thy tp cỏc im x nm trờn cnh i ca nún M u cú th biu din
nh sau:
x = x
M
+
i
.
i
M
z
,
i
0, i
I (2.6)
nh lý 2.2. H vộct ch phng
i
M
z
vi i
I l mt h c lp tuyn
tớnh.
Chng minh: Ta chng minh bng phn chng, gi s ngc li h vộc t
ch phng
i
M
z
vi i
I l mt h ph thuc tuyn tớnh. Khi ú s tn ti mt
trong n vộct ca h c biu din tuyn tớnh qua cỏc vộc t cũn li nh sau:
0
0
( )
.
=
i
i
M i M
i I i i
z z
.
Vy: <
0
i
A
,
0
i
M
z
> = <
0
i
A
,
0
( )
.
i
i M
i I i i
z
> =
0
0
( )
. ,
i
i
i M
i I i i
A z
< >
= 0
iu ny mõu thun vi
0 0
, 1
i i
M
A z
< >=
(t (2.4))
.
Ta ký hiệu:
J
+
(x
M
):= {j
{1, 2, , m}: <A
j
, x
M
>+ b
j
> 0} (2.7)
Rõ ràng khi J
+
(x
M
) =
thì x
M
chính là một điểm chấp nhận của bài toán
(L). Chúng ta giả sử J
+
(x
M
)
. Với mỗi s
J
+
(x
M
), chúng ta ký hiệu nh
sau:
I
s
:= {i
I: < A
s
,
i
M
z
>
0 }
{
}
1 2
: , , ,
n
I i i i
=
(2.8)
I
0
:= {i
I: < A
s
,
i
M
z
> = 0} }
{
}
1 2
: , , ,
n
I i i i
=
(2.9)
Ta thy: I = I
0
s
I
.
Với mỗi i
I
s
thì đờng thẳng x=x
M
+.
i
M
z
sẽ giao vi siêu phẳng
<A
s
, x>+ b
s
=0 tại điểm: x
i
= x
M
+
i
.
i
M
z
. (2.10)
Trong đó:
i
=-
,
,
s M
s
s i
M
A x b
A z
< > +
< >
(2.11)
Ta gọi
s
I
+
:= {i
I
s
:
i
>0} =
{
}
: , 0
s s i
M
i I A z
< ><
={
1 2
, , ,
s s sq
i i i
} (2.12)
v
s
I
:= {i
I
s
:
i
<0}.
Rừ rng
s s
I I I
+
.
14
Định lý 2.3.
( )
M
s J x
+
thỡ
s
I
.
Chng minh: Gi s ngc li
s
I
=
thỡ d dng thy
{
}
0
1 2
: , , ,
n
I I i i i
= =
tc l ta cú
, 0,
s i
A z i I
< >=
, m theo nh lý 2.2 thỡ h
( )
i
M
z i I
l mt h n
vộc t c lp tuyn tớnh, suy ra A
s
= O(0,0,,0). iu ny mõu thun vúi gi
thit ca bi toỏn (L) l A
i
(a
i1
, a
i2
, , a
in
) O(0,,0) ,
{
}
1,2, ,
i m
=
.
Định lý 2.4.
s
I
+
=
thỡ tp phng ỏn ca bi toỏn (L) l rng.
Chứng minh. (xem [5]).
Định lý này cho ta kết luận rằng , nếu bi toỏn (L) có ít nhất một điểm chấp
nhận đợc thì
s
I
+
là một tập khác rỗng.
2.2.3. Khỏi nim nún xoay M(r,s) sinh ra t nún M
Gi s M l mt nún n hỡnh tuyn tớnh ca h rng buc P
L
xỏc nh bi
(2.1) v J
+
(x
M
)ỉ, khi ú vi mi r
s
I
, tập hợp các điểm x thoả mn hệ bất
đẳng thức:
, 0, ,
, 0
i
i
s
s
A x b i I i r
A x b
< > +
< > +
(2.13)
xác định một nón n hỡnh tuyn tớnh mi gi l nún xoay M(r,s), đỉnh là:
x
M(r,s)
=x
r
= x
M
+
r
.
r
M
z
(2.14)
trong đó
r
xác định từ (2.11).
Đỉnh x
r
thoả mn: <A
i
, x
r
>+ b
i
= 0 i
I(r,s) = (I
{s}\{r}).
Tập chỉ số cơ sở mới I(r,s) nhận đợc từ tập chỉ số cơ sở cũ I bằng cách loại
chỉ số r ra khỏi tập cơ sở cũ, đa chỉ số s vào thay. Ta núi nún xoay M(r,s)
sinh ra t nún M.
15
B 2.1. H A
i
vi i
I(r,s) l mt h c lp tuyn tớnh.
Chng minh. Tht vy, nu ngc li h A
i
vi i
I(r,s) l ph thuc tuyn
tớnh thỡ d dng suy ra tn ti biu din:
A
s
=
\{ }
i I r
i
A
i
=> < A
s
,
r
M
z
>=<
\{ }
i I r
i
A
i
,
r
M
z
>=
\{ }
i I r
i
<A
i
,
r
M
z
>=0
iu ny mõu thun vi <A
s
,
r
M
z
>
0 (vỡ r
s
I
).
B ny cho ta thy nún xoay M(r,s) vn l mt nún n hỡnh.
Các véctơ chỉ phơng
( , )
i
M r s
z
, i
I(r,s) của nón xoay mi M(r,s) đợc xác
định từ (2.4) với tập chỉ số c s mới I(r,s), hoc xác định t mt trong cỏc
công thức đơn giản di õy theo cỏc x
i
, x
r
,
i
M
z
,
r
M
z
(xỏc inh t (2.4), (2.10)
v (2.11)) vi i, r thuc I l tp ch s ca c s c:
0
r
( , )
,
, (2.15)
,
1
.
,
< >
=
< >
=
< >
i
M
s i
i i s
M
M r s M M
s r
M
r
M
s r
M
z khi i I
A z
z z z khi i I i r
A z
z khi i s
A z
Cỏc cụng thc ny gi l cỏc cụng thc i c s, b di õy chng
minh cỏc cụng thc trờn.
B 2.2: Gi s M l nún xỏc nh bi: M:={x
R
n
: <A
i
, x>+ b
i
0 i
I } vi cỏc vộc t ch phng
i
M
z
ca cỏc cnh
xỏc nh theo (2.4), cỏc giao
im x
i
xỏc nh theo (2.10), (2.11). Khi ú nún xoay M(r,s) cú nh l
x
M(r,s)
=x
r
xỏc nh t (2.14) vi c s tng ng l I(r,s) = (I
{s}\{r}) v cỏc
vộc t ch phng ca cỏc cnh tng ng l
( , )
i
M r s
z
c xỏc nh bi (2.15).
16
Chứng minh:
Ta có với mỗi i
∈
I thì:
< A
j
,
i
M
z
> = 0 ∀j
∈
I, j
≠
i (2.16)
< A
i
,
i
M
z
> = - 1 (2.17)
Ta cần phải chứng minh với mỗi i
∈
I(r,s) thì:
< A
j
,
( , )
i
M r s
z
>= 0, ∀j
∈
I(r,s), j
≠
i
< A
i
,
( , )
i
M r s
z
>=-1
Thật vậy:
1) Với mỗi i
∈
I(r,s) mà i
∈
I
s
, i
≠
r và chý ý tới (2.16), (2.17) ta có:
< A
j
,
( , )
i
M r s
z
>=< A
j
,
r
i
r
M M
i
z z
α
α
−
)
>=< A
j
,
i
M
z
>
. ,
j r
r
M
i
A z
α
α
− < >
= 0
Vậy < A
j
,
( , )
i
M r s
z
>=0 ∀ j
∈
I(r,s), j
≠
i
Còn <A
i
,
( , )
i
M r s
z
>=< A
i
,
( , )
i
M r s
z
> = < A
i
,
r
i
r
M M
i
z z
α
α
−
)
> =
=<A
i
,
i
M
z
>
. ,
i r
r
M
i
A z
α
α
− < >
=< A
i
,
i
M
z
> = -1
Tóm lại ta có: Với mỗi i
∈
I
s
, i
≠
r
< A
j
,
( , )
i
M r s
z
>= 0, ∀j
∈
I(r,s), j
≠
i
< A
i
,
( , )
i
M r s
z
>=-1
(chú ý α
i
≠ 0, vì i є I
s
).
3) Với i=s ta ch
ứ
ng minh như sau:
Ta có:
<A
j
,
( , )
s
M r s
z
>=<A
j
,-
1
,
s r
M
A z
< >
.z
r
M
>=-
1
,
s r
M
A z
< >
.<A
j
, z
r
M
>=0, ∀j
∈
I(r,s), j
≠
s
Còn <A
s
, z
s
M(r,s)
> = <A
s
,-
1
,
s r
M
A z
< >
.z
r
M
>= -
1
,
s r
M
A z
< >
.
<A
s
, z
r
M
>=-1.
4) Với mỗi i
∈
I(r,s) mà i
∈
I
0
và chý ý tới (2.16),(2.17) ta có:
< A
j
,
( , )
i
M r s
z
>=< A
j
,
i
M
z
>=0, ∀j
∈
I(r,s), j
≠
i
Còn < A
i
,
( , )
i
M r s
z
>=< A
i
,
i
M
z
>=-1,
Tóm lại ta có: với mỗi i
∈
I(r,s) thì:
< A
j
,
( , )
i
M r s
z
>= 0, ∀j
∈
I(r,s), j
≠
i
17
< A
i
,
( , )
i
M r s
z
>=-1
B ó c chng minh.
Sau õy chỳng ta a ra khỏi nim th no l mt nún cc tiu ca hm
f(x) = <C,x>
2.2.4. Định nghĩa Nún cc tiu (Nún-min)
Nón đơn hình tuyến tính M với đỉnh là x
M
đợc gọi là nún cc tiu (nún
min) của hm f(x)=<C,x> ca bi toỏn (L) nếu f(x
M
)
f(x) ,
x
M.
Ta nói M là một nón - min của bài toán (L) khi M l mt nún min ca
hm mc tiờu f ca bi toỏn (L).
Gi s M l mt nún n hỡnh xỏc nh t h (2.1) nh l x
M
, với véc tơ
ch phng ca cnh i l
i
M
z
(i
I), xác định bởi (2.4), ta cú nh lý sau.
nh lý 2.7. M l mt nún - min ca hm f(x)=<C,x> khi v ch khi:
<C,
i
M
z
> 0,
i
I.
Giả sử M là một nún - min ca hm mc tiờu f(x)=<C,x> ca bi toỏn (L).
Gọi
V
s
:= {v
s
I
+
: f(x
v
) =
min
s
i I
+
{f(x
i
)}} (2.18)
Vy V
s
= {v
s
I
+
: <C,x
v
> =
min
s
i I
+
{<C,x
i
>}}
Thay x
v
v x
i
xỏc nh t cụng thc (2.10) vo trờn ta cú:
V
s
:= {v
s
I
+
: <C,x
v
> =
min
s
i I
+
{<C,x
i
>}}=
={
: , . min{ , . }
s
s M v M i
v M i M
i I
v I C x z C x z
+
+
< + >= < + >
}=
={
: . , min{ . , }
s
s v i
v M i M
i I
v I C z C z
+
+
< >= < >
}=
={
, ,
: ( , ). min{ ( , ). }
, ,
s
v i
s s M s M
M M
s s
s v s i
i I
M M
C z C z
v I A x b A x b
A z A z
+
+
< > < >
< > + = < > +
< > < >
}=
{
, ,
: min{ }
, ,
s
v i
s
M M
s v s i
i I
M M
C z C z
v I
A z A z
+
+
< > < >
=
< > < >
}
Vy V
s
:={
, ,
: min{ }
, ,
s
v i
s
M M
s v s i
i I
M M
C z C z
v I
A z A z
+
+
< > < >
=
< > < >
} (2.19)
18
nh lý 2.8. Vi mỗi r
V
s
xỏc nh t (2.19), nu M l mt nún cc tiu
(nún min) ca hm mc tiờu ca bi toỏn (L) thỡ nón M(r,s) xỏc nh t
(2.13) cng là một nún cc tiu (nún min) ca hm mc tiờu bài toán (L).
Chứng minh. (xem [5]).
nh
( , )
M r s
x
ca nún xoay M(r,s) cũn cú th xỏc nh cụng thc sau õy khi
bit cỏc vộct ch phng cỏc cnh ca nún xoay M(r,s):
( , )
( , )
( , )
.
M r s i
i M r s
i I r s
x b z
=
(2.20)
Dới đây chúng ta sẽ xõy dng thut toỏn nún xoay giải bài toán (L) dựa
vo cơ sở lý thuyt trỡnh by cỏc phn trờn và định lý 2.8.
2.3. Phng phỏp nún xoay tuyn tớnh
Mt bin th ca phng phỏp nún - min gii bi toỏn qui hoch gn li-
gn lừm ngh trong cun sỏch Quy hoch gn li - gn lừm ng dng vo
quy hoch tuyn tớnh (NXB Khoa hc v k thut nm 2011) ([1]) trỡnh by
di õy s cho chỳng ta mt phng phỏp gii trc tip bi toỏn quy hoch
tuyn tớnh vi min rng buc l h bt phng trỡnh tuyn tớnh vi c s xut
phỏt t nh mt nún - min ca hm mc tiờu gi l phng phỏp nún xoay
tuyn tớnh c th hin di dng thut toỏn chi tit.
Xột bi toỏn (L) trong trng hp bit mt nún min ca bi toỏn (L).
í tng ca thut toỏn nún xoay tuyn tớnh gii bi toỏn (L) nh sau:
Xut phỏp t mt nún - min M ban u ca hm mc tiờu bi toỏn, chỳng
ta kim tra xem nh ca nú cú thuc min chp nhn ca bi toỏn khụng (tc
l nh ny cú tho món tt c cỏc rng buc khụng) nu nh ny thuc min
chp nhn thỡ nú l mt li gii ca bi toỏn (L). Ngc li ta xõy dng nún
xoay mi M(r,s) (vn l nún - min) t nún c M ca bi toỏn (L) v lp li quỏ
trỡnh kim tra nún xoay mi ny tng t nh i vi nún M, quỏ trỡnh ny
c thc hin cho n khi nh ca nún xoay mi M(r,s) thuc min chp
19
nhn ca bi toỏn (L) (khi min rng buc ca bi toỏn (L) cú phng ỏn)
hoc s phỏt hin ra min rng buc ca bi toỏn (L) l rng.
2.3.1. Thut toỏn nún xoay tuyn tớnh.
Bớc chuẩn bị (bc 0). Gi s ta ó bit M
0
là nón - min của bài toán
(L) vi tp ch s c s l I
0
:={
0 0 0
1 2
, , ,
n
i i i
}, x
0
=
0
M
x
là đỉnh của M
0
và các véctơ
chỉ phơng ca cỏc cnh i ca nún M
0
l
0
i
z
=
0
i
M
z
(i
I
0
).
Bớc k ( k=0, 1, 2, ). Giả sử M
k
là nún cc tiu (nún min) của bài toán
(L) (đ đợc xây dựng), vi tập chỉ số c s, đỉnh và các véctơ chỉ phơng ca
cỏc cnh ca nún M
k
tơng ứng là I
k
:=
{
}
1 2
, , ,
k k k
n
i i i
; x
k
=
k
M
x
và
i
k
z
=
k
i
M
z
.
Xác định tập J
+
(x
k
) theo (2.9):
{
}
{
}
( ) : 1,2, , : , 0
k j k
j
J x j m A x b
+
= < > + >
1. Nếu J
+
(x
k
) =
thì dừng lại. x
k
chính là một lời giải của bài toán (L),
2. Nếu J
+
(x
k
)
, ta chn ch s a vo c s theo mt trong hai cỏch
sau:
Ta chn s
k
l mt ch sụ tu ý thuc J
+
(x
k
) hoc ta chn
s
k
=min{j:j
J
+
(x
k
)} (gi l qui tc chn min) (2.21)
hoc s
k
= max{j: j
J
+
(x
k
) (gi l qui tc chn max)
và xác định:
{
}
: : , 0
k k
s s
i
k k
I i I A z
= < >
;
{
}
{
}
1 2
: : , 0 , , ,
k k k
k k k k
s s s
k ki k
k s s s q
I i I A z i i i
+
= < >< =
, (2.22)
2.1. Nếu
k
s
I
+
=
thì dừng lại, suy ra bài toán (L) không có phơng án.
2.2. Nếu
k
s
I
+
:
Gọi
k
s
V
:={
, ,
: min{ }
, ,
k
s
k k
k
v i
s
k k
s s
v i
i I
k k
C z C z
v I
A z A z
+
+
< > < >
=
< > < >
}
(2.23)
và chn ch s a ra khi c s theo mt trong hai cỏch sau:
Ta chn r
k
l ch s tu ý thuc
k
s
V
.
hoc ta chn
r
k
= min{v: v
k
s
V
} hoc r
k
= max{v: v
k
s
V
} (2.24)
(cỏch chn ch s ny gi l qui tc chn min (hoc l qui tc chn max)).
20
Và ta xây dựng nún xoay M
k+1
= M
k
(r
k
, s
k
) sinh ra t nún-min M
k
(xem
mc 2.2.3), tp ch s c s l I
k+1
= I
k
(r
k
, s
k
) = (I
k
{s
k
}) \ {r
k
}; và các véc tơ
chỉ phơng
1
i
k
z
+
(sử dụng (2.15)):
0
1
,
( . ) ,
,
1
.
,
+
< >
=
< >
=
< >
k
k k
k k
k
k k
i
k k
s
i
r s
i i
k
k k k k k
s r
k
r
k k
s r
k
z khi i I
A z
z z z khi i I i r
A z
z khi i s
A z
(2.25)
Từ (2.5) v (2.14): x
k+1
=x
k
M
(
k
r
,
k
s
)
=
k
r
k
x
=x
k
+
.
k
k
r
k
r k
z
=
= x
k
-
,
.
,
k k
k
k k
s
s
s r
k
A x b
A z
< > +
< >
k
r
k
z
=
1
1
.
k
i
i k
i I
b z
+
+
(2.26)
Quay tr li bc k vi k k+1
Mt s chú ý:
1) Từ định lý 2.8 ta d dng cú b 2.3 di õy v do ú dễ thấy nón
xoay M
k+1
đợc xây dựng (trong thut toỏn) sinh ra t nún-min M
k
vẫn là một
nón - min của bài toán (L).
2) Sự lựa chọn ch s a vo
s
k
= min{j: j
J
+
(x
k
)} v ch s a ra r
k
=
min{v: v
s
k
V
} sẽ làm cho thuận toán đề nghị trên kết thúc sau một số hữu
hạn bớc lặp (không xảy ra xoay vòng). Điều này đợc chng minh bởi định
lý 2.9 di õy.
3) Cụng thc (2.25) gi l cụng thc xoay c s v phn t
,
k k
s r
k
A z
< >
c gi l phn t xoay, nú l trung tõm i cỏc vộc t ch phng
i
k
z
ca
h c s c sang h c s mi
1
i
k
z
+
theo cụng thc xoay (2.25).
4) cho gn chỳng ta t
, ( ), 1,2, ,
i k i k
i
A x b A x i m
< > + = =
Da trờn nh lý 2.9, chỳng ta d dng chng minh c b sau:
21
B 2.3. Ti mi bc lp k, khi gii bi toỏn (L) theo thut toỏn nún
xoay tuyn tớnh vi qui tc chn ch s a vo c s v a ra khi c s l
(2.21), (2.22) v (2.23) thỡ nún xoay M
k+1
c xõy dng trong thut toỏn vn
l mt nún min ca hm mc tiờu v ta cú:
1
( ) ( ), 1,2,
k k
f x f x k
+
=
Sự lựa chọn s
k
= min{j: j
J
+
(x
k
)} v r
k
(s
k
)= min{v: v
k
s
V
}( hoc s
k
=
max{j: j
J
+
(x
k
)} v r
k
(s
k
) = max{v: v
k
s
V
}) sẽ làm cho thuận toán đề nghị
trên kết thúc sau một số hữu hạn bớc lặp (không xảy ra xoay vòng). Điều này
đợc chứng minh bởi định lý sau.
Định lý 2.9. Gii bi toỏn (L) theo thuật toán nún xoay vi ch s chn
a vo c s l s
k
= min{j: j
J
+
(x
k
)} (hoc s
k
= max{j: j
J
+
(x
k
)}) v ch
s chn a ra khi c s tng ng l r
k
(s
k
)= min{v: v
k
s
V
} (hoc tng
ng l r
k
(s
k
)= max{v: v
k
s
V
}) s kết thúc sau một số hữu hạn bớc lặp và
cho ta lời giải của bài toán (L), hoặc phát hiện ra miền ràng buộc P
L
của bài
toán (L) là rỗng.
Chng minh nh lý ny cú th tỡm thy trong [5].
Nm 1977 RG. Bland ó xut qui tc trỏnh xoay vũng tng t nh
trờn cho vic gii bi toỏn qui hoch tuyn tớnh dng chớnh tc.
2.3.2. Bng lp gii bi toỏn qui hoch tuyn tớnh bi thut toỏn nún xoay
tuyn tớnh v vớ d minh ho
d tớnh toỏn, trong mi bc lp k ta thit lp bng di õy gi l
bng nún xoay thu gn gii bi toỏn quy hoch tuyn tớnh dng chun khi bit
mt nún min ca hm mc tiờu ca bi toỏn:
22
Bảng lặp nón xoay thu gọn:
Bảng A
Chỉ số cơ sở
b
j
1
c
2
c
…
j
c
…
n
c
<A
i
,
0
x
>+b
i
<A
i
,
k
x
>+b
i
k=1,2,…
1
2
…
(
k
s
)
…
m
b
1
b
2
…
k
s
b
…
…
m
b
11
a
12
a
…
1
j
a
…
1
n
a
21
a
22
a
…
2
j
a
…
2
n
a
… …. ….
1
k
s
a
2
k
s
a
…
k
s j
a
…
k
s n
a
… … …
1
m
a
2
m
a
…
mj
a
mn
a
<A
1
,
0
x
>+b
1
<A
2
,
0
x
>+b
2
……
(<
0
s
A
,
0
x
>+
0
s
b
)
…
<A
m
,
0
x
>+b
m
<A
1
,
k
x
>+b
1
<A
2
,
k
x
>+b
2
……
(
k
s
A
,
k
x
>+
k
s
b
)
<A
m
,
k
x
>+b
m
1
k
i
2
k
i
…
( r
k
=
k k
k
s p
i
)
…
k
n
i
1
k
i
b
2
k
i
b
…
k
r
b
…
k
n
i
b
1
1
k
i
k
z
1
2
k
i
k
z
…
1
k
i
kj
z
…
1
k
i
kn
z
2
1
k
i
k
z
2
2
k
i
k
z
…
2
k
i
kj
z
…
2
k
i
kn
z
… … … …
1
k
r
k
z
2
k
r
k
z
…
k
r
kj
z
…
k
r
kn
z
… … … …
1
k
n
i
k
z
2
k
n
i
k
z
…
k
n
i
kj
z
…
k
n
i
kn
z
1
,
k
k
s i
k
A z
< >
2
,
k
k
s
i
k
A z
< >
…
[
,
k k
s r
k
A z
< >
]
…
,
k
k n
s i
k
A z
< >
-
1
1
,
,
k
s
k
k
s
k k
i
k
i
s
k
C z
A z
< >
< >
…
(-
,
,
k
k k
r
k
s r
k
C z
A z
< >
< >
)
…
-
,
,
k
s q
k k
k
s q
k k k
i
k
i
s
k
C z
A z
< >
< >
Bước
k=0,1,2,…
x
k
1
k
x
2
k
x
…
k
j
x
…
k
n
x
Bảng lặp nón xoay thu gọn A gồm 2 phần (xem bảng A): Các số liệu ban
đầu được đưa vào bảng và các số liệu cần tính toán theo các công thức trong
thuật toán nón xoay được xây dựng thứ tự theo các bước từ trên xuống dưới
và từ trái sang phải như sau:
Bước k (k=0, 1, 2, …):
Phần thứ nhất của bảng là khai báo số liệu của bước chuẩn bị:
Đưa vào các số liệu ban đầu của bài toán nằm trong các cột bao gồm có
cột chỉ số cơ sở 1, 2, …, m, cột số liệu các giá trị b
i
(i=1, 2, …, m), dòng đầu
tiên trên cùng của phần này là các hệ số của hàm mục tiêu, và ma trận hệ số
các ràng buộc A cụ thể là:
23
- Dòng đầu tiên của bảng là dòng các toạ độ c
j
của véc tơ C của hàm mục
tiêu.
- Cột đầu tiên thứ nhất là cột chỉ số của các véc tơ dòng A
i
của ma trận
ràng buộc A của bài toán (L) từ 1 đến m.
- Cột thứ hai là cột các giá trị
( 1,2, , )
i
b i m
=
của véc tơ cột B của ma trận
ràng buộc.
-Tiếp theo bên phải cột thứ hai là bảng của ma trận hệ số gồm các giá trị
của ràng buộc A: a
ij
(i=1,2,…,m; j =1,2,…,n).
Phần thứ hai của bảng liền với phần thứ nhất là số liệu tính toán các
giá trị của hệ véc tơ chỉ phương
,
i
k k
z i I
∀ ∈
và các toạ độ của đỉnh x
k
:
Tại bước k (k = 0, 1, 2, …) bảng gồm các cột và ma trận của giá trị các
véc tơ chỉ phương
( )
i
k k
z i I
∀ ∈
cụ thể như sau:
- Cột thứ nhất là cột chỉ số cơ sở i
∈
I
k
.
- Cột thứ hai là cột giá trị b
i
với
k
i I
∈
.
- Tiếp theo bên phải cột thứ hai là bảng ma trận các véc tơ chỉ phương
( )
i
k k
z i I
∀ ∈
. Dòng cuối cùng là các giá trị toạ độ của
x
k
là đỉnh của nón-min
M
k
đã biết ở bước
k
.
Đến đây ta có bảng nón xoay tại bước
k
(
k = 0, 1, 2, ….
) đã xây dựng
xong.
Bây giờ ta chuyển sang kiểm tra tiêu chuẩn tối ưu và xây dựng bảng nón
xoay mới ở bước tiếp theo
k+1
nếu
x
k
chưa phải là phương án tối ưu.
Từ dòng cuối cùng của phần thứ hai của bảng là dòng các toạ độ của
x
k
,
chúng ta đi tính các giá trị
, ( 0,1,2, , )
i k
i
A x b i m
< > + =
và xây dựng tiếp các cột
chứa các giá trị này ở bên phải ma trận ràng buộc A trong phần thứ nhất của
bảng.