Một trong các lĩnh vực của toán học thường ứng dụng công nghệ thông tin để giải quyết đó là các bài toán về quy hoạch tuyến tính.. Trong mô hình tổng quát, đã xuất hiện rất nhiều các thu
Trang 1VÀ TRUYỀN THÔNG
HOÀNG QUANG HƯNG
BÀI TOÁN QUY HOẠCH NGUYÊN, THUẬT TOÁN GOMORY VÀ ỨNG DỤNG TRONG CẮT THÉP XÂY DỰNG
LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH
Thái Nguyên 2015
Trang 2TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
VÀ TRUYỀN THÔNG
HOÀNG QUANG HƯNG
BÀI TOÁN QUY HOẠCH NGUYÊN, THUẬT TOÁN GOMORY VÀ ỨNG DỤNG TRONG CẮT THÉP XÂY DỰNG
Chuyên ngành: Khoa học máy tính
Mã số: 60.48.01
LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH
NGƯỜI HƯỚNG DẪN KHOA HỌC
TS NGUYỄN HẢI MINH
Thái Nguyên 2015
Trang 3Gomory và ứng dụng trong cắt thép xây dựng” là công trình nghiên cứu do tôi
thực hiện dưới sự hướng dẫn của TS Nguyễn Hải Minh và TS Vũ Vinh Quang Các nội dung được trình bày trong luận văn là những kết quả đạt được trong thời tôi gian thực đề tài dưới sự hướng của tập thể giáo viên hướng dẫn, tôi không sao chép nguyên bản lại kết quả của các nghiên cứu đã từng được công bố và đây cũng là kết quả của quá trình nghiên cứu, học tập và làm việc nghiêm túc của tôi trong quá trình học cao học Bên cạch đó, trong một số nội dung luận văn là kết quả phân tích, nghiên cứu, tổng hợp từ nhiều nguồn tài liệu khác Các thông tin tổng hợp hay các kết quả lấy từ nhiều nguồn tài liệu khác đã được tôi trích dẫn một cách đầy đủ và hợp lý Nguồn tài tài liệu tham khảo có xuất xứ rõ ràng và được trích dẫn hợp pháp
Các số liệu và thông tin sử dụng trong luận văn này là trung thực
Thái Nguyên, ngày tháng năm 2015
Người cam đoan
Hoàng Quang Hưng
Trang 4Tôi xin chân thành cảm ơn các thầy, cô trong Viện Công nghệ thông tin, Trường Đại học Công nghệ thông tin và Truyền thông - Đại học Thái Nguyên đã tham gia giảng dạy, giúp đỡ tôi trong suốt quá trình học tập nâng cao trình độ kiến thức để phục vụ cho công tác giảng dạy của tôi hiện tại và sau này
Tôi xin bày tỏ lòng biết ơn chân thành tới TS Nguyễn Hải Minh và TS.Vũ Vinh Quang, các Thầy đã tận tình hướng dẫn hướng dẫn tôi trong suốt thời gian thực hiện luận văn
Vì điều kiện thời gian và trình độ có hạn nên luận văn cũng không thể tránh khỏi những thiếu sót Tôi xin kính mong các Thầy, Cô giáo, các bạn đồng nghiệp đóng góp ý kiến để đề tài được hoàn thiện hơn
Tôi xin chân thành cảm ơn!
Trang 5MỤC LỤC
MỞ ĐẦU 1
NỘI DUNG 2
Chương 1 CÁC KIẾN THỨC CƠ BẢN VỀ BÀI TOÁN QUY HOẠCH TUYẾN TÍNH 3
1.1 Mô hình tổng quát về bài toán quy hoạch tuyến tính 3
1.1.1 Giới thiệu bài toán quy hoạch tuyến tính 3
1.1.2 Bài toán tổng quát 3
1.1.3 Dạng chuẩn và dạng chính tắc 4
1.1.4 Đưa quy hoạch tuyến tính về dạng chuẩn hoặc dạng chính tắc 4
1.2 Thuật toán đơn hình 5
1.2.1 Đường lối chung và cơ sở của thuật toán 6
1.2.2 Cơ sở của thuật toán 6
1.2.3 Thuật toán đơn hình 8
1.2.4 Công thức đổi cơ sở, bảng đơn hình 9
1.3 Lý thuyết đối ngẫu 12
1.3.1 QHTT dưới dạng chuẩn, cặp bài toán tuyến tính đối ngẫu đối xứng 12
1.3.2 Ý nghĩa cặp bài toán đối ngẫu 15
1.3.3 Phương pháp đơn hình đối ngẫu từ vựng 15
Chương 2 BÀI TOÁN QUY HOẠCH NGUYÊN VÀ THUẬT TOÁN GOMORY 19
2.1 Mô hình tổng quát 19
2.2 Một số mô hình thực tế 20
2.2.1 bài toán với điều kiện không chia cắt được 20
2.2.2 Bài toán với điều kiện logic 20
2.2.3 Bài toán với biến số rời rạc 21
2.2.4 Bài toán với vốn đầu tư ban đầu 21
2.3 Cơ sở lý thuyết về thuật toán nhát cắt Gomory 22
Trang 62.3.1 Tư tưởng 22
2.3.2 Khái niệm lát cắt đúng 24
2.3.3 Tư tưởng phương pháp cắt Dantzig 24
2.4 Thuật toán Gomory giải bài toán quy hoạch nguyên 25
2.4.1 Thuật toán Gomory thứ nhất 25
2.4.2 Thuật toán Gomory thứ hai 36
2.4.3 Thuật toán Gomory thứ ba 44
Chương 3 CÀI ĐẶT BÀI TOÁN CẮT THÉP TRONG XÂY DỰNG 60
3.1 Đánh giá thuật toán Gomory 60
3.2 Ứng dụng giải bài toán cắt thép trong xây dựng 61
3.2.1 Mô hình bài toán thực tế 61
3.2.2 Mô hình toán học 61
3.2.3 Thuật toán giải bài toán 61
3.3 Cách sử dụng chương trình 64
3.3.1 Các biến sử dụng trong chương trình 64
3.3.2 Cách sử dụng chương trình 64
3.4 Kết quả cài đặt 65
KẾT LUẬN 71
TÀI LIỆU THAM KHẢO 72
PHẦN PHỤ LỤC 73
Trang 7MỞ ĐẦU
Kể từ khi máy vi tính xuất hiện thì công nghệ thông tin và toán học luôn là hai lĩnh vực song song cùng phát triển Trước đây, việc giải các bài toán, đặc biệt là các bài toán phức tạp thường tốn rất nhiều thời gian và công sức, thì ngày nay, việc giải các bài toán đó, có thể diễn ra nhanh chóng trên máy vi tính bằng cách sử dụng các thuật giải Việc giải các bài toán một cách nhanh chóng trên máy tính không những giúp cho toán học phát triển mà nó còn giúp cho rất nhiều ngành khác cùng phát triển theo Một trong các lĩnh vực của toán học thường ứng dụng công nghệ thông tin để giải quyết đó là các bài toán về quy hoạch tuyến tính Mô hình bài toán quy hoạch tuyến tính là một mô hình đã được phát triển từ rất lâu Trong mô hình tổng quát, đã xuất hiện rất nhiều các thuật toán nổi tiếng để xác định phương án tối
ưu như, thuật toán đơn hình gốc của Dantzig, thuật toán đơn hình cải biên hay thuật toán đối ngẫu Trong mô hình bài toán tổng quát nếu thêm vào điều kiện ràng buộc
là các nghiệm của bài toán phải thỏa mãn nguyên, thì chúng ta nhận được bài toán quy hoạch nguyên Do tính chất nguyên của nghiệm nên bài toán quy hoạch nguyên
có rất nhiều ứng dụng trong thực tế, như bài toán vận tải, bài toán lập lịch biểu, bài toán cái túi, bài toán pha cắt vật tư…Để tìm nghiệm của bài toán quy hoạch nguyên thì thuật toán Gomory đóng vai trò quan trọng đặc biệt là trong công nghệ thông tin
Nhận thấy tính thiết thực của vấn đề này và được sự gợi ý của giảng viên
hướng dẫn, tôi đã chọn đề tài “Bài toán quy hoạch nguyên, thuật toán Gomory và ứng dụng trong cắt thép xây dựng” làm đề tài cho luận văn tốt nghiệp của mình
Trang 8
NỘI DUNG Chương 1: Chương này trình bày nhưng kiến thức cơ bản về quy hoạch
tuyến tính, bài toán tổng quát, dạng chuẩn và dạng chính tắc của bài toán quy hoạch tuyến tính Cách đưa bài toán về dạng chuẩn hoặc dạng chính tắc thuật toán đơn hình giải bài toán quy hoạch tuyến tính
Chương 2: Chương này trình bày về bài toán quy hoạch nguyên, một số bài
toán trong thực tế Cơ sở lý thuyết của ba thuật toán Gomory để giải bài toán quy hoạch nguyên
Chương 3: Chương này là kết quả cài đặt bài toán cắt thép trong xây dựng
dựa vào thuật toán Gomory
Trang 9Chương 1
CÁC KIẾN THỨC CƠ BẢN VỀ BÀI TOÁN QUY HOẠCH TUYẾN
TÍNH
1.1 Mô hình tổng quát về bài toán quy hoạch tuyến tính
1.1.1 Giới thiệu bài toán quy hoạch tuyến tính
Quy hoạch tuyến tính là một trong những lớp bài toán tối ưu được nghiên cứu trọn vẹn cả về phương diện lý thuyết lẫn thực hành
Quy hoạch tuyến tính bắt nguồn từ những nghiên cứu của nhà toán học Nga nổi tiếng, viện sĩ Kantorovich L.V được nêu trong một loạt công trình về bài toán kế hoạch hóa sản xuất, công bố năm 1938 Năm 1947 nhà toán học Mỹ Dantzig đã nghiên cứu và đề xuất phương án đơn hình để giải bài toán quy hoạch tuyến tính Năm 1952 phương pháp đơn hình đã được chạy trên máy tính điện tử ở Mỹ
Quy hoạch tuyến tính là lĩnh vực toán học nghiên cứu các bài toán tối ưu mà hàm mục tiêu và các ràng buộc đều là hàm và các phương trình hoặc bất phương trình tuyến tính
Các bước nghiên cứu và ứng dụng một bài toán quy hoạch tuyến tính điển hình như sau:
- Xác định vấn đề cần giải quyết, thu thập dữ liệu
- Lập mô hình toán học
- Xây dựng các thuật toán để giải bài toán đã mô hình hóa bằng ngôn ngữ thuận lợi cho việc lập trình cho máy tính
- Tính toán thử và điều chỉnh mô hình nếu cần
- Áp dụng giải các bài toán thực tế
1.1.2 Bài toán tổng quát
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:
Trang 10ï £ = ³ïï
í
ïï ³ïïî
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 tối ưu là x và.* fmin = - f max
ïï ³ïïî
å
1.1.4 Đưa quy hoạch tuyến tính về dạng chuẩn hoặc dạng 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 dạng chính tắc nhờ các phép biến đổi tuyến tính sau:
Trang 11-3 Một biến x không bị ràng buộc dấu có thể thay thế bởi hiệu của 2 biến j
không âm bằng cách đặt:x j = x j+ - x j- vơi x j+ ³ 0 và x j- ³ 0
1.2 Thuật toán đơn hình
Cơ sở của phương pháp này được Dantzig công bố năm 1947 có tên gọi là phương pháp đơn hình Sở dĩ có tên gọi như vậy vì những bài toán đầu tiên được giải bằng phương pháp đó có các ràng buộc dạng:
Trang 121.2.1 Đường lối chung và cơ sở của thuật toán
Đường lối chung
phương pháp đơn hình dựa trên hai nhận xét sau:
- Nếu bài toán quy hoạch tuyến tính có phương án tối ưu thì có ít nhất một đỉnh của D là phương án tối ưu
- Đa diện lồi D có một số hữu hạn đỉnh
Như vậy phải tồn tại một thuật toán hữu hạn Thuật toán gồm 2 giai đoạn:
- Giai đoạn I: Trước hết tìm một phương án cực biên (một đỉnh)
- Giai đoạn II: Kiểm tra điều kiện tối ưu với phương án đó
- Nếu điều kiện tối ưu được thỏa mãn thì phương án đó là tối ưu Nếu không
ta chuyển sang phương án cực biên mới sao cho cải tiến giá trị hàm mục tiêu
- Kiểm tra điều kiện tối ưu đối với phương án mới
Người ta thực hiện một dãy các thủ tục như vậy cho đến khi nhận được phương án tối ưu, hoặc đến tình huống bài toán không có phương án tối ưu
1.2.2 Cơ sở của thuật toán
Xét bài toán quy hoạch tuyến tính dưới dạng chính tắc
, ax
< > ®
A = b0
x x
ìïïí
ï ³ïî
Trong đó A là ma trận kích thước m´ n và giả sử rằng hạng của ma trận A
là m (điều này không làm mất tính tổng quát)
Giả sử x là một phương án cực biên nào đó
Ta ký hiệu: J* = { |j x j > 0}
Vì rằng các vectơ A , j j Î J*là độc lập tuyến tính nên |J | £ m *
Định nghĩa: Phương án cực biên x được gọi là không thoái hóa nếu
*
|J |= m , thoái hóa nếu |J* |< m
Trang 13Ta chọn một hệ thống m vectơ độc lập tuyến tính Î { , A j j Î J} sao cho
*
j Ê J Hệ thống đó là cơ sở của x , các vectơ A j j, Î J và biến x j j, Î J được gọi là các vectơ và các biến cơ sở tương ứng Các vectơ và các biến A x j j, j( Ï J)gọi là vectơ và các biến phi cơ sở
Nếu x không thoái hóa thì tồn tại một cơ sở duy nhất, đó là j = J*
Mọi vectơ A phi cơ sở có thể biểu diễn dưới dạng tổ hợp tuyến tính của các k
Trang 14thì x là phương án tối ưu
Định lý 2: Nếu tồn tại một chỉ số k sao cho Vk< 0 thì ta có thể tìm được ít nhất một phương án x mà đối với nó ' z' > z
1.2.3 Thuật toán đơn hình
Giả sử ta đã đưa quy hoạch tuyến tính về dạng chính tắc:
ï ³ïî
-1) Nếu ( k" Ï J )D ³k 0Þ x là nghiệm tối ưu Dừng
2) Nếu không x không phải là nghiệm tối ưu
- ( k$ Ï J )D <k 0và z jk £ 0, " Îj J Þ bài toán quy hoạch tuyến tính
không có nghiệm 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 D <k 0, đều tồn tại j Î J : z jk > 0Þ chọn
min | 0
D = D D <
Trang 15Đưa vectơ A vào cơ sở s
Đưa vectơ A ra khỏi cơ sở Ta được phương án cực biên mới r x với '
cơ sở J' = J \ { }r È{ }s Quay trở lại khởi đầu của giai đoạn 2
1.2.4 Công thức đổi cơ sở, 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 '
r
rs j
r rs
x
z x
= íïïïïïïî
' nÕu nÕu =
Trang 16rk rs
z
z z
= íïïïïïïî
-Để 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ừ f ) đều ³ 0, nghĩa là D ³ 0 k k " , khi
đó x là phương án tối ưu
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 £ 0 hay không ?
- Nếu có thì bài toán không có phương án tối ưu
- Nếu không thì chọn cột s sao cho D =s min {Dk |D <k 0}
rồi chọn trong số những dòng cắt cột s ở những số dương dòng r mà tỉ số
z
Cột s gọi là cột xoay, vectơ A đưa vào cơ sở
Dòng r gọi là dòng xoay Vectơ A , bị đưa ra khỏi cơ sở
Phần tử z rs > 0 là giao của cột xoay và dòng xoay gọi là phần tử trục Các phần tử z js,j ¹ r gọi là phẩn tử xoay
r rs
x
z x
= íïïïïïïî
' nÕu nÕu =
Trang 17-gọi là các công thức đổi cơ sở
bảng đơn hình mới được suy từ bảng cũ bằng cách thay c A trong dòng r, rxoay bằng c A Sau đó thực hiện phép biến đổi dưới đây: s, s
1) Chia mỗi phần tử dòng xoay cho phần tử trục (được số 1 ở vị trí trụ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ử xoay tương ứng (được số 0 ở mọi vị trí còn lại của cột xoay)
Dòng mới = dòng cũ tương ứng - dòng chính ´ phần tử xoay
Lưu ý rằng sau phép xoay thì ở vị trí D ta thu được số 0 vì lúc này s A trở s
thành vectơ đơ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 xung quanh trục z Sau khi rs
thực hiện phép xoay 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 D <0 thì ta lại tiếp tục quá trình k
Chú ý : trong bảng đơn hình ở bảng 1.1, không giảm tổng quát ta coi các
vectơ cơ sở được đánh số A A1, 2, ,A nghĩa là: m J = {1, 2, }m
Trang 180 0 1 0 0 z jk
z 1s
z 2s
.z js
z 1n
z 2n
.z jn
0 0 0 0 1 z mk
z ms
1.3 Lý thuyết đối ngẫu
Ta chứng tỏ ở đây rằng đối với mọi bài toán quy hoạch tuyến tính ta có thể thiết lập tương ứng cho nó một bài toán khác gọi là bài toán đối ngẫu của nó Khái niệm đối ngẫu là một trong các khái niệm cơ bản của quy hoạch tuyến tính Trong rất nhiều trường hợp để có được những kết luận chấp nhận được cho một trong các bài toán trên thì việc nghiên cứu bài toán đối ngẫu của nó lại tỏ ra thuận tiện hơn Hơn nữa khi ta phân tích song song một cặp bài toán đối ngẫu ta có thể nhận được những kết luận hay cả về toán học cả về ý nghĩa kinh tế
1.3.1 QHTT dưới dạng chuẩn, cặp bài toán tuyến tính đối ngẫu đối xứng
Định nghĩa 1 Cho QHTT dưới dạng chuẩn
< c x, > = z(min)
Trang 19Ở đây A là ma trận chuyển vị của A , y là vectơ cột
Ta chú ý rằng các biến đổi ngẫu tương ứng một – một với các ràng buộc của quy hoạch ban đầu (mà ta sẽ gọi là quy hoạch gốc), trong khi những ràng buộc của bài toán đối ngẫu tương ứng một – một các biến của quy hoạch gốc Điều đó thể hiện rõ trong sơ đồ sau:
Khi đọc theo hàng của sơ đồ này ta được các ràng buộc (ngoài x ³ 0 ) và hàm mục tiêu của quy hoạch gốc
Khi đọc theo cột ta được các ràng buộc (ngoài y 0) và hàm mục tiêu của quy hoạch đối ngẫu
Ví dụ: quy hoạch đối ngẫu của bài toán
ï + + ³í
ïï ³ïïî
min max
Trang 20y y
ìï + £ïï
ï + £ïï
ìï £ïí
ï ³ïî
Đối với mọi cặp phương án chấp nhận được x , y tương ứng của ( ) p và ( )p ta có: '
< b y, > £ < c x, >
Hệ quả: Nếu x là các phương án chấp nhận được tương ứng của cặp quy
hoạch tuyến tính đối ngẫu (p) và nếu < , '>c x b y, thì :
(1) < , '>c x = < b y, >
(2) x và y là các phương án tối ưu tương ứng của ( p ) và ( p ’)
Định lý 2 Cho 1 quy hoạch tuyến tính
- Nếu nó có phương án chấp nhận được thì nó có phương án cực biên
- Nếu nó có phương án tối ưu thì nó có phương án cực biên tối ưu
- Nếu nó có phương án chấp nhận được và nếu giá trị hàm mục tiêu chặn (chặn trên nếu là bài toán cực đại hoá, chặn dưới nếu là bài toán cực tiểu hoá), thì nó
có phương án cực biên tối ưu
Định lý 3 Nếu 2 QHTT đối ngẫu ( p ) và ( p ’) đều có phương án chấp nhận
được thì chúng đều có phương án tối ưu và giá trị tối ưu của các hàm mục tiêu bằng nhau
Trang 21 Định lý 4 (định lý đối ngẫu)
Cho hai quy hoạch tuyến tính đối ngẫu ( p ) và ( p ’)
- Nếu chúng đều có phương án chấp nhận được thì chúng đều có phương án tối ưu và giá trị tối ưu của các hàm mục tiêu bằng nhau
- Nếu một trong hai quy hoạch có một lớp các phương án chấp nhận được mà đối với chúng hàm mục tiêu không bị chặn (chặn dưới đối với ( )p , chặn trên đối '
với( )p' ), khi đó quy hoạch khác không có phương án chấp nhận được
- Nếu ( )p (tương ứng ( )p , có một phương án chấp nhận được nhưng' ( )p , '
(tương ứng ( )p ) không có thì ( ) p (tương ứng( )p ) có một lớp các phương án chấp '
nhận được mà đối với chúng hàm mục tiêu không bị chặn dưới (tương ứng không bị chặn trên)
- Có thể xảy ra là cả ( )p và ( )p đều không có phương án chấp nhận được '
Định lý 5 (Định lý về độ lệch bù)
Điều kiện cần và đủ để cặp phương án chấp nhận được của các quy hoạch tuyến tính đối ngẫu ( )p và ( )p là cặp phương án tối ưu là: '
1.3.2 Ý nghĩa cặp bài toán đối ngẫu
- Khi có c >0, j j " thì bài toán đối ngẫu biết ngay được phương án cực biên
- Nếu Y là phương án cực biên của bài toán đối ngẫu thì khi bài toán gốc thêm một ràng buộc ta có (y , 0) vẫn là phương án cực biên của bài toán đối ngẫu
- Đôi khi dùng cặp bài toán đối ngẫu để giải gần đúng theo ý nghĩa sau: giải
cả hai bài toán và nếu hiệu giữa các giá trị tương ứng của các hàm mục tiêu đủ nhỏ thì dừng lại và phương án cực biên thu được này là nghiệm gần đúng
1.3.3 Phương pháp đơn hình đối ngẫu từ vựng
Phương pháp đơn hình đối ngẫu xây dựng một dãy hữu hạn các giả phương
án X0,X1, ,X Giả phương án cuối cùng là k X là phương án của bài k
toán dạng chính tắc Hàm mục tiêu x0 = x X0( r) không tăng khi r tăng khi r mỗi
Trang 22giả phương án X ứng với bảng r T và các tập r B N Quá trình giải gồm bước lặp r, rban đầu (xây dựng giả phương án xuất phát X ) và dãy bước lặp tổng quát 0
Tìm cực đại từ vựng của phương án mở rộng
x ³ " =i n) Nếu đúng thì X là phương án l- tối ưu Nếu không thì r
tìm biến X loại khỏi cơ sở theo quy tắc: k
R R
Trang 23 Tính l giả phương án X 0
Giả sử ta xây dựng bảng đơn hình T ứng với bài toán dạng chính tắc không
phải là l chuẩn, ứng với nó có các tập B và N Giả sử hàm j
ïï ³ïïî
j N n
-í
ï ³ïïî
å
Viết ràng buộc này vào cuối bảng đơn hình, chọn x loại khỏi có sở theo quy k
tắc k = n + 1 Chọn biến x đưa vào cơ sở theo quy tắc l R l = lex min{R j | j Î N}
Thực hiện một bước biến đổi bảng đơn hình theo công thức của mục (1.2.4)
ta nhận được bảng đơn hình T0 là l- chuẩn ( R ³ j 0với j Î N0) và ứng với nó ta có
0 ( { }), 0 ( { 1}) \ { }
Trang 24 Sơ đồ khối của thuật toán đơn hình đối ngẫu từ vựng
R R
Trang 25Chương 2
BÀI TOÁN QUY HOẠCH NGUYÊN VÀ THUẬT TOÁN GOMORY
2.1 Mô hình tổng quát
Bài toán quy hoạch nguyên tổng quát có thể phát biểu dưới dạng sau:
Tìm cực đại hoặc cực tiểu của hàm mục tiêu
1 2
( , , , n)
Trên tập D Í R ncác vectơ x = ( ,x x1 2, ,x n) mà một số hoặc tất cả các
thành phần của nó chỉ nhận các giá trị rời rạc Thông thường tập D được xác định
bởi một hệ thống các phương trình và bất phương trình được bổ sung bởi các điều kiện về tính rời rạc của biến số
Trong các bài toán quy hoạch nguyên ta cần phải tìm cực đại hoặc cực tiểu của hàm mục tiêu ở trên, còn các biến số x x1, 2, ,x phải thỏa mãn các điều kiện n
sau:
nguyên
1 2
1 2
1
( , , , ) 0, 1, 2, ,( , , , ) 0, 1
Trang 262.2 Một số mô hình thực tế
2.2.1 bài toán với điều kiện không chia cắt được
Trong một số bài toán từ ý nghĩa thực tế các biến phải nhận giá trị nguyên, khi đó thông thường ta có bài toán dạng Z = f x x( ,1 2, ,x n)- x j nguyên
1
1, 2, ,
j = n : Sau đây là một ví dụ
Giả sử một nhà máy có khả năng sản xuất n loại sản phẩm E E1, 2, ,E n
không phải là sản phẩm sản xuất hàng loạt, mà là một số lượng không lớn lắm các sản phẩm không thể chia cắt được (chẳng hạn các cỗ máy, các thiết bị, máy bay, ôtô, ) Nếu ký hiệu x là lượng sản phẩm j E cần sản xuất thì đối với j x j ta phải yêu cầu điều kiện nguyên Nhà máy cần phân phối sử dụng dự trữ vật tư của mình sao cho tổng khối lượng hàng hóa xuất sưởng đem lại lợi nhuận nhiều nhất Ta đưa vào các ký hiệu sau:
Khi đó bài toán tối ưu có dạng:
ïïî
å
2.2.2 Bài toán với điều kiện logic
Xét điều kiện logic “hoặc là - hoặc là” Điều kiện này ta thường gặp khi phải lựa chọn phương án sản xuất, xây dựng
phải điều kiện: Hoặc là không sản xuất sản phẩm j ( x = j 0), hoặc là nếu sản xuất
Trang 27thì không ít hơn d Giả sử biết cận trên j p của biến j x j trong bài toán đang xét thì
có thể đưa vào biến số Boole y j (tức là biến chỉ nhận giá trị 0 hoặc 1), ta có thể đưa ràng buộc hoặc là x = j 0,” hoặc là x j > d j” với hệ ràng buộc tương đương sau:
00
i
y = hoặc = 1
2.2.3 Bài toán với biến số rời rạc
Trong thực tế có trường hợp biến số chỉ nhận một số giá trị nhất định
Q là tập các quy mô công suất tiêu chuẩn
Bằng cách đưa vào các biến phụ t ràng buộc trên tương đương với hệ ràng ij
2.2.4 Bài toán với vốn đầu tư ban đầu
Trong một số bài toán tối ưu ta gặp phải hàm mục tiêu dạng:
0( )
Trang 28Trong đó d j > 0,j = 1, 2, ,n Các đại lượng d , có thể hiều là số vốn mà ta j
phải đầu tư vào việc sử dụng phương thức sản xuất j , nó không phụ thuộc vào
Trang 29Hệ quả 1 Giả sử X R C là phương án tối ưu của bài toán ( , )( , ) R C , khi đó
( , )
quy hoạch tuyến tính (L C ta giải bài toán ( , ) N, ) R C
2 R º V L( N) là đa diện nguyên duy nhất mà tập các điểm nguyên của nó trùng vớiL N
Định lý 2: Giả sử L là một đa diện lồi, U là một đa diện lồi nguyên và
4 Khi xây dựng V L( N) ta đã không sử dụng thông tin về hàm mục tiêu
CX của bài toán quy hoạch tuyến tính nguyên Vậy có nên tìm một bài toán quy hoạch tuyến tính ( , )A C theo bài toán ( L C sao cho thỏa mãn 3 điều kiện: N, )
2) A N = L N (tập các điểm nguyên bằng nhau ) (2.5)
3) Tất cả các phương án tối ưu của bài toán quy hoạch tuyến tính (A, C) đều thỏa mãn điều kiện nguyên:
*
A ÇA Í A (2.6) (trong đó A là tập hợp các phương án tối ưu của bài toán ( , ) c A C ; A* là tập hợp của
các đa diện lồi A ) nói chung việc xây dựng đa diện lồi A thỏa mãn (2.4) - (2.6)
cũng rất phức tạp và chưa có thuật toán hữu hiệu
Trang 302.3.2 Khái niệm lát cắt đúng
Giả sử bài toán (L C là bài toán quy hoạch nguyên nào đó và phương án N, )tối ưu của bài toán quy hoạch tuyến tính tương ứng không thỏa mãn điều kiện nguyên, tức làX L C( , )Ï L N Khi đó bất đẳng thức:
j j
j
å hay aX £ b (2.7) gọi là lát cắt đúng nếu thỏa mãn 2 điều kiện:
- Điều kiện cắt: X L C không thỏa mãn (2.7) tức là ( , ) aX L C( , )> b
- Điều kiện đúng: nếu X là phương án của ( L C thì X thỏa mãn (2.7), N, )tức là: L N Ì {X aX| £ b}
Nói cách khác, ràng buộc thêm không cắt đi một phương án nguyên nào của bài toán (L C N, )
2.3.3 Tư tưởng phương pháp cắt Dantzig
1 Việc giải ((L C là một quá trình gồm nhiều bước: N, )
a) Ở bước thứ r giải bài toán quy hoạch tuyến tính phụ
(L C r, ),r = 0, 1, với L0 = L
Trang 31b) Tập các điểm nguyên của tất cả các đa diện lồi là như nhau
sẽ giải quyết được cả ba vấn đề này một cách hiệu quả
2.4 Thuật toán Gomory giải bài toán quy hoạch nguyên
2.4.1 Thuật toán Gomory thứ nhất
2.4.1.1 Xét bài toán quy hoạch tuyến tính nguyên toàn bộ
0 1
Trang 32Giả sử X L C là phương án tựa tối ưu của bài toán ( , )( , ) L C , từ đó ta có thể biểu
diễn các biến qua các biến phi cơ sở:
Hệ quả 2: Giả sử X L C không thỏa mãn điều kiện nguyên (2.11), như vậy ( , )
đối với i nào đó (1£ i £ n )x không nguyên Khi đó các hệ thức (2.13), (2.15) i0
xác định một lát cắt đúng
a) Trong lược đồ phương pháp cắt ở trên, vì bài toán (L C có thể có nhiều r, )lời giải nên X L C không duy nhất, Gomory giải bài toán (( r, ) L C thay cho bài r, )toán (L C , do đó phương án l- tối ưu r, ) X L C là tựa và xác định duy nhất, các ( r, )
tính toán trên tiến hành nhờ l- phương pháp
b) Trong phương pháp cắt vấn đề quan trọng là việc tăng số lượng ràng buộc
Gomory đặt kích thước hạn chế cho bảng đơn hình mở rộng bằng số (n + 2)´ (k + 1) Các ràng buộc a X r £ b r chỉ là phương pháp để cắt phương án tối
ưu không nguyên X L C và chuyển bài toán từ (( r, ) L C sang bài toán r, ) (L r+1, )C chú
ý rằng biến x l r+ +1(r ³ 0) lập tức đưa ra khỏi cơ sở sau khi đưa vào ràng buộc:
Trang 33-íïïî
Tư tưởng Gomory như sau:
- ngay sau khi x n r+ +1đưa ra khỏi cơ sở dòng tương ứng xóa khỏi bảng đơn hình mở rộng
- Nếu trong quá trình tính toán tiếp theo x n r+ +1 lại đưa vào cơ sở thì dòng tương ứng trong bảng đơn hình không được khôi phục và x n r+ +1 không tham gia vào các tính toán tiếp theo Như vậy ở bước lặp bất kỳ của tính toán, bảng đơn hình bao gồm (k + 1) cột như bảng xuất phát số lượng các dòng không vượt quá(n + 2) Suy ra cỡ của bảng không vượt quá (n + 2)´ (k + 1)
c) Nếu bài toán ( , )L C không có lời giải vì hàm mục tiêu x0 = CX không bị
chặn trên khúc lồi L thì thuật toán Gomory thứ nhất không áp dụng được
Thuật toán Gomory cũng không áp dụng được trong trường hợp bài toán ( , )L C có lời giải nhưng l- bài toán ( , ) L C không có lời giải Điều đó dường như là
tập hợp các phương án tối ưu của bài toán ( , )L C khác trống nhưng không bị chặn
Về sau ta sẽ giả thiết
- x0 º CX bị chặn trên L
- Nếu tập các phương án tối ưu của ( , )L C khác trống thì nó phải bị chặn, tức
là nếu bài toán ( , )L C giải được thì bài toán ( , ) L C cũng giải được
2.4.1.2 Thuật toán Gomory thứ nhất
Bước lặp ban đầu
Giải bài toán ( , )L C = (L C nhờ l- phương án, nếu nó không giải được 0, )thì bài toán ((L C cũng không giải được N0, )
Trang 34Nếu bài toán (L C giải được và 0, ) X L C thỏa mãn điều kiện nguyên thì ( 0, )
0
( , )
thỏa mãn điều kiện nguyên thì chuyển sang bước r = 0
-ïïï ³í
ïï Îïï
ïïî
å
(2.16)
Viết dòng thứ nhất của (2.16) vào cuối bảng đơn hình T Ta được bảng đơn r
hình không chấp nhận được (chỉ với x n r+ +1) và l -chuẩn Dùng l - phương án đối
với bảng này, đồng thời sau khi đưa khỏi cơ sở x n r+ +1 thì dòng này tương ứng
1
n + r + bị xóa, sau khi đưa vào cơ sở x l l( ³ r + 1)thì dòng tương ứng không được khôi phục Nếu cuối cùng ta nhận bảng đơn hình ứng với bài toán quy hoạch tuyến tính không giải được thì bài toán (L C cũng không giải được N0, )
Nếu ta nhận được bảng T r+1 chấp nhận được và l -chuẩn thì kiểm tra tính
nguyên X L( r+1, )C Nếu X L( r+1, )C thỏa mãn điều kiện nguyên thì nó đồng thời là
Trang 35phương án tối ưu của bài toán (L C , nếu không thỏa mãn thì chuyển sang bước N0, )1
ï + £ïï
ïï - £í
ïï ³ ³ïï
ïïïïî
Sau khi thêm biến bù bài toán viết lại thành
5 4 5, , , , 0, ,
-ï = - ïï
-ïï = - +í
ïïïïïïî
Từ đây ta có bảng đơn hình xuất phát vì bảng đơn hình xuất phát không là
x = - x - x ³ và x ³8 0 và viết vào dưới bảng 1
Bảng đơn hình xuất phát sau khi thêm ràng buộc phụ là:
Trang 37Bảng 5 là l - chuẩn và chấp nhận được Do x lẻ nên từ dòng 1 sinh ra lát 1
cắt ở dòng x theo công thức (2.16) ta được bảng 5 Chọn dòng 7 x làm dòng quay 7
Trang 38Thực hiện một bước của thuật toán đơn hình đối ngẫu từ vựng ta được bảng
6 là l - chuẩn và không chấp nhận được
đơn hình l - chuẩn và chấp nhận được Biến x lẻ nên từ dòng 0 x sinh ra lát cắt ở 0
dòng x 8
Trang 39Thực hiện một bước của thuật toán đơn hình đối ngẫu từ vựng ta được bảng
đơn hình l - chuẩn và không chấp nhận được
l - chuẩn và chấp nhận được Biến x lẻ nên từ dòng 1 x sinh ra lát cắt ở dòng 1 x 9
Trang 40Thực hiện một bước của thuật toán đơn hình đối ngẫu từ vựng ta được bảng
l - chuẩn và không chấp nhận được
l - chuẩn và chấp nhận được Biến x lẻ nên từ dòng 0 x sinh ra lát cắt ở dòng 0 x 10