Tìm kiếm Tabu (Tabu Search)

Một phần của tài liệu Giải bài toán xếp lịch bảo vệ thạc sỹ bằng các kỹ thuật tối ưu dựa trên ràng buộc (Trang 44)

Tìm kiếm Tabu được đề xuất bởi Fred W. Glover năm 1986[3]. Nội dung của phương pháp này như sau:

Trong quá trình tìm kiếm trong không gian lời giải bằng cách di chuyển từ một lời giải s tại bước lặp t về một lời giải tốt nhất s’ trong tập con của miền lân cận của lời giải s. Vì lời giải s’ không nhất thiết cải thiện chi phí so với lời giải s, một cơ chế được đặt ra để ngăn chặn quá trình khỏi lặp vòng trên một chuỗi các lời giải. Một cách để tránh sự lặp vòng là cấm quá trình tìm kiếm quay về những lời giải đã gặp rồi, nhưng làm như vậy đòi hỏi phải lưu trữ khá nhiều thông tin. Thay vì làm thế, chỉ một vài thuộc tính của những lời giải đã gặp sẽ được lưu trong danh sách (được gọi là danh sách Tabu hay Tabu list) và bất kỳ lời giải nào sở hữu những thuộc tính này sẽ không được xét đến trong T lần lặp. Cơ chế này thường được gọi là bộ nhớ ngắn hạn và T được gọi là kỳ hạn tabu.

Tìm kiếm Tabu được phát triển thành nhiều dạng cải tiến như tìm kiếm tabu thích nghi (reactive tabu search [13]) và tìm kiếm tabu với hai danh sách tabu: bộ nhớ ngắn hạn và bộ nhớ dài hạn.

4.1.4 Ví dụ

Trong luận văn này, chúng tôi sẽ trình bay quá trình giải bài toán N-Queen (n = 8) theo mô hình tìm kiếm cục bộ (CBLS).

Bài toán N-Queen có thể mô hình hóa như sau:

 Tập n biến quyết định X = {X0, X1..,Xn-1} Trong đó Xi là số dòng của con hậu đứng ở cột thứ i.

 Miền giá trị D= {D0, D1.., Dn-1} Trong đó Di = {0, 1, 2,.., n-1} là miền giá trị của Xi.

 Ràng buộc:

Chương 4: Tìm kiếm cục bộ dựa trên ràng buộc

o Xi + i ≠ Xj + j với mọi i ≠ j (các con hậu không cùng trên một đường chéo)

o Xi - i ≠ Xj - j với mọi i ≠ j (các con hậu không cùng trên một đường chéo) Một lời giải là một phép gán các giá trị S = {X0 = x0, X1 = x1,.., Xn-1 = xn-1} thỏa mãn tất cả các ràng buộc. Tập các lời giải lân cận của lời giải S là các lời giải S’ = {y0, y1.., ..yn-1} sao cho:

 xi ≠ yi với 1 giá trị i duy nhất

 xj = yj với mọi giá trị j ≠ i

Như vậy trong bài toán này, chỉ có duy nhất một loại bước di chuyển là gán lại 1 giá trị của phần tử Xi trong tập X. Lời giải được khởi tạo ngẫu nhiên, thuật toán dừng lại khi không còn vi phạm.

Lời giải tiếp theo được chọn ra trong các lời giải lân cận bằng thuật toán tìm kiếm tham lam:

 Con hậu ở cột i mà đang bị khống chế nhiều nhất

 Gán lại giá trị Xi làm giảm phạm vi nhiều nhất Dưới đây là mình họa quá trình tìm kiếm trong CBLS:

Chương 4: Tìm kiếm cục bộ dựa trên ràng buộc

Figure 6: N-queen bước 1

Figure 7: N-queen bước 2

Figure 8: N-queen bước 3

Bƣớc 1: Ta thấy con hậu ở cột 3 vi phạm nhiều nhất vì thế chọn X3 làm biến cần thay đổi

Di chuyển X3 theo các hàng, thấy chỉ có hàng thứ 7 và thứ 5 là làm giảm vi phạm của lời giải đi 1. Chọn ngẫu nhiên hàng 5 làm lời giải tiếp theo : X3 = 5

Bƣớc 2: Xét tiếp lời giải sau bước 1, ta thấy quân hậu ở cột 1, 2,3 đều có vi phạm là 2. Ta chọn quân hậu ở cột 1 làm biến cần thay đổi.

Quân hậu X1 di chuyển về hàng 6 và hàng 0 là tốt nhất. Ở đây chọn ngẫu nhiên là hàng 6. X1 = 6

Bƣớc 3: Các quân hậu ở cột 0, 1, 2, 3, 5, 6 có số vi phạm là như nhau. Chọn quân hậu ở cột 5 để thay đổi.

Quân hậu cột 5 di chuyển từ hàng 6 sang hàng 3 là tốt nhất. Chọn X5 = 3.

Chương 4: Tìm kiếm cục bộ dựa trên ràng buộc

Figure 9: N-queen bước 4

Figure 10: N-queen bước 5

Figure 11: N-queen bước 6

Bƣớc 4: Quân hậu ở cột 3 vi phạm nhiều ràng buộc nhất. Chọn X3 là biến cần thay đổi Di chuyển X3 về hàng 6 hoặc hàng 7 là tốt nhất. Ở đây chọn ngẫu nhiên hàng 7. X3 = 7

Bƣớc 5: Các quân hậu ở cột 0, 1, 3, 6 vi phạm nhiều nhất. Chọn ngẫu nhiên quân hậu ở cột 1 làm quân hâu cần di chuyển.

Di chuyển quân hậu cột 1 từ hàng 0 lên hàng 6 là tốt nhất vì thế gán X1 = 6

Bƣớc 6:Các quân hậu ở cột 3, 6 vi phạm nhiều nhất. Chọn ngẫu nhiêu quân hậu cột 6 làm mục tiêu thay đôi.

Di chuyển về hàng 5 là tốt nhất vì thế bước này gán X6 = 5

Chương 4: Tìm kiếm cục bộ dựa trên ràng buộc

Figure 12: N-queen bước 7

4.2 Thƣ viện JOpenCBLS

Thư viện JOpenCBLS (Java Open Constraint Based Local Searching) là thư viện tìm kiếm cục bộ dựa trên ràng buộc hỗ trợ ngôn ngữ lập trình Java cho phép mô hình hóa và giải các bài toán tối ưu tổ hợp. Thư viện này được phát triển bởi nhóm nghiên cứu “Thuật toán và tối ưu” tại viện Công nghệ thông tin và truyển thông, trường đại học Bách Khoa Hà Nội. Thư viện gồm hệ thống các API cho phép mô hình hóa và giải các bài toán tối ưu tổ hợp khác nhau bằng hướng tiếp cận tìm kiếm cục bộ .

4.2.1 Variables

4.2.1.1 Kiểu biến nguyên VarIntLS

Thư viện hỗ trợ khai báo các biến nguyên VarIntLS(ls, min, max)

VarIntLS(LocalSearchManager ls, int minValue, int maxValue)

Hàm khởi tạo

 LocalSearchManager: đối tượng quản lý các biến, hàm, ràng buộc của bài toán

 minValue: giá trị nhỏ nhất của biến

 maxValue: giá trị lớn nhất của biến

setValuePropagate(int v) Set giá trị v cho biến VarIntLS

4.2.2 Functions

4.2.2.1 IFunction

Thư viện JOpenCBLS cung cấp sẵn một interface IFunction :

Bƣớc 7:

Không còn vi phạm, lời giải bài toán đã được thỏa mãn

Chương 4: Tìm kiếm cục bộ dựa trên ràng buộc

Trong đó:

getMinValue() Return giá trị nhỏ nhất của hàm

getMaxValue() Return giá trị lớn nhất

getValue() Return giá trị hiện tại của hàm

getAssignDelta(VarIntLS x, int val)

Return giá trị chênh lệch giữa giá trị của hàm khi gán biến x = val và giá trị của hàm tại thời điểm hiện tại

getSwapDelta(VarIntLS x, VarIntLS y)

Return giá trị chênh lệch của hàm nếu đổi giá trị 2 biến x và y

4.2.2.2 Một số function hay dùng

Thư viện JOpenCBLS cung cấp một số function hay sử dụng trong quá trình mô tả và tìm kiếm lời giải.

 FuncPlus: phép cộng 2 function, 2 biến, function với biến hoặc với số nguyên

FuncPlus(IFunction f1, IFunction f2) f1 + f2 FuncPlus(IFunction f1, VarIntLS x) f1 + x FuncPlus(IFunction f1, int v) f1 + v FuncPlus(VarIntLS x, VarIntLS y) x + y FuncPlus(VarIntLS x, int v) x + v

 FunctMinus: tương tự như FuncPlus, FuncMinus là phép trừ 2 function, 2 biến, function với biến, hoặc với số nguyên

FuncMinus(IFunction f1, IFunction f2) f1 - f2 FuncMinus(IFunction f1, VarIntLS x) f1 - x FuncMinus (IFunction f1, int v) f1 - v FuncMinus(VarIntLS x,

Chương 4: Tìm kiếm cục bộ dựa trên ràng buộc

VarIntLS y)

FuncMinus(VarIntLS x, int v)

x - v

 ConditionSum: Trả về tổng trọng lượng của các phần tử trong mảng f, có giá trị bằng val, trọng số lưu giữ trong mảng w.

ConditionSum(IFunction[] f, IFunction[] w, IFunction val ∑ [ ] [ ] ConditionSum(VarIntLS [] f,

VarIntLS [] w, int val) ∑ [ ] [ ]

 Sum: trả về tổng giá trị của 1 mảng (có thể là biến, hàm) có thể cả trọng số.

Sum(VarIntLS[] x, IConstant[]c) ∑ [ ] [ ] Sum(IFunction[] f) ∑ [ ] Sum(VarIntLS[] x) ∑ [ ]  Occurrence: trả về số phần tử trong mảng x có giá trị bẳng val

Occurrence(VarIntLS[] x, int val)

Trả về số phần tử của mảng x bằng giá trị val

Sum(IFunction[] x, int val) Sum(IFunction[]x, IFunction val)

Occurrence(VarIntLS[] x, VarIntLS val)

 Max, Min: trả về giá trị lớn nhất và giá trị nhỏ nhất trong mảng

max(VarIntLS[] x) Giá trị lớn nhất trong mảng x

max(IFunction[]x)

min(VarIntLS[] x) Giá trị nhỏ nhất trong mảng x

Chương 4: Tìm kiếm cục bộ dựa trên ràng buộc

4.2.3 Constraint

4.2.3.1 IConstraint

JOpenCBLS cung cấp giao diện IConstraint

Trong đó

violations Trả về số lượng các vi phạm ràng buộc

Violations(VarIntLS x) Trả về số lượng các vi phạm ràng buộc của biến x

getAssignDelta(VarIntLS x, int val)

Trả về chênh lệch các vi phạm ràng buộc khi gán biến x bởi giá trị val

getSwapDelta(VarIntLS x, VarIntLS y)

Return giá trị chênh lệch của hàm nếu đổi giá trị 2 biến x và y

4.2.3.2 Một số ràng buộc

JOpenCBLS đã cài đặt sẵn một số ràng buộc, người dùng có thể sử dụng trong quá trình mô hình hóa bài toán.

 IsEqual(x,y): Thể hiện ràng buộc x=y trong đó x,y có thể là biến, hàm hoặc hằng số

 NotEqual(x,y): Thể hiện ràng buộc x ≠ y trong đó x,y có thể là biến, hàm hoặc hằng số

 LessOrEqual(x,y): Thể hiện ràng buộc x ≤ y trong đó x,y có thể là biến, hàm hoặc hằng số

 Implicate(Constraint c1, Constraint c2): thể hiện ràng buộc c1  c2

 AllDifferent([]x): Thể hiện mọi giá trị trong mảng biến hoặc mảng hàm x khác nhau

Ngoài ra JOpenCBLS cũng hỗ trợ người dùng tự định nghĩa một số hàm và ràng buộc riêng cho phù hợp với điều kiện bài toán.

4.2.4 Module tìm kiếm

Thư viện cung cấp các công cụ tìm kiếm tổng quát bao gồm:

Chương 4: Tìm kiếm cục bộ dựa trên ràng buộc

o selectMostViolatedVariable(): Trả về biến vi phạm nhiều ràng buộc nhất

o selelectMostPromissingValue(VarIntLS x) trả về giá trị tiềm năng nhất cảu biến x

MultiStageGreedySearch(Iconstraint S, int maxTime,

int maxStep, Boolean verbose): Tìm kiếm tham lam, thực hiện lạp lại 2 công việc lựa chọn biến vi phạm nhiều nhất bằng

selectMostViolatedVariable() và gán giá trị tiềm năng nhất cho biến bằng selelectMostPromissingValue()

Trong đó:

o S: Hệ thống ràng buộc

o maxTime, maxStep: Thời gian và số bước tối đa của quá trình tìm kiếm

o verbose: Tham số in ra hệ thống

 TabuSearch(): Khởi tạo đối tượng tìm kiếm có sử dụng mảng Tabu để cấm các bước di chuyển lặp lại liên tục:

o Search(IConstraint S, tabulen, maxTime, maxStep, maxStable): Tìm lời giải với phạm vi nhỏ nhất. Trong đó:

 Tabulen: độ dài mỗi lượt cấm trong mảng tabu

 maxStep, maxTime: thời gian và số bước tối đa của quá trình tìm kiếm

 maxStable: số bước tìm kiếm đối đa không cải thiện được của lời giải trước khi reset

o SearchMaintainConstraint(IFunction f, IConstraint S, int tabulen, int maxTime, int maxStep, int maxStable): Tìm lời giải cho hàm mục tiêu f nhỏ nhất trong phạm vi ràng buộc S.

Chương 5: Giải bài toán sắp xếp lịch bảo vệ cao học

Chƣơng 5. GIẢI BÀI TOÁN XẾP LỊCH BẢO VỆ CAO HỌC

Chương 5 của luận văn giới thiệu về bài toán sắp xếp lịch bảo vệ cao học. Trong chương này sẽ giải quyết bài toán bằng 2 phương pháp: quy hoạch ràng buộc với thư viện Choco và tìm kiếm cục bộ dựa trên ràng buộc với thư viện JOpenCBLS.

5.1 Phát biểu bài toán

Bài toán sắp xếp lịch bảo vệ cao học có mục tiêu là quản lý thông tin đào tạo và hỗ trợ việc sắp xếp lịch bảo vệ cao học. Thông thường, mỗi học viên cao học đến kỳ bảo vệ sẽ được thành lập một hội đồng bao gồm 5 thành viên:

 Phản biện 1: giảng viên ngoài trường

 Phản biện 2: giảng viên trong trường

 Chủ tịch: giảng viên trong trường

 Thư ký: giảng viên trong trường

 Ủy viên: giảng viên ngoài trường

Việc xếp lịch bảo vệ cao học bao gồm việc gán cho mỗi học viên:

 5 thành viên trong hội đồng

 Kíp thời gian sẽ diễn ra buổi bảo vệ

 Phòng nơi diễn ra buổi bảo vệ Thỏa mãn các ràng buộc sau đây:

 2 hội đồng có chung giảng viên thì phải được xếp ở 2 kíp bảo vệ khác nhau

 2 hội đồng được xếp vào cùng 1 kíp thì sẽ phải được xếp vào 2 phòng khác nhau

 2 hội đồng được xếp vào cùng 1 phòng thì sẽ phải được xếp vào 2 kíp bảo vệ khác nhau

và các tiêu chí tối ưu:

 Phản biện 1 và phản biện 2 phải phù hợp nhất với hướng đề tài luận văn của học viên trong hội đồng mà họ tham gia vào

Ngoài ra có thể có các tiêu chí khác như :

 Sự di chuyển phòng của các giảng viên là tối thiểu

 Sự liên tục của các kíp của các hội đồng mà mỗi giảng viên tham gia vào phải được đảm bảo nhất có thể được

 Mức độ cân bằng nhau giữa số hội đồng mà từng giảng viên tham gia vào là tối đa

 5 thành viên trong hội đồng không được trùng với giảng viên hướng dẫn

Tổng quát, bài toán sắp xếp lịch bảo vệ cao học được đặt ra như sau: Cho nStudent học viên

Chương 5: Giải bài toán sắp xếp lịch bảo vệ cao học

cho nStudent học viên bảo vệ sao cho:

 Số hội đồng bảo vệ: nSlot

 Số phòng bảo vệ: nRoom

 Mỗi hội đồng có nProfessorPerStudent giảng viên.

 2 hội đồng có chung giảng viên thì phải được xếp ở 2 kíp bảo vệ khác nhau

 2 hội đồng được xếp vào cùng 1 kíp thì sẽ phải được xếp vào 2 phòng khác nhau

 2 hội đồng được xếp vào cùng 1 phòng thì sẽ phải được xếp vào 2 kíp bảo vệ khác nhau

 Phản biện 1 và phản biện 2 phải phù hợp nhất với hướng đề tài luận văn của học viên trong hội đồng mà họ tham gia vào

Một kết quả đúng của bài toán là một cách sắp xếp mỗi học viên vào hội đồng bảo vệ với các giảng viên, số phòng, số kíp sao cho thỏa mãn mọi ràng buộc.

5.2 Mô hình toán học của bài toán

Bài toán sắp xếp lịch bảo vệ được trình bày dưới mô hình toán học:

5.2.1 Đầu vào của bài toán

 Danh sách các giảng viên: Từ 0 đến nProfessor -1

 Danh sách các học viên: Từ 0 đến nStudent – 1

 Danh sách các room: từ 0 đến nRoom -1

 Danh sách các kíp: từ 0 đến nSlot – 1

 Mức độ phù hợp Mi,j: thể hiện mức độ phù hợp về chuyên môn của giảng viên j với đề tài của học viên i.

5.2.2 Tập biến

 XPi,j: biểu diễn giảng viên thứ j trong hội đồng của học viên i

o 0 ≤ i < nStudent

o 0 ≤ j < nProfessorPerStudent

o XPi,1: là giảng viên phản biện 1 trong hội đồng học viên i

o XPi,2: là giảng viên phản biện 2 trong hội đồng của học viên i

 XRi: biểu diễn phòng của học viên i

 XSi: biểu diễn kíp của học viên i

5.2.3 Miền xác định của các biến

 0 ≤ XPi,j < nProfessor

 0 ≤ XRi < nRoom

 0 ≤ XSi < nSlot

5.2.4 Tập hợp các ràng buộc

 Các giảng viên trong 1 hội đồng của một học viên là khác nhau: XPi,j ≠ XPi,k với mọi j ≠ k

Chương 5: Giải bài toán sắp xếp lịch bảo vệ cao học

XPi,j = XPk,l  XSi ≠ XSk

 Hai hội đồng cùng phòng thì ở 2 kíp khác nhau XRi = XRj  XSi ≠ XSj

 Hai hội đồng cùng kíp thì khác phòng XSi = XSj  XRi ≠ XRj

5.2.5 Hàm mục tiêu

Trong luận văn này, chỉ xét hàm mục tiêu mức độ phù hợp về chuyên môn của phản biện 1 và phản biện 2 đối với hướng nghiên cứu của các học viên là tốt nhất.

5.3 Cài đặt giải thuật tìm kiếm với thƣ viện Choco

Giải thuật tìm kiếm dựa trên quy hoạch ràng buộc được cài đặt trong class Schedule.

5.3.1 Đọc dữ liệu đầu vào

 Hàm khởi tạo:

public Schedule(int n, int s, int r, int p) { numStudent = n;

numSlot = s; numRoom = r; numProfessor = p; }

 Đọc mức độ phù hợp của học viên với từng giảng viên: Mức độ phù hợp từng học viên với giảng viên được biểu diễn trong một mảng 2 chiều, đọc từ file trong đó costArr[i][j] thể hiện mức độ phù hợp của học viên I với giảng viên j.

 Hàm đọc mức độ phù hợp của từng học viên với giảng viên được đọc trước khi tiến hành xử lý. Trong chương trình được khởi tạo từ file cost.txt.

5.3.2 Khai báo biến

 Danh sách các giảng viên trong hội đồng của từng học viên được khai báo

Một phần của tài liệu Giải bài toán xếp lịch bảo vệ thạc sỹ bằng các kỹ thuật tối ưu dựa trên ràng buộc (Trang 44)

Tải bản đầy đủ (PDF)

(66 trang)