1. Trang chủ
  2. » Luận Văn - Báo Cáo

Nghiên cứu một số công nghệ đa nền tảng và áp dụng ứng dụng hỗ trợ học tập

66 11 0

Đ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

Tiêu đề Phát triển thuật toán tối ưu hóa cho các bài toán phân công giảng dạy
Tác giả Nguyễn Trung Kiên
Người hướng dẫn TS. Phạm Quang Dũng
Trường học Trường Đại Học Bách Khoa Hà Nội
Chuyên ngành Công nghệ thông tin
Thể loại Luận văn thạc sĩ
Năm xuất bản 2020
Thành phố Hà Nội
Định dạng
Số trang 66
Dung lượng 686,83 KB

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

Nội dung

L ỜI MỞ ĐẦU Trong thực tiễn để đảm bảo công tác giảng dạy tại các cơ sở đào tạo được hoạt động tốt thì một trong các công việc quan trọng cần thực hiện là việc phân công giảng dạy cho cá

Trang 1

LU ẬN VĂN THẠC SĨ KỸ THUẬT

Phát tri ển thuật toán tối ưu hóa cho các

bài toán phân công gi ảng dạy

NGUY ỄN TRUNG KIÊN Ngành Công ngh ệ thông tin

Vi ện: Công nghệ thông tin và truyền thông

HÀ N ỘI, 2020

Trang 2

LU ẬN VĂN THẠC SĨ KỸ THUẬT

Phát tri ển thuật toán tối ưu hóa cho các

bài toán phân công gi ảng dạy

NGUY ỄN TRUNG KIÊN Ngành Công ngh ệ thông tin

Vi ện: Công nghệ thông tin và Truyền thông

HÀ N ỘI, 2020

Chữ ký của GVHD

Trang 3

Độc lập – Tự do – Hạnh phúc

H ọ và tên tác giả luận văn : Nguyễn Trung Kiên

Đề tài luận văn: Phát triển thuật toán tối ưu hóa cho các bài toán phân công giảng

3 Trình bày làm rõ hơn các ý tưởng thuật toán 3.1, 3.2, 3.3, 3.4,

3.5, 3.6

25-33

4 Bổ sung làm rõ và chỉnh sửa lời chú thích thuật

toán tham lam số 3, số 4, số 5

Trang 4

Phát triển thuật toán tối ưu hóa cho các bài toán phân công giảng dạy

Học viên: Nguyễn Trung Kiên

Người hướng dẫn khoa học: TS Phạm Quang Dũng

Giáo viên hướng dẫn

Ký và ghi rõ h ọ tên

Trang 5

Em xin gửi lời cảm ơn chân thành và sự tri ân sâu sắc đối với các thầy cô

của trường Đại học Bách Khoa Hà Nội, đặc biệt là các thầy cô trong Viện Công nghệ Thông tin và truyền thông của trường đã tạo điều kiện cho em được học tập

và nghiên cứu chuyên ngành công nghệ thông tin Và em cũng xin chân thành cảm

ơn thầy TS Phạm Quang Dũng đã nhiệt tình hướng dẫn, giúp đỡ em hoàn thành khóa luận tốt nghiệp

Với điều kiện thời gian cũng như kinh nghiệm còn hạn chế của một học viên, luận văn này không thể tránh được những thiếu sót Em rất mong nhận được

sự chỉ bảo, đóng góp ý kiến của các thầy cô để em có điều kiện bổ sung, nâng cao

kiến thức của mình, phục vụ tốt hơn trong công việc thực tế

Em xin chân thành cảm ơn!

Tóm t ắt nội dung luận văn

Luận văn được chia thành 4 chương không kể phần mở đầu và kết luận: Chương 1 trình bày cơ sở lý thuyết về bài toán tối ưu tổ hợp, phương pháp quy

hoạch tuyến tính, các hướng tiếp cận và thư viện Chương 2 trình bày về bài toán phân công giảng dạy, mô hình toán học của bài toán Chương 3 trình bày về các thuật toán để giải quyết bài toán và chiến lược của từng thuật toán Chương 4 trình bày về kết quả thử nghiệm và đánh giá đối với các bộ dữ liệu với kích thước và đặc điểm khác nhau

HỌC VIÊN

Ký và ghi rõ họ tên

Nguy ễn Trung Kiên

Trang 6

Độc lập – Tự do – Hạnh phúc

H ọ và tên tác giả luận văn : Nguyễn Trung Kiên

Đề tài luận văn: Phát triển thuật toán tối ưu hóa cho các bài toán phân công giảng

3 Trình bày làm rõ hơn các ý tưởng thuật toán 3.1, 3.2, 3.3, 3.4,

3.5, 3.6

25-33

4 Bổ sung làm rõ và chỉnh sửa lời chú thích thuật

toán tham lam số 3, số 4, số 5

Trang 7

M ỤC LỤC

DANH MỤC CÁC CHỮ VIẾT TẮT ii

DANH MỤC CÁC HÌNH VẼ iv

DANH MỤC CÁC GIẢI MÃ iv

LỜI MỞ ĐẦU 1

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 2

1.1 Bài toán tối ưu tổ hợp và ứng dụng 2

1.2 Các hướng tiếp cận giải bài toán tối ưu tổ hợp 5

1.3 Công nghệ OR-Tools 13

1.4 Thư viện choco 15

CHƯƠNG 2: BÀI TOÁN PHÂN CÔNG GIẢNG DẠY 21

2.1 Mô tả bài toán 21

2.2 Mô hình toán học bài toán phân công giảng dạy 23

CHƯƠNG 3: PHÁT TRIỂN THUẬT TOÁN GIẢI QUYẾT BÀI TOÁN PHÂN CÔNG GIẢNG DẠY 25

3.1 Thuật toán 1 25

3.2 Thuật toán 2 26

3.3 Thuật toán 3 28

3.4 Thuật toán 4 30

3.5 Thuật toán 5 31

3.6 Thuật toán 6 33

CHƯƠNG 4: THỬ NGHIỆM VÀ ĐÁNH GIÁ KẾT QUẢ 35

4.1 Dữ liệu đầu vào 35

4.2 Kết quả kiểm thử và đánh giá 36

TÀI LIỆU THAM KHẢO 56

Trang 8

DANH M ỤC CÁC CHỮ VIẾT TẮT

CBLS Constraint Based Local Search Tìm kiếm cục bộ dựa trên

ràng buộc

LP Linear Programing Quy hoạch tuyến tính

QHTT Quy hoạch tuyến tính Quy hoạch tuyến tính

PATU Phương án tối ưu Phương án tối ưu

SCIP Solving Constraint Integer

Trang 9

DANH M ỤC CÁC BẢNG

Bảng 4 1: Bảng mô tả dữ liệu 36

Bảng 4 2: Kết quả thử nghiệm với thuật toán 1 39

Bảng 4 3: Kết quả thử nghiệm với thuật toán 2 42

Bảng 4 4: Kết quả thử nghiệm với thuật toán 3 44

Bảng 4 5: Kết quả thử nghiệm với thuật toán 4 47

Bảng 4 6: Kết quả thử nghiệm với thuật toán 5 50

Bảng 4 7: Kết quả thử nghiệm với thuật toán 6 51

Bảng 4 8 So sánh kết quả các thuật toán trên bộ dữ liệu input_20182 53

Trang 10

DANH M ỤC CÁC HÌNH VẼ

Figure 1: Ví dụ về bài toán thỏa mãn ràng buộc 16

DANH M ỤC CÁC GIẢI MÃ Giải mã 2 1: Thuật toán số 1 26

Giải mã 2 2: Thuật toán số 2 28

Giải mã 2 3: Thuật toán số 3 29

Giải mã 2 4: Thuật toán số 4 31

Giải mã 2 5: Thuật toán số 5 33

Giải mã 2 6: Thuật toán số 6 34

Trang 11

L ỜI MỞ ĐẦU

Trong thực tiễn để đảm bảo công tác giảng dạy tại các cơ sở đào tạo được

hoạt động tốt thì một trong các công việc quan trọng cần thực hiện là việc phân công giảng dạy cho các giáo viên sao cho vừa đảm bảo về yếu tố chuyên môn, cũng như phù hợp với yêu cầu thực tế của nhà trường

Trong luận văn này, chúng tôi khảo sát bài toán phân công giảng dạy các môn học cho các giáo viên Trong đó yêu cầu của bài toán là đảm bảo số lượng môn học (số tiết) phân công cho từng giáo viên là xấp xỉ nhau, một số các môn học

phải đảm bảo không phân công cho cùng 1 giáo viên vì một số nguyên nhân và

mỗi môn học chỉ phân công cho 1 giáo viên Sau đó chúng tôi đề xuất 6 thuật toán

để giải quyết bài toán trên: 2 thuật toán lập trình tuyến tính trên công cụ Or-Tools

của google, 3 thuật toán tham lam, 1 thuật toán sử dụng quy hoạch ràng buộc trên thư viện Choco Các thuật toán này được cài đặt, thử nghiệm và đánh giá trên các

bộ dữ liệu của viện Công nghệ thông tin và truyền thông Đại học Bách Khoa Hà

Nội và các tổ bộ môn của viện

Luận văn được chia thành 4 chương không kể phần mở đầu và kết luận: Chương 1 trình bày cơ sở lý thuyết về bài toán tối ưu tổ hợp, phương pháp quy

hoạch tuyến tính, các hướng tiếp cận và thư viện Chương 2 trình bày về bài toán phân công giảng dạy, mô hình toán học của bài toán Chương 3 trình bày về các thuật toán để giải quyết bài toán và chiến lược của từng thuật toán Chương 4 trình bày về kết quả thử nghiệm và đánh giá đối với các bộ dữ liệu với kích thước và đặc điểm khác nhau

Trang 12

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 1.1 Bài toán t ối ưu tổ hợp và ứng dụng

Bài toán tối ưu tổ hợp là bài toán 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 mục tiêu nào đó Đây là bài toán có nhiều ứng dụng trong thực tiễn và lý thuyết tổ hợp đã đóng góp một phần đáng kể trong việc xây dựng những thuật toán

hữu hiệu.Bài toán thường xuất hiện trong các lĩnh vực của đời sống xã hội đặc biệt

là các hoạt động quản lý, lập kế hoạch, phân công công việc, điều hành trong các

tổ chức, doanh nghiệp Như bài toán lập đường đi tối ưu trong lĩnh vực giao thông

vận tải [1, 2], bài toán đóng gói hàng hóa [3], bài toán xếp hàng trong các dây chuyền sản xuất [4], bài toán xếp thời khóa biểu trong quản lý đào tạo [5]…

Mục tiêu của các bài toán này là cần tìm ra một lời giải thỏa mãn một tập các ràng buộc đặt ra, đồng thời tối ưu một hoặc nhiều hàm mục tiêu nào đó

Một bài toán tối ưu tổ hợp [6] là một bộ (X,D,C,f) trong đó:

X ={X1,…,Xn} là tập các biến,

D ={D1,…,Dn } trong đó D i là một tập rời rạc thể hiện miền giá trị của X i

C ={C1,…,Ck} là tập các ràng buộc được định nghĩa trên các biến,

f là hàm mục tiêu cần tối ưu Trong nhiều bài toán, yêu cầu đặt ra là tìm lời

giải thỏa mãn ràng buộc, vì vậy hàm mục tiêu f không được quan tâm

Bài toán tối ưu tổ hợp có nhiều ứng dụng trong thực tế, đã và đang thu hút được đầu tư nghiên cứu nhằm giải quyết các vấn đề trong điều hành, sản xuất để tăng sản lượng lao động, tiết kiệm chi phí nguyên liệu và thời gian

Ví dụ về bài toán N-Queen: yêu cầu xếp n con hậu lên một bàn cờ vua

kích thước nxn sao cho không có hai con hậu bất kì nào nằm trong các nước mà

có thể khống chế nhau Khả năng khống chế của mỗi con hậu theo luật cờ vua bao

gồm:

Khống chế những ô cùng hàng hoặc cùng cột

Khống chế những ô thuộc cùng đường chéo

Bài toán N-Queen thuộc vào lớp bài toán tối ưu tổ hợp, có thể được mô tả bằng

mô hình toán học:

Tập n biến quyết định X = {X 1,X2,…,Xn}: Biến X i biểu thị hàng cho con hậu

đứng ở cột i

Trang 13

Miền giá trị D = {D 1,D2,…,Dn } trong đó D i = {1…n} M ỗi biến X i có miền

từ 1 đến n

Tập ràng buộc:

Xi ≠ Xj với i ≠ j: Các con hậu không ở cùng 1 hàng

Xi +i ≠ X j +j v ới i ≠ j: Các con hậu không khống chế theo đường chéo

Xi -i ≠ X j -j v ới i ≠ j: Các con hậu không khống chế theo đường chéo

Quá trình giải bài toán theo hướng tìm kiếm cục bộ dựa trên ràng buộc gồm hai bước chính dựa theo kiến trúc CBLS [7]:

Mô hình hóa bài toán

Định nghĩa các biến quyết định

Xây dựng ràng buộc và hàm mục tiêu

Tìm kiếm

Khởi tạo lời giải ban đầu

Thực hiện lặp: Di chuyển qua các lời giải lân cận

Phân tích bài toán N-Queen với n = 8 theo mô hình CBLS Quá trình mô hình hóa

bài toán dựa theo mô hình toán học đã trình bày ở trên:

Tập biến: Mảng X[i], trong đó X[i] là hàng của con hậu trên cột i

Miền giá trị X[i], D[i] = [0 7]

Tập lời giải lân cận của một lời giải S = {x 1,x2,…x7} gồm mọi lời giải S’ =

xi ≠ yi với một giá trị i duy nhất

xj = yj với mọi j ≠ i

Chỉ có duy nhất một loại bước di chuyển là gán lại giá trị một phần tử X i trong tập

biến Lời giải được khởi tạo ngẫu nhiên Tìm kiếm dừng lại khi không còn vi phạm

Lời giải tiếp theo được lựa chọn ra trong các lời giải lân cận hiện tại theo cách tham lam:

Trang 14

Chọn con hậu ở cột i đang bị khống chế nhiều nhất

Gán lại giá trị X i thành giá trị làm giảm vi phạm nhiều nhất

Ví d ụ về bài toán lập lịch gia công trên 2 máy:

Phát biểu bài toán: “Có n chi tiết (đánh số từ 1 đến n) cần được lần lượt gia công trên hai máy, đầu tiên qua máy A, sau đó mới đến máy B Giả thiết biết thời gian gia công chi tiết i tương ứng trên hai máy A, B là ai và bi (i = 1, 2, , n) Hãy tìm một lịch gia công (thứ tự gia công) để thời điểm hoàn thành tất cả các chi tiết

công tinh (máy B)

Chú ý:

Không có một giả thiết ràng buộc nào giữa các thời gian ai và bi, chúng có

thể bằng, lớn hơn hay nhỏ hơn nhau tại bất cứ chi tiết i nào

Một lịch gia công các chi tiết được biểu diễn như một hoán vị X = (x1, x2, , xn) của tập {1, 2, , n} Giá trị hàm mục tiêu T(X) của lịch X là thời điểm hoàn thành tất cả các chi tiết theo lịch này, nghĩa là thời điểm máy B hoàn thành chi tiết cuối cùng theo lịch X (không mất tính tổng quát, ta có thể xem thời điểm bắt đầu làm việc, nghĩa là Gọi TA(i) là thời điểm máy A hoàn thành chi tiết xicủa lịch X Vì máy A không phụ thuộc máy B nên thời điểm máy A bắt đầu chi tiết

xi là thời điểm nó hoàn thành chi tiết xi − 1, từ đó nhận được công thức truy hồi tính các TA(i) là:

(1) TA(i) = TA(i−1) + ai , i = 1, 2, , n với giá trị ban đầu TA(0) = 0

Gọi TB(i) là thời điểm máy B hoàn thành chi tiết xicủa lịch X Vì máy B chỉ có thể bắt đầu chi tiết xinếu nó đã xong chi tiết xi−1, đồng thời máy A phải xong chi

Trang 15

tiết xi, nghĩa là tại thời điểm muộn nhất của hai thời điểm này Từ đó nhận được công thức truy hồi tính các TB(i) là:

(2) TB(i) = max{TB(i−1), TA(i)} + bi , i = 1, 2, , n với giá trị ban đầu TB(0) = 0 Thời điểm máy B hoàn thành chi tiết cuối cùng TB(n) của lịch X là thời điểm T(X) hoàn thành lịch này

Giá trị T(X) được tính qua các giá trị trung gian TA(i), TB(i) bằng một vòng lặp đơn giản mà ta có thể dễ dàng xây dựng một hàm để tính nó

Như vậy, dưới dạng toán học, bài toán tìm lịch gia công trên hai máy có thể phát biểu như sau:

Tìm X ∈ D : T(X) → min trong đó D là tập các hoán vị của {1, 2, , n} và T(X) được xác định theo các công thức truy hồi vừa trình bày

1 2 Các hướng tiếp cận giải bài toán tối ưu tổ hợp

Các hướng tiếp cận để giải bài toán tối ưu tổ hợp được chia thành 2 loại: hướng tiếp cận giải đúng và hướng tiếp cận giải gần đúng Hướng tiếp cận giải đúng đảm bảo luôn cho lời giải tối ưu nhất, tuy nhiên với các bộ dữ liệu lớn thì

thời gian tính toán là rất lớn Hướng tiếp cận giải gần đúng trong đó có tìm kiếm

cục bộ để giải các bài toán tối ưu tổ hợp kích thước lớn đang được quan tâm nghiên

cứu phát triển vì nó có khả năng tìm ra lời giải chất lượng tốt trong nhiều bài toán kích thước lớn với thời gian giải quyết bài toán phù hợp với thực tế

1.2.1 Hướng tiếp cận giải đúng

Hướng tiếp cận giải đúng bao gồm các kỹ thuật cho phép tìm ra lời giải tối

ưu hoặc chỉ ra lời giải thỏa mãn ràng buộc không tồn tại vì nó duyệt hết các khả năng trong không gian lời giải Phương pháp này bao gồm các thuật toán điển hình như thuật toán nhánh cận hoặc quy hoạnh động, quy hoạch ràng buộc (CP), hay quy hoạch tuyến tính (LP)

Quy ho ạch tuyến tính:

Trong toán học, quy hoạch tuyến tính (QHTT) (tiếng Anh: linear

programming - LP) là bài toán t ối ưu hóa, trong đó hàm mục tiêu (objective

function) và các điều kiện ràng buộc đều là tuyến tính

Trong bài toán này, cho một đa tạp (polytope) (chẳng hạn một đa giác hoặc

một đa diện), và một hàm tuyến tính (affine) nhận giá trị thực xác định trên đa tạp

đó, mục đích là tìm một điểm trên đa tạp tại đó hàm có giá trị nhỏ nhất (hoặc lớn

Trang 16

nhất) Các điểm như vậy có thể không tồn tại, nhưng nếu chúng tồn tại phải tìm được ít nhất một điểm

Ví dụ một số bài toán sử dụng quy hoạch tuyến tính:

Ví dụ 1 Một xí nghiệp cần sản xuất 3 loại bánh: bánh đậu xanh, bánh thập cẩm

và bánh dẻo Lượng nguyên liệu đường, đậu cho một bánh mỗi loại, lượng dự trữ nguyên liệu, tiền lãi cho một bánh mỗi loại được cho trong bảng sau:

Gọi x1, x2 , x3 lần lượt là số bánh đậu xanh, bánh thập cẩm, bánh dẻo cần phải

sản xuất Điều kiện:x j ≥ 0 , j = 1, 2,3 Khi đó

1) Tiền lãi thu được là:f (x) =f (x1 , x2 , x3 ) = 3x1 + 2x2 + 2,5x3 (ngàn)

2) Lượng đường được sử dụng là: 0, 04x1 + 0, 06x2 + 0, 05x3(kg)

Để không bị động về nguyên liệu thì: 0, 04x1 + 0, 06x1 + 0, 05x1 ≤ 500 3) Lượng đậu được sử dụng là: 0, 07x1 + 0, 02x3 (kg)

Để không bị động về nguyên liệu thì: 0, 07x1 + 0, 02x3 ≤ 300 Vậy ta có mô hình bài toán

Bánh thập cẩm

Bánh dẻo

Lượng dự trữ

Trang 17

Ví dụ 2 Giả sử yêu cầu tối thiểu mỗi ngày về các chất dinh dưỡng đạm, đường,

khoáng cho một loại gia súc tương ứng là 90g, 130g, 10g Cho biết hàm lượng các chất dinh dưỡng trên có trong 1g thức ăn A, B, C và giá mua 1kg thức ăn mỗi loại được cho trong bảng sau:

Hãy lập mô hình toán học của bài toán xác định khối lượng thức ăn mỗi loại phải mua để tổng số tiền chi cho mua thức ăn ít nhất nhưng đáp ứng được nhu cầu dinh dưỡng mỗi ngày

Gi ải:

Gọi x1, x2 , x3 lần lượt là khối lượng (g) thức ăn A, B, C cần mua

Điều kiện: x j ≥ 0 , j = 1, 2,3 Khi đó

Tổng khối lượng các chất dinh dưỡng có trong thức ăn cần mua là

0,1x1 + 0, 2x2 + 0,3x3 ≥ 90

0,3x1 + 0, 4x2 + 0, 2x3 ≥ 130

0, 02x1 + 0, 01x2 + 0, 03x3 ≥ 10

Tổng số tiền phải chi để mua số thức ăn trên là 3x1 + 4x2 + 5x3 (đồng)

Yêu cầu bài toán là số tiền chi cho mua thức ăn ít nhất nên ta có điều kiện 3x1 + 4x2 + 5x3 → min

Vậy ta có mô hình bài toán

Trang 18

(2) 0,1x1 + 0, 2x2 + 0,3x3 ≥ 90

0,3x1 + 0, 4x2 + 0, 2x3 ≥ 130

0, 02x1 + 0, 01x2 + 0, 03x3 ≥ 10

(3) x j ≥ 0 , j = 1, 2,3

Phân loại dạng bài toán quy hoạch tuyến tính:

- Dạng tổng quát của bài toán quy hoạch tuyến tính

Bài toán QHTT dạng tổng quát với n ẩn là bài toán có dạng

Mỗi vector x (x1, x2 ,…, xn ) thõa (2) và (3) được gọi là một phương án

(PA) của bài toán

Mỗi phương án x thỏa (1), nghĩa là tại đó hàm mục tiêu đạt giá tị nhỏ nhất

(lớn nhất) trên tập các phương án được gọi là một phương án tối ưu (PATU) của

Trang 19

Nhận xét Bài toán QHTT dạng chính tắc là bài toán QHTT dạng tổng quát trong

đó

• Các ràng buộc chính đều là phương trình

• Các ẩn đều không âm

- Dạng chuẩn của bài toán quy hoạch tuyến tính

Bài toán QHTT dạng chuẩn là bài toán QHTT dạng chính tắc

(1) f (x) = c1x1 + c2 x2 +… + cn xn → max(min)

(2) ai1x1 + ai 2 x2 +…+ ain xn = bi ,i = 1, 2,…, m

(3) x j ≥ 0, j = 1, 2,…, n

Trong đó

• Các hệ số tự do đều không âm

• Trong ma trận hệ số tự do có đủ m vector cột đơn vị: e1 , e2 ,…, em

Khi đó:

• Các ẩn ứng với các vector cột đơn vị được gọi là các ẩn cơ bản Cụ thể

ẩn ứng với vector cột đơn vị ek là ẩn cơ bản thứ k

• Một phương án mà các ẩn cơ bản đều bằng 0 được gọi là phương án cơ

b ản

• Một phương án cơ bản có đủ m thành phần dương được gọi là không suy

bi ến Ngược lại một phương án cơ bản có ít hơn m thành phần dương

được gọi là suy biến

Ta có thể chuyển đồi Bài toán quy hoạch tuyến tính từ dang tổng quát về dạng chính tắc và từ dạng chính tắc về dạng chuẩn

Phương pháp đơn hình giải bài toán quy hoạch tuyến tính dạng chuẩn

Thu ật toán giải bài toán max

Bước lặp thứ nhất (bảng đơn hình thứ nhất)

1) L ập bảng đơn hình xuất phát

Vẽ bảng đơn hình và ghi vào đó các thành phần sau của bài toán dạng chuẩn

Trang 20

• Dòng 1 Ghi các ẩn của bài toán (kể cả ẩn phụ)

• Dòng 2 Ghi các hệ số của các ẩn trong hàm mục tiêu

• Cột 2 Ghi các ẩn cơ bản của bài toán theo thứ tự từ ẩn cơ bản thứ nhất

đến ẩn cơ bản cuối cùng, ta gọi cột này là cột ẩn cơ bản

• Cột 1: Ghi tương ứng các hệ số của các ẩn cơ bản trong hàm mục tiêu,

ta gọi cột này là cột hệ số cơ bản

• Cột 3 Ghi các số hạng tự do của hệ ràng buộc chính theo thứ tự từ trên

xuống dưới, ta gọi cột này là cột phương án

• Cột 4 Ghi ma trận điều kiện A của bài toán

Tính h ệ số ước lượng ∆ j của các ẩn x j ( j = 1, 2,…, n) và ghi tương ứng vào dòng dưới cột 4, với ∆ j được tính theo công thức sau:

j = (cot1) × ( A j ) − (hsx j ) ( hsx j : hệ số của ẩn x j trong hàm mục tiêu)

Chú ý Nếu x j là ẩn cơ bản thì ∆ j = 0

Tính trị số f0 = (cot1) × (cot 3) và ghi dưới cột 3

2) Xác định phương án cơ bản xuất phát

Với bảng đơn hình vừa lập được thì phương án cơ bản xuất phát x0 của bài toán được xác định như sau: Cho các ẩn ở cột 2 nhận giá trị tương ứng ở cột

3, các ẩn còn lại nhận giá trị 0 Trị số của hàm mục tiêu tại phương án cơ bản

xuất phát x0 là f (x0 ) = f0

3) Đánh giá tính tối ưu của phương án cơ bản xuất phát

D ấu hiệu tối ưu Nếu hệ số ước lượng của các ẩn đều không âm,∆ j ≥ 0,∀j thì phương án cơ bản xuất phát x0 là phương án tối ưu của bài toán Thuật toán kết thúc với kết luận: Bài toán có PATU là x0 và GTTU là f (x0 )

Dấu hiệu của bài toán không có PATU Nếu có ẩn không cơ bản x k có hệ

số ước lượng âm và cột điều kiện A k của ẩn đó có các thành phần đều không dương,∆k < 0 và a ik ≤ 0;∀i thì bài toán không có phương án tối ưu Thuật toán kết

thúc với kết luận:

Bài toán không có PATU

Nếu không xảy ra cả hai trường hợp trên thì thuật toán tiếp tục trong bước lặp thứ hai

Trang 21

Bước lặp thứ hai (Bảng đơn hình thứ hai)

Trong tất cả các ∆ j < 0 ta chọn ∆v < 0 nhỏ nhất (ta đánh dấu * cho ∆v < 0 nhỏ

nhất trong bảng) Khi đó, x v là ẩn mà ta sẽ đưa vào hệ ẩn cơ bản Cột A v được

gọi là cột chủ yếu

Thực hiện phép chia lần lượt các số của cột phương án cho các số dương của cột chủ yếu và ghi các thương số λi đó vào cột cuối cùng

Xác định λr = min{λi} (Ta đánh dấu * cho λ r nhỏ nhất trong bảng) Khi đó

x r là ẩn mà ta đưa ra khỏi hệ ẩn cơ bản Dòng có chứa x r được gọi là dòng chủ yếu

Số dương nằm trên dòng chủ yếu và cột chủ yếu được gọi là hệ số chủ yếu

Chú ý Nếu cột chủ yếu chỉ có một số dương thì số dương đó là hệ số chủ yếu, dòng có số dương đó là dòng chủ yếu, ẩn nằm trên dòng chủ yếu là ẩn được đưa ra

Các thành phần còn lại được xác định theo dòng như sau

Dòng chuẩn = Dòng chủ yếu chia cho hệ số chủ yếu

Dòng thứ i = Dòng thứ i (cũ) – aiv.dòng chuẩn (aiv: số nằm trên giao của dòng i và cột chủ yếu)

Các hệ số ước lượng và trị số của hàm mục tiêu trong bảng thứ hai được tính và ghi như bảng thứ nhất

Thu ật toán giải bài toán min

Giải tương tự bài toán max với chú ý sau

i Điều kiện tối ưu: ∆ j ≤ 0,∀j

ii Điều kiện không có PATU: ∃∆k > 0 và a ik ≤ 0,∀i

iii Ẩn được chọn đưa vào: Ẩn ứng với ∆k > 0 lớn nhất

Trang 22

1.2.2 Hướng tiếp cận giải gần đúng

Như đã nói trong mục trên, 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 (greedy)

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

Tìm kiếm cục bộ (Local Search) là phương pháp tìm lời giải tốt hơn từ

những lời giải là láng giềng của lời giải hiện tại bằng cách áp dụng các phép biến đổi cục bộ để sinh ra lời giải láng giềng từ lời giải hiện tại

Để tránh vấn đề tối ưu cục bộ của Local search có thể áp dụng các phương pháp Meta-Heuristic được trình bày sau đây:

- Giải thuật di truyền [6] dựa trên các nguyên lý của tiến hóa như đột biến,

chọn lọc Ý tưởng ban đầu là khởi tạo một quần thể các lời giải Các cặp cá thể

Trang 23

trong quần thể sẽ giao ghép với nhau để tạo ra cá thể mới có đặc tính như cặp cá

thể sinh ra nó Hoặc từ một cá thể đột biến cho ra cá thể khác bằng cách thay đổi

một số đặc tính của cá thể ban đầu Cho đến nay, đã có rất nhiều phương thức được

đề xuất cho quá trình ghép gặp và đột biến áp dụng cho bài toán tối ưu, trong đó

có đề xuất khác thành công như [7], [8], [9]

1.3 Công ngh ệ OR-Tools

OR-Tools là phần mềm nguồn mở để giải quyết các bài toán tối ưu hóa tổ

hợp, nhằm tìm kiếm giải pháp tốt nhất cho một vấn đề trong số rất nhiều giải pháp

khả thi [10]

M ột số bài toán mà OR-Tools hỗ trợ như:

- Định tuyến phương tiện: Tìm các tuyến tối ưu cho các đội xe nhận và giao các gói hàng bị ràng buộc (ví dụ: "xe tải này không thể chứa hơn 20.000 kg" hoặc

"tất cả việc giao hàng phải được thực hiện trong một cửa sổ hai giờ")

- Lập lịch: Tìm lịch trình tối ưu cho một nhóm tác vụ phức tạp, một số nhiệm vụ cần được thực hiện trước các tác vụ khác, trên một bộ máy cố định hoặc các tài nguyên khác

- Đóng gói thùng: Đóng gói càng nhiều loại hàng có kích thước khác nhau càng tốt vào một số thùng cố định với dung lượng tối đa

Trong hầu hết các trường hợp, các bài toán như thế này có vô số giải pháp

khả thi, quá nhiều cho một máy tính để tìm kiếm tất cả Để khắc phục vấn đề này, OR-Tools sử dụng các thuật toán tiên tiến để thu hẹp bộ tìm kiếm, nhằm tìm ra giải pháp tối ưu (hoặc gần với tối ưu)

OR-Tools h ỗ trợ một số vấn đề sau:

- Lập trình các bài toán có các ràng buộc: Một tập hợp các kỹ thuật để tìm

giải pháp khả thi cho một vấn đề được thể hiện dưới dạng các ràng buộc (ví dụ:

một phòng không thể được sử dụng cho hai sự kiện đồng thời hoặc khoảng cách đến các cây trồng phải nhỏ hơn chiều dài của vòi hoặc không quá năm Chương trình truyền hình có thể được ghi lại cùng một lúc)

- Lập trình các bài toán sử dụng quy hoạch tuyến tính: Trình tối ưu hóa tuyến tính Glop của OR-Tools tìm giá trị tối ưu của hàm mục tiêu tuyến tính, được đưa ra một tập hợp các bất đẳng thức tuyến tính dưới dạng các ràng buộc (ví dụ: gán người cho công việc hoặc tìm phân bổ tốt nhất cho một bộ tài nguyên trong

Trang 24

khi giảm thiểu chi phí) Glop và phần mềm lập trình hỗn hợp SCIP cũng có sẵn thông qua cả Google Sheets và Google Apps Script

- Lập trình các bài toán định tuyến xe: Một thư viện chuyên ngành để xác định các tuyến xe tốt nhất dựa vào các ràng buộc cho trước

- Lập trình các bài toán đồ thị: hỗ trợ tìm các đường dẫn ngắn nhất trong

biểu đồ, luồng chi phí tối thiểu, luồng tối đa và phép gán tổng tuyến tính

T ối ưu hóa tuyến tính hay lập trình tuyến tính trên OR-Tools:

T ối ưu hóa tuyến tính (hay lập trình tuyến tính ) là tên được đặt để tính toán

giải pháp tốt nhất cho một vấn đề được mô hình hóa như một tập hợp các mối quan

hệ tuyến tính Những vấn đề này phát sinh trong nhiều ngành khoa học và kỹ thuật (Từ "lập trình" là một từ sai, tương tự như cách "máy tính" từng có nghĩa là

"một người tính toán." Ở đây, "lập trình" chỉ sự sắp xếp của một kế hoạch, thay vì

lập trình bằng ngôn ngữ máy tính.)

Google cung cấp hai cách để giải quyết các vấn đề tối ưu hóa tuyến tính:

thư viện nguồn mở Glop và Dịch vụ tối ưu hóa tuyến tính trong Tập lệnh Google

Apps

- Glop là bộ giải tuyến tính của Google, có sẵn dưới dạng nguồn

mở Chúng ta có thể truy cập Glop thông qua trình đóng gói bộ giải tuyến tính Tools, đây là trình đóng gói cho Glop, cũng như một số bộ giải tối ưu hóa tuyến tính của bên thứ ba khác Để tìm hiểu cách giải quyết vấn đề tuyến tính đơn giản

OR-bằng Glop trong tất cả các ngôn ngữ được hỗ trợ, hãy xem Bắt đầu với OR-Tools

- Các Tối ưu hóa dịch vụ tuyến tính trong Google Apps Script cho phép các nhà phát triển thực hiện cuộc gọi chức năng để giải quyết bài toán tối ưu tuyến tính Nó dựa vào Glop cho các vấn đề tối ưu hóa tuyến tính thuần túy trong đó tất

cả các biến có thể đảm nhận các giá trị thực Nếu bất kỳ biến nào bị ràng buộc là

số nguyên, dịch vụ sẽ sử dụng SCIP , từ Zuse-Institut Berlin

M ột ví dụ đơn giản về việc sử dụng OR-Tools trong lập trình tuyến tính:

Tìm giá trị lớn nhất của 3x + 4y theo các điều kiện sau:

Trang 25

MPVariable x = solver.makeNumVar(0.0, infinity, "x");

MPVariable y = solver.makeNumVar(0.0, infinity, "y");

Định nghĩa các điều kiện:

// x + 2*y <= 14

MPConstraint c0 = solver.makeConstraint(-infinity, 14.0, "c0"); c0.setCoefficient(x, 1);

1.4 Thư viện choco

Quy ho ạch ràng buộc:

Quy hoạch ràng buộc (CP-Constraint Programming) là một hướng tiếp cận

rất tốt để giải quyết các bài toán tối ưu tổ hợp CP được ứng dụng trong việc giải nhiều bài toán tối ưu kinh điển như lập lịch (Scheduling), lập thời khóa biểu (TimeTabling), lập tuyến điều hành xe (Routing), phân công ca trực…

Trang 26

CP là sự kết hợp 2 thành phần cơ bản: Tỉa không gian tìm kiếm và phân nhánh Tỉa không gian tìm kiếm là thao tác sử dụng các ràng buộc để 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 trong mô hình bài toán

Sử dụng các ràng buộc để tỉa không gian tìm kiếm đảm bảo tìm ra được đáp án

thỏa mãn tất cả các ràng buộc bởi lẽ các ràng buộc được xem xét một cách độc lập

và không có sự tương trợ nhau trong qus trình tỉa miền giá trị của các biến [12], [13]

Phân nhánh là chiến lược xắp xếp và rà soát từng giá trị còn lại trong miền giá trị, sau đó thử từng giá trị một để cho đáp án thỏa mãn điều kiện tối ưu

Ví dụ: �𝐷𝐷(𝑥𝑥1) = {1, 2, 3, 4, 5}, 𝐷𝐷(𝑥𝑥𝑋𝑋 = {𝑥𝑥2) = {1, 2, 3}, 𝐷𝐷(𝑥𝑥1, 𝑥𝑥2, 𝑥𝑥3} 3) = {1, 2, 3}

𝐶𝐶1: 𝑥𝑥1 ≤ 𝑥𝑥2; 𝐶𝐶2: 𝑥𝑥3 = 𝑥𝑥1+ 𝑥𝑥2; 𝐶𝐶3: 𝑥𝑥2+ 𝑥𝑥3 = 5

Để giải bài toán này, ta sử dụng phương pháp tỉa không gian tìm kiếm dựa trên ràng buộc Sau khi xét ràng buộc x1 ≤ x2, ta có thể tỉa được giá trị 4, 5 trong

miền giá trị của x1 Tương tự với ràng buộc x1 + x2 = x3, ta có thể loại bỏ được giá

trị 3 trong miền giá trị của x1 và x2 Tiếp đó ta cũng có thể tỉa giá trị 1 trong miền giá trị của x3

Figure 1: Ví d ụ về bài toán thỏa mãn ràng buộc

Như vậy sau khi tỉa, ta có miền giá trị của bộ biến là :

�𝐷𝐷(𝑥𝑥1) = {1, 2}

𝐷𝐷(𝑥𝑥2) = {1, 2}

𝐷𝐷(𝑥𝑥3) = {2, 3}

Trang 27

Với miền giá trị này, ta tiếp tục giải bài toán bằng chiến lược phân nhánh

Ta xét từng biến của x1 Với x1 = 2  x2 ≥ 2 x3 ≥4, như vậy không tìm được x3trong miền giá trị thỏa mãn các ràng buộc Với x1 = 1 Ta có miền giá trị mới

Gi ới thiệu về thư viện Choco:

Choco là một thư viện viết bằng ngôn ngữ Java dung để giải quyết các bài toán thỏa mãn ràng buộc (CSP) Tương tự như Ortools Choco cho phép người dùng xây dựng các ràng buộc cho các biến trong bài toán thông quá các thuật toán được cài đặt và đưa ra các giá trị thỏa mãn yêu cầu hoặc không đưa ra lời giải nếu không

kiểu: IntegerVariable, SetVariable, RealVariable Khi khai báo biến sẽ được giới

hạn miền giá trị theo ý tưởng xây dựng thuật toán

+ Các ràng buộc (Constraint) là đại lượng xác định mối quan hệ giữa các

biến, dựa vào các ràng buộc và giới hạn miền giá trị mà choco đưa ra lời giải cho người dùng

+ Lời giải (Solver) dùng để thực hiện mô hình bài toán và đưa ra một hoặc

tất cả các lời giải thỏa mãn theo yêu cầu của đầu bài

Ho ạt động của thư viện Choco

Model và Solver là 2 thành phần chính của chương trình Choco

Trang 28

Model:

Model được khai báo như một đối tượng :

Model m = new CPModel();

Model = Variables + Expressions + Constraints

(Integer Variable), biến số thực (Real Variable), biến tập hợp (Set Variable) Các

biến được thêm vào trong mô hình thông qua phương thức addVariable của model:

Model.addVariable(var1) hoặc Model.addVariables(var2, var3);

Các loại biến được sử dụng trong Model:

Các loại ràng buộc giữa 2 biến ví dụ như eq, neq, gt, leq, vv

+ Ràng buộc cho 3 biến (Ternary constraint):

Choco cung cấp một số ràng buộc bao gồm 3 biến nguyên như: distanceEQ, distanceNEQ, vv

+ Ràng buộc kênh (Channeling Contraints): ràng buộc lien kết giữa các

mô hình với nhau

+ Ràng buộc cụ thể hóa (Reified Contraints):

+ Ràng buộc chung

Trang 29

L ời giải (Solver)

Solver đọc model, dùng các thuật toán được cài đặt sẵn trong thư viện

hoặc kết hợp thêm để giải yêu cầu của bài toán

- Bi ến trong solver

Các biến được khai báo trong Model dưới dạng như IntegerVariable, SetVaribale, RealVariable Khi đọc Model, Solver lặp lại trên các biến của Model sau đó tạo ra các biến trên Solver tương ứng và các cấu trúc dữ liệu tên miền theo các loại biến trên

- Ràng bu ộc trong solver

Sau khi đọc và tạo ra các biến trong Solver, quá trình đọc sẽ tiếp tục đọc và

tạo ra các ràng buộc trong Solver bằng cách dùng phương pháp gọi makeConstraint

của đối tượng ConstraintManager kết hợp với các loại ràng buộc trong Model Ở bước này có thể tạo ra các biến trong Solver phụ thuộc và các ràng buộc Sau đó các ràng buộc mới được tạo được được thêm vào mạng ràng buộc bên trong

Mỗi ràng buộc trong Solver tóm lược một thuật toán lọc mà quá trình tìm

kiếm khi một bước lan truyền ngược hoặc khi có một sự kiện bên ngoài tác động (như xóa giá trị hay thay đổi ràng buộc) xảy ra ở một biến trong ràng buộc

Có thể tiếp cận ràng buộc trong Solver bằng cách sử dụng getCstr(Constraint c);

M ột ví dụ đơn giản về việc sử dụng Choco trong lập trình quy hoạch ràng bu ộc:

Quay trở lại với bài toán tìm giá trị lớn nhất của 3x + 4y theo các điều kiện sau:

x + 2 y ≤ 14

3x - y ≥ 0

x - y ≤ 2

lần này sẽ sử dụng thư viện Choco để hỗ trợ giải quyết bài toán

Khởi tạo các biến x,y:

IntegerVariable x = Choco.makeIntVar("x",0,9999999);

IntegerVariable y = Choco.makeIntVar("y",0,9999999);

Khởi tạo biến mục tiêu k:

Trang 30

public static void main(String[] args) throws Exception {

Max bca = new Max();

bca.solvechoco2();

Trang 31

CHƯƠNG 2: BÀI TOÁN PHÂN CÔNG GIẢNG DẠY

2.1 Mô t ả bài toán

Trong nhà trường, hoạt động Giảng dạy của giáo viên và Học tập của sinh viên là hai hoạt động cơ bản, quan trọng nhất Trong đó, việc phân công giáo viên

giảng dạy các Mô đun, môn học trong năm học là một trong những công việc quan

trọng và cần thiết để đảm bảo hoạt động giảng dạy của một nhà trường Công việc phân công giảng dạy cho giáo viên là một trong những công việc cần phải được

thực hiện đầu tiên của mỗi năm học

Công việc Phân công giảng dạy cho giáo viên thường phải đảm bảo các yếu

tố sau:

- Xác định được số lượng giáo viên và các Mô đun, môn học cần phân công

giảng dạy trong năm học hoặc học kỳ đó

- Với mỗi giảng viên cần xác định được các Mô đun, môn học mà giáo viên

đó giảng dạy

- Tất cả các môn học đều được phân công có các giáo viên giảng dạy

- Xác định được các môn học không thể phân công cho cùng một giáo viên

để đảm bảo các yếu tố như: thời gian giảng dạy các môn học đó trùng nhau do đó không thể phân cho cùng một giảng viên, hoặc để đảm bảo yếu tố chuyên môn trong việc giảng dạy

- Đảm bảo số tiết (số tín chỉ) phân công cho các giáo viên trong nhà trường, trong các khoa viện phải cân bằng, tránh việc phân công cho một số giáo viên

giảng dạy quá nhiều, một số lại quá ít Tuy nhiên trong một số trường hợp sẽ có sự chênh lệch trong việc phân công vì một số nguyên nhân như: liên quan đến số môn

học giảng dạy được của giáo viên trong năm học hay học kỳ đó, đảm bảo sự ràng

buộc về các môn học không phân công cho cùng một giáo viên …

Để biểu diễn được mô hình bài toán, ta đưa vào các ký hiệu sau:

- Có M giáo viên 0,1, 2, …, M-1

- Có N môn học 0,1, 2,…, N-1, mỗi môn học được phân cho 1 giáo viên

- Mỗi giáo viên i chỉ có thể phụ trách giảng dạy 1 số môn học nào đó tùy thuộc hả năng chuyên môn và được thể hiện bởi tập C(i) trong đó C(i) ⊆ {0,1, , N-1}, i = 0,1, 2, , M-1

- Mỗi môn học i có số tiết là t(i) và có thể được phân công cho giáo viên

Trang 32

trong tập T(i) (T(i) có thể được tính toán dẫn xuất từ C(i))

- S là tập các cặp 2 môn học không thể được phân cho cùng một giáo viên

do 2 môn học này đã được xếp cùng tiết trong thời khóa biểu được xác định từ trước

Ràng bu ộc

- Tổng số tiết (hoặc tổng số môn) được phân công cho mỗi giáo viên phải

nhỏ hơn hoặc bằng β (là số tiết hoặc số môn tối đa quy định có thể phân công cho 1 giáo viên)

- Mục tiêu:

+ Số tiết hoặc số môn phân cho 1 giáo viên phải gần với trung bình số tiết (số môn) trên 1 giáo viên nhất hoặc số môn phân công cho các giáo viên là xấp xỉ nhau

+ Tất cả các môn phải được phân công giảng viên giảng dạy

+ Các cặp môn thuộc tập S không được phân công cho cùng một giáo viên

Ví dụ:

Danh sách các môn học được đánh số từ 0 đến 12 và các môn tương ứng:

Danh sách giáo viên và các môn giáo viên đó có thể giảng dạy:

Giáo viên Danh sách môn có thể dạy

Một trong các phương án có thể phân công giáo viên:

Giáo viên Danh sách các môn học

được phân công Tổng số tiết

Trang 33

2.2 Mô hình toán h ọc bài toán phân công giảng dạy

Các bi ến sử dụng trong mô hình bài toán:

• X[i,t] = 1, nếu giáo viên t được phân công dạy môn i, và X[i,t] = 0, nếu giáo viên t không được phân công dạy môn i

• Y[t] biểu diễn tổng số tiết của các môn được phân cho giáo viên t, t = 0,…,M-1

• β biểu diễn tổng số tiết hoặc số môn học tối đa có thể được phân cho 1 giáo viên

Ngày đăng: 26/04/2021, 10:58

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[6] F.Rossi, P.VanBeek and T.Walsh “Handbook of Constraint Programming”, Elsevier, 2006 Sách, tạp chí
Tiêu đề: Handbook of Constraint Programming
[13] F.Rossi, P.VanBeek and T.Walsh “Handbook of Constraint Programming”, Elsevier, 2006 Sách, tạp chí
Tiêu đề: Handbook of Constraint Programming
[1] Chris Groer, Bruce Golden, and Edward Wasil. A library of local search heuristics for the vehicle routing problem. Math. Prog. Comp. vol. 2, pages 79-101, 2010 Khác
[2] Bruce Golden, S. Raghavan, Edward Wasil. The vehicle routing problem: latest advances new challenges. Springer, 2008 Khác
[3] M. D. Moffitt and M. E. Pollack. Optimal rectangle packing: A meta-CSP approach. In Proceedings of the 16th International Conference on Automated Planning and Scheduling, 2006 Khác
[4] M. Dincbas, H. Simonis, and P. Van Hentenryck. Solving the Car Sequencing Problem in Constraint Logic Programming. In European Conference on Artificial Intelligence (ECAI-88, 1988 Khác
[5] Michael Marte. Models and Algorithms for School Timetabling – A Constraint- Programming Approach. PhD thesis, 2002 Khác
[7] Pascal Van Hentenryck and Laurent Michel. Constraint-based Local Search. The MIT Press, 2005 Khác
[8] A. Le Bouthillier and T. G. Crainic. A cooperative parallel meta-heuristic forthe vehicle routing problem with time windows. Computers Operations Research, 32(7):1685_1798, 2005 Khác
[9] M. Barkaoui J. Berger and O. Br_aysy. A route-directed hybrid genetic approach for the vehicle routing problem with time windows. INFOR, 41:179_194, 2003 Khác
[12] M. Dincbas, H. Simonis, and P. Van Hentenryck. Solving the Car Sequencing Problem in Constraint Logic Programming. In European Conference on Artificial Intelligence (ECAI-88, 1988) Khác

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w