Tải bản đầy đủ

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

ĐẠ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:


5
n

f ( x) =< C, x >= ∑ ci .xi →
max

(1.1)

i =1
n

∑a

ij

.x j (≤, =, ≥)bi , i = 1, 2,..., m

j =1

x j ≥ 0, j = 1, 2, ..., n.

(1.2)
(1.3)

Nếu gặp bài toán Min, tức là:
n

f ( x) = ∑ c j x j → min
j =1

x ∈
D
Thì giữ nguyên ràng buộc và đưa về bài toán Max bằng cách:
n

f ( x) = −∑ c j x j → max
j =1

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à f min = − f max .
Thật vậy, vì x* là phương án tối ưu của bài toán Max nên ta có:



n

f max
Hay

= − ∑ c j x* j ≥
j =1

n

n

∑c
j =1

n

c j x* j

j =1


∑c
j =1

j

j

x , ∀x ∈ D

j

x , ∀x ∈ D

j

Chứng tỏ x* là phương án tối ưu của bài toán Min và
n

f min = ∑ c j x* j = − f max .
j =1

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:
n

∑c

xj →
max
j

j =1
n

∑a

ij

x j ≤ bi , i = 1, ..., m

j =1

x j ≥ 0, j = 1,..., n
• Dạng chính tắc:

n

∑c
j =1
n

∑a
j =1

ij

j

x j → max

x j = b j , i = 1,..., m

x j ≥ 0, j = 1,..., 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



n

∑a

≥ bi

ij

j =1

Có thể đưa về ràng buộc:
n

−∑ aij x j ≤ −b
i ,
j =1
bằng cách nhân hai vế với (-1) và viết lại
n

∑a
j =1

'
ij

x j ≤ bi' .

2. Một ràng buộc đẳng thức
n

∑a
j =1

ij

x j = bi

Có thể thay bằng hai ràng buộc bất đẳng thức:
n

∑a
j =1

n

ij

x j ≤ bi ; −∑ aij ≤ −bi .
xj

j =1

3. Một biến x j 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:

x j = x+ − x −
j

+

với x j ≥ 0, x ≥ 0 .

j

j

4. Một ràng buộc bất đẳng thức
n

∑a
j =1

ij

x j ≤ bi

Có thể đưa về ràng buộc đẳng thức bằng cách đưa vào biến phụ yi ≥ 0 :
n

∑a

ij

j =1

x j + yi = bi .

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.


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:


< c, x >→ max
Ax = b

x≥0

(1.4)
(1.5)
(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ó Aj , j ∈ J
Xác định các số z jk bởi hệ phương trình:

∑z

jk

Aj =

Ak j∈J

(1.7)

Đối với mỗi k ∉ J , tính các ước lượng:
∆ k = ∑ z jk c j −
ck j∈J

Còn với j ≠ 0 thì ∆ j = 0 .

(1.8)


Tính giá trị hàm mục tiêu

Z0 = ∑ c j x j
.
j∈J

Bước 2: Kiểm tra tối ưu


Nếu ∆ k ≥ 0, k ∉ thì x là phương án tối ưu, dừng thuật toán. Trái lại,
J
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 ∉ sao cho ∆ k < 0 và z jk ≤ 0, j ∈ thì bài toán
J
J
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 ∆ k < 0 đều tồn tại j ∈ J : z jk > 0
.

Khi đó chọn chỉ số s theo tiêu chuẩn:
∆ s = min {∆ k / ∆ k < 0}

(1.9)

Đưa véctơ As vào cơ sở.
Bước 4: Tìm véctơ loại khỏi cơ sở. Xác định
x j

θr = min  / zj > 0  = x r
 zrs k
 zrs
Và đưa véctơ Ar ra khỏi cơ sở.

(1.10)

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à

{A , j ∈ 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:
'  x − ( xr / zrs )z js , nÕu j ≠ s
xj =  j
x r / zrs ,
nÕu j = s


(1.11)

Khai triển của các véctơ Ak 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.


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ố z jk ta có:

As = ∑ z js
Aj j∈J

, từ đẳng thức này qua các phép biến đổi (xem [6]) ta có

công thức sau:

z − (zrk / zrs )zjs , nÕu j ≠ r
z'j =  jk
zrk / zrs ,
k
nÕu j = r


(1.12)

'

Sau khi có zj ta tính:
k

'

∆ k = ∑ zjk' cj − ck
j∈J

(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à ∆ k ≥ 0, ∀k , khi đó x là phương án tối ưu.

cj

Cơ sở

Phương
án

c1

A1

x1







cj

Aj

xj







cr

Ar

xr







cm

Am

c1 …



cr



cm

A … Aj



Ar



Am …

1

… 0



0



0

… 1



0

cj

… ck



cs



Ak



As

… An

0

… z1k



z1s

… z1n



0



z jk

… z js

… z jn

cn

0 …

0



1



0



zrk

… zrs

… zrn

xm

0 …

0



0



1



zmk

… zms

… zmn

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.


11

Nếu trái lại thì chọn cột s sao cho ∆ s = min {∆ k / ∆ k < 0} , 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:
x
x
θ0 = r = min  j / z js > 0  .
zrs
z js
Cột s gọi là cột quay, véctơ A được đưa vào cơ sở. Dòng r gọi là dòng
s
quay. Véctơ Ar bị đưa ra khỏi cơ sở.
Phần tử zrs > 0 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ử z js , 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 cr , A trong dòng quay
r

bằng cs , As . 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
zrs 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 As 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 zrs . 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 ∆ k < 0 thì ta lại tiếp tục quá trình.


2.2. Phương pháp nón xoay giải bài toán QHTT với miền ràng
buộc là hệ bất phương trình tuyến tính
Chúng ta đã biết, bất kỳ một bài toán quy hoạch tuyến tính nào cũng dễ
dàng đưa về 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 sau đây:


n

f ( x) =< C, x >=
ic i min
.x
i =1
(L)
x P := x R n : < Ai , x > 0, i = 1, 2, ..., m
}
L +b
i

xRn, Ai l vộct dũng v AiRn, m n, Ai i1, ai2, ..., ain) O(0,,0),
(a
i

{

C(c1, c2, , cn), bi R1 , i=1, 2, ..., m. Hng ca h (i=1, 2, , m) bng
A
n, gi thit ny rt bỡnh thng bi min rng buc PL 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 PL , cụ thể
là:
M:={x Rn : + bi 0 i I}

(2.1)

Trong đó I:= {i1 , i2 , ..., in } {1, 2, ..., m}, /I/ = n ( õy /I/ l s o hay l s
phn t ca tp I) và Ai 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 PL với đỉnh xM là nghiệm (đợc
xác định)
tho món hệ sau:
+ bi = 0, i I

(2.2)

H vộc t Ai với i I c gi l c s ca nún M, hay cũn gi l c s
M

ca nh x . 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 Rn tha món h:



+ br = 0, ∀r∈ I\{i}
gọi là đường thẳng i của nón M.

(2.3)

Tập các điểm x thoả mãn hệ:
r
+b
< A , x > r = 0, ∀r ∈ I \ {i}
gọi là cạnh i của nón M.
 i
< A , x > +bi ≤ 0
Với mỗi i (i∈ I), VÐc t¬ zM (i∈ I), x¸c ®Þnh bëi hệ:
i

Ar , z iM >= 0, ∀r ∈ I , r ≠ i
 i i
< A , z M >= −1

(2.4)

gọi là véc tơ chỉ phương của cạnh i của nón M.
M

Đỉnh x 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 zMi (i∈ I) thì chúng ta có thể sử dụng công thức sau:
M

x = ∑ b .zi
i M

(2.5)

i∈
I

M

Định lý 2.1. Nếu x 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 zMi (i∈ I) của cạnh i của nón M xác định từ (2.4) thì
M

chúng ta có thể xác định đỉnh x từ công thức sau:
x = ∑ bi .z M
i

M

i∈
I

Chứng minh:

Thật vậy, với mỗi i’ (i’∈ I), chúng ta thay
x=

i
M

∑ b .z
i

vào vế trái của (2.2)

i∈
I

ta được:
,

,

i
< A , ∑ bi .ziM > +b i, =∑ bi < Ai . zMi > +bi, = −bi, + bi, = 0
i∈I

i∈I

(Vì z thoả mãn (2.4))
i’
Mặt khác do hệ A (∀ i’∈ I) là hệ độc lập tuyến tính nên nghiệm của hệ
i
M

(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 zMi
M

(i∈ I) thì chúng ta có thể xác định đỉnh x từ công thức sau:
x

M

= ∑ bi .ziM
i∈
I


Dễ thấy tập các điểm x nằm trên cạnh i của nón M đều có thể biểu diễn
như sau:


x = xM + i . zMi , i 0, i I

(2.6)

nh lý 2.2. H vộct ch phng zMi 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 zMi 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:
i

zM0 =



i

i .zM

.

iI (i i0 )

Vy: < Aii , ziM > = < A ,
0

0

0



iI (i i0 )

i .ziM > =

iu ny mõu thun vi < A , z
i0



i . < Aii ,

>= 0

0

iI (i i0
)

zM

i0

M

>= 1 (t (2.4))

.

Ta ký hiệu:
J+(xM):= {j {1, 2, ..., m}: + j > 0}
(2.7)
b
Rõ ràng khi J+(xM) = thì xM chính là một điểm chấp nhận của bài toán
(L). Chúng ta giả sử J+(xM) . Với mỗi s J+(xM), chúng ta ký hiệu
nh
sau:
Isi := {i I: < As, > 0 } I := {i , i ,..., i
z

M

I0i := {i I: < As,
z

1

2

(2.8)

n

> = 0} } I := {i , i ,..., i
M

0

}

}

1

2

(2.9)

n

Ta thy: I = I I s .
Với mỗi i Is thì đờng thẳng x=xM+.
z

i

M

sẽ giao vi siêu phẳng

+ bs=0 tại điểm: xi = xM + i. zMi .

i =- < A

Trong đó:

s

,x
s

M

(2.10)

> +b s

(2.11)

i
M

< A ,z >

Ta gọi
s
s
s
s
I i := {i I : >0} = {i I :< A , >< 0} ={ i , , ..., i } (2.12)
z+

i

M

s

v I := {i I : i <0}.
s
s
Rừ rng I + I I .
s


i

s1

s2

sq


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay

×