Tải bản đầy đủ (.doc) (30 trang)

sử dụng thuật toán luyện kim song song giải quyết bài toán maxsat.doc

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 (590.17 KB, 30 trang )

SỬ DỤNG THUẬT TOÁN LUYỆN KIM SONG SONG GIẢI QUYẾT BÀI TỐN MAXSAT

Chương I: Tổng quan thuật tốn mơ phỏng luyện kim (Simulated Annealing =
SA).............................................................................................................................4
I.

Giới thiệu chung về thuật toán SA...............................................................................................4

II.

Mơ hình tốn học của thuật tốn SA........................................................................................6

1.

Khơng gian trạng thái................................................................................................................6

2.

Hàm nhiệt độ..............................................................................................................................7

3.

Hàm chi phí và hàm sức khoẻ...................................................................................................8

4.

Sự phân bố trạng thái giới hạn.................................................................................................8

5.

Sự hội tụ và điều kiện dừng.......................................................................................................9


Sự hội tụ..........................................................................................................................................9
Điều kiện dừng..............................................................................................................................10

Chương II: Xây dựng khung thuật toán SA.....................................................10
I.

Lý do xây dựng khung thuật toán..............................................................................................10

II.

Khung chung của thuật toán SA.............................................................................................10

III.

Sơ đồ khung thuật toán...........................................................................................................12

1.

Lớp cung cấp (Provided).........................................................................................................13

2.

Lớp đòi hỏi (Required)............................................................................................................16

3.

Một số hàm quan trọng trong hai lớp Required và Provide.................................................17
3.1. SA.pro.cpp.............................................................................................................................17
3.2. SA.req.cpp.............................................................................................................................18


Chương III: Ứng dụng của thuật toán SA........................................................18
I.

Bài toán MAXSAT.......................................................................................................................18
1.

Giới thiệu bài toán...................................................................................................................18

Hàm Main_Seq..................................................................................................................................20
TRƯƠNG THỊ THÚY LAN(K54A) – KIỀU TUẤN DŨNG(K55B) - NGUYỄN MINH CHÂU K55B

1


SỬ DỤNG THUẬT TOÁN LUYỆN KIM SONG SONG GIẢI QUYẾT BÀI TỐN MAXSAT
III.

Khung thuật tốn SA song song giải quyết bài tốn MAXSAT............................................20

1.

Lựa chọn mơ hình....................................................................................................................21

2.

Cài đặt Bài tốn Maxsat..........................................................................................................21
2.1

Sử dụng thuật tốn SA.....................................................................................................21


2.1.1

Đọc file cấu hình.......................................................................................................21

2.1.2

Lớp Problem đọc bài toán MAXSAT........................................................................21

2.1.3

Hàm khởi tạo nhiệt độ..............................................................................................22

2.1.4

Hàm khởi tạo lời giải................................................................................................23

2.1.6

Hàm tính sức khoẻ....................................................................................................25

2.1.7

Hàm chấp nhận lời giải............................................................................................26

2.1.8

. Hàm kết thúc thuật toán........................................................................................26

2.2


Hàm void Solver_Lan::DoStep().....................................................................................26

2.3

Hàm Main_Lan.................................................................................................................27

Kết quả thực nghiệm..............................................................................................................................27
1.

Kết quả tuần tự..........................................................................................................................27

2.

Kết quả song song......................................................................................................................27

TRƯƠNG THỊ THÚY LAN(K54A) – KIỀU TUẤN DŨNG(K55B) - NGUYỄN MINH CHÂU K55B

2


SỬ DỤNG THUẬT TOÁN LUYỆN KIM SONG SONG GIẢI QUYẾT BÀI TOÁN MAXSAT

BÁO CÁO KHOA HỌC
ĐỂ TÀI:

THUẬT TOÁN LUYỆN KIM SONG SONG
(Parallel Simulated Annealing Algorithms)
GIẢI QUYẾT BÀI TOÁN MAX-SAT
MỞ ĐẦU
- Nhiều bài tốn tối ưu chưa có thuật tốn chính xác để giải quyết cho nên cần có một

thuật tốn gần đúng để tìm lời giải gần tối ưu.
- Khơng gian lời giải cần tìm là rất lớn nếu một máy tính tìm kiếm sẽ rất lâu nên cần
nhiều máy giải quyết và các máy phải thực hiện đồng thời. Điều này có thể thực hiện dễ
dàng nếu các máy tính tính tốn song song. Vì vậy việc tìm hiểu về các thuật toán song
song là cần thiết và mang tính khả thi đối với các bài tốn tối ưu
- Để rút ngắn thời gian lập trình chúng ta cần xây dựng khung thuật toán giúp giải
quyết các bài toán khác nhanh chóng hơn.
- Mục đích của đề tài này là sử dụng thuật toán luyện kim song song để giải quyết bài
toán tối ưu MAXSAT. Đề tài bao gồm các nhiệm vụ sau:
 Nghiên cứu lý thuyết về thuật toán luyện kim
 Xây dựng khung thuật toán chung cho các bài toán sử dụng thuật toán luyện
kim
 Áp dụng khung thuật toán luyện kim cho bài toán MAXSAT
 Cài đặt bài toán MAXSAT và đưa ra kết quả thực nghiệm trên cả chương trình
tuần tự và chương trình song song.

TRƯƠNG THỊ THÚY LAN(K54A) – KIỀU TUẤN DŨNG(K55B) - NGUYỄN MINH CHÂU K55B

3


SỬ DỤNG THUẬT TOÁN LUYỆN KIM SONG SONG GIẢI QUYẾT BÀI TỐN MAXSAT

 Từ đó sử dụng khung thuật tốn luyện kim để giải quyết các bài toán tối ưu
khác trong thực tế như: Bài toán người du lịch, bài tốn khơi phục ảnh, thiết kế
mạch IC, bài tốn sắp xếp thời khoá biểu cho trường đại học…

Chương I:

Tổng quan thuật tốn mơ phỏng luyện kim

(Simulated Annealing = SA)
I. Giới thiệu chung về thuật toán SA
 SA là một thuật tốn tìm kiếm xác suất di truyền, là phương pháp tối ưu hố có
thể áp dụng để tìm kiếm tối ưu hố tồn cục của hàm chi phí và tránh tối ưu hoá
địa phương bằng việc chấp nhận một lời giải tồi hơn với một xác suất phụ thuộc
nhiệt độ T.
 Sơ đồ:
Sơ đồ thể hiện trong một không gian lời giải thuật tốn luyện kim sẽ tìm đến tối
ưu toàn cục với bước nhảy từ tối ưu địa phương

Solution Space:
Không gian lời giải
Initial State:
Trạng thái ban đầu
Local Minimum:
Tối ưu địa phương
Global Minimum:
Tối ưu toàn cục

 Tiền thân của SA là thuật tốn Monte Carlo năm 1953 của nhóm Metropolis.
Thuật toán SA được đề xuất bởi S. Kirk _ partrick năm 1982 và được công bố
trước công chúng năm 1983.
 SA có nguồn gốc từ cơ học hệ thống. SA thực thi đơn giản và tương tự quá trình
luyện kim vật lý. Trong luyện kim vật lý kim loại được đốt nóng tới nhiệt độ cao
và làm lạnh từ từ để nó kết tinh ở cấu hình năng lượng thấp (tăng kích thước của
tinh thể và làm giảm những khuyết điểm của chúng). Nếu việc làm lạnh không
TRƯƠNG THỊ THÚY LAN(K54A) – KIỀU TUẤN DŨNG(K55B) - NGUYỄN MINH CHÂU K55B

4



SỬ DỤNG THUẬT TOÁN LUYỆN KIM SONG SONG GIẢI QUYẾT BÀI TỐN MAXSAT

xảy ra từ từ thì chất rắn khơng đạt được trạng thái có cấu hình năng lượng thấp
sẽ đông lạnh đến một trạng thái không ổn định (cấu trúc tối ưu địa phương)
 Gọi E là năng lượng của trạng thái s, E’ là trạng thái năng lượng của trạng thái s’
và ∆E = E’ – E là sự chệnh lệch nhiệt độ giữa trạng thái s’ và trạng thái s. Nếu
∆E ≤ 0 thì sự thay đổi kết quả được chấp nhận với xác suất

e

 E / k

B

T

trong đó T

là nhiệt độ, kB là một hằng số vật lý được gọi là hằng số Boltzmann.
 Nếu có số lượng lớn các bước lặp được thực hiện ở mỗi nhiệt độ, hệ thống sẽ đạt
trạng thái cân bằng nhiệt. Khi đó, sự phân bố xác suất của hệ thống trong trạng
thái s ở nhiệt độ T là

1
Z (T )

e

E / k


B

T

trong đó Z(T): là hàm phân phối.

 SA sử dụng một biến điều khiển toàn cục là biến nhiệt độ T. Ban đầu T ở giá trị
rất cao và sau đó được giảm dần xuống. Trong q trình tìm kiếm SA thay lời
giải hiện thời bằng cách chọn ngẫu nhiên lời giải láng giềng với một xác suất
phụ thuộc vào sự chênh lệch giữa giá trị hàm mục tiêu và tham số điều khiển T.
 Quá trình tối ưu hoá được tiếp tục cho tới khi cực tiểu tồn cục được tìm thấy
hoặc tổng số bước chuyển vượt quá một số tối đa các bước chuyển đã được định
trước. Sự chuyển tiếp ở một nhiệt độ kết thúc khi đạt tới trạng thái cân bằng
nhiệt. Sauk hi đạt tới trạng thái cân bằng nhiệt thì nhiệt độ được giảm thấp hơn.
Nếu hệ thống không đông lạnh và cũng khơng tìm được cực tiểu tồn cục thì
vịng lặp vẫn tiếp tục và chỉ số k tăng. Hệ thống đông lạnh khi T tiến tới nhiệt độ
Tcuối do người dùng đưa ra. Ta có sơ đồ thuật tốn.
Khởi tạo k = l= 0;
Lấy ngẫu nhiên si và phân tích
T = Tk; s = sk
l = l + 1;
Trạng thái
cân bằng nhiệt
Yes
Nhiệt độ giảm
k = k+1; l = 0;

No


k, l: là biến điều khiển
vòng lặp
l đánh dấu việc lặp lại ở
nhiệt độ Tk,
k tăng khi đạt cân bằng
nhiệt ở nhiệt độ Tk.
Tk và sk điều khiển q
trình xử lý ngẫu nhiên

Đơng lạnh?
No
T ≤ Tcuối
TRƯƠNG THỊ THÚY LAN(K54A) – KIỀU TUẤN DŨNG(K55B) - NGUYỄN MINH CHÂU K55B
Yes

Đạt tới cực tiểu toàn cục

5


SỬ DỤNG THUẬT TOÁN LUYỆN KIM SONG SONG GIẢI QUYẾT BÀI TỐN MAXSAT

II. Mơ hình tốn học của thuật tốn SA
1. Không gian trạng thái
 SA thực thi trong một không gian trạng thái. Không gian trạng thái là một tập
hợp các trạng thái, mỗi trạng thái đại diện cho một cấu hình. Kí hiệu khơng gian
trạng thái là S, số phần tử của không gian trạng thái là |S|.
 Một quan hệ láng giềng trên S:   S S
o Các phần tử của µ được gọi là các di chuyển
o (s, s’) Є µ kết nối qua một di chuyển được gọi là láng giềng

o (s, s’) Є µk kết nối qua một tập k di chuyển

U  k  S S
k 1

 Tập trạng thái kết nối với trạng thái đã cho si Є S được kí hiệu là Ni, số phần tử
của Ni gọi là cấp độ của si. Ni là tập các láng giềng của si.
 Có hai trạng thái si và si-1 và xác suất để si là trạng thái hiện thời phụ thuộc vào
hàm chi phí của si và hàm chi phí của si-1 và nhiệt độ T.
 Có ba trạng thái liên tiếp si-1, si, si+1 thì trạng thái si-1 và si+1 không phục thuộc
vào nhau.
 Xác suất mà s’ là trạng thái kế tiếp của s kí hiệu là P(s,s’,T) gọi là xác suất
chuyển tiếp.
 ( ( s ),  ( s ' ),T )  ( s, s ' )

s s '
P ( s, s ' , T ) 

1
  ( ( s ),  ( s ' ' ), T )  ( s, s ' ' )

s' '


α: hàm xác suất chấp nhận (acceptance probability function)
β: hàm xác suất lựa chọn (selection probability function)
β cho phép chỉ một cặp trạng thái trong μ được lựa chọn.
Xác suất lựa chọn không bao giờ bằng 0 cho một cặp trạng thái được kết nối
bởi một di chuyển đơn.


TRƯƠNG THỊ THÚY LAN(K54A) – KIỀU TUẤN DŨNG(K55B) - NGUYỄN MINH CHÂU K55B

6


SỬ DỤNG THUẬT TOÁN LUYỆN KIM SONG SONG GIẢI QUYẾT BÀI TOÁN MAXSAT
( s , s ')   ( s, s ' )  0
( s , s ')   ( s, s ' )  0
 sS    ( s , s ' ) 1
 s 'N


Hàm chấp nhận α: R3+  [0,1]

R

2. Hàm nhiệt độ
Đầu tiên khởi tạo nhiệt độ T là T0. Quy trình phổ biến nhất là quy trình làm lạnh
cân xứng: Tnew = Told * alpha khi alpha < 1.
Thuật toán kết thúc khi T = 0.

TRƯƠNG THỊ THÚY LAN(K54A) – KIỀU TUẤN DŨNG(K55B) - NGUYỄN MINH CHÂU K55B

7


SỬ DỤNG THUẬT TOÁN LUYỆN KIM SONG SONG GIẢI QUYẾT BÀI TỐN MAXSAT

Sơ đồ:


3. Hàm chi phí và hàm sức khoẻ

To : nhiệt độ khởi đầu
Hàm đánh giá cost là hàm xác định chi phí được dùng để ước lượng một lời giải đã
Tn: nhiệt độ kết thúc
cho. Hàm chi phí của lời giải s kí hiệu là f(s).
Hàm sức khoẻ Fitness được định nghĩa:
fitness 

Ti: nhiệt độ vòng i khi
1
1  cost

i = 1,..,N

* 100%

Sự giảm bớt chi phí tương đương với sự tăng của hàm sức khoẻ
Giá trị hàm sức khoẻ tăng khi nhiệt độ giảm thể hiện trong biểu đồ:

4. Sự phân bố trạng thái giới hạn
Cho πTk(si) là xác suất mà si là lời giải hiện thời sau k bước của thuật toán ở
nhiệt độ T.
Vectơ xác suất trạng thái: πTk = (πTk(s1), πTk(s2),…,πTk(si),…). Cho chuỗi Markov,
vector xác suất trạng thái hội tụ tới 1 véctơ xác suất giới hạn

lim  Tk   T
k 

TRƯƠNG THỊ THÚY LAN(K54A) – KIỀU TUẤN DŨNG(K55B) - NGUYỄN MINH CHÂU K55B


8


SỬ DỤNG THUẬT TOÁN LUYỆN KIM SONG SONG GIẢI QUYẾT BÀI TỐN MAXSAT

Trên thực tế có thể chứng minh rằng:
(S ) 
lim 
i
s
k   Tk

exp( f ( s ) / T )
i
 S exp( f ( s j ) / T )
j

(Phân bố Boltzmann)
 Phân bố giới hạn cho T  0
-

Cân nhắc 2 lời giải si và sj với f(si) < f(sj). Trong trường hợp này có:
(S )
i

(S )
Tk
j




Tk

k  

 


 f ( s j )  f ( si ) 
exp( f ( s ) / T )


i
 exp


exp( f ( s ) / T )
T
j



- Sự khẳng định cuối cùng là giả thiết
- Hội tụ tới ∞ chỉ có thể xảy ra nếu có:

T  0

 
 


f (s )  f (s )  0
j
i
lim lim

k T  0



Tk

(s )  0
j

- Chứng minh rằng: Cho lời giải khả thi s, k∞ và T0 xác suất πTk (s) hội
tụ tới 0, nếu s không phải lời giải tối ưu

lim lim  Tk ( s )  0
k  T  0

- Ngồi ra có thể chứng minh rằng nếu s là một lời giải tối ưu thì
(s) 
lim
lim 
| S
k   T  0 Tk

1
opt


|

Ở đây Sopt là tập tất cả các lời giải tối ưu.

5. Sự hội tụ và điều kiện dừng
Sự hội tụ
Cho khơng gian tìm kiếm hữu hạn S, điều kiện đủ cho sự hội tụ là sự cân bằng
chi tiết (detail balance) phụ thuộc vào xác suất giữa hai lời giải bất kỳ sj , si
trong không gian trạng thái là bằng nhau:
 i (T ). ij (T )  j (T ). ji (T )

Trong đó πi(T) là sự phân bố ổn định của trạng thái si ở nhiệt độ T.
Sự phân phối ổn định là một vectơ
π(T) = (π1(T), π2(T), …, π|s|(T))
Thỏa mãn phương trình: πT(T)*P(T) = πT(T)
P(T): ma trận chuyển tiếp
πT: Hoán vị của π.
|S| : là số phần tử của không gian trạng thái S.
Nếu P là tối giản và khơng có chu kỳ thì tồn tại một xác suất ổn định duy nhất
π. Điều kiện đủ cho tính khơng chu kỳ là tồn tại trạng thái si є S sao cho Pii ≠ 0.

TRƯƠNG THỊ THÚY LAN(K54A) – KIỀU TUẤN DŨNG(K55B) - NGUYỄN MINH CHÂU K55B

9


SỬ DỤNG THUẬT TOÁN LUYỆN KIM SONG SONG GIẢI QUYẾT BÀI TỐN MAXSAT

Điều kiện dừng

 Thuật tốn dừng khi đã tìm được một lời giải đủ tốt và T là quá nhỏ mà xác
suất tránh được là không đáng kể.
 Một tiêu chuẩn kết thúc khác là chi phí trung bình thay đổi khơng đáng kể ở
một vài giá trị liên tiếp nhau của T

Chương II:

Xây dựng khung thuật toán SA
I. Lý do xây dựng khung thuật toán
Chúng ta cần xây dựng khung chung cho thuật tốn nhằm đảm bảo:
• Giảm thiểu q trình code cho người sau
• Cho những người sau thử nghiệm bài tốn trên lập trình song song
• Việc xây dựng khung sẽ khiến người đọc hiểu được tổng quan thuật toán và
cách cài đặt thuật toán một cách nhanh hơn. Giúp cho người sau học có tính
khoa học hơn.

II.

Khung chung của thuật tốn SA
 Tất cả các bài toán giải bằng SA đều thực hiện theo các bước:
 Bước 1: Đầu tiên, tìm điểm xuất phát của bài toán
 Bước 2: Liệt kê các láng giềng có thể có của lời giải hiện thời
 Bước 3: Tiến hành ước lượng hàm mục tiêu hiện thời và hàm mục tiêu
của láng giềng vừa tìm được
 Bước 4: Sinh một biến ngẫu nhiên thường là phân bố mũ có các tham số
phụ thuộc vào hiệu quả của các giá trị hàm mục tiêu và tham số T.
 Bước 5: Nếu biến ngẫu nhiên lớn hơn hoặc nhỏ hơn một ngưỡng cho
trước thì chấp nhận láng giềng vừa tìm được làm phương án hiện tại
 Bước 6: Giảm nhiệt độ T.
 Bước 7: Quay trở lại từ đầu

 Đã chứng minh được khi T  0 thì tìm được lời giải tối ưu toàn cục. Tại
những giá trị nhiệt độ cao các bước chuyển được chấp nhận một cách ngẫu
nhiên bất luận chúng là bước chuyển có cải thiện hàm chi phí hay khơng. Khi

TRƯƠNG THỊ THÚY LAN(K54A) – KIỀU TUẤN DŨNG(K55B) - NGUYỄN MINH CHÂU K55B
10


SỬ DỤNG THUẬT TOÁN LUYỆN KIM SONG SONG GIẢI QUYẾT BÀI TOÁN MAXSAT

nhiệt độ được giảm xuống xác suất chấp nhận lời giải có cải thiện tăng lên và
xác suất chấp nhận lời giải khơng có cải thiện giảm xuống.
 Khung thuật toán SA gồm 3 lớp:
- Problem: Định nghĩa bài toán
- Solution: Định nghĩa lời giải
- Default Move: Định nghĩa sự chuyển đổi (sự phát sinh lời giải mới)
 Thuật toán Metropolis heuristic:
Algorithm Metropolis (S,T,M)
(*Trả lại giá trị giảm của hàm chi phí*)
Begin
Repeat
M = M + 1;
NewS  neighbor(S);(*sinh ra lời giải mới
NewS*)
gain  Gain(NewS,S);(*chênh lệch hàm chi phí*)
If ((gain > 0) or (random < egain/KBT)) then
{
S  NewS; (*Chấp nhận lời giải*)
If (cost(NewS) < cost(BestS)) then
BestS  NewS;

}
Until (M mod MarkovChain_length == 0);
End;(* of metropolis)

Trong đó:
o Thủ tục nhận lời giải s ở nhiệt độ T và cải thiện nó qua sự tìm kiếm địa
phương
o M là số phép lặp ở nhiệt độ T
o Hàm neighbor sinh ra lời giải mới NewS
o Hàm Gain: độ chênh lệch hàm chi phí của lời giải S và lời giải mới
NewS tức là gain = chi phí của S – chi phí của NewS.
o Random là số ngẫu nhiên từ 0 đến 1
o Nếu chi phí NewS thấp hơn chi phí của S thì chấp nhận lời giải NewS
cịn nếu chi phí NewS lớn hơn chi phí của S thì vẫn chấp nhận lời giải
NewS nhưng với xác suất là radom < egain/KBT

TRƯƠNG THỊ THÚY LAN(K54A) – KIỀU TUẤN DŨNG(K55B) - NGUYỄN MINH CHÂU K55B
11


SỬ DỤNG THUẬT TOÁN LUYỆN KIM SONG SONG GIẢI QUYẾT BÀI TOÁN MAXSAT

o Nếu NewS được chấp nhận sẽ so sánh với BestS. Nếu cost(BestS) >
cost(NewS ) thì BestS được thay thế bởi NewS . Cịn khơng thì vẫn giữ
ngun lời giải BestS và tiếp tục thực hiện vòng lặp.
 Thuật toán SA
Algorthm Simulated_Annealing
Begin
Initialize(T); //khởi tạo nhiệt độ T
S0 = Initial_Solution()// khởi tạo lời giải S0

M = 0;
Repeat
Call Metropolis (S0,T,M) ;
T  alpha * T;//Cập nhật T
Until (T = 0)
Lời giải tốt nhất được tìm thấy
End.
o

alpha: tốc độ làm lạnh

o

Thuật toán SA ban đầu khởi tạo nhiệt độ T và lời giải S0

o

Gọi hàm Metropolis để tìm lời giải tốt nhất BestS. Sau khi đã tìm

được lời giải tốt nhất thì cập nhật lại nhiệt độ T theo thơng số alpha.Thực hiện
vòng lặp cho tới khi T = 0 sẽ tìm được lời giải tốt nhất tồn cục của bài toán.
 Một điều quan trọng nữa là khi thực hiện thuật tốn SA người dùng phải cấu
hình các thơng số của thuật tốn trong file cấu hình SA.cfg bao gồm:
o
// số bước chạy độc lập
o
// số ước lượng
o
// Markov-Chain Length
o

// độ giảm nhiệt độ
o
// có hiển thị trạng thái ?
o LAN-configuration
o
// trạng thái toàn cục được cập nhật trong n ước lượng
o
// 0: asynchronized mode // 1: synchronized mode
o
// số bước lặp để phối hợp ( nếu là 0 không phối hợp)
 Thuật tốn SA có thể chạy được cả ở môi trường tuần tự và môi trường song
song.

III. Sơ đồ khung thuật tốn
 SA có hai phân lớp chính là lớp Required (lớp đòi hỏi) và lớp Provided (lớp
cung cấp) được thể hiện trong hình vẽ dưới đây
TRƯƠNG THỊ THÚY LAN(K54A) – KIỀU TUẤN DŨNG(K55B) - NGUYỄN MINH CHÂU K55B
12


SỬ DỤNG THUẬT TOÁN LUYỆN KIM SONG SONG GIẢI QUYẾT BÀI TOÁN MAXSAT

1. Lớp cung cấp (Provided)
 Provided: bao hàm các thủ tục chung cho thuật toán SA và được áp dụng cho
hầu hết các bài toán sử dụng thuật tốn SA (ví dụ như khung của thuật tốn SA
tuần tự, khung của thuật toán SA song song, thiết đặt các thơng số của bài tốn ...).
Bao gồm các lớp:
o SetupParams: Là một lớp quan trọng để đọc file cấu hình và khởi tạo các
giá trị trong file cấu hình.
o Solver: Thực hiện các chiến lược đưa ra và duy trì các thơng tin có liên

quan tới trạng thái tìm kiếm trong suốt quá trình thực hiện.
class Solver
{
protected:
const Problem&

problem;

const SetUpParams& params;
UserStatistics
Statistics

_userstat;
_stat;

TRƯƠNG THỊ THÚY LAN(K54A) – KIỀU TUẤN DŨNG(K55B) - NGUYỄN MINH CHÂU K55B
13


SỬ DỤNG THUẬT TOÁN LUYỆN KIM SONG SONG GIẢI QUYẾT BÀI TOÁN MAXSAT
Move*

move;

Solution

current;

double


curfit;

Solution

tentative;

double

currentTemperature;

unsigned int
StateCenter

k; // to control temperature update.
_sc;

float

total_time_spent;

float

time_spent_in_trial;

float

start_trial;

float


start_global;

bool

_end_trial;

State_Vble

sol; // Một vector các lời giải tạm thời của bài toán

const Direction _direction;
bool AcceptQ(double tent, double cur, double temperature);
// chấp nhận lời giải
double Set_Initial_Temperature(const Problem& pbm);
// khởi tạo nhiệt độ của bài toán
void KeepHistory(const Solution& sol, const double curfit,const
float time_spent_trial,const float total_time_spent);
double UpdateT(double temp, int K);//cập nhật nhiệt độ
public:
Solver (const Problem& pbm, const SetUpParams& setup);
// Full execution
virtual void run () =0;
virtual void run (có tham số) =0;
// Partial execution
virtual void StartUp () =0;
virtual void StartUp (có tham số) =0;
virtual void DoStep () =0;
}

Có 2 lớp kế thừa từ lớp Solver:

 Solver_Seq: Chứa các thủ tục run() để giải quyết bài toán một cách
tuần tự
provides class Solver_Seq: public Solver
{
TRƯƠNG THỊ THÚY LAN(K54A) – KIỀU TUẤN DŨNG(K55B) - NGUYỄN MINH CHÂU K55B
14


SỬ DỤNG THUẬT TOÁN LUYỆN KIM SONG SONG GIẢI QUYẾT BÀI TOÁN MAXSAT

public:
Solver_Seq ( const Problem& pbm, const SetUpParams& setup);
void run ();
virtual void run (unsigned long int max_evaluations);
virtual void run (const Solution& sol, unsigned long int
max_evaluations);
virtual void run (const double initialTemperature);
virtual void run (const Solution& sol,const double
initialTemperature);
virtual void run (const double initialTemperature, unsigned long
int nb_evaluations);
virtual void run (const Solution& sol,const double
initialTemperature, unsigned long int nb_evaluations);
// Partial execution
virtual void StartUp ();
virtual void StartUp (const Solution& sol);
virtual void StartUp (const double initialTemperature);
virtual void StartUp (const Solution& sol, const double
initialTemperature);
virtual void DoStep ();

};

 Solver_Lan: Chứa thủ tục run(int argc, char** argv) để giải quyết
bài tốn một cách song song trên mơi trường mạng LAN. Với tham
số truyền vào của hàm chính là các tên máy tham gia vào q trình
tính tốn.
provides class Solver_Lan: public Solver
{
private:
NetStream _netstream;
int mypid;
void send_local_state_to(int _mypid);
int receive_local_state_from(int source_pid);
void check_for_refresh_global_state();
unsigned int _current_trial;
unsigned int _current_iteration;
TRƯƠNG THỊ THÚY LAN(K54A) – KIỀU TUẤN DŨNG(K55B) - NGUYỄN MINH CHÂU K55B
15


SỬ DỤNG THUẬT TOÁN LUYỆN KIM SONG SONG GIẢI QUYẾT BÀI TOÁN MAXSAT

double _best_cost_trial;
Solution _best_solution_trial;
float _time_best_found_in_trial;
unsigned int _iteration_best_found_in_trial;
double _temperature_best_found_in_trial;
int cooperation();
// Termination phase //
bool final_phase;

int acum_evaluations;
public:
Solver_Lan (const Problem& pbm, const SetUpParams& setup,int
argc,char **argv);
virtual ~Solver_Lan ();
virtual int pid() const;
NetStream& netstream();
void run ();
virtual void run (có tham số);
………………
// Partial execution
virtual void StartUp ();
virtual void StartUp (có tham số);
…………………
virtual void DoStep ();
void reset();
};

o Statistic: được áp dụng cho bất kỳ khung nào trong MALLBA và bao
gồm thơng tin cần để bảo đảm tốn tử thích hợp của thuật tốn.
o Stop_Condition: Điều kiện dừng của bài tốn
o …….

2. Lớp địi hỏi (Required)
 Required: bao hàm các thủ tục riêng trong thuật toán SA của từng bài tốn cụ
thể (ví dụ như các thủ tục tính nhiệt độ, thủ tục tính hàm sức khoẻ, thủ tục sinh lời
giải ...).
 Các lớp đòi hỏi được sử dụng để lưu trữ dữ liệu cơ bản của thuật toán : bài
tốn, trạng thái khơng gian tìm kiếm và vào/ra. Bao gồm các lớp:
TRƯƠNG THỊ THÚY LAN(K54A) – KIỀU TUẤN DŨNG(K55B) - NGUYỄN MINH CHÂU K55B

16


SỬ DỤNG THUẬT TOÁN LUYỆN KIM SONG SONG GIẢI QUYẾT BÀI TỐN MAXSAT

o Problem: Mơ tả bài tốn cần được giải quyết. Nhận các thơng số của bài
tốn từ file định nghĩa bài toán.
o Solution: Miêu tả tập lời giải có thể được thực hiện.
o UserStatistic: lưu trữ thơng tin cuối cùng của bài toán :lời giải tốt nhất, số
đánh giá, thời gian thực thi,…
o DefaultMove: Thực hiện việc cập nhật lời giải mới của bài toán.
o TerminateQ: Thực hiện điều kiện dừng của bài tốn.
Ta có sơ đồ khung thuật tốn SA như sau:

Những lớp có dấu * là các lớp Required
Trong đó:
 NetStream: Là một lớp trung gian giữa khung và MPI dễ dàng cho việc xử
lý song song như hình vẽ. (thể hiện việc gửi nhận dữ liệu)

TRƯƠNG THỊ THÚY LAN(K54A) – KIỀU TUẤN DŨNG(K55B) - NGUYỄN MINH CHÂU K55B
17


SỬ DỤNG THUẬT TOÁN LUYỆN KIM SONG SONG GIẢI QUYẾT BÀI TỐN MAXSAT

 State_Center: cho phép tìm kiếm một biến trạng thái, thêm một biến trạng
thái, và loại bỏ một biến trạng thái hoặc cập nhật nội dung của một biến
trạng thái. Tất cả các trường hợp của StateVariable được xếp bên trong
StateCenter
 State_Vble: cho phép định nghĩa và thiết đặt, lấy tên các biến trạng thái.


3. Một số hàm quan trọng trong hai lớp Required và Provide
3.1. SA.pro.cpp
Một số hàm chính

Ý nghĩa

istream& operator>> (istream& is,
SetUpParams& setup)

Đọc vào file cấu hình

ostream& operator<< (ostream& os,
const SetUpParams& setup)

In ra file cấu hình vừa đọc
được

Khởi tạo các biến của SetupParams
ostream& operator<< (ostream& os,
const Statistics& stats)

In ra kết quả thông kê.

void Statistics::update(const
Solver& solver)

Cập nhật các giá trị mới

Các hàm của Slover tính tốn các giá trị như: thời gian, các

bước lặp, nhiệt độ hiện tại, lời giải hiện tại…
double Solver::UpdateT(double
temp, int K)

Cập nhật nhiệt độ với tham
số K

double
Solver::Set_Initial_Temperature(c
onst Problem& pbm)

Thiết đặt nhiệt độ ban đầu
cho bài tốn

3.2. SA.req.cpp
Một số hàm chính

Ý nghĩa

ostream& operator<< (ostream& os,
const Problem& pbm){ return os; }

In ra bài toán

istream& operator>> (istream& is,

Đọc vào bài toán

TRƯƠNG THỊ THÚY LAN(K54A) – KIỀU TUẤN DŨNG(K55B) - NGUYỄN MINH CHÂU K55B
18



SỬ DỤNG THUẬT TOÁN LUYỆN KIM SONG SONG GIẢI QUYẾT BÀI TOÁN MAXSAT

Problem& pbm){ return is; }
const Problem& Solution::pbm()
const { return _pbm; }
istream& operator>> (istream& is,
Solution& sol)
{ return is; }
ostream& operator<< (ostream& os,
const Solution& sol)
{return os;}

Đọc vào và trả ra lời
giải bài toán

NetStream& operator << (NetStream&
ns, const Solution& sol){ return
ns; }
NetStream& operator >> (NetStream&
ns, Solution& sol) { return ns; }

Đọc vào và trả ra lời
giải bài toán sử dụng cho
song song

double Solution::fitness () const
{
return 0.0;

}

Hàm sức khoẻ

void UserStatistics::update(const
Solver& solver)
bool TerminateQ (const Problem&
pbm, const Solver& solver,const
SetUpParams& setup)

Hàm

kết thúc

Chương III:

Ứng dụng của thuật toán SA
I. Bài toán MAXSAT
1. Giới thiệu bài toán
Bài toán MAXSAT bao gồm tập n biến {x1, x2,…,xn } và tập m mệnh đề. Mục
đích của bài tốn MAXSAT là tìm một phân phối các giá trị chân lý T cho các
biến sao cho ít nhất k mệnh đề đúng
CNF = Conjunctive Normal Form - Dạng chuẩn hội. Ta có:
o Bất kỳ một kí hiệu vị từ P nào đều là một công thức trong CNF
TRƯƠNG THỊ THÚY LAN(K54A) – KIỀU TUẤN DŨNG(K55B) - NGUYỄN MINH CHÂU K55B
19


SỬ DỤNG THUẬT TOÁN LUYỆN KIM SONG SONG GIẢI QUYẾT BÀI TỐN MAXSAT


o Nếu F là một cơng thức trong CNF thì ¬F là một cơng thức
o Nếu F và G là cơng thức thì F  G là cơng thức trong CNF
o Nếu F và G là công thức thì F  G là cơng thức trong CNF
o Một hàm T: P-> {TRUE, FALSE} nghĩa là T là sự phân bố các giá trị chân
lý {TRUE, FALSE} cho các vị từ trong P.
Một công thức F thoả mãn bởi một chỉ thị chân lý T nếu:
• F là một biến logic x thì T(x) = TRUE
• F là một cụng thc ơG thỡ T( G) = FALSE
ã F l một cơng thức G  H thì T thoả mãn G và H
• F là một cơng thức G  H thì T thoả mãn G hoặc H
Ví dụ:
F ( x0  x )  ( x1   x2 ) Công
1

mệnh đề

thức này bao gồm 3 biến x0, x1 và ¬x2 và có hai

( x0  x ) và ( x1   x2 )
1

. Một ví dụ của chỉ thị T cho công thức này: T1 =

{x0  FALSE, x1  FALSE, x2  TRUE}. T1 không thoả mãn cơng thức F.
Tuy nhiên có một chỉ thị khác thoả mãn công thức F là: T2 = {x0  FALSE, x1
 TRUE, x2  TRUE}. Thấy rằng F thoả mãn và T2 là chỉ thị làm thoả mãn F.
Bài toán MAX-SAT được định nghĩa như sau:
Input:
 n biến logic x1, x2, x3,…,xn mà có thể chỉ nhận giá trị TRUE hoặc FALSE
 m mệnh đề C1, C2, C3,…,Cm mỗi mệnh đề là một sự phân cách của các kí tự

Mỗi kí tự là một biến khẳng định xk hoặc phủ định
(C j  xi1  xi 2  ...  xik ) .

xk

và có mệnh đề

Trọng số wi 0 cho mỗi mệnh đề Ci

Một công thức CNF là một sự kết hợp các mệnh đề F C 1 C 2  ...  C m
Output
Tìm một phân bố T (TRUE/FALSE) cho n biến logic mà số mệnh đề được
thoả mãn có tổng trọng số là lớn nhất.

II. Khung thuật toán SA tuần tự giải quyết bài toán MAXSAT
1.

Hàm void Solver_Seq::DoStep()
DoStep()
{
//Tăng bước lặp hiện tại lên 1;

TRƯƠNG THỊ THÚY LAN(K54A) – KIỀU TUẤN DŨNG(K55B) - NGUYỄN MINH CHÂU K55B
20



×