1. Trang chủ
  2. » Giáo Dục - Đào Tạo

QUY HOẠCH RỜI RẠC - CHƯƠNG 6 ppt

16 364 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 16
Dung lượng 479,88 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Trong các phương pháp giải bài toán qui hoạch nguyên, phương pháp nhánh cận là một trong các phương pháp có hiệu quả.. Phương pháp nhánh cận được Land A.H và Doig A.G xây dựng năm 1960 g

Trang 1

Bùi Thế Tâm VI.1 Quy hoạch rời rạc

Chương 6

THUẬT TOÁN NHÁNH CẬN

1 TƯ TƯỞNG CỦA THUẬT TOÁN NHÁNH CẬN

1.1 Trong các phương pháp giải bài toán qui hoạch nguyên, phương pháp nhánh cận là một trong các phương pháp có hiệu quả Phương pháp nhánh cận được Land A.H

và Doig A.G xây dựng năm 1960 giải bài toán qui hoạch nguyên (trình bày Tiết 2), đến

1963 được Little J.D, Murty K.G, Sweeney D.W và Karen C sử dụng thành công giải bài toán người du lịch (trình bày trong Tiết 3) Năm 1979 Giáo sư Hoàng Tụy đã ứng dụng thành công phương pháp này vào giải bài toán qui hoạch lõm Đây là thuật toán ứng dụng rộng rãi để giải các bài toán tối ưu khó

Xét bài toán qui hoạch rời rạc

minZ = f X( ), (1)

XG ( G là tập hữu hạn ) (2)

1.2 Tư tưởng của phương pháp nhánh cận gồm các phép xây dựng sau cho phép giảm bớt khối lượng lựa chọn

1 Tính cận dưới Tìm cận dưới của hàm mục tiêu f x( ) trên tập các phương án

G (hoặc trên tập con G′ nào đó của G ) tức là số ζ ( )G hay ζ( )G′ sao cho:

f x( )≥ζ ( )G với x G∀ ∈ ( hay f x( )≥ζ ( )G với x G′∀ ∈ )

2 Chia thành các tập con (rẽ nhánh ) Chia dần dần tập phương án G thành

cây các tập con (các nhánh) Việc chia nhánh thực hiện theo sơ đồ nhiều bước sau:

Bước 0 Đặt G0≡ Bằng một cách nào đó G G0 được chia thành một số hữu hạn các tập con ( thường là không giao nhau) G G11, 12, ,G1r1

Bước k ≥ Có tập 1 G G1k, 2k, ,G r k k cần chia nhánh Ta chọn tập Gϑk( )k theo một qui tắc nào đó và chia thành một số hữu hạn các tập con :Gϑk( )k ,1,Gϑk( )k ,2, ,Gϑk( )k s k, ( ), gồm có s k( ) tập Khi đó, tập cần chia nhánh tiếp theo là

G G1k, 2k, ,Gϑk k−1,Gϑk k+1, ,G r k k, Gϑk( )k,1,Gϑk( )k,2, ,Gϑk( ) ( )k s k,

Ta đánh số lại là G1k+1,G2k+1, ,G r k k++11

3 Tính lại đánh giá

X G f X X G f X

Vì vậy khi chia tập G′ thành G G1′ , 2′ , ,G s′ sao cho

1

i

=

=∪ thì cận của bất

kì tập G′ đều có i ζ ( )G i′ ≥ζ ( ) (G′ , i=1, ,s) Trong các tình huống cụ thể ta thường nhận được các đánh giá tốt , tức là đối với một i nào đó ζ ( )G i′ ζ ( )G

Trang 2

Bùi Thế Tâm VI.2 Quy hoạch rời rạc

4 Tính phương án

Đối với các bài toán cụ thể có thể chỉ ra các phương pháp khác nhau để tìm ra các phương án trong các tập con được chia liên tiếp Phương pháp này dựa trên đặc thù của mỗi bài toán cụ thể Nhờ phương án mới tìm được ở mỗi bước ta có thể cải tiến cận trên (ban đầu gán cho cận trên giá trị là +∞ ) bằng cách gán cho cận trên giá trị hàm mục tiêu tốt nhất tại thời điểm đó

5 Tiêu chuẩn tối ưu Giả sử

1

s i i

=

=∪ và phương án X G∈ ϑ thỏa mãn điều kiện: f X( )=ζ ( )Gϑ ≤ζ ( )G i , ∀ =i 1, ,s thì X là phương án tối ưu của bài toán (1)-(2) Qui tắc này được ứng dụng ở giai đoạn chia nhánh

6 Đánh giá độ chính xác của lời giải xấp xỉ Giả sử

( )

1, , 1

s

i s i

=

=

Nếu X là một phương án của bài toán xuất phát thì min ( ) ( )

x G f X f X

ζ

( )

f X − đủ nhỏ thì X có thể lấy làm lời giải xấp xỉ với đánh giá độ xấp xỉ là ζ

( )

f X ζ

1.3 Lược đồ tổng quát của phương pháp nhánh cận Chia tập phương án

G thành cây tập con

Bước 0 Tính ζ ( )G =ζ( )G0 Nếu tìm được phương án X sao cho

( ) ( )

f XG thì X là phương án tối ưu Ngược lại, chia G = 0 G11∪G12∪ ∪G1r1, tức là chia thành các tập con (thường là không giao nhau)

Bước k ≥ Tính các đánh giá 1 ζ ( )G i k , i=1, ,r k Nếu tìm được phương án X ,

k

r

X G∈ sao cho f X( )=ζ ( ) ( )G r k ≤ζ G i k , với 1, 2, ,∀ =i r k , thì X là phương án tối ưu, quá trình kết thúc Ngược lại, chọn Gϑk( )k để chia, theo tiêu chuẩn

( )

k

i k

i r

=

= Ta chia tập Gϑk( )k thành một số tập con

Gϑk( )k =Gϑk( )k ,1∪Gϑk( )k ,2∪ ∪Gϑk( ) ( )k s k,

Tập cần chia tiếp theo là

G G1k, 2k, ,Gϑk k−1,Gϑk k+1, ,G r k k , ( ),1, ( ),2, , ( ),

k

Sau đó ta đánh số lại là G1k+1,G2k+1, ,G r k k++11 và sang bước k+1

Trang 3

Bùi Thế Tâm VI.3 Quy hoạch rời rạc

2 PHƯƠNG PHÁP LAND VÀ DOIG GIẢI BÀI TOÁN QUI HOẠCH NGUYÊN

2.1 Xét bài toán qui hoạch nguyên tuyến tính sau:

( )

1

j

=

với các điều kiện ràng buộc

ij

j=1

n

j i i

∑ (quan hệ thứ tựR i∈ ≤ ≥ = ) (4) { , , }

x j nguyên j=1, ,n1 n1≤ n (6) trong đó d là cận trên của biến j x (có thể j d j = +∞ ) Giả thiết tập tất cả các điểm x

thỏa mãn (4)-(5) là bị chặn

Nếu n1= , ta có bài toán qui hoạch nguyên hoàn toàn, còn nếu n n1< thì có bài n

toán qui hoạch nguyên bộ phận Ngoài ra, bài toán tìm max có thể qui về bài toán tìm min bằng cách đổi dấu hàm mục tiêu Có nhiều phương pháp giải bài toán qui hoạch nguyên tuyến tính, trong đó có phương pháp nhánh cận A.H Land và A.G Doig (1960)

là những người đầu tiên áp dụng phương pháp nhánh cận để giải bài toán qui hoạch tuyến tính nguyên

2.2 Nội dung phương pháp

1 Cho tập G0≡ xác định bởi (4) - (6) G

2 Cho các tập Gϑk( )k , 1, , ,ϑ= r kk=1, 2, xác định bởi (4),(6) và ràng buộc

bổ sung:

h j k x j d j k , j 1, ,n

    (7)

3 Tính cận Đối với G ước lượng 0 ( ) ( )0

0

ζ = với X là lời giải của bài 0

toán qui hoạch tuyến tính (3)-(5)

Đối với Gϑk thì ( )k k

Gϑ f X

ζ

ϑ

  

 

 , trong đó

k X

ϑ

 

 

  là lời giải của bài toán qui hoạch tuyến tính (3),(4) và (7)

Nếu ( )Gϑk = ∅ thì ζ ( )Gϑk = +∞

4 Tính phương án Nếu X0 thỏa mãn điều kiện nguyên (6), thì X0 là nghiệm tối ưu của bài toán ban đầu, thuật toán dừng

Trang 4

Bùi Thế Tâm VI.4 Quy hoạch rời rạc

Nếu X k

ϑ

 

 

  thỏa mãn điều kiện nguyên (6) thì nó là phương án tối ưu của bài toán (3), (4), (7), (6) và nó cũng là một phương án của bài toán ban đầu Lấy X k

ϑ

 

 

  để cải tiến cận trên

5 Chia nhánh Cần chia nhánh khi ( )

k X k

ϑ

  không thỏa mãn điều kiện nguyên (6) Giả sử

r

k

k

ϑ

≤ ≤

  là một thành phần không nguyên của phương án này, khi đó tập hợp Gϑk( )k chia thành hai tập hợp Gϑk( )k =Gϑk( )k,1∪Gϑk( )k,2, trong đó

,1

,2

k

k k

k

ϑ ϑ

Chú ý rằng nếu tất cả c j trong (3) là nguyên với j n≤ và 1 c j =0 khi j n≥ thì 1 cận dưới ζ ( )Gϑk có thể dùng đánh giá mạnh hơn ζ′( ) ( )Gϑk =f Xϑk  , ở đây kí hiệu

] [f là số nguyên nhỏ nhất mà lớn hơn hay bằng f

2.3 Giải ví dụ bằng số

Xét bài toán qui hoạch nguyên tuyến tính sau:

min -x1 -x2 (8) 2x1 + 11 x2 ≤ 38

x1 + x2 ≤ 7 (9)

4 x1 - 5x2 ≤ 5

x1, x2 ≥ 0 (10)

x1, x2 nguyên (11)

Bước 0 Giải bài toán (8)-(10), tìm được nghiệm 0 4 , 24 5

=   Cận dưới

( ) ( )G0 f X0 ] [7 7

ζ′ = = − = − Phương án X0 không thỏa mãn điều kiện nguyên (11) Chúng ta chia G0 thành hai tập hợp G0 =G11∪G21, trong đó

{ }

Trang 5

Bùi Thế Tâm VI.5 Quy hoạch rời rạc Bước 1 Giải hai bài toán quy hoạch tuyến tính: cực tiểu (8) trên hai tập hợp G 11

G21 Trong bài toán đầu tiên cực tiểu trên miền G11 đạt tại điểm 4, 2 8

11

( )1

11

G

ζ′ = − = −

1 2

G là trống nên ( )1

2

G

Chọn G11 để chia nhánh ta được:

{ }

G21=G32 = ∅

Bước 2 Giải các bài toán qui hoạch tuyến tính:

1

X    =  ⇒ ζ′ G = − = −

 

2

  3) G12 =G32 = ∅ , ( )2

3

G

Chọn G để chia nhánh : 12

{ }

Đánh số lại G1,12 ≡G G13, 1,22 ≡G G23, 22 =G G33, 32 ≡G43

Bước 3 Giải các bài toán qui hoạch tuyến tính:

1) Tìm cực tiểu (8) trên G được13 ( ) ( )3 ] [

1

3

1

  2) G23= ∅ ( )3

2

G

ζ′

3) Tìm cực tiểu (8) trên G được 33

3

X =X  =  ⇒ ζ′ G = − = −

4) G43=G32 = ∅ ( )3

4

G

ζ′

Trang 6

Bùi Thế Tâm VI.6 Quy hoạch rời rạc

1

X = X =

 

  thỏa mãn điều kịên nguyên (11) Đồng thời

( ) ( ) ( ) ( )

Vậy phương án tối ưu của bài toán ban đầu là X =( )3, 2

Ta có cây phân nhánh sau:

3 PHƯƠNG PHÁP NHÁNH CẬN GIẢI BÀI TOÁN NGƯỜI DU LỊCH

3.1. Phát biểu bài toán Có n thành phố, đánh số từ 1 đến n Xuất phát từ một trong n thành phố này, chẳng hạn thành phố 1, một người du lịch muốn tới thăm n -1

thành phố còn lại, mỗi thành phố đúng một lần, rồi trở về thành phố xuất phát Cho biết

ij

c là chi phí (hoặc là khoảng cách) đi từ thành phố i đến thành phố j Giả thiết

c > ∀ ≠i j c = ∞ , với mọi i ( có thể c ijc ji) Hãy tìm hành trình với tổng chi phí nhỏ nhất?

Ký hiệu ma trận

, 1, ,

C c

=

= , xij = hoặc 0 tùy thuộc người du lịch có đi từ 1 thành phố i tới thành j hay không Khi đó bài toán người du lịch có thể viết dưới dạng:

1 1

6

G

ζ′ = −

0

7

G

ζ′ = −

ζ

′ = +∞

5

ζ

′ = −

5

ζ

′ = −

5

ζ

′ = −

ζ

′ = +∞

Trang 7

Bùi Thế Tâm VI.7 Quy hoạch rời rạc

i j

c x

= =

∑∑ (12)

{ }

ij 1

ij 1 ij

ij

n j m i

u u nx n

=

=

trong đó u nhận giá trị nguyên hay thực i

3.2 Thuật toán nhánh cận

Tập tất cả các phương án của bài toán (tập S )sẽ được chia nhỏ dần thành nhiều 0

tập con rời nhau, mỗi tập con bao gồm những phương án đi qua và không đi qua một số cặp thành phố nhất định sẽ được ấn định dần trong quá trình giải bài toán Mỗi tập con này được gắn với một số thực không âm (cách tìm số này xem ở phần tiếp theo), biểu thị cận dưới của chi phí đối với mọi phương án thuộc tập này Tập con S có cận dưới k

nhỏ nhất sẽ có nhiều khả năng chứa phương án tối ưu, vì thế tập S sẽ được chọn để k

chia nhỏ tiếp (phân nhánh) Khi phân nhánh S k =S k1∪S k2 sao cho một tập S bắt 2

buộc đi qua thêm một cặp thành phố x nào đó (cách chọn xem ở phần tiếp theo), một rs

tập S không được đi qua cặp thành phố 1 x Khi một tập con nào đó chỉ gồm một rs phương án duy nhất thì ta sẽ tính được chi phí C của phương án này và nhờ đó có thể

cải tiến được phương án tốt nhất hiện biết, giá trị hàm mục tiêu của bài toán ứng với

phương án tốt nhất hiện biết gọi là giá trị kỷ lục Tập con nào có cận dưới lớn hơn hay

bằng giá trị kỷ lục sẽ bị loại (không cần xem xét tiếp nữa), vì chắc chắn tập này không chứa phương án nào tốt hơn phương án tốt nhất hiện biết Quá trình giải kết thúc khi không còn tập con nào cần xem xét tiếp Khi đó, phương án tốt nhất hiện biết sẽ là phương án tối ưu của bài toán Tính hữu hạn của thuật toán được suy ra từ tính hữu hạn của tập S 0

Thủ tục tính cận

Bổ đề. Phương án tối ưu *x vẫn còn là tối ưu nếu ma trận chi phí C được thay bởi ma trận C′ với

c ij′ = − −c ij α βi j, ( ,i j=1, 2, , )n (17) trong đó ,α βi j là các số thực bất kỳ

Chứng minh Xét một phương án bất kỳ x của bài toán Do * x là phương án

tối ưu nên

ij * ij

∑∑ ∑∑

Từ các hệ thức (12) và (17) ta có:

Trang 8

Bùi Thế Tâm VI.8 Quy hoạch rời rạc

∑∑ ∑ ∑ ∑∑

điều này chứng tỏ *x vẫn còn là phương án tối ưu

Các số α βi, j cần được chọn sao cho cij′ ≥0, ∀i j, và trên mỗi hàng, mỗi cột

của ma trận C′ có ít nhất một số 0 Chẳng hạn có thể chọn αi là số nhỏ nhất trong hàng

i của C và βj là số nhỏ nhất trong cột j của ma trận thu được từ C bằng cách trừ các

phần tử trên hàng i cho αi , trừ các phần tử trên cột j cho βj

Phép toán (17) được gọi là phép rút gọn ma trận hay thủ tục rút gọn và hằng số

=∑ +∑ được gọi là hằng số rút gọn và đó chính là một cận dưới cho giá trị

hàm mục tiêu của bài toán, vì mỗi phương án của người du lịch sẽ chứa đúng một phần

tử của mỗi hàng và đúng một phần tử của mỗi cột trong ma trận chi phí

Tương tự, nếu tập con các phương án, ký hiệu là S p thu được từ tập ban đầu S 0

bằng cách cố định một số biến x ở giá trị 1 hay 0 (nghĩa là cho phép đi qua hay cấm ij

không được đi qua một số cặp thành phố nào đó) thì để tính cận dưới cho S p ta chỉ việc tiến hành thủ tục rút gọn trên ma trận tương ứng với S p

Thủ tục phân nhánh

Giả sử ta cần phân nhánh tập S pS0 Cách hay dùng là phân chia tập này thành hai tập con rời nhau S Sp, ′′ với p

{ }

S x x S x

S x x S x

trong đó, x là biến chưa cố định ở giá trị 0 hay 1 trong tập rs S p

Cặp ( )r s, dùng để phân nhánh được chọn sao cho tập S′′ p có nhiều khả năng chứa phương án tối ưu, còn tập S′ p thì không Nói cách khác, ( )r s, được chọn sao cho hiệu số các cận dưới của S′′ và p S′ là lớn nhất có thể được p

Để giải quyết vấn đề này, ta chỉ cần xét tập các phương án ban đầu S , vì mọi bài 0

toán con nhận được về sau có cùng cấu trúc như đối với bài toán ban đầu Giả sử ma

trận chi phí C đã được rút gọn , nghĩa là c ij ≥0, ∀i j, và trên mỗi hàng , mỗi cột của

C có ít nhất một số 0 Tập S được chia thành hai tập rời nhau 0 S và 1 S với 2

Trang 9

Bùi Thế Tâm VI.9 Quy hoạch rời rạc

rs rs

S x x S x

S x x S x

Trong tập S cấu trúc bài toán không thay đổi, trừ ra hàng r và cột s bị loại, bởi 2

vì đã đi từ r đến s thì không thể đi từ r đến bất cứ nơi nào khác, và cũng không được

phép đi từ bất cứ đâu vào s Các hàng và cột còn lại chỉ chứa các phần tử không âm, vì

thế ứng với S một cận dưới đối với giá trị hàm mục tiêu tăng thêm là 2 γ( )S2 =c rs Trong tập S do cố định 01 x rs = nên từ các điều kiện (14), (15) suy ra phải có một

1

rj

x = j s≠ và một x is =1(i r≠ ) Vì thế ( )1 min rj min is

j s i r

γ

đối với giá trị mục tiêu tăng thêm Ta sẽ chọn biến x sao cho hiệu giữa các cận dưới rs

này là lớn nhất, nghĩa là đạt

{ ( ) ( )1 2 }

( , )

max

Nếu c rs> thì 0 γ( )S1 = (do trên hàng r và cột s của C đều chứa số 0), 0 cònγ( )S2 =c rs> , từ đó 0 γ( ) ( )S1 −γ S2 < Vì thế để có (18) ta chỉ cần xét các cặp 0 ( )r s với 0., c rs = Trong trường hợp này γ( )S2 = và 0 γ( )S1 ≥ 0

Điều này có nghĩa là thay cho (18) ta có thể chọn biến x để phân nhánh theo rs

qui tắc

0

pq

j q i p c

=

Lập luận trên đây cũng đúng cả khi các tập phương án S i về sau được chia thành các tập S S r, r+1, nhưng thay cho mức tăng của các cận dưới γ( )S2 và γ( )S1 ta xét mức tăng của các cận dưới γ( )S r và γ(S r+1) tương ứng

Ngăn cấm tạo các chu trình con

Nếu tập được xét không phải là S0 mà là

S p ={x x S x| ∈ 0, i j1 1 =δ1,x i j2 2 =δ2, ,x i j k kk},

thì qui tắc chọn biến để phân nhánh về cơ bản vẫn như trước, tuy nhiên cần tiến hành một số thay đổi Trước hết, đó là việc thực hiện các lựa chọn bắt buộc Chẳng hạn, nếu

0, 1, , 1, 1, ,

uj

x = j= vv+ nthì tất nhiên phải có x uv = Cũng làm vậy đối với các 1 cột

Một số loại lựa chọn bắt buộc khác: khi đã cố định 1x rs = thì phải có x sr = 0 bằng cách đặt c sr = ∞ Hơn nữa, nếu đường đi dài nhất trong S p chứa cạnh ( )r s, gồm

ít nhất 2 và nhiều nhất n− cạnh 2

v n

≤ ≤ −

Trang 10

Bùi Thế Tâm VI.10 Quy hoạch rời rạc

(không có cạnh nào có dạng x ki1 = hay 1 x i j v = ), thì để ngăn cấm tạo chu trình con 1

dạng (i i1 2, , , , , ,i r s i u 1) ta đặt c si1 = ∞ , còn để ngăn cấm tạo chu trình con dạng

(r s i, , u+1,i u+2, , ,i r v ) ta đặt c i r v = ∞ Hơn nữa, ta cần có x i i v1 = bằng cách đặt 0

1

v

i i

c = ∞

Để tìm i ta có thể đi ngược từ 1 r và để tìm i ta có thể đi xuôi từ s theo danh v

sách các biến đã cố định ở giá trị 1 trong tập S p

Ở mỗi bước lặp, trước khi tính các cận dưới cho các tập mới, cần thực hiện những

lựa chọn bắt buộc nêu trên Có như vậy mới thu được những cận dưới chính xác và

tránh được những phân nhánh vô ích

3.3. Giải ví dụ bằng số

Giải bài toán người du lịch với ma trận chi phí ( không đối xứng ) như sau(n=6)

Bước lặp 0 Tập đầu tiên S là tập hợp tất cả các hành trình có thể Vì ban đầu 0

chưa biết một phương án nào nên cận trên β = +∞

Tính cận dưới cho S0 Từ ma trận (19) trừ mỗi phần tử của các hàng 1, 2, 3, 4, 5,

6 cho số nhỏ nhất trên hàng tương ứng là 3, 4, 16, 7, 25, 3 ta được một ma trận mới Tiếp theo, trừ mỗi phần tử của các cột 3, 4 của ma trận mới cho số nhỏ nhất trên cột

tương ứng là 15, 8 ta được ma trận rút gọn (20) (chưa kể các số mũ ở trên các phần tử

bằng 0)

y

y

y i1

i2

r s

i3

i4

(19)

Ngày đăng: 22/07/2014, 06:20

TỪ KHÓA LIÊN QUAN

w