MỞ DAU
Tối ưu tổ hợp là một lớp bai toán xuất hiện rất nhiều trong các lĩnh vực của đời sống bao gồm xếp lịch, xếp thời khóa biểu, điều hành xe, phân bé tài nguyên Nhiều hướng tiếp cận khác nhau đã được nghiên cứu đề xuất để giải các bài toán tối ưu tổ hợp
bao gồm quy hoạch nguyên tuyến tính (Integer Linear Programming), quy hoạch ràng
buộc (Constraint Programming), tìm kiếm cục bộ (Local Search), tính toán tiến hóa (Evolutionary Computation) Hiện nay, phương pháp tiếp cận Constraint Programming
để giải các bài toán tối ưu tổ hợp đang thu hút sự quan tâm mạnh mẽ Phương pháp tiếp
cận Constraint Programming đặc biệt hiệu qua với các bài toán kích thước nhỏ nhưng córât nhiêu ràng buộc cân được thỏa mãn đông thời nhu câu thực tê đòi hỏi cân đưa ra lời
zsoe ke
Hiện nay có rat nhiều công cu dé giải các bai toán tối ưu tổ hợp theo hướng tiếp
cận Constraint Programming Một trong số đó là công cụ CHOCO, đây là công cụ đã được xây dựng và tiếp tục dang được phát triển dé hỗ việc giải quyết các bài toán tối ưu tô hợp Với đề tài “Sử dụng Quy hoạch ràng buộc và bộ công cụ CHOCO vào việc giải các bài toán tối ưu tổ hợp”, chúng tôi sẽ tập trung nghiên cứu phương pháp quy hoạch rang buộc và bộ công cụ CHOCO dé giai cac bai toan tối ưu tổ hợp, từ đó xây dựng các phần mềm có ứng dụng trong thực tiễn dựa vào các bài toán tôi ưu tổ hợp này.
Luận văn sẽ sử dụng bộ công cụ CHOCO 3.2 dé giải các bai toán tối ưu tổ hợp
theo hướng quy hoạch ràng buộc, từ đó nêu lên những mặt tích cực và hạn chế của bộ công cụ cũng như hướng tiếp cận trong việc giải các bài toán tối ưu tổ hợp
Nội dung luận văn trình bày bao gồm những van dé chính sau đây:
- Trình bày các bài toán thỏa mãn ràng buộc, bài toán tối ưu tổ hợp và các ứng dụng của bài toán tối ưu tổ hợp trong thực tế Trình bày phương pháp tiếp cận quy hoạch ràng buộc trong việc giải các bài toán tối ưu tô hợp.
- Trình bay sơ lược về thư viện CHOCO 3.2 và cách sử dung Sử dụng quy hoạch ràng buộc và công cụ CHOCO 3.2 dé giải một số bài toán tối ưu tổ hợp điển hình.
- Xây dựng ứng dụng xếp thời khóa biểu cho một khóa học đặc biệt của trường PHBKHN bằng cách sử dụng phương pháp quy hoạch ràng buộc và bộ công cụ CHOCO
3.2 Đánh giá vai trò của việc thiết lập chiến lược tìm kiếm trong ứng dụng này.
Trang 2Cụ thé những nội dung này sẽ được trình bay theo từng chương như sau:
Chương 1 Quy hoạch ràng buộc: Nội dung chương này sẽ trình bày về các bài toán thỏa mãn ràng buộc, bài toán tối ưu tổ hợp và một số ứng dụng trong thực tế của bài toán tối ưu tổ hợp như: điều hành xe (Vehicle Routing), phân công ca trực (Nurse Rostering), xếp thời khóa biểu (Timetabling) Trình bay cơ sở lý thuyết của phương pháp tiếp cận
quy hoạch ràng buộc trong việc giải các bài toán tối ưu tổ hợp.
Chương 2 Thư viện Choco 3.2: Nội dung chương này sẽ trình bày cách sử dụng công cụ
CHOCO 3.2 và cách sử dụng công cụ CHOCO 3.2 để xây dựng chương trình giải một số bài toán tối ưu tô hợp điển hình bằng phương pháp tiếp cận quy hoạch ràng buộc như bài toán hình vuông ma thuật, n quân hậu.
Chương 3 Ứng dụng CHOCO vào việc giải bài toán xếp thời khóa biểu chương
trình đào tạo đặc biệt của trường ĐHBKHN: Nội dung chương này sẽ giới thiệu về bài toán xếp thời khóa biéu của khóa học đặc biệt của trường DHBKHN, từ đó xây dựng mô
hình toán học của bài toán Sử dụng công cụ CHOCO để xây dựng chương trình xếp thời khóa biểu theo hướng quy hoạch ràng buộc Đánh giá vai trò của việc thiết lập chiến lược
vào bài toán trên.
Kết luận: Phần này sẽ trình bày những kết quả đạt được của luận văn, đồng thời cũng chỉ ra những hạn chế và hướng phát triển tương lai.
Trang 3CHƯƠNG 1: QUY HOẠCH RÀNG BUỘC
1.1 Mớ đầu
Tối ưu hóa được khởi nguồn như một ngành của Toán học Hiện nay có rất nhiều ứng dụng hiệu quả và rộng rãi trong quy hoạch tài nguyên, thiết kế chế tạo máy, điều khiển tự động, quản trị kinh doanh, kiến trúc đô thị, công nghệ thông tin, trong việc tạo nên các hệ hỗ trợ ra quyết định trong quản lý và phát trién các hệ thống lớn Chính vi vậy, các lĩnh vực của tối ưu hóa ngày càng trở nên đa dạng, mang nhiều tên gọi khác nhau như quy hoạch toán học, điều khiển tối ưu, vận trù học, lý thuyết trò chơi,
Bên cạnh tối ưu hóa thì lý thuyết tổ hợp cũng là một phần quan trọng trong lĩnh
vực toán học, nó chuyên nghiên cứu sự phân bố các phần tử vào các tập hợp Thông thường các phần tử này là hữu hạn và việc phân bố chúng phải thoả mãn những điều kiện
nhất định nào đó, tùy theo yêu cầu của bài toán cần nghiên cứu Mỗi cách phân bố như vậy gọi là một cấu hình tô hợp Chủ đề này đã được nghiên cứu từ thé kỷ 17, khi những
câu hỏi về tổ hợp được nêu ra trong những công trình nghiên cứu các trò chơi may rủi Liệt kê, đếm các đối tượng có những tính chất nào đó là một phần quan trọng của lý
thuyết tổ hợp Chúng ta cần phải đếm các đối tượng để giải nhiều bài toán khác nhau Hơn nữa các kỹ thuật đếm được dùng rất nhiều khi tính xác suất của các biến có.
Vì vậy bài toán tối ưu hóa tổ hợp là một lớp bài toán xuất hiện rất nhiều trong các
lĩnh vực của đời sống bao gồm như việc xếp lịch, xếp thời khóa biểu, điều hành xe, phân
bổ tài nguyên,
Hiện nay, có nhiều hướng tiếp cận khác nhau để giải các bài toán tối ưu tổ hợp
- Quy hoạch nguyên tuyến tinh (Integer Linear Programming).
- Quy hoạch ràng buộc (Constraint Programming).
- Tim kiếm cục bộ (Local Search).
- Tinh toán tiến hóa (Evolutionary Computation)
Dé chúng ta có một cách nhìn tong quan về bài toán tối ưu tô hợp hướng tiếp cận quy hoạch ràng buộc thì trong chương 1 của luận văn sẽ đi trình bày một số nội dung cơ
bản như sau:
- Trinh bày về các bai toán thỏa mãn ràng buộc va bai toán tôi ưu tô hợp.
Trang 4- Các bài toán tối ưu tổ hợp điển hình và ứng dụng của bài toán tối ưu tổ hợp
trong thực tế; Phương pháp tiếp cận quy hoạch ràng buộc vào việc giải các bài toán tối ưu tổ hop.
1.2 Bài toán tôi ưu tổ hop
1.2.1 Bài toán thỏa mãn ràng buộc
Định nghĩa cô điển về bài toán thỏa mãn ràng buộc như sau Một bài toán CSP gồm3 thành phan (X, D, C) trong đó:
° X làn bộ biến (Variables): X= {x, X2, , Xn}
° D là miền giá trị (Domains): D= {D,, Dạ, , D,} trong đó D; là miền gia tri của
D, và nhận các gia tri rời rac
° C là tập ràng buộc (Constraints): C= {C,, Co, , Cy}
Vi du: Bài toán n-quân hậu
Bài toán n- quân hậu có thể coi là bài toán kinh điển nhất trong quy hoạch thỏa mãn ràng buộc, bởi vì nó có nhiều đặc tính mang tính đặc thù trong CSP, từ đó các nhà
nghiên cứu có thé vận dụng vào việc tìm hiểu các kỹ thuật chung cho CSP.
Chúng ta cần xếp n quân hậu vào ban cờ vua n*n với n>2 sao cho chúng không tấn công lẫn nhau Ở đây, chúng ta dé dàng chuyền đổi sang quy hoạch thỏa mãn ràng buộc CSP như sau:
- Variables: X={x\, X2, ,%,} một biến đại điện cho một cột - Domains: Cho tất cả các biến x;€ X, D(œ,j={1,2, , n}
- Constraints: là tập hợp các rang buộc:
o_ Mỗi quân hậu phải ở trên một dòng
= Vij: X#x;
o Không có bat kỳ 2 quân hậu nào cùng nằm trên một đường chéo = Nêu Xi + i x Xj va Xj-1 x xp J
1.2.2 Bài toán toi wu tổ hợp
Một bài toán tối ưu tổ hợp COP=(X, D, C, f) được định nghĩa bởi:
e Xlàn bộ biến (Variables): X= {x\, %2, , X„};
Trang 5e Dlà miền gia tri (Domains): D= {D\, Dạ, , D,} trong đó D; là mién gia tri cua X;
và là tap các gia tri rời rac;
e Cla tập các ràng buộc (Constraints) giữa các biến;
e ƒlà hàm mục tiêu của bài toán tối ưu tô hợp cần cực tiêu hoặc cực đại Gọi Š là tập tất cả các phương án khả thi của bài toán.
S= {s=Œx, vị), , (X„ 9„) |v; € D, là giá tri gan cho X;, s thỏa mãn tat cả các ràng
buộc C};
Mỗi phan tử của S có thé được xem như là một giải pháp ứng viên của bài toán tối ưu tô hợp Dé giải quyết bài toán tối ưu tổ hợp người ta cần phải tìm một lời giải s € S với giá trị hàm mục tiêu đạt giá trị nhỏ nhất (hoặc lớn nhất) tức là: f(s )“ƒ(s) (hoặc
fis J>f(s)) Vs€ S vas được gọi là giải pháp tối ưu toàn cục của bài toán.
- Nếu mục tiêu của bài toán là chi phí thì giải pháp càng tốt nếu giá của nó càng
nhỏ, như thế giải pháp tốt nhất là giải pháp có giá nhỏ nhất tức là hàm mục tiêu đạt giá trị
nhỏ nhất Bài toán này ta gọi là bài toán tìm min.
- Nếu mục tiêu là hiệu quả thì giải pháp càng tốt nếu giá của nó càng lớn, như thé
giải pháp tốt nhất là giải pháp có giá lớn nhất Bài toán này ta gọi là bài toán tìm max.
1.2.3.Một số bài toán toi wu tổ hợp điển hình
1.2.3.1 Bai toán người du lịch
Bài toán người du lịch TSP=(X, D, C, f) được xác định bởi: - Bộ biến: X= {xị, xs„ , X„};
- Miễn giá trị: D= {D,, Do, , Dạ}, Dị ={1, 2, , n} ViE [1, n]: - C là tập các ràng buộc giữa các biến:
©_ xị= x„= s với s là thành phố xuất phát;
o x, Fx, V/€C[I,n-l];
- f= p(x, X2) + pO, X3) + + p(x„, xị) đạt gia trị nhỏ nhất.
Gọi Š là tập tất cả các phương án khả thi của bài toán.
S = {s={(X1, v1), , Xs Vn) Hv;€D,, s thỏa mãn tất cả các rang buộc C};
Tim s € S sao cho f(s ) = f(s) Vs ES.
Trang 61.2.3.2 Bài toán cái túi
Bài toán cái túi P=(X, D, C, f) được xác định bởi: - Bộ biến: X= {x1, xạ, , Xn};
- Miền giá tri: D= {D\, D>, , D„}, D; ={0, 1} Vi€ [1, n];
- Rang buộc C: pixị + pox + + D„X„Š W;
- = tx, + fax; + + t„x„ đạt giá trị lớn nhất.
Gọi S là tập tất cả các phương án khả thi của bài toán.
S = {s={(xX1, Vị), , Xp Vp) Hv;€D,, s thỏa mãn tất cả các ràng buộc C}; Tìm s € S sao cho f(s J=f(s) Vs € S.
1.3 Ứng dung của bài toán tối ưu tổ hợp trong thực tế 1.3.1 Bài toán điều hành xe
Bài toán điều hành xe (Vehicle Routing Problem — VRP) là bài toán mà trong đó ta có sẵn một tập các xe và một tập các khách hàng, mỗi khách hàng yêu cầu một số lượng hàng nhất định, yêu cầu của bài toán là phải phân phối hàng và tìm đường đi cho các xe dựa trên một số mục tiêu cho trước sao cho tất cả các khách hàng đều phải được giao hàng, một trong những mục tiêu phổ biến nhất là tổng thời gian vận chuyền của tất cả các
xe là nhỏ nhất Bài toán VRP là bài toán NP- khó và đây là một trong những bài toán có
ứng dụng thực tế rất rộng lớn
1.3.2 Bài toán phân công ca trực
Bài toán phân công ca trực hay còn được gọi là bài toán xếp lịch y tá (Nurse Rostering Problem— NRP) thuộc lớp bài toán NP- khó và là bài toán được đưa ra nhằm mục đích quản lý các y tá và ca làm việc trong các bệnh viện hiện nay Yêu cầu của bài toán là phân công các y tá vào những ca làm việc có đặc điểm khác nhau với số lượng y tá là rất giới hạn và họ có những kỹ năng cũng như hợp đồng làm việc khác nhau, trong khi phải thỏa mãn rất nhiều quy tắc của bệnh viện, môi trường làm việc, các luật và những sở thích cá nhân Do vậy, bài toán NRP có rất nhiều các ràng buộc cụ thé và không đồng
nhat, nên rat khó đê giải quyét các bài toán này một cách hiệu qua
Trang 71.3.3 Bài toán lập thời khóa biểu
Bài toán xếp thời khóa biéu (TimeTabling) là một trường hợp riêng của bài toán lập lich (Scheduling) và là bài toán thuộc lớp NP- khó Bài toán xếp thời khóa biểu cho một tập lớp hoc, tập giáo viên, tập môn học (hoặc tập môn thi), tập phòng học, và một tập các ràng buộc như: ràng buộc về đối tượng tham gia; ràng buộc về tài nguyên phục vụ giảng day; ràng buộc về thời gian Van dé đặt ra của bài toán là phải tìm ra phương án thỏa mãn tất cả các ràng buộc trên đồng thời khai thác hiệu quả nguồn tài nguyên phục
vụ giảng dạy
1.4 Quy hoạch ràng buộc 1.4.1 Tổng quan
Quy hoạch ràng buộc (Constraint Programming — CP) là một hướng tiếp cận mạnh để giải các bài toán tối ưu tổ hợp CP là sự giao thoa giữa trí tuệ nhân tạo, khoa học máy tính và vận trù học (Operations Research) CP đã được áp dụng trong việc giải nhiều bài toán tối ưu kinh điển như lập tuyến điều hành xe (Vehicle Routing), lập lịch (Scheduling), phân công ca trực (Nurse Rostering), lập thời khóa biểu (TimeTabling), CP là sự kết hợp giữa hai thành phan cơ bản là tia không gian tìm kiếm (Constraint Propagation) và phân nhánh (Branching) Tia không gian tìm kiếm là cơ chế sử dụng các ràng buộc của bài toán dé loại bỏ bớt các giá trị không phù hợp trong miền giá trị của các biến mô hình bài toán Sử dụng các ràng buộc dé tỉa không gian tìm kiếm không đảm bảo tìm ra được lời giải thỏa mãn tất cả các rang buộc bởi lẽ các ràng buộc được xem xét một các độc lập với nhau và không có sự tương trợ nhau trong quá trình tỉa miền giá trị của các biến Khi đó, chúng ta phải sử dụng các chiến lược phân nhánh dé tìm kiếm lời giải Việc phân nhánh thông thường là thử lần lượt các giá trị còn lai trong miền giá trị của một biến nào đó và gán giá trị cho biến đó.
1.4.2 Dùng các ràng buộc để tỉa không gian tìm kiếm
1.4.2.1 Một số khái niệm và ký hiệu
1.4.2.2 Các kỹ thuật toàn vẹn
1.4.2.2.1 Toàn vẹn miễn giả trị
1.4.2.2.2 Toàn vẹn Forward Checking
Trang 81.4.2.2.3 Sơ đồ tổng quát thuật toán AC3
1.4.3 Tìm kiém quay lui
1.4.3.1 Định nghĩa
1.4.3.2 Ví dụ
1.4.3.3 Chiến lược tìm kiếm
Chọn biến (Variale Selection): Nguyên tắc first-fail là nguyên tắc thử những biến có khả năng sai nhiều nhất tức là biến đó không thỏa mãn các ràng buộc.
- Dom heuristic: chọn biến có miền gia tri nhỏ nhat.
- Deg heuristic: chon biến tham gia nhiều ràng buộc nhất - Dom + deg heuristic: kết hợp 2 phương án trên.
dom 5 k
nho nhat.
- Dom/ deg heuristic: chọn biến có thương deg Chon gia tri (Value selection):
- Best- first principle: Chon những giá trị có khả năng đúng nhiều nhất tức là giá
trị đó là lời giải thỏa mãn bài toán.
- Possiblities:
o Thử những giá trị theo thứ tự tăng dan o_ Thử những giá trị theo thứ tự giảm dần.
o Thử những giá tri nam ở giữa miễn giá tri.
Trang 9CHƯƠNG 2: THƯ VIỆN CHOCO 3.2
2.1 Giới thiệu
2.1.1 Khái niệm
2.1.2 Một số đối twong Choco 3.2 cơ bản
2.1.2.1 Mô hình lập trình
2.1.2.2 Một số hàm sinh trong Choco 3.2 2.1.2.3 Đối tượng trong Choco 3.2
2.1.2.4 Biến trong Choco 3.2
2.1.2.4.1 IntegerVariable (biến số nguyên) 2.1.2.4.2 RealVariable (biến số thực)
2.1.2.4.3 SetVariable (Biến tập hợp)
2.1.2.5 Rang buộc (Constraint)
2.1.2.5.1 Ràng buộc với một biến số nguyên, biến tập hợp, biến số thực 2.1.2.5.2 Rang buộc bao gồm hai biến số nguyên hoặc hai biến tập hợp 2.1.2.5.3 Rang buộc bao gồm ba biến số nguyên
2.1.2.5.3 Rang buộc bao gồm một số lượng biến số nguyên hoặc biến tập hợp không xác 2.1.2.8 Vấn dé tối ưu hóa
2.1.2.8.1 Việc tìm kiếm một giải pháp tối wu 2.1.2.8.2 Tìm kiếm tat cả các giải pháp tối wu
Trang 102.2 Sử dụng Choco 3.2 để xây dựng chương trình giải bài một số bài toán tối wu tô hợp theo hướng tiếp cận quy hoạch ràng buộc
2.2.1 Bài toán hình vuông ma thuật
2.2.1.1 Phát biểu bài toán
Cho các số nguyên dương có giá trị từ 1 đến n° Hãy sắp xếp các số trên vào các 6
của ma trận vuông có kích thước n*n sao cho tổng các hàng, các cột và 2 đường chéo
Trang 11CHƯƠNG 3: ỨNG DỤNG CHOCO VÀO VIỆC GIẢI BÀI TOÁN
XÉP THỜI KHÓA BIEU CHƯƠNG TRÌNH ĐÀO TẠO ĐẶC BIỆT CUA TRƯỜNG DHBKHN
3.1 Giới thiệu bài toán xếp thời khóa biểu
Bài toán xếp Thời khóa biểu luôn là một bài toán khó, mang tính khoa học đồng thời mang tính thực tiễn rất cao Trên thé giới, bài toán Thời khóa biểu (Time Table
Problem) đã được rất nhiều các nhà khoa học quan tâm, nghiên cứu Riêng đối với Việt
Nam, đặc biệt trong các trường Đại học, các trường phổ thông, từ lâu việc xếp thời khóa biểu đã trở thành một van đề có tính thời sự, một bài toán gây được sự chú ý, quan tâm
của nhiều người.
Trường DHBKHN có rất nhiều hệ đào tạo như hệ chính quy, hệ đảo tạo liên kết hợp tác quốc tế, hệ đào tao Việt-Nhật, hệ đào tạo ICT, trong đó việc xếp thời khóa biểu cho hệ đào tạo chính quy được được ưu tiên thực hiện trước và sẽ không được phép thay đổi Các giảng viên sau khi được phân công vào thời khóa biểu chính quy thì sẽ có một số buổi trống trong tuần dé có thé tham gia giảng day cho các chương trình đặc biệt Ở
chương trình đảo tạo đặc biệt, trong mỗi học kỳ, mỗi lớp sẽ có một danh sách các mônphải học, mỗi môn đã được khoa/viện phân công trước giáo viên giảng dạy Các phòng học sẽ không cô định theo từng lớp học đo các phòng chỉ có một số buổi trống trong tuần dé có thé bố trí cho các lớp của khóa học đặc biệt Day là nét khác biệt cơ bản của bài
toán xếp thời khóa biểu cho hệ đào tạo đặc biệt của trường DHBKHN so với các bài toán xếp thời khóa biểu kinh điển [12] đã được nghiên cứu giải quyết bởi công động nghiên
cứu trước đó Một Thời khóa biểu chấp nhận được phải đáp ứng được tất cả các ràng buộc
- Rang buộc về ngày hoc: Một tuần có 5 ngày đi học, từ thứ 2 đến thứ 6 Thứ 7 và
chủ nhật là ngày nghỉ nên chương trình không xếp lịch học vào 2 ngày này.
- Nàng buộc về số tiết môn học: Một buôi học có 6 tiết học, vì vậy cần đảm bảo môn học được xếp sao cho khi kết thúc môn học đó không bước sang tiết thứ 7.
- Rang buộc về môn học trên cùng một lớp: Thời gian học của 2 môn học bất kỳ
trên một lớp không bị trùng tiết học với nhau.