Professional Documents
Culture Documents
BÁO CÁO NGHIÊN CỨU BÀI TOÁN LẬP LỊCH
BÁO CÁO NGHIÊN CỨU BÀI TOÁN LẬP LỊCH
(INTEGER PROGRAMMING)
MSSV: 20225583
Là một trong nhưng dạng quy hoạch của tối ưu hóa toán học, trong đó một vài hoặc toàn bộ các
biến được giới hạn thành số nguyên dựa trên yêu cầu của bài toán.
Đặc biệt, ở đây bài toán lập lịch được tối ưu với dạng
2. Bài toán
a. Dữ liệu đầu vào: (index based 0)
N là số lớp thi
M là số phòng thi
Danh sách class_size là số học sinh của từng lớp với class_size[i] là số học sinh
của lớp (i+1)
Danh sách capacity là sức chứa của từng phòng với capacity[j] là sức chứa của
phòng (j+1)
K cặp lớp thi không thể tổ chức thi trong cùng 1 slot thi
Danh sách conflict có K phần tử là K cặp lớp không thể tổ chức thi trong cùng 1
slot
b. Mô hình hóa bài toán
Biến sử dụng là biễn xijk có giá trị bằng 1 hoặc bằng 0 trong đó:
X = 1 lớp học ‘i’ ĐƯỢC thi vào slot ‘j’ phòng ‘k’
X = 0 lớp học ‘i’ KHÔNG ĐƯỢC thi vào slot ‘j’ phòng ‘k’
‘i’ có giá trị trong khoảng từ (1 đến N) ( tương đương với số lớp thi)
‘j’ có giá trị trong khoảng từ (1 đến N) ( tương đương với số lớp thi -> tình huống
tệ nhất là mỗi lớp thi được thi vào một slot khác nhau)
‘k’ có giá trị trong khoảng từ (1 đến M) tương đương với số phòng thi
c. Các ràng buộc (chúng ta sẽ nói đến các ràng buộc trước)
i. phòng thi phải đủ sức chứa cho lớp thi
Với mỗi cặp số i và k (tức phòng thi i+1 và k+1 tương ứng, nếu:
Capacity[k] ≥ class_size[i] (đủ sức chứa) => xijk {0,1}
Capacity[k]< class_size[i] (không đủ sức chứa => xijk = 0
ii. Tất cả phòng thi đều thi và chỉ thi đúng 1 lần
Xét từng lớp thi i ta đặt ràng buộc sau
N−1 M −1
∑ ∑ xijk =1
j=0 k=0
∑ ∑ xc 1 jk+ ∑ ∑ xc 1 jk=1
j=0 k=0 j=0 k=0
Tức là chỉ có biến trong số đó có giá trị bằng 1
iv. Tại mỗi slot, mỗi phòng thi chỉ được sử dụng 1 lần bởi 1 lớp học
Với mỗi lớp thi i ta đặt 1 ràng buộc sau
N−1 M −1
∑ ∑ xijk =1
j=0 k=0
3. Thuật toán
Sử dụng trình giải ‘SCIP’ với Ortool của ngôn ngữ Python
Trình giải sẽ tìm ra thuật toán tối ưu cho các biến, đặc biệt là biến y cái mà hướng đến hàm mục
tiêu của bài toán
4. Đánh giá
Bài toán ở đây được tôi đưa về dạng binary (0/1), và với dạng bài toán (binary) này thì quy hoạch
nguyên tôi nghĩ không thực sự phù hợp bởi khối lượng biến lớn và hàm mục tiêu không được
xác định rõ ràng. Bên cạnh đó, để thỏa mãn các yêu cầu của bài toán thì khối lượng các ràng
buộc là khá lớn và phức tạp.