Tải bản đầy đủ (.pdf) (92 trang)

Nghiên cứu các bài toán lịch biểu và ứng dụng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (5.96 MB, 92 trang )

I HC QUC GIA H NI
TRNG I HC CễNG NGH

NGUYễN XUÂN MINH

NGHIÊN CứU CáC BàI TOáNLịCH BIểU Và ứNG DụNG

LUậN VĂN THạC Sĩ CÔNG NGHệ THÔNG TIN

H Ni - 2015


I HC QUC GIA H NI
TRNG I HC CễNG NGH

NGUYễN XUÂN MINH

NGHIÊN CứU CáC BàI TOáNLịCH BIểU Và ứNG DụNG
Chuyờn ngnh: H thng thụng tin
Mó s: 60 48 01 04

LUậN VĂN THạC Sĩ CÔNG NGHệ THÔNG TIN

Ngi hng dn khoa hc: GS.TS V c Thi

H Ni - 2015


LỜI CẢM ƠN

Trước hết, tôi vô cùng biết ơn GS.TS. Vũ Đức Thi, người thầy đã trực tiếp dành


nhiều thời gian tận tình hướng dẫn, cung cấp những thông tin, tài liệu quý báu, giúp đỡ
tôi hoàn thành luận văn này.
Tôi xin cảm ơn các thầy cô trong Trường Đại học Công nghệ - Đại học Quốc
Gia Hà Nội đã cung cấp cho tôi những kiến thức quý báu trong thời gian tôi học tập
trong Nhà trường.
Sau cùng, tôi xin bày tỏ lòng biết ơn đến người thân, bạn bè, đồng nghiệp cơ
quan đã luôn tạo điều kiện động viên cho tôi hoàn thành luận văn tốt nghiệp này.

Hà Nội, ngày … tháng … năm 2015
HỌC VIÊN

Nguyễn Xuân Minh


LỜI CAM ĐOAN

Tôi tên là Nguyễn Xuân Minh, học viên cao học khóa 19 ngành Công nghệ
thông tin, chuyên ngành Hệ thống thông tin Trường Đại học Công nghệ - Đại học
Quốc Gia Hà Nội;
Thực hiện đề tài luận văn “Nghiên cứu các bài toán lịch biểu và ứng dụng”;
Cán bộ hướng dẫn: GS.TS. Vũ Đức Thi.
Tôi xin cam đoan đây là công trình nghiên cứu của tôi được hình thành và phát
triển của chính cá nhân tôi, đã được cán bộ hướng dẫn thông qua nội dung và đồng ý
cho tôi được thực hiện đề tài này.

Hà Nội, ngày … tháng … năm 2015
HỌC VIÊN

Nguyễn Xuân Minh



MỤC LỤC
LỜI CẢM ƠN ...............................................................................................................
LỜI CAM ĐOAN ..........................................................................................................
MỤC LỤC .....................................................................................................................
DANH MỤC CÁC BẢNG ............................................................................................
DANH MỤC CÁC HÌNH VẼ, BIỂU ĐỒ ......................................................................
MỞ ĐẦU.......................................................................................................................
CHƯƠNG 1. TỔNG QUAN VỀ BÀI TOÁN LẬP LỊCH ............................................ 1
1.1. Định nghĩa bài toán lập lịch Jobshop (JSP) ....................................................... 1
1.2. Tình hình nghiên cứu thuật toán tìm kiếm lịch biểu tối ưu................................. 2
1.2.1. Tình hình nghiên cứu trên thế giới.............................................................. 2
1.2.2. Tình hình nghiên cứu trong nước................................................................ 3
1.3. Các phương pháp tiếp cận giải bài toán lập lịch................................................. 3
1.2.3. Cách tiếp cận chính xác, thuật toán nhánh cận ............................................ 3
1.2.4. Cách tiếp cận gần đúng .............................................................................. 4
CHƯƠNG 2. THUẬT TOÁN DI TRUYỀN .............................................................. 18
2.1. Lịch sử ra đời .................................................................................................. 18
2.2. Một số khái niệm cơ bản ................................................................................. 18
2.2.1. Cá thể, nhiễm sắc thể................................................................................ 18
2.2.2. Quần thể ................................................................................................... 18
2.2.3. Chọn lọc ................................................................................................... 18
2.2.4. Lai ghép ................................................................................................... 19
2.2.5. Đột biến ................................................................................................... 20
2.3. Lưu đồ thuật toán di truyền đơn giản ............................................................... 20
2.4. Các tham số của thuật toán di truyền ............................................................... 21
2.4.1. Kích thước quần thể ................................................................................. 21
2.4.2. Xác suất lai ghép ...................................................................................... 22
2.4.3. Xác suất đột biến ...................................................................................... 22
2.5. Khởi tạo quần thể ban đầu ............................................................................... 22

2.5.1. Hàm tính độ thích nghi ............................................................................. 22
2.5.2. Toán tử chọn lọc....................................................................................... 22
2.5.3. Các toán tử lai ghép .................................................................................. 24
2.5.4. Toán tử đột biến ....................................................................................... 28
2.7. Kết luận .......................................................................................................... 30
CHƯƠNG 3. HAI BÀI TOÁN CON CỦA BÀI TOÁN LẬP LỊCH JOB SHOP ........ 31
3.1. Bài toán Flowshop hoán vị .............................................................................. 31


3.1.1. Mô tả bài toán .......................................................................................... 31
3.1.2. Cách tính thời gian hoàn thành trong một lịch biểu hoán vị ...................... 32
3.1.3. Thuật toán Johnson cho PFSP 2 máy và PFSP 3 máy ............................... 36
3.1.4. Một thuật di truyền mã hóa tự nhiên cho bài toán FSP tổng quát .............. 44
3.1.5. Kết quả thực nghiệm ................................................................................ 48
3.2. Bài toán lập lịch Flowshop .............................................................................. 48
3.2.1. Mô bài toán .............................................................................................. 48
3.2.2. Một thuật toán di truyền mã hóa tự nhiên cho bài toán FPS tổng quát ...... 49
3.3. Kết luận .......................................................................................................... 52
CHƯƠNG 4. MỘT THUẬT TOÁN DI TRUYỀN LAI CHO BÀI TOÁN LẬP LỊCH
JOB SHOP ................................................................................................................ 53
4.2. Các luật ưu tiên của Giffler và Thompson ....................................................... 55
4.2.1. Thuật toán Giffler - Thompson (GT) ........................................................ 55
4.2.2. Áp dụng thuật toán GT cho JSP để sinh ra các lịch biểu tích cực .............. 57
4.3. Một thuật toán di truyền lai tuần tự cho bài toán JSP ....................................... 58
4.3.1. Mã hóa lời giải ......................................................................................... 59
4.3.2. Khởi tạo tập lời giải cho thế hệ ban đầu.................................................... 60
4.3.3. Xây dựng hàm thích nghi ......................................................................... 60
4.3.4. Các toán tử di truyền ................................................................................ 60
4.3.5. Thuật toán di truyền ................................................................................. 64
4.3.6. Tính đúng đắn của thuật toán.................................................................... 64

4.4. Kết quả thực nghiệm ....................................................................................... 65
KẾT LUẬN ............................................................................................................... 66


i
DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT
Tiếng anh
Branch and Bound Algorithm

Viết tắt
BB

Ý nghĩa
Thuật toán nhánh cận

Crossover

Lai ghép, trao đổi chéo

Fitness

Độ thích nghi, hàm thích nghi

Genetic Algorithm

GA

Thuật toán di truyền

Integer Linear Programming


Quy hoạch tuyến tính nguyên

Makespan

Cực tiểu thời gian hoàn thành công việc

Mutation

Đột biến

One point crossover

Lai ghép một điểm

Population

Quần thể

Two point crossover

Lai ghép hai điểm

Uniform crossover

Lai ghép đồng nhất

Jobshop Scheduling Problem

JSP


Bài toán lập lịch Jobshop

Flowshop Scheduling Problem

FSP

Bài toán lập lịch Flow shop

Permutation Flowshop
SchedulingProblem

PFSP

Bài toán lập lịch Flow shop hoán vị


ii
DANH MỤC CÁC BẢNG
Bảng 1.1: Bài toán JSP 3 công việc, 3 máy .................................................................. 1
Bảng 1.2: Bài toán lập lịch 1 máy ................................................................................ 6
Bảng 1.3: Tính toán của G(S ) ..................................................................................... 6
Bảng 1.4: Tính toán của ( ) .................................................................................... 7
Bảng 1.5: Tính toán của ( ) .................................................................................... 8
Bảng 1.6: Tính toán của ( ) .................................................................................... 8
Bảng 1.7: Tính toán của ( ) .................................................................................... 9
Bảng 1.8: Tính toán của ( ) .................................................................................. 10
Bảng 1.9: Tính toán ∑

cho 3 tuần tự công nghệ .................................................. 12


Bảng 1.10: Sinh tất cả tuần tự công nghệ từ S bằng trao đổi cặp công việc liền kề .. 13
Bảng 1.11: Tính toán ∑

cho 2 tuần tự công nghệ ................................................ 13

Bảng 1.12: Tính toán ∑

cho 2 tuần tự công nghệ ................................................ 14

Bảng 1.13: Tính toán ∑

cho 1 tuần tự công nghệ ................................................ 15

Bảng 1.14: Tính toán ∑

cho 1 tuần tự công nghệ ................................................ 16

Bảng 2.1: Độ thích nghi và xác suất và xác suất tích lũy của các cá thể ..................... 23
Bảng 2.1: Độ thích nghi và xác suất và xác suất tích lũy của các cá thể ..................... 23
Bảng 3.1. Thời gian xử lý cho bài toán PFSP 4 máy và 5 công việc ........................... 31
Bảng 3.2: Bài toán Flowshop 5 công vệc, 2 máy ........................................................ 39
Bảng 3.3: PFSP 3 công việc 3 máy ............................................................................ 43
Bảng 3.4: PFSP 3 công việc 3 máy ............................................................................ 43
Bảng 3.5: Bài toán PFSP 5 công việc, 4 máy ............................................................. 44
Bảng 3.6: Kết quả chạy thực nghiệm ......................................................................... 48
Bảng 3.7: Mã hóa lời giải theo số tự nhiên ................................................................. 49
Bảng 3.8: Kết quả chạy thực nghiệm ......................................................................... 52
Bảng 4.1: Bài toán JSP 3 công việc, 3 máy ................................................................ 54
Bảng 4.2: Bài toán JSP 3 công việc, 3 máy ................................................................ 59

Bảng 4.3: Kết quả chạy thực nghiệm ......................................................................... 65


iii
DANH MỤC CÁC HÌNH VẼ, BIỂU ĐỒ
Hình 1.1: Các tiếp cận cho bài toán lập lịch JSP .......................................................... 3
Hình 1.2: Tuần tự công nghệ

bằng cách trao đổi cặp công việc liền kề .................. 12

Hình 1.3: Tuần tự công nghệ

bằng cách trao đổi cặp công việc liền kề ................... 13

Hình 1.4: Tuần tự công nghệ S bằng cách trao đổi cặp công việc liền kề .................. 14
Hình 1.5: Tuần tự công nghệ

bằng cách trao đổi cặp công việc liền kề ................... 15

Hình 1.6: Tuần tự công nghệ

bằng cách trao đổi cặp công việc liền kề .................. 16

Hình 2.1: Cá thể cha mẹ cho phép lai ghép một điểm................................................. 19
Hình 2.2: Hai cá thể con sau khilai ghép một điểm .................................................... 19
Hình 2.3: Cá thể cha mẹ cho phép lai ghép hai điểm .................................................. 19
Hình 2.4: Hai cá thể con sau lai ghép hai điểm........................................................... 19
Hình 2.5: Cá thể cha mẹ cho phép lai ghép đồng nhất ................................................ 20
Hình 2.6: Hai cá thể con sau lai ghép đồng nhất......................................................... 20
Hình 2.7: Cá thể ban đầu trước đột biến ..................................................................... 20

Hình 2.8: Cá thể con sau phép đột biến ...................................................................... 20
Hình 2.9: Sơ đồ mô tả thuật toán di truyền cơ bản ..................................................... 21
Hình 2.10: Minh họa các bước của lai ghép từng phần (PMX) ................................... 25
Hình 2.11: Minh họa các bước của lai ghép có thứ tự (OX) ....................................... 26
Hình 2.12: Minh họa các bước của lai ghép có thứ tự (POS) ...................................... 26
Hình 2.13: Minh họa các bước của lai ghép (POS)..................................................... 27
Hình 2.14: Minh họa các bước của lai ghép (CX) ...................................................... 28
Hình 2.15: Minh họa đột biến ngược.......................................................................... 28
Hình 2.16:Minh họa đột biến chèn ............................................................................. 28
Hình 2.17:Minh họa đột biến thay thế ........................................................................ 29
Hình 2.18: Minh họa đột biến hoán vị ........................................................................ 29
Hình 3.1: Biều đồ Grant biểu diễn một lời giải của PFSP 5 công việc 4 máy ............. 32
Hình 3.2: Đồ thị không liên thông biểu diễn một lời giải của PFSP............................ 33
Hình 3.3: Các tính thời gian hoàn thành trong đồ thị không liên thông ....................... 34
Hình 3.4: Các cạnh tới hạn của đồ thị không liên thông ............................................. 35
Hình 3.5: Đồ thị cạnh tới hạn ..................................................................................... 35
Hình 3.6: Đồ thị đường tới hạn .................................................................................. 36


iv
Hình 3.7: Biểu đồ Grant của lịch biểu tối ưu bài toán 2 máy ...................................... 40
Hình 3.8: Biểu đồ Grant của lịch biểu tối ưu bài toán 3 máy ...................................... 43
Hình 3.9: Một lời giải hợp lệ cho PFSP 5 công việc 4 máy ........................................ 44
Hình 3.10: Cá thể cha cho phép đột biến .................................................................... 46
Hình 3.11: Cá thể con sau phép đột biến .................................................................... 46
Hình 3.12: Hai thể cha tham gia trao đổi chéo ........................................................... 47
Hình 3.13: Cá thể con sau trao đổi chéo ..................................................................... 47
Hình 3.14: Một lời giải hợp lệ cho FSP 3 máy, 5 công việc ....................................... 49
Hình 3.15: Các cá thể cha cho phép đột biến.............................................................. 50
Hình 3.16: Toán tử con sau khi đột biến .................................................................... 51

Hình 3.17: Các cá thể cha tham gia lai ghép............................................................... 51
Hình 3.18: Cá thể con sau lai ghép ............................................................................. 51
Hình 4.1: Phân lớp các lịch biểu ................................................................................ 53
Hình 4.2: Lịch không tích cực.................................................................................... 54
Hình 4.3: Lịch biểu bán tích cực ................................................................................ 54
Hình 4.4: Lịch biểu tích cực....................................................................................... 55
Hình 4.5: Lập lịch sử dụng thuật toán GT .................................................................. 57
Hình 4.6: Một lời giải hợp lệ cho JSP 3x3 ................................................................. 59
Hình 4.7: Cá thể cha cho phép đột biến ...................................................................... 61
Hình 4.8: Cá thể con thu được sau phép đội biến ....................................................... 61
Hình 4.9: Cá thể cha tham gia lai ghép....................................................................... 63
Hình 4.10: Cá thể con sau lai ghép ............................................................................. 63
Hình P.1: Cấu trúc dữ liệu đầu vào của bài toán MT06 .............................................. 75
Hình P.2: Giao diện chương trình .............................................................................. 76
Hình P.3: Quá trình tiến hóa bài toán MT06 .............................................................. 76


MỞ ĐẦU
Lý do chọn đề tài
Lập lịch là một chủ đề quan trọng trong lĩnh vực nghiên cứu hoạt động xuất
hiện từ đầu những năm 1950. Mục tiêu chính của lập lịch là phân phối một cách hiệu
quả tài nguyên dùng chung qua thời gian hoàn thành các tác vụ.
Có rất nhiều các bài toán quan trọng trong thực tế của lập lịch như: Lập lịch sản
xuất; lập lịch xếp lớp cho giảng viên; lập lịch thực hiện công việc cho dự án; lập lịch
trực cho bác sỹ, y tá trong bệnh viện; lập lịch hàng không, lập lịch tàu hỏa…
Với nhiều ứng dụng như vậy việc nghiên cứu và đưa ra một thuật toán có thể
thống kê một lịch biểu để thực hiện công việc hoàn thành trong thời gian tối ưu là vô
cùng quan trọng.
Từ năm 1950 đến nay mặc dù có rất nhiều công trình nghiên cứu về lập lịch
được đề xuất. Nhưng có hai vấn đề cần quan tâm xung quanh bài toán lập lịch đó là

lịch biểu thực hiện công việc đã tối ưu chưa và tốc độ thực hiện của thuật toán là
nhanh hay chậm. Xuất phát từ hai vấn đề đó, có hai phương pháp tiếp cận chính để giải
bài toán lập lịch đó là phương pháp chính xác và phương pháp gần đúng.
Phương pháp thứ nhất là phương pháp chính xác. Với phương pháp này thì ưu
điểm lớn nhất là sẽ tiến hành tìm kiếm trên toàn bộ không gian bài toán và kết quả sẽ
luôn tìm được một lịch biểu thực hiện các công việc tối ưu. Phương pháp chính xác
nhìn nhận sâu vào vấn đề bài toán, đưa ra được những quyết định với các thông tin
quan trọng về cấu trúc của vấn đề hoặc phân tích chính xác các lịch biểu. Tuy nhiên do
bản chất là vét cạn nên có nhiều hạn chế khả năng áp dụng phương pháp này như tốn
nhiều chi phí thực hiện, mất nhiều thời gian xử lý để tìm ra lời giải, … Một số thuật
toán giải quyết bài toán lập lịch theo phương pháp tiếp cận nàytiêu biểu như các kỹ
thuật nhánh cận (Branch and Bound), Quy hoạch tuyến tính nguyên (Integer Linear
Programming)....Trong đó, thuật toán nhánh cận được đánh giá là thuật toán tốt nhất
trong các thuật toán nghiên cứu theo phương pháp tiếp cận chính xác.
Phương pháp thứ hai là phương pháp gần đúng sử dụng các hàm ước lượng
heuristic đánh giá để tìm lịch biểu công việc, việc sử dụng các hàm ước lượng này có
nhược điểm lớn là lời giải của phương pháp tìm ra không được chắc chắn là lời giải tối
ưu nhất. Trong thực tế, nhiều trường hợp chất lượng của lời giải tìm ra không chấp
nhận được. Kết quả của bài toán bị ảnh hưởng bởi các thông số (kích thước của tập
hợp, lời giải ban đầu của thuật toán, các lân cận…). Và cách thức để giải quyết bài
toán đôi khi được xem như kỹ xảo để xử lý hơn là khoa học. Tuy nhiên phương pháp
này lại có lợi thế hơn so với phương pháp chính xác là chi phí thời gian tìm kiếm để
đưa ra lời giải thấp. Gần đây một số thuật toán mạnh mẽ được tiếp cận bằng phương
pháp gần đúng điển hình như là: “Taboo Search”, “Simulated Annearling”, “Genetic
Algorithms”, …


Trong lĩnh vực lập lịch, một mô hình chung nhất cho lập lịch là bài toán lập lịch
Jobshop (Jobshop Scheduling Problem)viết tắt JSP. Bài toán này nổi tiếng là một trong
những bài toán tối ưu tổ hợp khó tính toán nhất cho đến nay. JSP cũng là một trong

những bài toán được nghiên cứu nhiều nhất và là một mô hình phát triển tốt về lý
thuyết lập lịch. Ngoài ra, một động lực khác giúp JSP được thúc đẩy mạnh mẽ là các
ứng dụng của nó trong thực tế và cuộc sống sản xuất. Vì vậy em mạnh dạn chọn đề tài
luận văn thạc sĩ “Nghiên cứu các bài toán lịch biểu và ứng dụng”.
Bố cục của luận văn
Nội dung của luận văn bao gồm 4 chương:
Chương 1. Tổng quan về bài toán lập lịch
Chương này trình bày tổng quan về bài toán JSP, tình hình nghiên cứu, các
hướng tiếp cận giải quyết bài toán JSP.
Chương 2. Thuật toán di truyền
Chương này trình bày một số khái niệm cơ bản trong thuật toán di truyền, các
tham số đầu vào của thuật di truyền, các toán tử của thuật toán di truyền và thuật toán
di truyền.
Chương 3. Hai bài toán con của bài toán lập lịch JSP
Chương này trình bày các khái niệm cơ bản liên quan đến hai bài toán con của
JSP đó là bài toán lập lịch Flowshop hoán vị (PFSP) và Flow shop (FSP) và thuật toán
Johnson cho bài toán Flowshop hoán vị 2 máy và 3 máy có hạn chế điều kiện. Cuối
cùng, trình bày thuật toán di truyền mã hóa số tự nhiên cho hai bài toán này.
Chương 4. Một thuật toán di truyền lai cho bài toán lập lịch job shop
Chương này trình bày một thuật toán di truyền lai là kết hợp thuật toán di
truyền với các kỹ thuật tìm kiếm khác cho bài toán JSP và xây dựng chương trình
minh họa cho thuật toán di truyền lai.


1
CHƯƠNG 1. TỔNG QUAN VỀ BÀI TOÁN LẬP LỊCH
1.1. Định nghĩa bài toán lập lịch Jobshop (JSP)
Bài toán lập lịch job shop tổng quát được phát biểu như sau:
công việc { }


Cho tập

là thao tác) được xử lý trên một tập

, mỗi công việc bao gồm
máy

công đoạn (hay còn gọi

và thỏa mãn các ràng buộc sau:

a) Mỗi công việc phải được xử lý ở trên mỗi máy theo một trình tự cho trước
của các thao tác. Trình tự thực hiện thao tác của mỗi công việc lần lượt trên các máy
được gọi là tuần tự công nghệ;
b) Tại mỗi thời điểm, mỗi máy chỉ có thể xử lý nhiều nhất là một công việc;
c) Mỗi máy

tùy ý đều có khả năng xử lý một công việc

việc được xử lý trên máy
d) Mỗi thao tác

nào đó, phần công

.

được gọi là thao tác

phải được xử lý một cách liên tục trên máy


(từ khi bắt

đầu xử lý cho tới khi kết thúc xử lý không bị ngắt);
e) Thời gian bắt đầu và thời gian hoàn thành xử lý thao tác
lượt là



. Thời gian xử lý thao tác

được ký hiệu là

được ký hiệu lần

;

f) Thời gian hoàn thành việc xử lý tất cả các công việc được gọi mà makespan
và được ký hiệu là

.

Việc giải bài toán lập lịch job shop là xác định một lịch biểu (thứ tự xử lý các
công việc ở trên m máy) sao cho makespan là nhỏ nhất.
Để minh họa cho bài toán, một ví dụ về bài toán JSP 3x3 được cho trong Bảng
1.1. Dữ liệu vào bao gồm một tuần tự công nghệ của các máy cho mỗi công việc và
thời gian xử lý của mỗi công việc ở trên mỗi máy (trong dấu ngặc đơn).
Máy (thời gian xử lý)

Công việc
1


1(3)

2(3)

3(3)

2

1(2)

3(3)

2(4)

3

2(3)

1(2)

3(1)

Bảng 1.1: Bài toán JSP 3 công việc, 3 máy
Theo Bảng 1.1, các thao tác của


được xử lý trên các máy theo trình tự:




; tức là, công việc 1 ban đầu được xử lý trên máy 1 với thời gian xử lý là 3,

và tiếp theo, được xử lý trên máy 2 với thời gian xử lý là 3, và tiếp theo được xử lý
trên máy 3 với thời gian xử lý là 3; các thao tác
tự:





.

các thao tác

được xử lý trên các máy theo trình

được xử lý trên các máy theo trình tự:




2
Bài toán này không chỉ là NP - khó (NP-hard) mà còn nổi tiếng là một trong
những bài toán tối ưu tổ hợp khó tính toán nhất cho đến nay. Độ phức tạp của bài toán
này là một trong những lý do tại sao bài toán này được nghiên cứu một cách rộng rãi.
Cho đến ngày nay vẫn chưa có một phương pháp nào giải quyết bài toán JSP
một cách chính xác và thời gian nhanh.
1.2. Tình hình nghiên cứu thuật toán tìm kiếm lịch biểu tối ưu
1.2.1. Tình hình nghiên cứu trên thế giới

Bài toán JSP lần đầu tiên được công bố bởi Akers và Friedman (1955), bài toán
này thường được biết với cái tên AkersFriedman. Tuy nhiên, nó trở nên phổ biến nhờ
vào bài toán nổi tiếng 10 công việc 10 máy được đưa ra bởi Fisher và Thompson
(1963). Những nỗ lực đầu tiên để giải quyết bài toán JSP được thực hiện bởi Brooks và
White (1965), Greenberg (1968) với phương pháp quy hoạch nguyên.Sau đó là
phương pháp nhân tử Lagrange của Balas (1969), Charlton và Death (1970) Florian
(1971), Ashour(1974), Ashour và Hiremath (1973), Fisher (1973)[5].
Một thuật toán của McMahon và Florian (1975) tìm được dẫn đầu là thuật toán
chính xác tốt nhất. Thuật toán kết hợp các giới hạn của bài toán lập lịch trên một máy
bằng cách sử dụng hàm mục tiêu để giảm thiểu thời gian trễ và liệt kê các lịch biểu tích
cực. Cùng thời gian đó một phương pháp heutistic dựa trên các luật ưu tiên được nghiên
cứu bởi Gere (1966), Panwalkar và Iskander (1977) và Haupt (1989). Xa hơn nữa một
số thuật toán mãnh mẽ được nghiên cứu với các phương pháp tiếp cận tối ưu. Barker và
McMahon (1985) đã công bố công trình giải quyết bài toán lập lịch bằng cách sử dụng
cấu trúc lân cận dựa trên các thuật toán tìm kiếm địa phương(local search)[5].
Lịch biểu tối ưu của bài toán JSP 10x10 lần đầu tiên được đưa ra bởi Leageweg
(1984) nhưng việc chứng minh về tính tối ưu của lịch biểu này không được đưa ra.
Arlier và Pinson (1989) đã chứng minh rằng lịch biểu này là tối ưu và họ được ghi với
việc giải quyết bài toán nổi tiếng Fisher và Thompson từ năm 1963[5].
Ngày nay, thuật toán hiệu quả nhất trong số các phương pháp chính xác là thuật
toán nhánh cận của Caseau và Laburthe (1995), Baptiste (1995), Carlier và Pinson
(1994), Brucker (1994), Brucker (1992) và các kỹ thuật khác nhau sau nhánh cận bởi
Applegate và Cook (1991), Martin và Shmoys (1995) và Perregaard và Clausen
(1995). Những hướng mới nghiên cứu giải quyết bài toán JSP tại thời điểm hiện tại là
phương pháp gần đúng. Phương pháp đầu tiên trong danh sách là phương pháp dịch
chuyển nút cổ chai (Shifting Bottleneck) của Adam 1998,Balas (1995), Dauzere-Peres
và Lasserre (1993). Tuy nhiên phần lớn của cách tiếp cận gần đúng là kỹ thuật tìm
kiếm địa phương và tiến hóa. Trong kỹ thuật tìm kiếm địa phương và tiến hóa thì các
thuật toán mạnh mẽ nhất là thuật toán mô phỏng luyện kim (simulated annealing) của
Van Laarhoven (1992), Matsuo (1988) và Yamada (1994), Tìm kiếm Tabu (Taboo



3
Search)bởi Dell’Amico và Trubian (1993), Taillard (1994), Barnes và Chambers
(1995), Nowicki và Smutnicki (1996) và Thomsen (1997), Thuật toán di truyền
(Genetic Algorithms)bởi Storer (1992), Yamada và Nakano (1992), Pesch (1993) và
Dorndorf và Pesch (1995), vàkỹ thuật Tìm kiếm địa phương có chỉ dẫn (Guided Local
Search)đề xuất bởiBalas và Vazacopoulos (1998)[5].
Các tiếp cận đã được đề xuất để giải bài toán JSP được trình bày trong Hình 1.1.
Các phương
pháp gần đúng

Các phương
pháp chính xác

Các luật ưu
tiên nhanh

Dịch chuyển
nút cổ chai

Các kỹ thuật
nhánh cận

Công thức
toán học

Trí tuệ
nhân tạo
Tìm kiếm

địa phương

Các mạng
Nơron

Mô phỏng
luyện kim

Quy hoạch tuyến
tính nguyên

Tìm kiếm
Taboo

Giải thuật
di truyền

Hình 1.1: Các tiếp cận cho bài toán lập lịch JSP
1.2.2. Tình hình nghiên cứu trong nước
Hiện nay, bài toán JSP vẫn đang được quan tâm và nghiên cứu và ngày càng
phát triển. Các công trình nghiên cứu về vấn đề này chủ yếu theo hướng các thuật toán
đã được đề xuất và ứng dụng ở trên thế giới, từ đó tìm ra các phương pháp để cải tiến
làm cho thuật toán tốt hơn. Ứng dụng thực tiễn của bài toán lập lịch chủ yếu trong lĩnh
vực đào tạo: xây dựng thời khóa biểu, kế hoạch thi, lịch làm việc, lịch trực bệnh
viện,lập kế hoạch sản xuất kinh doanh trong doanh nghiệp.
1.3. Các phương pháp tiếp cận giải bài toán lập lịch
1.2.3. Cách tiếp cận chính xác, thuật toán nhánh cận
Thuật toán nhánh cận là phương pháp hiệu quả nhất trong số các phương
pháp chính xác để giải bài toán JSP. Thuật toán nhánh cận là kỹ thuật được phát triển



4
để giải quyết các bài toán rời rạc và tổ hợp. Mô hình được sử dụng để tìm kiếm là mô
hình cây phân cấp. Tư tưởng cơ bản của phương pháp là trong quá trình tìm kiếm
lời giải, sẽ phân hoạch tập các phương án của bài toán thành hai hay nhiều tập con
biểu diễn như một nút của cây tìm kiếm và cố gắng bằng phép đánh giá cận),
tìm cách loại bỏ các nhánh cây (những tập con các phương án của bài toán) mà ta
biết chắc chắn không phải là phương án tối ưu. Mặc dù trong trường hợp xấu nhấtthuật
toán sẽ duyệt toàn bộ, nhưng những trường hợp cụ thể nó rút ngắn đáng kể
thời gian tìm kiếm.
Hiệu quả của thuật toán nhánh cận phụ thuộc cách thức phân nhánh và đánh giá
cận. Việc phân nhánh sai sẽ không làm giảm việc bỏ bớt các phương án không tốt hoặc
thậm chí cũng không thể thu gọn các miền khả thi xuống. Đánh giá cận sai sẽ tạo ra
các nhánh không chính xác làm ảnh hưởng đến số lượng các phương án hoặc các tập
con có thể lược bỏ được. Như vậy thì một chiến lược nhánh cận không tốt sẽ làm giảm
việc xác định các phương án khả thi và lúc này thuật toán sẽ liệt kê toàn bộ các cấu
hình có thể cho dù bài toán không thực sự lớn. Chính vì thế những quy tắc khác nhau
được áp dụng với mục đích làm sao để phân nhánh và đánh giá cận đúng là vấn đề
quan trọng trong việc xây dựng thuật toán.
Với bài toán lập lịch, thì lịch biểu các công việc được mô tả bằng một đồ thịnối
rời (disjunctive graph). Tất cả các công đoạn cùng một công việc được nốithành một
chuỗi các cung nối liền và các cung nối rời giữ các công đoạn thực hiệntrên cùng một
máy. Việc lập lịch sẽ trở thành việc sắp thứ tự các công việc trên từngmáy, nghĩa là
làm cố định mối liên hệ trước sau giữa các công đoạn trên cùng mộtmáy bằng cách
thay đổi hướng các cung nối rời theo một hướng cố định ta sẽ cómột lời giải khả thi,
mỗi lời giải khả thi này ta tính được hàm mục tiêu
chiềudài lớn nhất đi từ nút
nguồn đến nút đích.
Một vấn đề gặp phải của phương pháp nhánh cận là thời gian tính toán lớn.
1.2.4. Cách tiếp cận gần đúng

1.2.4.1. Giới thiệu
Một lớp quan trọng của loại cải tiến thuật toán là thủ tục tìm kiếm địa phương
(local search). Một thủ tục tìm kiếm địa phương không đảm bảo là một lời giải tối ưu.
Nó thường cố gắng tìm một lịch biểu mà lịch biểu đó là tốt hơn so với lịch biểu hiện
tại trong lân cận của lịch biểu hiện tại. Hai lịch biểu là lân cận nếu một lịch biểu này
có thể thu được qua việc sửa đổi và được xác định bởi lịch biểu kia. Tại tất cả các
vòng lặp một thủ tục tìm kiếm địa phương thực hiện việc tìm kiếm bên trong lân cận
và đánh giá các giải pháp lân cận khác nhau. Quá trình tìm kiếm trong lân cận có thể
được thực hiện qua một số cách. Cách đơn giản nhất là chọn các lịch biểu trong lân
cận một cách ngẫu nhiên, đánh giá các lịch biểu này và quyết định cái lịch biểu nào sẽ


5
được chấp nhận. Tuy nhiên nó có thể mất chi phí để làm một thủ tục tìm kiếm có tổ
chức hơn và chọn lịch biểu đầu tiên tốt hơn.
Thủ tục này hoặc là được chấp nhận hoặc là bị từ chối một lời giải ứng cử viên
như một lịch biểu tiếp theo để di chuyển tới dựa trên điều kiện chấp nhận hoặc từ chối.
Điều kiện chấp nhận hoặc từ chối thường được thiết kế trên khía cạnh phân biệt một
thủ tục tìm kiếm địa phương nhiều nhất. Sự khác nhau giữa hai thủ tục được thảo luận
trong phần còn lại của mục này là thuật toán mô phỏng luyện kim và tìm kiếm Tabu.
Sự khác nhau chủ yếu của hai thủ tục này nằm chủ yếu ở điều kiện chấp nhận hoặc từ
chối. Trong thuật toán mô phỏng luyện kim, điều kiện chấp nhận hoặc từ chối dựa trên
một xác suất xử lý; còn tìm kiếm Tabu dựa trên xác định xử lý.
Ba kỹ thuật khá phổ biến cho tìm kiếm địa phương bao gồm:thuật toán mô
phỏng luyện kim, thuật toán tìm kiếm Tabu và thuật toán di truyền. Các kỹ thuật tìm
kiếm địa phương này bắt đầu với một lịch biểu và cố gắng tìm một lịch biểu tốt hơn
trong lân cận của nó. Phương pháp được thực hiện qua các vòng lặp. Một số lời giải
lân cận được sinh ra từ một lời giải hiện thời tại mỗi vòng lặp và so sánh với lời giải
hiện thời. Tìm kiếm địa phương tiếp tục thực hiện qua các vòng lặp tới khi điều kiện
kết thúc hoặc đạt kết quả tối ưu.

1.2.4.2. Thuật toán mô phỏng luyện kim (Simulated Annealing)
Đây là quá trình tìm kiếm bắt nguồn trong khoa học vật liệu. Nó lần đầu tiên
được phát triển cho mô phỏng các quá trình luyện kim. Trong lý thuyết lập lịch, nó
được áp dụng như một công cụ tìm kiếm địa phương để cải thiện lịch biểu ban đầu.
Thuật toán dưới đây chỉ rõ các bước cho việc tạo một lịch cho bài toán một máy[10].
Thuật toán
Chúng ta hãy gọi,
: Lịch ứng cử viên (Tuần tự công nghệ ứng cử viên)
: Lịch biểu tốt nhất được tìm thấy đến nay (Tuần tự công nghệ tốt nhất)
: Lịch được xây dựng tại vòng lặp thứ k (k - Biến đếm vòng lặp)
( ): Tiêu chí mong muốn (giá trị tốt nhất của lịch biểu)
( ): Giá trị của lịch biểu tại vòng lặp thứ k
( ): Giá trị của lịch biểu ứng cử viên
( , ): Xác suất di truyển từ lịch biểu đến lịch biểu tại vòng lặp thứ k
( ,
trị

) = exp (

(

)

(

)

)

Trong đó,

là tham số làm lạnh trong công nghệ luyện kim. Thông thường giá
=
với ∈ [0,1]
Bước 1. Khởi tạo
Gán = 1, đặt bằng một giá trị nhất định
Đặt
= thì ( ) = ( ).
Bước 2. Chọn từ


6
Nếu ( ) < ( ) < ( ) thì
=
GOTO: Bước 3
Nếu ( ) < ( ) thì
=
=
GOTO: Bước 3
Nếu ( ) > ( ) thì sinh ngẫu nhiên một số ~[0,1]
Nếu
< ( , ) thì
=
Ngược lại
=
GOTO: Bước 3
Bước 3. Đặt
≤ , = + 1.
Nếu ≤ thì GOTO Bước 2
Ngược lại Dừng thuật toán
Ví dụ:

Cho thể hiện 1|| ∑
, giải bài toán được cho trong Bảng 1.2 sử dụng
phương pháp mô phỏng luyện kim, áp dụng với số bước lặp

≤ 5.

Công việc
3

6

2

5

4

7

13

9

3

1

2

4


Bảng 1.2: Bài toán lập lịch 1 máy
Trong đó,

là thời gian đợi công việc ;

giới hạn cuối cùng của công việc ;

thời gian xử lý công việc ;

là thời gian chậm trễ của công việc






thời gian hoàn thành công việc .
Sử dụng các giá trị = {0.8, 0.01, 0.52, 0.43) trong bài toán. Giá trị khởi tạo
= 0.9. Bắt đầu với tuần tự công nghệ thứ nhất là { , , , }
Bước 1. Khởi tạo
= 0.9, = 1, = { , , , }
Đặt
= , tìm ∑
Công việc



3


6

2

5

4

7

13

9

3

9

11

16

0

2

0

7


3

1

2

4

0

2

0

28

30
Bảng 1.3: Tính toán của ( )


7
( ) = 30, ( ) = 30
Bước 2. Vòng lặp 1.
Chọn một lịch tuần tự ứng cử viên
Chúng ta đặt
={ , , , }
Tìm ∑
cho tuần tự công nghệ

từ lân cận của

:

Công việc
6

3

2

5

7

4

13

9

6

9

11

16

0

5


0

7

1

3

2

4

0

15

0

28



43
Bảng 1.4: Tính toán của (

Do
Nếu
Nếu
Nếu

Thì

)

( ) = 43. Bây giờ ta hãy kiểm tra điều kiện
( ) < ( ) < ( ) thì = GOTO Bước 3.
( ) < ( ) thì
= & =
GOTO Bước 3.
( ) > ( ) (điều kiện này đúng)
Sinh

Tìm ( ,

∈ [0,1]. Cho giá trị
) = exp (

(

)

(

Các điều kiện sai

= 0.8

)

)=


.

=

.

= 5.574 × 10

Nếu
≤ ( , ) → No
Bởi vậy, gán = ; = { , , , }
GOTO Bước 3.
Bước 3.Chọn = ( ) = 0.81
= 2; = 5
Nếu ≤ thì GOTO Bước 2, Ngược lại thì dừng.
Bước 2. Vòng lặp 2
Chọn một lịch tuần tự ứng cử viên từ lân cận của
={ , , , }
={ , , , }
Tìm ∑
cho tuần tự công nghệ :
Công việc
3

2

6

5


4

13

7

9


8
3

5

11

16

0

0

4

7

3

2


1

4

0

0

4

28



32
Bảng 1.5: Tính toán của (

Do
Nếu
Nếu
Nếu
Thì

)

( ) = 32. Bây giờ ta hãy kiểm tra điều kiện
( ) < ( ) < ( ) thì = GOTO Bước 3.
( ) < ( ) thì
= & =

GOTO Bước 3.
( ) > ( ) (điều kiện này đúng)
Sinh

Tìm ( ,

∈ [0,1]. Cho giá trị
) = exp (

(

)

(

Các điều kiện sai

= 0.01

)

)=

.

= 0.085

Nếu
≤ ( , ) →Yes
Bởi vậy, gán = ; = { , , , }

GOTO Bước 3.
Bước 3. Chọn = ( ) = 0.729
= 3; = 5
Nếu ≤ thì GOTO Bước 2, Ngược lại thì dừng.
Bước 2. Vòng lặp 3
Chọn một lịch tuần tự ứng cử viên từ lân cận của
={ , , , }
={ , , , }
Tìm ∑
cho tuần tự công nghệ :
Công việc



2

3

6

5

13

4

7

9


2

5

11

16

0

1

4

7

2

3

1

4

0

3

4


28

35
Bảng 1.6: Tính toán của (

)

Do ( ) = 35. Bây giờ ta hãy kiểm tra điều kiện
Nếu ( ) < ( ) < ( ) thì = GOTO Bước 3.


9
Nếu ( ) < ( ) thì
= & =
GOTO Bước 3.
Nếu ( ) > ( ) (điều kiện này đúng)
Thì
Sinh
∈ [0,1]. Cho giá trị
= 0.52
Tìm ( ,

) = exp (

(

)

(


)

)=

.

Các điều kiện sai

= 0.0105

Nếu ≤ ( , ) →No
Bởi vậy, gán = ; = { , , , }
GOTO Bước 3.
Bước 3. Chọn = ( ) = 0.6561
= 4; = 5
Nếu ≤ thì GOTO Bước 2, Ngược lại thì dừng.
Bước 2. Vòng lặp 4
Chọn một lịch tuần tự ứng cử viên từ lân cận của
={ , , , }
={ , , , }
Tìm ∑
cho tuần tự công nghệ :
Công việc



3

2


5

6

4

13

9

7

3

5

10

16

0

0

1

9

3


2

4

1

0

0

4

9

13
Bảng 1.7: Tính toán của (

Do ( ) = 13. Bây giờ ta hãy kiểm tra điều kiện
Nếu ( ) < ( ) (điều kiện này đúng)
thì
Giá trị mới của
và là:
=
= { , , , }; ( ) = 13
=
= { , , , }; ( ) = 13
GOTO Bước 3.
Bước 3. Chọn = ( ) = 0.6561
= 5; = 5
Nếu ≤ thì GOTO Bước 2, Ngược lại thì dừng.

Bước 2. Vòng lặp 5

)


10
Chọn một lịch tuần tự ứng cử viên
={ , , , }
={ , , , }
Tìm ∑
cho tuần tự công nghệ

từ lân cận của

:

Công việc



3

5

2

6

4


9

13

7

3

8

10

16

0

0

0

9

3

4

2

1


0

0

0

9

9
Bảng 1.8: Tính toán của (

)

Do ( ) = 9. Bây giờ ta hãy kiểm tra điều kiện
Nếu ( ) < ( ) (điều kiện này đúng)
Thì
Giá trị mới của
và là:
=
= { , , , }; ( ) = 9
=
= { , , , }; ( ) = 9
GOTO Bước 3.
Bước 3. Chọn = ( ) = 0.6561
= 6; = 5
Nếu ≤ thì GOTO Bước 2, Ngược lại thì dừng.
Thuật toán dừng lại ở bước 5. Tuần tự công nghệ tốt nhất
={ , , , }
Độ trễ trọng số tối thiểu (Minimum weighted Tardiness) ∑
= 9.

Thuật toán mô phỏng luyện kim có thuận lợi là có thể thoát khỏi cực tiểu địa
phương. Tuy nhiên bất lợi nhất của phương pháp là khả năng quay lại lời giải đã xét.
Do đó, việc lặp lại công việc tại một cực tiểu địa phương là hoàn toàn có thể xẩy ra
và điều này dẫn đến mất nhiều thời gian tính toán trên một phần nhỏ của không gian
lời giải.
1.2.4.3. Thuật toán tìm kiếm Tabu(Taboo Search)
Thuật toán tìm kiếm Tabu là một thủ tục tìm kiếm địa phương như mô phỏng
luyện kim. Tuy nhiên việc lựa chọn một lịch biểu lân cận được quyết định một cách
xác định trái ngược với mô phỏng luyện kim, ở đó xác suất gần đúng được sinh ra.
Một bản ghi của Tabu được di chuyển và được lưu trữ trong danh sách Tabu để tránh
sự trùng lặp của các thao tác trao đổi trong danh sách.


11
Danh sách Tabu (Taboo List) là thành phần chính của thuật toán tìm kiếm Tabu.
Nó là một cấu trúc bộ nhớ lưu dấu viết của sự tiến hóa của việc tìm kiếm và chiến lược
cho việc sử dụng các thông tin bộ nhớ một cách tốt nhất có thể. Cấu trúc bộ nhớ cơ
bản này được gọi là danh sách Tabu. Nó sẽ lưu trữ các thuộc tính, giải pháp đặc trưng
mà không cần xem xét lại trong một khoảng thời gian nhất định. Thường thì chiến
lược vào trước ra trước (FIFO-first in first out) được áp dụng cho danh sách. Các
thuộc tính cũ được xóa đi khỏi danh sách và các thuộc tính mới được chèn vào danh
sách.Thuật toán Tabu bao gồm các bước sau:
Bước 1. Khởi tạo
Gán k = 1; bắt đầu một tuần tự công nghệ bằng một heutistic bất kỳ; gọi là
thì (

=

Để cho


.

)= ( )

Bước 2.
Chọn

từ lân cận của

Nếu di chuyển từ
=

Thì

tới

là không được phép trong danh sách Tabu

, GOTO Bước 3.

Nếu ( ) < (

) thì

=

Xóa các Tau di chuyển lâu nhất trong danh sách Tabu
Thêm mới Tabu di chuyển ở đầu danh sách
Bước 3.
Đặt


=

Nếu



+1
thì GOTO Bước 2 Ngược lại, dừng thuật toán.

Ví dụ:
Giải bài toán trong Mục 1.4.3.2 sử dụng thuật toán tìm kiếm Tabu. Áp dụng kỹ
thuật FIVE vòng lặp, làm cho chiều dài của danh sách bằng 2 (tức là các cặp công việc
đã được thay đổi cho nhau trong quá trình di chuyển cuối cùng không thể được thay
đổi cho nhau thêm một lần nữa). Dữ liệu được cho trong Bảng 1.2.
Công việc

1
3

2
6

3
2

4
5

4


7

13

9

3

1

2

4

Bước 1. Khởi tạo
Vòng lặp 1
Taboo List = {}, cho tuần tự công nghệ bắt đầu
Cho

là tuần tự công nghệ tốt nhất;

Đặt

=

, bởi vậy

={ , , , }


={ , , , }


12
(

) = ( ) = 30

Lân cận của lịch được định nghĩa như là tất cả các lịch có thể thu được bằng
cách trao đổi khôn ngoan cặp công việc liền kề nhau
= 30

={ , , , }

= 43
= 28
= 32

{ , , , }

{ , , , }

{ , , , }

Tuần tự công nghệ
tốt nhất hiện thời

Hình 1.2: Tuần tự công nghệ
Tính toán ∑


bằng cách trao đổi cặp công việc liền kề

cho ba tuần tự công nghệ được thể hiện trong Bảng 1.9

()
6

3

2

5

3

2

6

5

3

6

5

2

7


4

13

9

4

13

7

9

4

7

9

13

6

9

11

16


3

5

11

16

3

8

14

16

0

5

0

7

0

0

4


7

0

2

5

3

1

3

2

4

3

2

1

4

3

1


4

2

0

15

0

28

0

0

4

28

0

2

20

6




43

32

Bảng 1.9: Tính toán ∑

28

cho 3 tuần tự công nghệ

Để cho

tuần tự công nghệ tốt nhất hiện thời thì từ ba tuần tự công nghệ từ ,
tuần tự công nghệ tốt nhất hiện thời { , , , }. Bởi vậy
= { , , , }. Giá trị
của là: ( ) = 28. Từ đó, ( ) < ( ), =
và giá trị mới ( ) = 28.
Từ đó, tuần tự công nghệ tốt nhất
và 4 trong tuần tự công nghệ
Đặt

=

;

và đi đến vòng lặp kết tiếp.

được tạo nên bởi trao đổi các công việc 3
= {(3,4)} và


= {(3,4)}.


13
Vòng lặp 2
Bây giờ ta sinh tất cả các lịch của

bằng việc trao đổi khôn khéo cặp công

việc liền kề nhau được cho trong Bảng 1.10
Cặp được trao đổi

Tuần tự công nghệ mới

{ , , , }

{1,2}

{ , , , }

{ , , , }

{2,4}

{ , , , }

Tuần tự công nghệ

{ , , , }

{4,3}
{ , , , }
Bảng 1.10: Sinh tất cả tuần tự công nghệ từ bằng trao đổi cặp công việc liền kề

= 28

={ , , , }

= 41

= 31
= (1,2)

Tuần tự công nghệ
tốt nhất hiện thời

= (2,4)

{ , , , }

Hình 1.3: Tuần tự công nghệ
Tính toán ∑
hiện trong Bảng 1.11
()



{ , , , }

{ , , , }


bằng cách trao đổi cặp công việc liền kề

cho tuần tự công nghệ { , , , } và

, , , } được thực

6

3

5

2

3

5

6

2

7

4

9

13


4

9

7

13

6

9

14

16

3

8

14

16

0

5

5


3

0

0

7

3

1

3

4

2

3

4

1

2

0

15


20

6

0

0

7

6

41
Bảng 1.11: Tính toán ∑

13
cho 2 tuần tự công nghệ


×