QUY HOẠCH TUYẾN TÍNH LINEAR PROGRAMMING – LP Quy hoạch tuyến tính LP đề cập đến một nhóm các kỹ thuật tối ưu hóa toán học đã chứng minh hiệu quả trong việc giải quyết các vấn đề phân bổ
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN TOÁN ỨNG DỤNG VÀ TIN HỌC
- oOo -
BÁO CÁO MÔN HỌC: HỆ HỖ TRỢ QUYẾT ĐỊNH
Đề tài: Phân tích tối ưu
Giảng viên hướng dẫn: TS Lê Chí Ngọc
Nhóm sinh viên thực hiện:
Trang 2MỤC LỤC
DANH SÁCH CÁC HÌNH VẼ 5
1 QUY HOẠCH TUYẾN TÍNH (LINEAR PROGRAMMING – LP) 6
1.1 Giới thiệu quy hoạch tuyến tính trong ví dụ thực tế 6
1.2 Quy hoạch tuyến tính 10
1.2.1 Mô hình toán học 10
1.2.2 Bài toán quy hoạch tuyến tính dạng chuẩn tắc 10
1.2.3 Bài toán quy hoạch tuyến tính dạng chính tắc 11
1.3 Một số phương pháp giải bài toán QHTT 12
1.3.1 Phương pháp hình học 12
1.3.2 Thuật toán đơn hình: 14
1.4 Mô tả về vấn đề phân bổ (Allocation Problem) 21
1.5 Xác định vấn đề hỗn hợp sản phẩm (The product-mix problem) 22
2 QUY HOẠCH NGUYÊN 25
2.1 Mô hình toán học 25
2.2 Một số ví dụ thực tế 26
2.3 Phương pháp giải bài toán quy hoạch nguyên 29
2.3.1 Phương pháp nhánh cận 29
2.3.2 Giải thuật Gomory 32
3 TỐI ƯU TỔ HỢP 34
3.1 Phát biểu bài toán 34
3.2 Các ví dụ điển hình 34
3.2.1 Bài toán người du lịch (Traveling Salesman Problem) 34
3.2.2 Bài toán cái túi (Knapsack Problem) 35
3.3 Một số phương pháp 37
Trang 33.3.1 Duyệt toàn bộ 37
3.3.2 Đánh giá nhánh cận 37
3.3.3 Tham lam 39
4 TỐI ƯU ĐA MỤC TIÊU 40
4.1 Giới thiệu bài toán và một số ví dụ thực tế 40
4.2 Mô hình toán học 44
4.3 Phương pháp giải 44
4.3.1 Phương pháp 𝜀 − 𝑟à𝑛𝑔 𝑏𝑢ộ𝑐 44
4.3.2 Phương pháp tổng trọng số 46
5 KỸ THUẬT (PHƯƠNG PHÁP) VÉT CẠN 48
5.1 Ý tưởng 48
5.2 Một số phương pháp tìm kiếm 50
5.2.1 Kỹ thuật phân tích: 51
5.2.2 Tìm kiếm mù (Blind searching) 53
5.2.3 Tìm kiếm Heuristic (Heuristic Searching) 53
6 ĐỘ PHỨC TẠP THUẬT TOÁN 55
6.1 Tổng quan về phân tích giải thuật và một số khái niệm liên quan 55
6.2 Độ phức tạp thuật toán được xác định thông qua: độ phức tạp không gian, độ phức tạp thời gian. 56
7 THUẬT TOÁN XẤP XỈ 61
7.1 Bài toán NP 61
7.2 Giới thiệu giải thuật xấp xỉ 61
7.2.1 Định nghĩa 62
7.2.2 Một số kỹ thuật 62
7.3 Ví dụ 62
8 METAHEURISTIC 65
8.1 Giới thiệu 65
Trang 48.2 Các giải thuật 65
8.2.1 Giải thuật luyện thép (SA – Simulated Annealing) 65
8.2.2 Giải thuật di truyền (GA – Genetic Algorithm) 68
8.2.3 Giải thuật đàn kiến (ACO – Ant Colony Optimization Algorithm) 73
8.2.4 Giải thuật tìm kiếm Tabu (TS - Tabu Searching) 75
TÀI LIỆU THAM KHẢO 78
Trang 5DANH SÁCH CÁC HÌNH VẼ
Hình 1 Mô hình toán học của ví dụ 1.1
Hình 2 Thuật toán hình học giải ví dụ 1.3.1.3
Hình 3 Mô tả hình học trường hợp 1 của thuật toán đơn hình
Hình 4 Mô tả hình học trường hợp 2 của thuật toán đơn hình
Hình 5 Mô tả hình học trường hợp 3 của thuật toán đơn hình
Hình 6 Minh hoạ trên excel giải bài toán hỗn hợp sản phẩm
Hình 7 Bài toán cái túi
Trang 61 QUY HOẠCH TUYẾN TÍNH (LINEAR PROGRAMMING – LP)
Quy hoạch tuyến tính (LP) đề cập đến một nhóm các kỹ thuật tối ưu hóa toán học đã chứng minh hiệu quả trong việc giải quyết các vấn đề phân
bổ tài nguyên, đặc biệt là các vấn đề được tìm thấy trong các hệ thống sản xuất công nghiệp Các phương pháp QHTT là các kỹ thuật đại số dựa trên một loạt các phương trình hoặc bất đẳng thức giới hạn một vấn đề và được sử dụng để tối ưu hóa một biểu thức toán học gọi là hàm mục tiêu Hàm mục tiêu và các ràng buộc đặt ra cho vấn đề phải có tính xác định và có thể được thể hiện dưới dạng tuyến tính Những hạn chế này giới hạn số lượng các vấn
đề có thể được xử lý trực tiếp, nhưng kể từ khi giới thiệu QHTT vào cuối những năm 1940, nhiều tiến bộ đã được thực hiện để điều chỉnh phương pháp cho các vấn đề phức tạp hơn Trong LP, tất cả các mối quan hệ giữa các biến
là tuyến tính Nó được sử dụng rộng rãi trong DSS xem các ví dụ dưới đây
để hiểu rõ hơn
1.1 Giới thiệu quy hoạch tuyến tính trong ví dụ thực tế
LP có lẽ là mô hình tối ưu hóa nổi tiếng nhất Nó liên quan đến việc phân
bổ nguồn lực tối ưu trong số các hoạt động cạnh tranh
• Ví dụ 1.1: (Blending or Mixing Problem)
Chúng ta hãy xem xét một ví dụ MBI Corporation- nhà sản xuất chuyên máy tính, cần đưa ra quyết định: Công ty sẽ sản xuất bao nhiêu máy tính vào tháng tiếp theo ở nhà máy Boston? MBI đang xem xét hai loại máy tính: CC-7, trong đó đòi hỏi 300 ngày lao động và 10000 đô la cho chi phí vật liệu; và CC-8, cần 500 ngày lao động và 15000 đô la cho chi phí vật liệu Đóng góp lợi nhuận của 1 máy CC-7 là 8000 đô la,trong khi đó của
Trang 7một máy CC-8 là 12000 đô la Nhà máy có công suất 200000 ngày làm việc mỗi tháng, và ngân sách vật chất là 8 triệu đô la mỗi tháng Tiếp thị đòi hỏi rằng có ít nhất 100 đơn vị CC-7 và ít nhất 200 đơn vị CC-8 được sản xuất mỗi tháng
Vấn đề là tối đa hóa lợi nhuận của công ty bằng cách xác định có bao nhiêu đơn vị CC-7 và số lượng đơn vị CC-8 nên được sản xuất mỗi tháng Lưu ý rằng: một môi trường trong thế giới thực, có thể mất vài tháng
để có được dữ liệu trong báo cáo vấn đề và trong khi thu thập dữ liệu, người ra quyết định sẽ không nghi ngờ gì nữa sự thật về cách cấu trúc mô hình sẽ được giải quyết Các công cụ dựa trên web để thu thập dữ liệu có thể giúp đỡ
▪ Hạn chế về ngày lao động: 300𝑥1+ 500𝑥2 ≤ 200000 (ngày)
▪ Hạn chế về ngân sách: 10000𝑥1+ 15000𝑥2 ≤ 8000000 (đô la)
▪ Yêu cầu tiếp thị: 𝑥1 ≥ 100 (đơn vị); 𝑥2 ≥ 200 (đơn vị)
Trang 8Vậy ta có mô hình của bài toán:
max 𝑍(𝑥) = 8000𝑥1+ 12000𝑥2vđk: 300𝑥1+ 500𝑥2 ≤ 200000
10000𝑥1+ 15000𝑥2 ≤ 8000000
𝑥1 ≥ 100
𝑥2 ≥ 200
• Ví dụ 1.2: (Bài toán lập kế hoạch sản xuất)
Cần sản xuất n sản phẩm khác nhau bằng m nguyên liệu khác nhau
Disision variables
𝑥1 là số đơn vị CC-7
𝑥2 là số đơn vị CC-8
Mathematical (logical) relationships
Tối đa hóa hàm lợi nhuận
𝑥1≥ 100
𝑥 2 ≥ 200
Hình 1 Mô hình toán học của ví dụ 1.1
Trang 9Biết:
▪ 𝑎𝑖𝑗: đơn vị sản phẩm thứ 𝑖 cần thiết để làm ra một đơn vị sản phẩm loại 𝑗; 𝑖 = 1, … , 𝑚; 𝑗 = 1, … , 𝑛
▪ 𝑏𝑖: trữ lượng của loại nguyên liệu thứ 𝑖; 𝑖 = 1, … , 𝑚
▪ 𝑐𝑗: giá bán 1 đơn vị sản phấm loại 𝑗; 𝑗 = 1, … , 𝑛 Câu hỏi: Nên sản xuất mỗi loại bao nhiêu đơn vị để doanh thu là lớn nhất (max)
Lời giải:
Kí hiệu: Gọi 𝑥𝑗 là số đơn vị sản phẩm loại 𝑗 mà ta cần sản xuất; 𝑗 = 1, 𝑛̅̅̅̅̅
Ta có hàm doanh thu được biểu diễn như sau:
Trang 101.2 Quy hoạch tuyến tính
1.2.1 Mô hình toán học
min 𝑓(𝑥) = 𝑐, 𝑥 𝑣đ𝑘 𝑥𝑋 , (LP) Trong đó: 𝑐 ∈ 𝑅𝑛, 𝑋 𝑅𝑛 là tập lồi đa diện Nhắc lại định nghĩa tập lồi đa diện: ta nói 𝑃 𝑅𝑛 là tập lồi đa diện nếu
𝑃 = ⋂{𝑥 ∈ 𝑅𝑛|𝑎𝑖, 𝑥≥ 𝑏𝑖}
𝑙 𝑖=1
Hay là giao của một số hữu hạn các nửa không gian đóng
1.2.2 Bài toán quy hoạch tuyến tính dạng chuẩn tắc
min 𝑓(𝑥) = 𝑐, 𝑥 vđk 𝑥 ∈ 𝑋 = {𝑥𝑅𝑛|𝐴𝑥 ≥ 𝑏, 𝑥 ≥ 0}, Trong đó: 𝐴 ∈ 𝑅𝑚×𝑛, 𝑏 𝑅𝑚
Gọi 𝑎𝑖, 𝑖 = 1, … , 𝑚 là các hàng của 𝐴, 𝑏 = (𝑏1, … , 𝑏𝑚)𝑇
min 𝑓(𝑥) = 𝑐, 𝑥
v.đ.k: 𝑎𝑖, 𝑥 ≥ 𝑏𝑖, 𝑖 = 1, … , 𝑚: m ràng buộc chính
𝑥𝑗 ≥ 0, 𝑗 = 1, … , 𝑛: n ràng buộc dấu
Trang 111.2.3 Bài toán quy hoạch tuyến tính dạng chính tắc
min 𝑓(𝑥) = 𝑐, 𝑥
v.đ.k 𝑥 ∈ 𝑋 = {𝑥𝑅𝑛|𝐴𝑥 = 𝑏, 𝑥 ≥ 0}, (𝐿𝑃𝑐𝑡) Trong đó: 𝐴 ∈ 𝑅𝑚×𝑛, 𝑏 𝑅𝑚
𝑥2 ≥ −8
𝑥1+ 𝑥2+ 𝑥3 ≥ −2
𝑥1 ≥ 0; 𝑥2 ≤ 0, 𝑥3 tự do Giải:
o 𝑥2 ≤ 0 đặt 𝑥2′ =−𝑥2 ≥ 0 nên 𝑥2 =−𝑥2′
mà 𝑥2 ≥ −8 𝑥2′ ≤ 8
o Đặt 𝑥3 = 𝑥3′ − 𝑥3′′; 𝑥3′ ≥ 0, 𝑥3′′ ≥ 0
Trang 12o Thay vào bt trên ta có:
Bài toán QHTT dạng chính tắc 8 ẩn tìm 𝑚𝑖𝑛 của hàm mục tiêu
1.3 Một số phương pháp giải bài toán QHTT
1.3.1 Phương pháp hình học
1.3.1.1 Phát biểu bài toán
Xét bài toán QHTT 2 biến:
min{𝑓(𝑥) =𝑐, 𝑥|𝑥 𝑋} (𝐿𝑃2𝑏) Trong đó: 𝑐 = (𝑐1, 𝑐2)𝑇 ∈ 𝑅2\ {0} và 𝑋𝑅2 là tập lồi đa diện
Bài toán (LP) có thể được phát biểu theo ngôn nhữ hình học như sau: Trong
tất cả các đường mức cắt tập X, hãy tìm đường mức có giá trị mức nhỏ nhất
Trang 13Thuật toán hình học giải bài toán (𝐿𝑃2𝑏) dựa trên 2 sự kiện:
i) Các đường mức của hàm tuyến tính song song với nhau
ii) Giá trị của hàm mục tiêu 𝑓(𝑥) = 𝑐, 𝑥 tang theo hướng véc tơ
Gradient ∇𝑓(𝑥) = 𝑐 và giảm ngược theo hướng của véc tơ c
1.3.1.2 Thuật toán
Bước 1: Vẽ tập chấp nhạn được X, véc tơ c và đường mức
𝐿(0, 𝑓) = {𝑥 ∈ 𝑅2|𝑐, 𝑥 = 0} đi qua điểm gốc 0 và vuông góc với c
Bước 2: Lấy một điểm bất kỳ 𝑥̅ ∈ 𝑋 Vẽ đường thẳng L đi qua 𝑥̅ và song
song với đường mức 𝐿(0, 𝑓) Đường thẳng L là đường mức
{𝑥𝑅2| 𝑐, 𝑥 =𝑐, 𝑥̅ }
Bước 3: Dịch chuyển song song đường mức L theo hướng ngước hướng
với véc tơ c đến khi việc dịch chuyển tiếp theo làm cho đường mức không còn cắt tập X nữa thì dừng Các điểm của X nằm trên đường mức cuối cùng này là nghiệm tối ưu của bài toán (𝐿𝑃2𝑏), còm giá trị mức chính là giá trị tối ưu của bài toán
1.3.1.3 Ví dụ
Xét bài toán QHTT:
max 𝑓(𝑥) = −2𝑥1+ 𝑥2vđk: −𝑥1+ 2𝑥2 ≤ 4
𝑥1+ 𝑥2 ≤ 5
𝑥1 ≤ 4
𝑥1, 𝑥2 ≥ 0
Trang 14Giải:
Tập chấp nhận được của bài toán này là đa diện 𝑋 = 𝑐𝑜𝑛𝑣{𝑣1, 𝑣2, … , 𝑣5} với 𝑣1 = (0,0)𝑇, 𝑣2 = (0,2)𝑇, 𝑣3 = (2,3)𝑇, 𝑣4 = (4,1)𝑇, 𝑣5 = (4,0)𝑇 ; hướng của véc tơ 𝑐 = (−2,1)𝑇; đường mức 𝐿0 và 𝐿 (đi qua một điểm 𝑥̅𝑋) của hàm mục tiêu được minh họa bởi hình dưới đây
Hình 2 Thuật toán hình học giải ví dụ 1.3.1.3
Theo thuật toán hình học, dịch chuyển song song đường mức 𝐿 theo hướng ngược hướng véc tơ c, ta thấy đường mức cuối cùng của hàm 𝑓 mà còn cắt tập X là đường mức đi qua đỉnh (4,0)𝑇 Vậy bài toán này có một nghiệm tối ưu duy nhất là đỉnh (4,0)𝑇 như hình 2 minh họa
1.3.2 Thuật toán đơn hình:
Thuật toán đơn hình giải bài toán QHTT do G.B Dantzig đề xuất vào năm 1947 Mặc dù, về mặt lý thuyết thuật toán đơn hình có độ phức tạp
0 0.5 1 1.5 2 2.5 3 3.5
Trang 15dạng mũ và cho đến nay, đã có nhiều thuật toán với độ phức tạp đa thức để giải bài toán QHTT như thuật toán ellipsoid của Khachiyan (1979), thuật toán điểm trong của Karmarkar (1984), nhưng trong thực tế đơn hình vẫn
là phương pháp được sử dụng nhiều nhất trong việc giải các bài toán QHTT
1.3.2.1 Ý tưởng và mô tả hình học của thuật toán đơn hình
Ý tưởng: Thuật toán đơn hình của Dantzig giải bài toán QHTT dựa trên 2
sự kiện sau:
▪ Nếu bài toán QHTT dạng chính tắc có nghiệm tối ưu thì nghiệm tối
ưu phải đạt trên ít nhất 1 đỉnh của tập lồi đa diện chấp nhận được X;
▪ Nghiệm tối ưu địa phương của bài toán QHTT chính tắc cũng là nghiệm tối ưu toàn cục
Mô tả hình học: Thuật toán đơn hình xuất phát từ một đỉnh 𝑥0𝑋 Tại đỉnh 𝑥0 chỉ có một trong ba trường hợp sau có thể xảy ra:
i) Trên mọi cạnh của tập nghiệm chấp nhận được xuất phat từ 𝑥0 giá trị hàm mục tiêu đều không giảm Khi đó 𝑥0 là nghiệm tối ưu toàn cục của bài toán QHTT chính tắc
Hình 3 Mô tả hình học trường hợp 1 của thuật toán đơn hình
𝑥 0
c
Trang 16ii) Mọi cạnh xuất phát từ 𝑥0, theo đó giá trị hàm mục tiêu giảm, đều là cạnh hữu hạn Đi theo 1 cạnh như thế, ta sẽ đến 1 đỉnh 𝑥1 kề với 𝑥0 mà:
𝑐, 𝑥1 < 𝑐, 𝑥0
Gán 𝑥0 = 𝑥1 và lặp lại quá trình tính toán với đỉnh 𝑥0 mới
Hình 4 Mô tả hình học trường hợp 2 của thuật toán đơn hình
iii) Có một cạnh vô hạn xuât phát từ 𝑥0, theo đó giá trị hàm mục tiêu giảm Khi đó giá trị hàm mục tiêu sẽ tiến đến − theo cạnh này và bài toán không có nghiệm tối ưu
Hình 5 Mô tả hình học trường hợp 3 của thuật toán đơn hình
Trang 171.3.2.2 Thuật toán đơn hình giải bài toán QHTT chính tắc
Bài toán: min {𝑓(𝑥) =< 𝑐, 𝑥 > |𝐴𝑥 = 𝑏, 𝑥 ≥ 0} (𝐿𝑃𝑐𝑡)
(3) Bước 3: (Kiểm tra điều kiện tối ưu)
If ∆𝑘≤ 0 với mọi 𝑘 𝐽(𝑥0) then dừng thuật toán (𝑥0 là nghiệm tối ưu)
Else chuyển sang Bước 4
(4) Bước 4: (Kiểm tra bài toán không có lời giải)
If tồn tại 𝑘 𝐽(𝑥0) sao cho ∆𝑘> 0 và 𝑧𝑗𝑘≤ 0 với mọi 𝑗 𝐽(𝑥0)
Then dừng thuật toán, kết luận bài toán không có nghiệm tối ưu hay
hàm mục tiêu gairm vô hạn trên tập chấp nhận được
Trang 18Else chuyển Bước 5
(5) Bước 5: (Xây dựng phương án cực biên mới)
❖ Tìm véc tơ 𝐴𝑠 để đưa vào cơ sở mới, trong đó chỉ số s được chọn theo tiêu chuẩn
❖ Đặt 𝑥0= 𝑥1 và quay lại Bước 1
Nhận xét: Trong thuật toán trên , sau khi tính được phương án cực biên
mới là 𝑥1 ở Bước 5 ta sẽ quay lại Bước 1 và chạy tiếp thuật toán ứng với cơ
sở của 𝑥1 Công việc này trở nên dễ dàng hơn rất nhiều nếu ta thực hiện theo thuật toán đơn hình dạng bảng
Trang 191.3.2.3 Thuật toán đơn hình dạng bảng
a) Bảng đơn hình:
Bảng đơn hình gồm n+4 cột, để ghi các thông tin về một bước lặp tính toán tương ứng với một phương án cực biên Giả sử 𝑥 =(𝑥10, 𝑥20, … , 𝑥𝑛0)𝑇 là phương án cực biên ứng với bộ chỉ số cơ sở 𝐽𝐵 =𝐽(𝑥0) = {𝑗1, … , 𝑗𝑚} và cơ sở đơn vị 𝐵 = {𝐴𝑗1, … , 𝐴𝑗𝑚} Các thông tin
về 𝑥0 được ghi ở bảng đơn hình xuất phát
b) Thuật toán đơn hình dạng bảng:
▪ Bước 0: (Bước chuẩn bị) Xây dựng bảng đơn hình xuất phát tương
ứng phương án cực biên 𝑥0
▪ Bước 1: (Kiểm tra điều kiện tối ưu) Xét dòng cuối của bảng
If 𝑘 ≤ 0, 𝑘 = 1, … , 𝑛 ; Then dừng thuật toán Kết luận
nghiệm tối ưu là phương án cực biên tương ứng với bảng này
Else chuyển sang Bước 2
Trang 20▪ Bước 2: (Kiểm tra bài toán không có lời giải)
If tồn tại 𝑘 𝐽𝐵, sao cho 𝑘 > 0 và 𝑧𝑗𝑘 ≤ 0 với mọi 𝑗𝐽𝐵,
Then dừng thuật toán (Bài toán không có lời giải)
Else chuyển sang Bước 3
▪ Bước 3: Thực hiện
o Tìm cột quay: Xác định véc tơ 𝐴𝑠 để đưa vào cơ sở mới với chỉ số s thỏa mãn ∆𝑠= max {∆𝑘|∆𝑘> 0} Cột tương ứng với véc tơ 𝐴𝑠 được gọi là cột quay
o Tìm dòng quay: Tính các 𝑗, 𝑗 𝐽𝐵, như sau:
𝜃𝑗 = {
𝑥𝑗
𝑧𝑗𝑠 𝑛ế𝑢 𝑧𝑗𝑠 > 0, 𝑗 ∈ 𝐽𝐵+∞ 𝑛ế𝑢 𝑧𝑗𝑠 ≤ 0, 𝑗 ∈ 𝐽𝐵
Và xác định: 𝜃𝑟 = min {𝜃𝑗|𝑗 ∈ 𝐽𝐵}
Dòng r được gọi là dòng quay, phần tử 𝑧𝑟𝑠 nằm trên giao của
dòng quay và cột quay được gọi là phần tử chính cua phép
quay Các phần tử 𝑧𝑗𝑠 (𝑗 ≠ 𝑟) được gọi là các phần tử quay
▪ Bước 4: (Chuyển bảng mới tương ứng với phương án cực biên mới)
𝑫ò𝒏𝒈 𝒄𝒉í𝒏𝒉 (𝒎ớ𝒊) ≔ 𝑫ò𝒏𝒈 𝒒𝒖𝒂𝒚 (𝒄ũ)
𝑷𝒉ầ𝒏 𝒕ử 𝒄𝒉í𝒏𝒉 ;
Trang 21Biến đổi mỗi dòng còn lại theo quy tắc:
𝑫ò𝒏𝒈 𝒎ớ𝒊: = 𝑫ò𝒏𝒈 𝒄ũ 𝒕ươ𝒏𝒈 ứ𝒏𝒈
− 𝑫ò𝒏𝒈 𝒄𝒉í𝒏𝒉 × 𝑷𝒉ầ𝒏 𝒕ử 𝒒𝒖𝒂𝒚 𝒕ươ𝒏𝒈 ứ𝒏𝒈
Quay lại Bước 1 với bảng mới
1.4 Mô tả về vấn đề phân bổ (Allocation Problem)
Các vấn đề phân bổ liên quan đến việc phân phối tài nguyên giữa các lựa chọn thay thế cạnh tranh nhằm giảm thiểu tổng chi phí hoặc tối đa hóa tổng lợi nhuận
Những vấn đề như vậy có các thành phần sau: một tập hợp các tài nguyên có sẵn với số lượng nhất định; một tập hợp các công việc phải hoàn thành, mỗi công việc tiêu thụ một lượng tài nguyên xác định; và một tập hợp các chi phí hoặc lợi nhuận cho mỗi công việc và tài nguyên Vấn đề là xác định bao nhiêu của mỗi tài nguyên để phân bổ cho mỗi công việc Nếu có nhiều tài nguyên có sẵn hơn mức cần thiết, giải pháp sẽ chỉ ra tài nguyên nào sẽ không được sử dụng, tính đến chi phí liên quan Tương tự, nếu có nhiều công việc hơn mức có thể được thực hiện với các tài nguyên có sẵn, giải pháp sẽ chỉ ra những công việc nào sẽ không được thực hiện, một lần nữa có tính đến các chi phí liên quan
Nếu mỗi công việc yêu cầu chính xác một tài nguyên (ví dụ: một người) và mỗi tài nguyên chỉ có thể được sử dụng cho một công việc, thì vấn đề kết quả là một trong những nhiệm vụ
• Nếu tài nguyên có thể chia hết và nếu cả công việc và tài nguyên được thể hiện theo đơn vị trên cùng một tỷ lệ, thì đó được gọi là vấn đề vận chuyển hoặc phân phối
Trang 22• Nếu công việc và tài nguyên không được thể hiện trong cùng một đơn vị, thì đó là một vấn đề phân bổ chung
Một vấn đề phân công có thể bao gồm việc phân công công nhân đến văn phòng hoặc từng công việc; xe tải cho các tuyến giao hàng; tài xế cho mỗi xe tải; hoặc các lớp học đến mỗi phòng
Một vấn đề vận chuyển điển hình liên quan đến việc phân phối ô tô vận tải đường sắt trống khi cần thiết hoặc giao đơn đặt hàng cho các nhà máy để sản xuất Vấn đề phân bổ chung có thể bao gồm việc xác định máy móc nào sẽ được sử dụng để tạo ra một sản phẩm nhất định hoặc bộ sản phẩm nào sẽ được sản xuất trong nhà máy trong một giai đoạn cụ thể Trong các vấn đề phân bổ, chi phí đơn
vị hoặc lợi nhuận có thể độc lập hoặc phụ thuộc lẫn nhau; ví dụ, lợi nhuận từ việc đầu tư một đô la vào nỗ lực bán hàng có thể phụ thuộc vào số tiền chi cho quảng cáo Nếu việc phân bổ được thực hiện trong một thời kỳ ảnh hưởng đến những giai đoạn tiếp theo, vấn đề được cho là năng động và thời gian phải được xem xét trong giải pháp của nó
1.5 Xác định vấn đề hỗn hợp sản phẩm (The product-mix problem)
Các tính năng của một vấn đề hỗn hợp sản phẩm là có một bộ sản phẩm cạnh tranh với một bộ tài nguyên hữu hạn Nếu có m tài nguyên và n sản phẩm, thì cái gọi là “công nghệ” được mô tả bởi một bảng có m hàng và n cột hệ số công nghệ
Hệ số liên tiếp i, cột j, là số đơn vị tài nguyên i được sử dụng bởi mỗi đơn vị sản phẩm j Các số trong một hàng bảng chỉ đơn giản là các hệ số của một ràng buộc trong bài toán (LP) Trong các vấn đề hỗn hợp sản phẩm đơn giản, những hệ số là không âm Ngoài ra, ràng buộc với mỗi sản phẩm là đóng góp lợi nhuận trên mỗi đơn vị và ràng buộc với mỗi tài nguyên là sự có sẵn Mục tiêu là tìm ra sản xuất
Trang 23bao nhiêu đơn vị của từng sản phẩm (nghĩa là, hỗn hợp) để tối đa hóa lợi nhuận
mà không sử dụng nhiều tài nguyên hơn có sẵn
• Ví dụ về bài toán hỗn hợp sản phẩm:
Ví dụ 1.1 được nêu ở mục 1.1 chính là một ví dụ điển hình cho vấn đề hỗn hợp sản phẩm Ta có có mô hình của bài toán:
max 𝑍(𝑥) = 8000𝑥1+ 12000𝑥2vđk: 300𝑥1+ 500𝑥2 ≤ 200000
10000𝑥1+ 15000𝑥2 ≤ 8000000
𝑥1 ≥ 100
𝑥2 ≥ 200 Bài toán có thể được giải quyết bằng các thuật toán đã nêu trên Ngoài ra, hiện nay Excel đã có cung cấp bộ xử lý Solver trong mục Data, ta có thể dễ dàng cài đặt và thử giải một mô hình (LP) trên nó
Sử dụng Excel để giải quyết bài toán trên:
Nhập những dữ liệu bài toán trực tiếp vào bảng tính Excel, kích hoạt Solver
và điều chỉnh hàm mục tiêu (bằng Max), các biến quyết định (bằng cách đặt By Changing Cells) và các ràng buộc (bằng cách add vào bảng subject to the constraints) Các ô B6 và C6 sẽ trả về số lượng 𝑥1, 𝑥2 tối ưu Kết quả trong những các ô sẽ được điền sau khi chạy Solver Ô đích là Ô D7, cũng là tổng lợi nhuận cực đại Hàng 8-11 mô tả những hạn chế của vấn đề: những hạn chế về năng lực lao động, ngân sách và mong muốn sản xuất tối thiểu của hai sản phẩm 𝑥1, 𝑥2 Cột
D bao gồm các công thức nhân quyết định các biến (Ô B6 và C6) với các hệ số
Trang 24tương ứng của chúng trong mỗi hàng Cột E định nghĩa giá trị bên phải của các ràng buộc này Sử dụng hàm SUMPRODVEL để phát triển hàng và cột, nhân lên
dễ dàng
Hình 6 Minh hoạ trên excel giải bài toán hỗn hợp sản phẩm Sau khi chạy Solver ta có được một giải pháp tối ưu là 𝑥1 = 333,33,
𝑥2 = 200 và lợi nhuận = 5,066,667 ($)
Trang 252 QUY HOẠCH NGUYÊN
Trong thực tế, việc mô hình hóa nhiều vấn đề, bài toán, …, các biến số phải nhận các giá trị nguyên
Đối với những bài toán tối ưu (tìm min, max) với điều kiện ràng buộc là các phương án tối ưu yêu cầu tính nguyên được gọi là bài toán quy hoạch nguyên
cả các thành phần của 𝑥 chỉ nhận các giá trị nguyên
Thông thường 𝐷 ∈ 𝑅𝑛 được xác định bởi các hệ phương trình, bất phương trình với điều kiện bổ sung về tính nguyên của các biến số:
𝑔𝑖(𝑥) = 0 𝑖 = 1, 2, … , 𝑚1
𝑔𝑖(𝑥) ≤ 0 𝑖 = 𝑚1+ 1, … , 𝑚
𝑥𝑗 𝑛𝑔𝑢𝑦ê𝑛, 𝑗 = 1, 2, … , 𝑛1Nếu 𝑛1 = 𝑛 (tất cả các biến đều nguyên) thì bài toán là quy hoạch nguyên hoàn toàn (Pure Integer Programming) Nếu 𝑛1 ≤ 𝑛 (chỉ có một số biến nguyên)
ta gọi là bài toán quy hoạch nguyên bộ phận (Mixed Integer Programming)
Trang 26Nếu các hàm 𝑓(𝑥), 𝑔𝑖(𝑥), 𝑖 = 1, 𝑚̅̅̅̅̅̅ là các hàm tuyến tính thì ta gọi bài toán này là quy hoạch tuyến tính nguyên
2.2 Một số ví dụ thực tế
Ví dụ 1: (Các bài toán với điều kiện không chia cắt được)
Bài toán lập kế hoạch sản xuất, một xí nghiệp dự định sản xuất n loại sản phẩm từ m nguyên liệu, bài toán đặt ra xí nghiệp nên sản xuất bao nhiêu đơn vị sản phẩm mỗi loại để đạt doanh thu lớn nhất Biết rằng: lượng nguyên liệu loại 𝑖 cần để sản xuất một đơn vị sản phẩm loại 𝑗 là 𝑎𝑖𝑗 , 𝑖 = 1, … , 𝑚; 𝑗 = 1, … , 𝑛 trữ lượng nguyên liệu 𝑖 mà xí nghiệp có là 𝑏𝑖 , 𝑖 = 1, … , 𝑚; giá bán một đơn vị sản phẩm loại 𝑗 là 𝑐𝑗 , 𝑗 = 1, … , 𝑛 Khi đó bài toán được phát biểu như sau:
max 𝑓(𝑥) = ∑ 𝑐𝑗𝑥𝑗
𝑛 𝑗=1
𝑣 đ 𝑘 ∑ 𝑎𝑖𝑗𝑥𝑗
𝑛 𝑗=1
≤ 𝑏𝑖, 𝑖 = 1, … , 𝑚
𝑥𝑗 ≥ 0 𝑣à 𝑛𝑔𝑢𝑦ê𝑛, 𝑗 = 1, … , 𝑛
Ví dụ 2: (Các bài toán với điều kiện logic)
Đối với một doanh nghiệp, một nhà quản lý sẽ có không ít những lần phải đưa ra quyết định lựa chọn phương án sản xuất, xây dựng… Chẳng hạn quyết định
áp dụng các phương thức sản xuất mới vào sản xuất, ta thường gặp tình huống sau: Đối với sản phẩm loại 𝑗 hoặc là không sản xuất sản phẩm loại này, hoặc là nếu sản xuất loại này thì phải sản xuất số lưởng 𝑥𝑗 thỏa mãn: 𝑑𝑗 ≤ 𝑥𝑗 ≤ 𝑝𝑗
Trang 27Với bài toán này ta đặt hàm mục tiêu:
𝑦𝑗 = {1 𝑛ế𝑢 𝑠ả𝑛 𝑥𝑢ấ𝑡 𝑠ả𝑛 𝑝ℎẩ𝑚 𝑗
0 𝑛ế𝑢 𝑛𝑔ượ𝑐 𝑙ạ𝑖Ràng buộc logic “Hoặc là 𝑥𝑗 = 0, hoặc là 𝑑𝑗 ≤ 𝑥𝑗 ≤ 𝑝𝑗” được đưa về rng buộc tương đương sau:
𝑥𝑗 − 𝑦𝑗𝑑𝑗 ≥ 0
𝑥𝑗 − 𝑦𝑗𝑝𝑗 ≤ 0
𝑦𝑗 ∈ {0, 1}
Ví dụ 3: (Bài toán với biến số rời rạc)
Trong thực tế, có nhiều trường hợp biến số 𝑥𝑗 chỉ nhận một số giá trị nhất định Chẳng hạn, ta cần xây dựng n nhà máy điện tại n địa điểm khác nhau Gọi
𝑥𝑗 là công suất của nhà máy điện cần xây dựng ở địa điểm 𝑗 và 𝑥𝑗 chỉ có thể lấy một trong các giá trị thuộc tập mức công xuất tiêu thụ chuẩn là:
𝑄𝑗 = {𝑞1𝑗, 𝑞2𝑗, … , 𝑞𝑚𝑗}, 𝑗 = 1, … , 𝑛
Bằng cách đưa vào các biến phụ nhị phân 𝑡𝑖𝑗, ta có rang buộc:
𝑥𝑗 ∈ {𝑞1𝑗, 𝑞2𝑗, … , 𝑞𝑚𝑗}, 𝑗 = 1, … , 𝑛 Tương đương với hệ:
𝑥𝑗 = 𝑡1𝑗𝑞1𝑗+ 𝑡2𝑗𝑞2𝑗 + ⋯ + 𝑡𝑚𝑗𝑞𝑚𝑗,
𝑡1𝑗 + 𝑡2𝑗 + ⋯ + 𝑡𝑚𝑗 = 1, 𝑣à 𝑡𝑖𝑗 ∈ {0, 1}, 𝑖 = 1, … , 𝑚
Trang 28Ví dụ 4: (Bài toán có lệ phí cố định)
Giả sử một nhà máy sản xuất n loại sản phẩm Chí phí sản xuất sản xuất sản phẩm loại 𝑗 gồm lệ phí cố định 𝑘𝑗 (không phụ thuộc sản phẩm 𝑗, chẳng hạn tiền trang thiết bị máy móc, thiết bị sản xuất…) và cước phí một đơn vị sản phẩm là 𝑐𝑗(tiền nguyên vật liệu, tiền thuê nhân công…)
Nếu gọi 𝑥𝑗 là số lượng sản phẩm loại 𝑗 sẽ sản xuất thì chi phí sản xuất sản phẩm 𝑗 là :
𝑓𝑗(𝑥𝑗) = {𝑘𝑗 + 𝑐𝑗𝑥𝑗 , 𝑛ế𝑢 𝑥𝑗 > 0
0, 𝑛ế𝑢 𝑥𝑗 = 0Hàm tổng chi phí để sản xuất n loại sản phẩm là:
𝑓(𝑥) = ∑ 𝑓𝑗(𝑥𝑗)
𝑛 𝑗=1
Giả thiết rằng 𝑘𝑗 > 0, ∀ 𝑗 = 1, … , 𝑛 Khi đó 𝑓(𝑥) là hàm phi tuyến Bài toán trên được mô hình hóa như sau:
min 𝑓(𝑥) 𝑣 đ 𝑘 𝑥 ∈ 𝐷, Trong đó 𝐷 là tập các phương án sản xuất thỏa mãn các rang buộc về nguyên liệu, thị trường, … Giả sử 𝐷 là tập lồi đa diện hay nói các khác tất cả các rang buộc đều là tuyến tính thì bài toán phi tuyến này vẫn rất khó giải
Trang 29Ta có thể đưa bài toán này về bài toán quy hoạch tuyến tính nguyên bộ phận bằng cách đưa các biến phụ nhị phân:
Do 𝐷 là tập hữu hạn các phần tử nên bài toán (IP) luôn có nghiệm tối ưu, tức tồn tại 𝑥𝑜𝑝𝑡 ∈ 𝐷 sao cho 𝑓(𝑥𝑜𝑝𝑡) ≥ 𝑓(𝑥) , ∀𝑥 ∈ 𝐷 Giá trị tối ưu của bài toán này là 𝑓𝑜𝑝𝑡 = 𝑓(𝑥𝑜𝑝𝑡)
Trang 30Ý tưởng của phương pháp nhánh cận: là “chia để trị”, ta chia bài toán thành các bài toán con (I𝑃𝑖):
max 𝑓(𝑥) 𝑣 đ 𝑘 𝑥 ∈ 𝐷𝑖 trong đó: 𝐷 = ⋃ 𝐷𝑖 𝑖 , 𝐷𝑖 ∩ 𝐷𝑗 = ∅
Ta gọi 𝛽(𝐷𝑖) là cận trên của bài toán con (I𝑃𝑖) Đặt 𝛽 = max{𝛽(𝐷𝑖)} Tức
𝛽 là cận trên của bài toán (IP) Khi đó ta có:
max { 𝑓(𝑥) | 𝑥 ∈ 𝐷} ≤ 𝛽
Bước 1: (Chọn tập để chia)
Chọn tập 𝐷𝑖 ∈ 𝐷 là tập chấp nhận được của bài toán quy hoạch nguyên (IPk) mà bài toán này có cận trên 𝛽(𝐷𝑘) lớn nhất trong các bài toán con có tập chấp nhanh được thuộc 𝐷 Gọi 𝑥𝑘 là phương án tối ưu chấp nhận được của bài toán nới lỏng (LPk) (bài toán không cần điều kiện nguyên) tương ứng với bài toán (IPk)
Giả sử 𝑥𝑗𝑘 là một thành phần không nguyên đầu tiên của 𝑥𝑘 Phân hoạch 𝐷 thành hai tập:
𝐷𝑘1 = {𝑥 ∈ 𝐷𝑘|𝑥𝑗 ≤ [𝑥𝑗𝑘 ]}
𝐷𝑘2 = {𝑥 ∈ 𝐷𝑘|𝑥𝑗 ≥ [𝑥𝑗𝑘 ] + 1}
Đặt 𝐷 = (𝐷\{𝐷𝑘}) ∪ {𝐷𝑘1, 𝐷𝑘2} (Danh sách các tập con cần xem xét tiếp theo)
Trang 31Bước 2: (Loại các tập con)
Với mỗi 𝑖 ∈ {1, 2}, giải bài toán quy hoạch nguyên nới lỏng (LPk) Có thể gặp các trường hợp sau:
Trường hợp 1: Bài toán không chấp nhận được 𝐷𝑘𝑖 = ∅ Loại 𝐷𝑘𝑖 khỏi xem xét tiếp theo, tức tập chấp nhận: 𝐷 = 𝐷\{𝐷𝑘𝑖}
Trường hợp 2: Tìm được phương án tối ưu 𝑥𝑘 𝑖 nguyên Cập nhật lại cận dưới 𝛼 = max{𝛼, 𝑓(𝑥𝑘𝑖 )}– giá trị kỷ lục hiện tại Ta có kỷ lục 𝑥̅ thỏa mãn: 𝛼 =𝑓(𝑥̅) Loại 𝐷𝑘𝑖 khỏi xem xét tiếp theo, tức tập chấp nhận: 𝐷 = 𝐷\{𝐷𝑘𝑖}
Trường hợp 3: Tìm được phương án tối ưu không nguyên 𝑥𝑘 𝑖 Khi đó đặt 𝛽(𝐷𝑘𝑖) = 𝑓(𝑥𝑘𝑖 ) là cận trên của bài toán (IPki)
Loại bỏ khỏi 𝐷 tất cả các tập là 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 giá trị kỷ lục hiện tại α (nếu có)
Bước 3: (Kiểm tra điều kiện dừng)
Trường hợp 1: 𝐷 = ∅ => dừng thuật toán và ta có:
𝑓𝑜𝑝𝑡 = α và 𝑥𝑜𝑝𝑡 = 𝑥̅ giá trị tối ưu là giá trị kỷ lục hiện tại, và phương án tối ưu chính là kỷ lục hiện tại)
Trường hợp 2: 𝐷 ≠ ∅ Quay lại bước 1
Trang 322.3.2 Giải thuật Gomory
Bài toán quy hoạch nguyên tuyến tính (IP):
min < 𝑐, 𝑥 >
𝑣 đ 𝑘 𝑥 = (𝑥1, 𝑥2, … , 𝑥𝑛) ∈ 𝐷
𝐷 = {𝐴𝑥 = 𝑏, 𝑥 ≥ 0}
𝑥 𝑛ℎậ𝑛 𝑔𝑖á 𝑡𝑟ị 𝑛𝑔𝑢𝑦ê𝑛 Giải bài toán nới lỏng tương ứng (LP) – bỏ qua điều kiện nguyên ta có phương án tối ưu 𝑥𝑘 với 𝑥𝑗𝑘 là thành phần không nguyên (chú ý giải theo phương pháp đơn hình)
Bước 1: Ta biểu diễn (dòng tương ứng với bảng đơn hình cuối cùng) theo công thức:
𝑥𝑗𝑘 = ∑ 𝑐̅̅̅𝑥𝑗𝑖 𝑖
𝑛 𝑖=1
Trang 33Dòng quay chính là dòng chứa phần tử chính; Cột quay là cột chứa phần tử chính, các giá trị của cột quay là phần tử quay tương ứng
Dòng chính (mới) = Dòng quay (cũ)/ phần tử chính
Dòng mới = dòng chính (mới) – Dòng chính x phần tử quay tương ứng
Bước 3: (Điều kiện dừng)
Trường hợp 1: Phương án tối ưu thu được 𝑥𝑘 với 𝑥𝑗𝑘 đều nhận giá trị nguyên
=> dừng thuật toán và kết luận phương án tối ưu ưu 𝑥𝑘
Trường hợp 2: phương án tối ưu thu được ưu 𝑥𝑘 với 𝑥𝑗𝑘 không nguyên quay lại bước 1
Trang 343 TỐI ƯU TỔ HỢP
Trong khoa học máy tính và toán học, bài toán tối ưu hóa là bài toán tìm kiếm lời giải tốt nhất trong tất cả các lời giải khả thi Bài toán tối ưu hóa có thể chia thành hai loại tùy thuộc vào các biến là liên tục hay rời rạc Bài toán tối ưu hóa với các biến là rời rạc còn được gọi là một bài toán tối ưu tổ hợp Bài toán tối ưu
tổ hợp không quan tâm đến việc xây dựng tất cả các cấu hình như bài toán liệt kê
mà chỉ nhằm xây dựng một cấu hình “tốt” nhất theo một nghĩa nào đấy
3.1 Phát biểu bài toán
Phát biểu một cách tổng quát, mỗi bài toán TUTH có thể phát biểu như sau: Cho một bộ ba (S, f, Ω), trong đó 𝑆 là tập hữu hạn trạng thái (lời giải tiềm năng hay phương án), 𝑓 là hàm mục tiêu xác định trên 𝑆, còn Ω là tập các ràng buộc Mỗi phương án 𝑠 ∈ 𝑆 thỏa mãn các ràng buộc Ω gọi là phương án chấp nhận được Mục đích của bài toán là tìm phương án chấp nhận được 𝑠∗ tối ưu hóa toàn cục hàm mục tiêu 𝑓 Chẳng hạn với bài toán cực tiểu thì 𝑓(𝑠∗ ) ≤ 𝑓(𝑠) với mọi phương án chấp nhận được 𝑠
3.2 Các ví dụ điển hình
3.2.1 Bài toán người du lịch (Traveling Salesman Problem)
Bài toán người du lịch được phát biểu như sau: “Có 𝑛 thành phố (đánh số
từ 1 đến 𝑛) Một người du lịch, xuất phát từ thành thành phố 𝑠, muốn đi thăm tất
cả các thành phố khác, mỗi thành phố đúng một lần, rồi lại quay về nơi xuất phát Giả thiết biết chi phí đi từ thành phố 𝑖 đến thành phố 𝑗 là 𝑐(𝑖, 𝑗), 1 ≤ 𝑖, 𝑗 ≤ 𝑛 Hãy tìm một hành trình cho người du lịch sao cho chi phí của hành trình này là nhỏ nhất”
Trang 35Mỗi hành trình của người du lịch được biểu diễn bằng một hoán vị 𝑋 = (𝑥1, 𝑥2 , , 𝑥𝑛) của {1, 2, , 𝑛} với 𝑥1 = 𝑠 (hoán vị này biểu diễn hành trình
𝑥1 → 𝑥2 → → 𝑥𝑛− 1 → 𝑥𝑛 → 𝑥1) Chi phí của hành trình 𝑋 được tính bằng công thức 𝑐(𝑥1, 𝑥2) + 𝑐(𝑥2, 𝑥3) + + 𝑐 (𝑥𝑛, 𝑥1) Như thế, mô hình toán học của bài toán người du lịch là:
Tìm: 𝑋 𝐷 ∶ 𝑓 (𝑋) → 𝑚𝑖𝑛
Trong đó:
• 𝐷 là tập các hoán vị 𝑋 = (𝑥1, 𝑥2 , , 𝑥𝑛) của {1, 2, , 𝑛} có 𝑥1 = 𝑠 𝑓(𝑋) = 𝑐 (𝑥1, 𝑥2) + 𝑐 (𝑥2, 𝑥3) + + 𝑐(𝑥𝑛, 𝑥1) Tên gọi bài toán người du lịch mang tính chất tượng trưng, nó dùng để gọi chung cho các bài toán có mô hình toán học như trên mặc dù phát biểu có nội dung khác, chẳng hạn bài toán tìm chu trình sản xuất cho một nhà máy hóa chất sao cho chi phí xúc rửa các thiết bị (như
bể chứa, ống dẫn, ), mỗi khi chuyển từ loại hóa chất này sang loại hóa chất khác của chu trình, là ít nhất
3.2.2 Bài toán cái túi (Knapsack Problem)
Hình 6 Bài toán cái túi
Trang 36Bài toán cái túi được phát biểu như sau: “Có 𝑛 đồ vật (đánh số từ 1 đến 𝑛) Với mỗi đồ vật 𝑖, ta biết 𝑝𝑖, vi lần lượt là các trọng lượng và giá trị của vật đó (𝑖 =
1, 𝑛
̅̅̅̅̅) Giả thiết có một cái túi, sức chứa không quá 𝑤 đơn vị trọng lượng Hãy tìm một phương án chọn đồ vật bỏ vào túi để có thể mang đi được sao cho tổng giá trị các vật được mang là lớn nhất”
Một phương án chọn đồ vật là một tập con của tập {1, 2, , 𝑛}, vì thế có thể biểu diễn mỗi phương án như thế như một dãy nhị phân 𝑋 = (𝑥1, 𝑥2 , , 𝑥𝑛) , trong đó 𝑥𝑖 = 1 khi và chỉ khi vật 𝑖 được chọn (𝑖 = 1, 2, , 𝑛)
Tổng trọng lượng của các vật được mang theo phương án này là
𝑝1𝑥1 + 𝑝2𝑥2 + + 𝑝𝑛𝑥𝑛 Điều kiện các vật được chọn mang đi được là điều kiện tổng này không vượt quá 𝑤 (sức chứa của cái túi) Tổng giá trị các vật được mang theo phương án
• 𝐷 là tập hợp các dãy nhị phân 𝑋 = (𝑥1, 𝑥2 , , 𝑥𝑛) thỏa mãn bất đẳng thức 𝑝1𝑥1 + 𝑝2𝑥2 + + 𝑝𝑛𝑥𝑛 ≤ w
• 𝑓(𝑋) = 𝑣1𝑥1 + 𝑣2𝑥2 + + 𝑣𝑛𝑥𝑛
Trang 37Bài toán cái túi có nội dung giống như bài toán của người leo núi trước khi thám hiểm: chọn những vật đem theo sao cho sức anh ta mang được với tổng giá trị sử dụng trong chuyến leo núi là lớn nhất, vì thế bài toán này còn có tên gọi khác
là bài toán của người leo núi
Bài toán người du lịch là ví dụ cho những bài toán tối ưu với mục tiêu là chi phí, còn bài toán cái túi là ví dụ cho những bài toán tối ưu với mục tiêu là hiệu quả
3.3.2 Đánh giá nhánh cận
Trong mô hình duyệt toàn bộ đã trình bày trong mục trước, phương án phải được xây dựng xong rồi mới tính giá của phương án đó để so sánh Điều này dẫn đến việc tính toán khá nhiều Sở dĩ như vậy, vì ta chưa khai thác những đặc điểm của hàm mục tiêu, mà nếu để ý, rất có thể đã phát hiện được phương án đang xây dựng chắc chắn không tốt hơn kỷ lục hiện có, và nếu khẳng định được điều này,
ta có thể chuyển sang xây dựng phương án khác, bỏ qua được một số nhánh tìm kiếm vô ích
Trang 38Giả sử phương án đã xây dựng xong i thành phần 𝑥1, 𝑥2 , , 𝑥𝑖 Dù chưa tính được giá của toàn bộ phương án, nhưng bằng cách nào đó, ta đánh giá được một giới hạn (cận) chung cho những giá trị này (đối với bài toán tìm 𝑚𝑖𝑛 là cận dưới, đối với bài toán tìm 𝑚𝑎𝑥 là cận trên) Nếu cận tính được không tốt hơn kỷ lục hiện
có (đối với bài toán tìm 𝑚𝑖𝑛 là không nhỏ hơn, đối với bài toán tìm 𝑚𝑎𝑥 là không lớn hơn) thì có nghĩa là hướng phát triển của nhánh tìm kiếm này là vô ích, có thể
bỏ qua để xét giá trị khác cho 𝑥𝑖 Việc không xét những giá trị tiếp theo của xi giúp cho loại bỏ được một loạt các nhánh trên cây tìm kiếm Vì thế kỹ thuật đánh giá này có tên gọi là đánh giá nhánh cận (tìm cận tại mỗi nhánh tìm kiếm)
Để đánh giá được nhánh cận, cần có sự xem xét kỹ tính chất của hàm mục tiêu
và điều này không đơn giản Thông thường, cận được đánh giá cố gắng đạt được hai tiêu chí:
• Càng sát với giá trị tối ưu của bài toán càng tốt
• Việc tính cận càng đơn giản càng tốt
Tiêu chí thứ nhất giúp cho việc lùi càng sớm trên cây tìm kiếm, nghĩa là càng cắt được nhiều nhánh trên cây này, tiêu chí thứ hai làm giảm bớt các phép tính trong một vòng lặp đệ quy (mà số lượng lồng nhau của chúng là rất lớn!) Trên thực tế hai tiêu chí này thường xung đột lẫn nhau: để đánh giá cận càng sát, việc tính nó càng phức tạp Việc điều chỉnh hai tiêu chí này cho phù hợp là cả một nghệ thuật, nó đòi hỏi nhiều kinh nghiệm và kiến thức trong việc đánh giá các bất đẳng thức
Trang 393.3.3 Tham lam
Hầu hết các bài toán thực tế có mô hình tối ưu tổ hợp, được giải bằng cách duyệt, dù có đưa đánh giá nhánh cận vào cũng chỉ giảm được thời gian tìm kiếm đến một giới hạn nhất định, trong khi trên thực tế, thời gian chờ đợi kết quả thường
bị khống chế, nếu vượt khoảng thời gian này, kết quả dù có tốt cũng không còn ý nghĩa gì (chẳng hạn những bài toán về dự báo) Đấy là chưa kể việc tìm được một đánh giá nhánh cận thỏa mãn cả hai tiêu chí (vừa sát, vừa đơn giản) là một điều không dễ dàng Vì thế, bên cạnh những phương pháp cho lời giải đúng, người ta còn quan tâm đến những cách giải gần đúng, trong đó nghiệm được tìm là tương đối tốt, có thể chấp nhận được, nhưng thời gian tìm kiếm phải nhanh Một trong những giải pháp để đạt được ý tưởng này là tìm cách tối ưu cục bộ thay cho tối ưu toàn cục Các bài toán tối ưu cục bộ, do kích thước nhỏ, có thể giải bằng cách duyệt để được các phương án tối ưu cục bộ Phương án thu được là sự kết hợp các phương án tối ưu cục bộ đã tìm Nói chung phương án này không phải là tối ưu, nhưng trong một số tình huống nó có thể chấp nhận được Các phương pháp này
có tên gọi chung là các phương pháp tham lam
Nội dung của “tham lam” rất đa dạng, nó phụ thuộc vào việc tổ chức các bài toán cục bộ, hàm mục tiêu của những bài toán này, và sự kết hợp các lời giải cục
bộ để được lời giải cần tìm Một giải pháp tham lam được đánh giá là tốt, nếu phần lớn các tình huống thực tế, nó cho một lời giải sát với phương án tối ưu mà thời gian tìm kiếm vẫn nằm trong phạm vi cho phép Vì thế, bên cạnh việc nghiên cứu
kỹ mục tiêu bài toán, người ta còn để ý khai thác những đặc điểm của những dữ liệu mà thực tế cung cấp, nhờ những đặc điểm này, nhiều khi tìm được những cách tham lam cho hiệu quả cao, phù hợp với những dữ liệu thực tế mà không nhất thiết phù hợp trong những trường hợp tổng quát