1. Trang chủ
  2. » Khoa Học Tự Nhiên

Tiểu luận thuật toán nhánh cận

18 908 2

Đ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 18
Dung lượng 885,52 KB

Nội dung

4 2.4 Thuật toán đơn hình giải bài toán quy hoạch tuyến tính 5 2.5 Bài toán quy hoạch nguyên.. Thực tế chưa có một thuật toán tối ưu nào thực sự hữu hiệu để giải tất cả các bài toán quy

Trang 1

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

TỐI ƯU TỔ HỢP I

Chuyên ngành : TOÁN TIN ỨNG DỤNG

Thầy hướng dẫn: TS Nguyễn Quang Thuận Sinh viên thực hiện: Vũ Hữu Ninh

HÀ NỘI - 2012

Trang 2

Mục lục

2 Một số khái niệm cơ bản và kiến thức bổ trợ 4 2.1 Phân hoạch 4 2.2 Bài toán con 4 2.3 Cận dưới - cận trên 4 2.4 Thuật toán đơn hình giải bài toán quy hoạch tuyến tính 5 2.5 Bài toán quy hoạch nguyên 6

3.1 Ý tưởng của thuật toán nhánh cận 7 3.2 Thuật toán nhánh cận Land-Doig giải bài toán quy hoạch

nguyên hoàn toàn 8 3.3 Thuật toán nhánh cận giải bài toán cái túi 14

Trang 3

1 Lời nói đầu

Quy hoạch nguyên là mô hình toán học của rất nhiều bài toán nảy sinh trong các lĩnh vực khác nhau Tuy nhiên, khác với baiftoans quy hoạch tuyến tính thông thường, bài toán quy hoạch nguyên rất khó giải Thực tế chưa có một thuật toán tối ưu nào thực sự hữu hiệu để giải tất

cả các bài toán quy hoạch nguyên

Năm 1960, Land và Doig đưa ra thuật toán nhánh cận dể giải bài toán quy hoạch nguyên Đến năm 1965, Dakin đã hoàn thiện phương pháp nhánh cận và nó trở thành phương pháp ưu thê rõ rệt so với các phương pháp trước để giải bài toán quy hoạch nguyên Nội dung chính trong báo cáo này của em chủ yếu là nói về thuật toán nhánh cận để giải bài toán quy hoạch nguyên

Trang 4

2 Một số khái niệm cơ bản và kiến thức bổ trợ

2.1 Phân hoạch

Một họ P chứa hữu hạn các tập con của tập D, P := {Di ⊆ D | i ∈ I}, trong đó I là tập hữu hạn các chỉ số, được gọi là một phân hoạch của D nếu

D = [ i∈I

Di và Di ∩ Dj = ∅ i 6= j

Nói rằng ta phân hoạch tập D bởi các tập con Di, i ∈ I có nghĩa là ta có {Di ⊆ D | i ∈ I} là một phân hoạch của D

2.2 Bài toán con

Xét bài toán quy hoạch nguyên sau:

trong đó D là tập chấp nhận được Bài toán

maxf (x) v.đ.k x ∈ Di (IPi) được gọi là bài toán con của bài toán quy hoạch nguyên (IP ) (cùng hàm mục tiêu nhưng tập chấp nhận được bé hơn )

2.3 Cận dưới - cận trên

• Số thực α được gọi là cận dưới của bài toán (IP ) nếu

α ≤ fopt Nếu tìm được phương án chấp nhận được x ∈ D thì f (x) ≤ fopt Khi đó x được gọi là kỷ lục và f (x) được gọi là một giá trị kỷ lục

• Số thực β được gọi là cận dưới của bài toán (IP ) nếu

β ≥ fopt Nếu tìm được phương án chấp nhận được x ∈ D và một cận trên

β của bài toán (IP ) sao cho f (x) = β thì x chính là nghiệm tối ưu của bài toán

Trang 5

2.4 Thuật toán đơn hình giải bài toán quy hoạch tuyến tính Xét bài toán quy hoạch tuyến tính chính tắc không suy biến

v.đ.k x ∈ D, trong đó c ∈ Rn, và tập chấp nhận được là tập lồi đa diện không suy biến xác định bởi

D = {x ∈ Rn|Ax = b, x ≥ 0}, trong đó b = (b1, b2, · · · , bm)T ≥ 0, A là ma trận cấp m × n, với m < n Giả sử ta đã biết phương án cực biên x0 = (x01, x02, · · · , x0n)T Ký hiệu

J (x0) := {j ∈ {1, 2, · · · , n}|x0j > 0}

Hệ các véc tơ độc lập tuyến tính {Aj|j ∈ J(x0)} là cơ sở duy nhất của

ma trận A tương ứng với x0 Vì vậy mỗi véc tơ Ak được biểu diễn dưới dạng

Ak = X

j∈J (x 0 )

zjkAj

và bộ số thực zjk, j ∈ J (z0) là được xác duy nhất.Ta gọi

∆k = X

j∈J (x 0 )

zjkcj − ck k ∈ {1, 2, · · · , n}

là ước lượng ứng với phương án xk

Thuật toán

Bước 1:( Bước chuẩn bị)

Xây dựng bảng đơn hình xuất phát tương ứng với phương án cực biên xuất phát x0

Bước 2: (Kiểm tra điều kiện tối ưu)

Xét dòng cuối của bảng đơn hình

If ∆k ≤ 0 với mọi k = 1, 2, · · · , n Then Dừng thuật toán , kết luận nghiệm tối ưu là phương án cực biên ứng với bảng này

Else chuyển sang Bước 3

Bước 3: (Kiểm tra bài toán không có lời giải)

If Tồi tại k /∈ JB sao cho ∆k > 0 và zjk ≤ 0 với mọi j ∈ JB Then Dừng thuật toán, kết luận bài toán không có lời giải

Trang 6

Else chuyển sang Bước 4.

Bước 4:

• Tìm cột xoay Tìm chỉ số s thỏa mãn ∆s = max{∆k|∆k> 0} Khi

đó cột tương ứng với véc tơ As sẽ đưa vào cơ sở mới

• Tìm dòng xoay Tính các θj, j ∈ JB, như sau

θj =

( zj

z js nếu zjs > 0, j ∈ JB +∞ nếu zjs ≤ 0, j ∈ JB

và xác định chỉ số r thỏa mãn

θr = min{θj|j ∈ JB} khi đó dòng r gọi là dòng xoay Phần tử zjs nằm trên dòng xoay

và cột xoay được gọi là phần tử chính của phép quay Các phần tử

zjs, (j 6= r) được gọi là các phần tử xoay

Bước 5: (Chuyển bảng đơn hình tương ứng với phương án cực biên mới)

• Trong cột hệ số CB thay giá trị cr bởi cs Trong cột hệ số cơ sở thay tên Ar bởi As

• Dòng xoay mới được tính theo quy tắc là

Dòng chính (mới) := Dòng quay (cũ)

phần tử chính ;

• Các dòng còn lại được tính như sau

Dòng mới := (- Phần tử quay tương ứng) × Dòng chính + Dòng cũ.

• Quay lại Bước 2

2.5 Bài toán quy hoạch nguyên

Xét bài toán quy hoạch nguyên được phát biểu như sau

min f (x) = f (x1, · · · , xn) v.đ.k x = (x1, · · · , xn) ∈ D, (P 1) trong đó D ∈ Rn là tập các véc tơ x = (x1, · · · , xn)T mà một số hoặc tất cả các thành phần của x chỉ nhận giá trị nguyên

i) Nếu mà tất cả các thành phần của biến x nhận giá trị nguyên thì người ta gọi là bài toán (P 1) là bài toán quy hoạch nguyên hoàn toàn

Trang 7

ii) Nếu chỉ có một số thành phần của biến x nhận giá trị nguyên thì người ta gọi bài toán (P 1) là bài toán quy hoạch nguyên bộ phân

Ví dụ 1 Xét bài toán quy hoạch tuyến tính nguyên sau

−9x1 − 5x2 − 6x3 − 4x4 → min v.đ.k

6x1 +3x2 +5x3 +3x4 ≤ 9

x3 +x4 ≤ 1

x1, x2, x3 x4 nguyên

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

3.1 Ý tưởng của thuật toán nhánh cận

Ý tưởng của phương pháp nhánh cận là "chia để trị", tức thay vì giải trực tiếp bài toán quy hoạch tuyến tính (IP ) ta giải bài toán con

max f (x) v.đ.k x ∈ Di, (IPi) trong đó Di thuộc một phân hoạch P := {Di ⊆ D | i ∈ I} Hiển nhiên

là việc giải các bài toán con (IPi), i ∈ D, cũng sẽ mắc phải những khó khăn tương tự như việc giải bài toán quy hoạch nguyên (IP ) Tuy nhiên

ta có thể xác định được cận trên β(D)i của bài toán con này, nhờ đó ta

có thể xác định được cận trên của bài toán ban đầu

Đặc điểm của thuật toán nhanh cận là xuất phát từ tập chấp nhận được ban đầu D, qua các vòng lặp, bằng cách phân hoạch dần tập D và xác định các cận trên của bài toán con ta sẽ loại dần được những tập con Dk ⊂ D mà ta biết chắc chắn nghiệm tối ưu của bài toán ban đầu (IP ) không thể thuộc Dk hoặc ta đã biết một phương án tốt nhất trong

Dk rồi Đến khi "kiểm duyệt" được hết các tập con cần xét thì thuật toán kết thúc và ta nhận được nghiệm của bài toán tối ưu ban đầu

Trang 8

3.2 Thuật toán nhánh cận Land-Doig giải bài toán quy hoạch nguyên hoàn toàn

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

max f (x) = hc, i v.đ.k x ∈ D0, (IP0) trong đó D0 ⊂ Rn xác định bởi

D0 = {x ∈ Rn | Ax ≤ b, x ≥ 0, và nguyên},

Ký hiệu

D0nl := {x ∈ Rn|Ax ≤ b, x ≥ 0}

là tập lồi đa diện có ràng buộc như tập D0 nhưng bỏ đi tính nguyên của x

Thuật toán

Bước chuẩn bị

• Giải bài toán nới lỏng max {f (x) | x ∈ Dnl

0 } được nghiệm tối ưu x0

• If x0 nguyên Then Dừng thuật toán

Else Đặt β(D0) := f (x0);

• If Biết một phương án x ∈ D Then Đặt α := f (x)

Else Đặt α := −∞;

• Đặt D := {D0};

Bước 1: (Chọn tập để chia)

• Chọn Dk ⊂ D là tập chấp nhận được của bai toán quy hoạch nguyên (IPk) mà bài toán có cận trên β(Dk) lớn nhất trong các bài toán con có tập chấp nhận được thuộc D Gọi xk là phương án tối ưu của bài toán nới lỏng tương ứng với bài toán (IPk)

• Giả sử xk

j là một thành phần không nguyên đầu tiên của xk Phân hoạch tập Dk thành hai tập

Dk1 = {x ∈ Dk|xj ≤ xk

j }

Dk2 = {x ∈ Dk|xj ≥ xk

j }

Trang 9

• Đặt D := (D \ {Dk} ∪ {Dk1, Dk2})

Bước 2: (Lặp các tập con)

• Với mỗi i ∈ {1, 2}, giải bài toán quy hoạch tuyến tính nới lỏng (LPki) Có thể gặp một trong các trường hợp sau:

– Bài toán không chấp nhận được , tức là Dki = ∅

D := D \ {Dk}

– Tìm được phương án tối ưu xk nguyên Khi đó tính lại giá trị kỷ lục

α = max {α, f(xki)}

Gọi x là kỷ lục hiện tại tương ứng với giá trị kỷ lục hiện tại

α = f (x) Loại Dki khỏi việc xem xét tiếp theo

D := D\{Dk} – Tìm được phương án tối ưu xki là không nguyên Đặt β(Dki) =

f (xki)

• Loại bỏ khỏi D tất cả cac tập chấp nhận được của bài toán con có cận trên bé hơn hoặc bằng kỷ lục hiện tại α (nếu có)

Bước 3: (Kiểm tra điều kiện dừng)

If D = ∅ Then Dừng thuật toán

Else Quay lại bước 1

Ví dụ

Giải bài toán quy hoạch tuyến tính nguyên sau:

max − x1 + 4x2 v.đ.k

−10x1 +20x2 ≤ 22 5x1 +10x2 ≤ 49

x1, x2, ≥ 0, nguyên

Trang 10

Hình 1: Hình 1

Giải bài toán nới lỏng của bài toán trên

max − x1 + 4x2 v.đ.k

−10x1 +20x2 ≤ 22 5x1 +10x2 ≤ 49

x1, x2, ≥ 0

ta được nghiệm là (3.8, 3) và giá trị tối ưu β = 8.2 Khi đó ta thêm hai ràng buộc là x1 ≥ 4 và x1 ≤ 3, ta được miền chấp nhận được như ở Hình 2

Trang 11

Hình 2:

Tiếp tục giải bài toán nới lỏng

max − x1 + 4x2 v.đ.k x ∈ D1

Ta được nghiệm tối ưu là (4, 2.9) và giá trị tối ưu là β = 7.6

Hình 3:

Ta lại tiếp tục chia miền D1 thành hai miền khi thêm hai ràng buộc

x2 ≤ 2 và x2 ≥ 3 Ta thấy trên miền D4 không có nghiệm nguyên, nên

ta loại miền này Còn trên miền D3 ta được nghiệm là (4, 2) và giá trị tối ưu f = 4 (xem Hình 4)

Trang 12

Hình 4:

Tiếp theo ta xét trên miền D2 Giải bài toán trên miền D2 ta được nghiệm là (3, 2.6) và giá trị tối ưu là 7.6

Hình 5:

Vì nghiệm chưa nguyên nên ta chia miền D2 bởi lát cắt x2 ≤ 2 và

x2 ≥ 3 Trên miền D6 không có nghiệm nguyên nên ta loại, còn miền D5

có nghiệm là (1.8, 2) và giá trị tối ưu là 6.2 (Hình 5)

Ta lại chia miền D5 thành 2 miền bởi lát cắt x1 ≤ 1 và x1 ≥ 2 (Hình 6)

Trang 13

Hình 6:

Trên miền D8 ta có nghiệm là (2, 2) và giá trị tối ưu là 6 >4 (Hình 7) Còn trên miền D7 ta giải được nghiệm là (1, 1.6) và giá trị tối ưu là 5.4 < 6 (Hình 8), trường hợp này ta loại

Hình 7:

Trang 14

Hình 8:

3.3 Thuật toán nhánh cận giải bài toán cái túi

Xét bài toán ba lô 0 -1

f (x) =

n X

j=1

v.đ.k x ∈ D = {x ∈ Rn|

n X

j=1

ajxj ≤ b, xj ∈ {0, 1}j = 1, 2, · · · , n},

trong đó cj, aj, j = 1, · · · , n và b là các số thực cho trước Giả sử rằng

c1

a1 ≥ · · · ≥ cn

an.

Để xây dựng hàm tính cận dưới, ta xét

g∗ = max{f (x) =

n X

j=1

cjxj :

n X

j=1

ajxj ≤ b, j = 1, · · · , n} (1)

Mệnh đề 3.1 Phương án tối ưu của bài toán (1) là véc tơx = (x1, · · · , xn) với các thành phần được xác định bởi công thức

x1 = b

a, x2 = · · · = xn = 0

và giá trị tối ưu là g∗ = c1b1

a 1

Trang 15

Giả sử ta có phương án bộ phận cấp k: (u1, · · · , un) Khi đó giá trị sử dụng các đồ vật đang có trong túi là

σk = c1u1 + · · · ckuk

và trọng lượng còn lại của túi là

bk = b − (a1u1 + · · · + akuk)

Ta có

max {f (x) : x ∈ D, xj = uj, j = 1, · · · , n}

=max {σk+

n P j=1

cjxj :

n P j=1

ajxj ≤ b, xj ∈ Z+, j = k + 1, · · · , n}

≤ σk + {

n P j=1

cjxj :

n P j=1

ajxj ≤ b, xj ∈ Z+, j = k + 1, · · · , n}

= σk+ ck+1 bk

a k+1

Vậy ta có thể tính cận trên cho phương án bộ phận (u1, · · · , uk) bởi công thức sau:

g(u1, · · · , uk) = σk + ck+1 bk

ak+1.

Ví dụ: Gải bài toán cái túi sau theo thuật toán nhánh cận

f (x) = 10x1 + 5x2 + 3x3 + 6x4 → max

5x1 + 3x2 + 2x3 + 4x4 ≤ 8

xj ∈ Z+, j = 1, 2, 3, 4 Thuật toán nhánh cận được trình bày ở Hình 9 Trong đó σ là giá trị các đồ vật đang chất trong túi, w là trọng lượng còn lại của túi và g là cận trên

Trang 16

Hình 9:

σ

Trang 17

4 Kết luận

Để kết thúc, em xin tóm tắt lại những vẫn đề được trình bày trong báo cáo của em Trong báo cáo em đã nhắc lại môt số khái niệm cơ bản

và thuật toán đơn hình giải bài toán quy hoạch tuyến tính, và nội dung chính của báo cáo là thuật toán nhánh cận để giải bài toán quy hoạch nguyên Do thời gian có hạn nên trong báo cáo vẫn còn một số thiếu sót, rất mong được sự đóng góp ý kiến của thầy và bạn đọc

Trang 18

5 Tài liệu tham khảo

[1] Nguyễn Thị Bạch Kim, Giáo trình Các Phương Pháp Tối Ưu Lý Thuyết Và Thuật Toán, Nhà xuất bản đại học bách khoa, Hà nội, 2006

[2] Stephen Boyd and Jacob Mattingley,Branch and Bound Methods, Stanford University, Winter 2006-07 March 11, 2007

[3] Jens Clausen, Branch and Bound Algorithms - Principles and Ex-amples, March 12, 1999

[4] Nguyễn Đức Nghĩa - Nguyễn Tô Thành, Toán rời rạc, Nhà xuất bản đại học Quốc Gia Hà Nội, 2006

Ngày đăng: 07/12/2015, 00:22

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w