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

Phương pháp CHC song song - Thư Viện Tài Liệu

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 (518.36 KB, 24 trang )


THệ VIEN ẹIEN Tệ TRệẽC TUYEN

OBO
OK S
.CO
M

Li núi u
Nhng nm gn õy, cựng vi s phỏt trin ca khoa hc k thut, ngi ta
ó gii quyt c nhiu bi toỏn húc bỳa bng mỏy tớnh. Nhng bờn cnh ú, vn
cũn khỏ nhiu cỏc bi toỏn vn cha tỡm c gii thut phự hp gii nú, ú l
cỏc bi toỏn ti u, trớ tu nhõn to v cỏc bi toỏn xut phỏt t thc t cuc sng
nh bi toỏn lp lch, bi toỏn iu khin Robot, bi toỏn ngi du lch,... õy l
cỏc bi toỏn cú khỏ nhiu rng buc phc tp, khụng rừ rng, ko gian tỡm kim
ln. Do ú cỏc phng phỏp truyn thng nh quay lui vột cn, leo i, mụ phng
luyn thộp, t ra ớt hiu qu, v ngi ta ó s dng mt phng phỏp khỏ ti
u ú l phng phỏp CHC v s dng trong mụ hỡnh song song.
Trong bi nghiờn cu ny nhúm tỏc gi nghiờn cu v phng phỏp CHC
s dng mụ hỡnh song song gii quyt bi toỏn MAXSAT. Chỳng ta s thy
c s ti u khi s dng mụ hỡnh song song so vi mụ hỡnh tun t v thi
gian, thớch nghi
Trong tng lai nhúm s tip tc phỏt trin ti nghiờn cu bng cỏch s
dng thut toỏn gii quyt mt s bi toỏn khỏc.
Nhúm tỏc gi xin chõn thnh cm n s giỳp tn tỡnh ca thy giỏo
Trung Kiờn ó giỳp cho nhúm trong quỏ trỡnh thc hin.
rc r.

KIL

Cui cựng xin chỳc hi ngh nghiờn cu khoa hc ca chỳng ta thnh cụng



H Ni, thỏng 04 nm 2008.
Nhúm tỏc gi.

1



THệ VIEN ẹIEN Tệ TRệẽC TUYEN

KIL
OBO
OKS
.CO
M

MC LC
Chng I: Tng quan v phng phỏp CHC ................................................................ 3
I. Tỡm hiu chung v thut toỏn di truyn................................................................. 3
II.
Tng quan v phng phỏp CHC ................................................................. 3
1. Khỏi nim........................................................................................................... 3
2. T tng ca thut toỏn CHC ......................................................................... 3
3. S Chn lc Elitist .......................................................................................... 5
4. Trỏnh s giao phi gn ..................................................................................... 6
Chng II: Xõy dng khung thut toỏn CHC ............................................................... 7
I. Thit k khung thut toỏn CHC ............................................................................. 8
1. Cỏc lp ũi hi (Requires) ............................................................................... 9
Lp bi toỏn (Problem) ................................................................................. 9
Lp li gii (Solution)................................................................................... 9

Lp toỏn t ngi s dng (Uer_Operator) ............................................. 10
Lp kim tra iu kin dng (StopCondition) ........................................... 10
2. Cỏc lp cung cp (Provided) ......................................................................... 10
Lp thit lp tham s u vo (SetUpParams) .......................................... 10
Lp qun th (Population) ......................................................................... 10
Lp la chn (Selection) ............................................................................ 11
Lp ch nh toỏn t s dng (Intra_Operator):....................................... 12
Lp nh ngha giao din toỏn t (Inter_Operator) .................................. 12
Lp lai ghộp (Crossover)............................................................................. 12
Lp thc thi gii thut (Solver) ................................................................ 13
II.

Khung thut toỏn tun t............................................................................. 13
1. Hm void Solver_Seq::DoStep() .................................................................. 13
III.
Khung thut toỏn song song ........................................................................ 15
Chng III. S dng khung thut toỏn gii quyt bi toỏn MAXSAT ..................... 16
I. c file cu hỡnh .................................................................................................... 16
II. S dng khung thut toỏn gii quyt bai toỏn MAXSAT................................ 17
III.
Kt qu thc nghim .................................................................................... 24
1. Kt qu tun t ............................................................................................. 24
2. Kt qu song song ......................................................................................... 24

2



THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN


KIL
OBO
OKS
.CO
M

BÁO CÁO KHOA HỌC

Đề tài:: PHƯƠNG PHÁP CHC SONG SONG

Chương I: Tổng quan về phương pháp CHC

I.
Tìm hiểu chung về thuật tốn di truyền
Giải thuật di truyền là kĩ thuật giúp giải quyết bài tốn bằng cách mơ phỏng
theo sự tiến hố và đấu tranh sinhh tồn của sinh vật trong tự nhiên theo thuyết tiến
hố mn lồi của Darwin.
Mục tiêu của giải thuật di truyền: giải thuật di truyền khơng đưa ra lời giải tối
ưu mà là đưa ra lời giải gần đúng (tương đối tối ưu).
Bản chất của thuật tốn di truyền là bài tốn tìm kiếm dựa theo qui luật của
q trình tiến hố tự nhiên. Thuật tốn di truyền kết hợp sự sống sót của cấu trúc
khoẻ nhất trong số các cấu trúc biểu diễn các nhiễm sắc thể (NST) với sự trao đổi
thơng tin được lựa chọn ngẫu nhiên để tạo thành một thuật tốn tìm kiếm.
Thuật tốn di truyền sử dụng các biểu diễn nhị phân kết hợp với sơ đồ để mơ
hình hố sự chọn lọc, lai ghép và đột biến.
Ứng dụng của thuật tốn di truyền:
+ Trong tin học: xây dựng chương trình tin học đặc biệt như trí tuệ nhân tạo
để hướng dẫn người sử dụng trong lĩnh vực giáo dục, quản trị.
+ Trong các cơng việc khác: Ứng dụng giải bài tốn sắp xếp thời khố biểu,
điều khiển robot, bài tốn vận tải, bài tốn đồ thị…

II.
Tổng quan về phương pháp CHC
1. Khái niệm
CHC là giải thuật di truyền phi truyền thống kết hợp chiến lược chọn lọc
(dựa trên những cá thể đơn lẻ tốt nhất) để đưa ra con lai tốt nhất khác với cả cha
và mẹ.
2. Tư tưởng của thuật tốn CHC

3



THệ VIEN ẹIEN Tệ TRệẽC TUYEN
CHC l t vit tt ca cross generational selection, Heterogeneous

KIL
OBO
OKS
.CO
M

recombination, and Cat aclysmic mutation. Gii thut CHC c phỏt trin bi
Eshelman (1991) c trỡnh by nh hỡnh v:

CHC la chn mt trang ca qun th cú kớch c à (à =50) nhng thay vỡ
chn nhng cha m tt tỏi kt hp ging cỏch lm ca gii thut gi truyn, cha
m c chn mt cỏch ngu nhiờn mt cp duy nht v iu kin sinh ra con
chung. Gii thut sau ú s chn tp cỏ th tt nht t cha m c kt hp v
qun th con c sinh ra th h tip theo. Vỡ vy gii thut CHC s duy trỡ c
qun th tt nht m c bt gp qua quỏ trỡnh tỡm kim.


4



THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN
Cha mẹ khơng được phép giao phối nếu như chúng khơng có sự khác biệt
thích đáng như được xác định bởi ngưỡng giao phối liên tục giảm. Tốn tử chéo
(crossover) được sử dụng bởi CHC là tốn tử HUX, với HUX là đại diện cho

KIL
OBO
OKS
.CO
M

crossover một nửa khơng đổi. Tốn tử HUX đảm bảo chính xác một nửa của số bit
khác nhau giữa cha mẹ được trao đổi để sản sinh ra con cái.
CHC khơng được sử dụng các tốn tử đột biến trong trường hợp thơng
thường, và thực tế cùng với những quần thể nhỏ trong CHC và sự lựa chọn thế hệ
giao làm cho quần thể được hội tụ nhanh chóng. Khi quần thể được hội tụ, CHC sẽ
được khởi động lại từng phần bởi việc sao chép bởi thành viên tốt nhất của quần
thể hiện tại sang một quần thể mới và sinh ra phần còn lại của quần thể mới với
những phiên bản được biến đổi ồ ạt (35% của các bit) của thành viên tốt nhất của
quần thể hiện tại.
3. Sự Chọn lọc Elitist

Trong suốt sự chọn lọc cho việc sinh sản thay vì sự thiên về chọn lọc C(t) cho
việc sinh sản hơn vì lợi ích của những thành viên thực hiện tốt hơn trong quần thể
cha mẹ P(t-1). Mỗi thành viên của P(t-1) được sao chép thành C(t) và được ghép

đơi một cách ngẫu nhiên. (Nói cách khác, C(t) đồng nhất với P(t-1) ngoại trừ khi
trật tự của các cấu trúc đã bị thay đổi). Mặt khác, trong suốt giai đoạn chọn lọc
sinh tồn thay vì thay thế quần thể cha mẹ cũ P(t-1) bằng quần thể con C’(t) để hình
thành P(t), thế hệ con mới được tạo ra phải được cạnh tranh với các thành viên của
quần thể cha mẹ P(t-1) cho sự sinh tồn - ví dụ cạnh tranh chính là thế hệ lai. Cụ thể
hơn, các thành viên của P(t-1) và C’(t) được hồ trộn và được xếp hạng theo sự
thích hợp, và P(t) được tạo ra bằng việc chọn lọc M tốt nhất (trong đó M là kích
thước quần thể), các thành viên của quần thể được hồ trộn. (Trong các trường
hợp mà một thành viên của P(t-1) và một thành việc của C’(t) có sự thích hợp
giống nhau, thành viên của P(t-1) được xếp hạng cao hơn). Ta sẽ gọi thủ tục giữ
lại các thành viên được xếp hạng tốt nhất của các quần thể con và quần thể cha mẹ
được xáo trộn là sự chọn lọc elitist bởi vì nó đảm bảo rằng các cá thể M tốt nhất sẽ
ln sống sót.

Một vài sự chọn lọc sinh tồn thiên về tính thích hợp sử dụng của giải thuật di

5



THệ VIEN ẹIEN Tệ TRệẽC TUYEN
truyn khỏc - Whitleys GENITOR (1989), Syswerdas Steady State GA
(SSSGA(1989), v Ackleys Iterated Generic Search(IGS) (1987). CHC khỏc vi

KIL
OBO
OKS
.CO
M


tt c ba loi gii thut ny trong ú vic cnh tranh sinh tn l th h lai-th h
con ch thay th mt thnh viờn ca qun th cha m nu nú tt hn. Hn na,
khụng ging nh ba gii thuõt ny, CHC vn hnh trong cỏc chu k th h vi rt
nhiu bn i ch khụng phi ch mt bn i cho mi chu k. S tin cy duy nht
i vi s chn lc sinh tn cho s thiờn lch ca nú vỡ li ớch ca nhng cỏ nhõn
thc thi tt hn hn v cng phõn bit nú vi GENITOR v SSSGA nhng khụng
phi l IGS. Cui cựng, phng phỏp c da trờn s xp hng tt yu ca vic
thc hin s chn lc phõn bit nú vi SSGA V IGS nhng khụng phi l
GENITOR.

4. Trỏnh s giao phi gn

S tng trng theo s m ca cỏc trng hp lc tt thỡ cú giỏ tr ớt hn
nu nú dn n s quy t cũn non. Mt trong nhng hu qu ca phộp lai mt na
bit khỏc nhau gia cỏc th h cha m ú l s nguy cú ca s hi t cũn non s
gim i. Thm chớ mi th h thỡ th h con chỏu gn õy nht giao phi vi mt
trong nhng t tiờn u tiờn (con ging nhau trong mi ln). Nú s mang cỏc th
h log2h quy t (trong vũng 1 bit) n t tiờn u tiờn ú h l khong cỏch tớn
hiu gia cỏc th h cha m u tiờn. Mc khỏc, trong trng hp ca phộp lai hai
im hai th h con s khỏc so vi th h cha m gn nht ca nú (c o bi
khong cỏch tớn hiu) bng s lng dao ng t 1 bit cho n khụng quỏ mt
na chiu di ca chui L. Chớnh vỡ vy, thi gian di nht m nú cú th to ra s
quy t trong vũng 1 bit ca t tiờn ca nú l cỏc th h log2h v thi gian ngn nht
l mt th h. Tt nhiờn, th h con khụng c giao phi li vi mt trong nhng
t tiờn xa ca nú nhng bi vỡ cỏc cỏ th tt hn s cú nhiu hu du hn. Vỡ vy,
s rt hp lý khi mt cỏ th c giao phi vi mt trong nhng h hng gn nht
ca nú. Cho n bõy gi, iu ny dn n vic lai cỏc cỏ th m chia s rt nhiu
Alen, s thụng dũ i vi s tỏi t hp nhanh chúng thoỏi hoỏ. Mc dự luụn luụn
lai mt na nhng s khỏc nhau( s dng HUX) s lm chm i quỏ trỡnh ny
6




THệ VIEN ẹIEN Tệ TRệẽC TUYEN
nhng ụi khi cỏc cỏ th c ghộp ụi li cú mt vi s khỏc bit. Nu mt hay
hai th h con sng sút i vi s giao phi ny thỡ nú chc chn s vic nh vy

KIL
OBO
OKS
.CO
M

cng s xy ra th h k tip.
CHC cú mt c ch b sung lm chm li tc ca s quy t- mt c ch
giỳp trỏnh s giao phi gn. Trong sut thi k sinh sn, mi thnh viờn ca
qun th cha m c chn mt cỏch ngu nhiờn m khụng thay th v c ghộp
ụi cho vic giao phi. Tuy nhiờn, trc khi giao phi thỡ khong cỏch tớn hiu
gia cỏc th h cha m tim nng c tớnh toỏn, v nu mt na khong cỏch ú (
khong cỏch tớn hiu ca cỏc th h con c mong i t cỏc th h cha m) s
khụng vt quỏ ngng khỏc nhau. Chỳng khụng c giao phi v b loi ra t
qun th con.(ngng khỏc nhau c thit lp phn bt u cho n L/4).
Chớnh vỡ vy, ch mt phn qun th c giao phi to ra th h con mi trong
bt k th h no. Khụng cú th h con no c chp nhn vo qun th cha m (
hoc l bi vỡ khụng cú bn giao phi tim nng hay bi vỡ khụng mt th h con
no tt hn qun th cha m), thỡ ngng khỏc nhau s b gim i. Hu qu ca c
ch ny ú l ch cú cỏc qun th cha m tim nng v a dng hn c giao phi
nhng s a dng c ũi hi bng ngng khỏc nhau t ng gim khi qun th
quy t mt cỏch t nhiờn. S lng nhng con sng sút cho mi th h s c
xem l thớch hp nht trong sut quỏ trỡnh tỡm kim bi vỡ khi CHC gp khú khn

trong vic tng tin trỡnh thỡ ngng khỏc nhau s gim xung nhanh hn khong
cỏch tớn hiu trung bỡnh cú nhiu cỏ nhõn hn c ỏnh giỏ. Ngc li, khi
CHC c xem l d dng to ra th h con m sng sút thỡ ngng khỏc nhau
s gim t l thp hn v s lng cỏc con giao phi cng s gim.

Chng II: Xõy dng khung thut toỏn CHC

Vic xõy dng khung thut toỏn cú ý ngha rt quan trng trong quỏ trỡnh lp trinh.
Nú cho phộp nhiu ngi dựng khai thỏc hiu qu nht nhng gii thut cng nh

7



THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN
cơ sở dữ liệu nhờ những khung thuật tốn có sẵn. Một số tiểu ứng dụng của khung
thuật tốn:

KIL
OBO
OKS
.CO
M

• Hỗ trợ thiết kế tối đa và khả năng tái sử dụng code:
Khung phải cung cấp cho người dùng tồn bộ kiến trúc của phương pháp giải
quyết bài tốn của họ. Hơn nữa các lập trình viên có thể tái sự dụng các đoạn code
đã có. Do đó người dùng chỉ cần phát triển một đoạn code nhất định cho vấn đề
đó.
• Tiện ích và khả năng mở rộng:


Khung phải cho phép người dùng đi qua một số lượng lớn các giải thuật đã
được giả quyết, các vấn đề, các mơ hình song song đã được đưa ra. Nó có khả
năng cho phép người dùng dễ dàng thêm hoặc thay đổi các đặc tính/ giải thuật mà
ko cần liên quan đến các thành phần khác. Giúp cho người sau thử nghiệm bai
tốn trên mơi trường song song.
• Tính linh động:
Khung hỗ trợ nhiều kiến trúc phần cứng và phần mềm khác nhau nên đáp
ứng được một số lượng lớn người dùng.
I. Thiết kế khung thuật tốn CHC
Cấu trúc chung của thuật tốn CHC:
1 t = 0

2 initialize P(t)

3 evaluate structures in P(t)
4 while not end do
5
6
7
8
9
10
11

t = t + 1

select: C(t) = P(t-1)

recombine: C'(t) = 'incest prevention' + HUX(C'(t))

evaluate structures in C'(t)

replace P(t) from C''(t) and P(t-1)

if convergence(P(t))
diverge P(t)

Khung thuật tốn gồm hai phần cơ bản là Provides và Requires.

8



THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN
Lớp Provided thực thi phía bên trong khung bao hàm các thủ tục chung cho
các bài tốn giải bằng giải thuật di truyền. Thơng thường đối với mỗi giải thuật thì
thường có một số giải pháp, tất cả các mơ hình tuần tự được nhóm vào lớp

KIL
OBO
OKS
.CO
M

Solver_Seq. Các mơ hình song song được nhóm vào các lớp Solver_Lan và
Solver_Wan.
Lớp Required chỉ định thơng tin liên quan đến vấn đề (bài tốn). Để cho tồn
bộ khung hoạt động thì các lớp này phải được bổ xung thơng tin về bài tốn phụ
thuộc .


1.

Các lớp đòi hỏi (Requires)
Các lớp đòi hỏi được sử dụng để lưu trữ dữ liệu cơ bản của thuật tốn. Ta có
thể hình dung các lớp Requre được xây dựng giống như một cái sườn, cái mẫu, và
đối với từng bài tốn cụ thể lại phải đắp thêm những thơng tin riêng của bài tốn
đó cho hồn chỉnh.
Nhóm các lớp Requires bao gồm các lớp sau:

Lớp bài tốn (Problem)
Diễn tả thơng tin bài tốn cần giải quyết. Dưới đây là các thủ tục chính trong
lớp bài tốn
Trong đó:
- Tốn tử chồng cout: Đưa ra các thơng số của bài tốn pbm theo luồng os.
- Tốn tử chồng cin: nhận vào các thơng số của bài tốn pbm từ luồng is.

Lớp lời giải (Solution)
Lớp lời giải diễn tả lời giải của bài tốn, trong q trình tiến hố, chúng ta
ln duy trì một quần thể các lời giải có thể của bài tốn và áp dụng các thao tác
của q trình tiến hố lời giải trên quần thể để tìm ra lời giải tối ưu cho bài tốn.
Dưới đây là các thủ tục chính trong lớp lời giải:
Trong đó
- operator<< đưa ra các thơng số của một lời giải theo os.

- operator>> nhận vào các thơng số của một lời giải theo luồng is.
- char *to_String(): Chuyển nhiễm sắc thể biểu diễn lời giải thành một xâu
ký tự

- to_Solution(char *_cadena_) : Hàm tạo ra một đối tượng lời giải từ một xâu
ký tự.


9



THệ VIEN ẹIEN Tệ TRệẽC TUYEN
- initialize(): Hm khi to b giỏ tr ngu nhiờn cho cỏc phn t trong li
gii

KIL
OBO
OKS
.CO
M

- fitness (): Hm tớnh thớch nghi lm c s ỏnh giỏ li gii.

Lp toỏn t ngi s dng (Uer_Operator)
Tha k t lp Intra_Operator.


Lp kim tra iu kin dng (StopCondition)
xỏc nh iu kin dng ca bi toỏn, trong tng bi toỏn thỡ iu kin
dng s khỏc nhau, thng cn c vo mt hoc mt vi tham s nh s th h,
thi gian chy, cỏc iu kin c thự ca bi toỏn...

2.

Cỏc lp cung cp (Provided)


Bao gm cỏc th tc chung cho cỏc bi toỏn gii bng gii thut CHC. Ta cú
th hỡnh dung cỏc lp loi provide ging nh mt th vin, v khi gii cỏc bi toỏn
ch vic gi nú ra.

Lp thit lp tham s u vo (SetUpParams)
Lp ny cha cỏc th tc thit t cỏc tham s cho bi toỏn nh ó nờu
trờn v cho cỏc toỏn t ca gii thut t 1 file u vo:
o independent_runs : s ln thc hin quỏ trỡnh tin húa trong mt ln thc
hin chng trỡnh
o population_size : kớch thc qun th
o nb_evolution_steps : s bc tin húa

o select_parents : phng thc la chn cha
o select_offsprings : phng thc la chn con

o combine : cú kt hp qun th c hay ch la chn t qun th mi.
o Hm istream& operator>> (istream& is, SetUpParams& setup) cú nhim
v thit t cỏc tham s cho bi toỏn. C th, nú nhn vo cỏc thụng s cu hỡnh t
mt file d liu (file ny s c gi l file cu hỡnh), da vo cỏc thụng s nhn
vo ny m chng trỡnh s chn phng phỏp la chn dựng trong bi toỏn
(trong 5 phng phỏp la chn ó k trờn), tham s la chn du hiu dng ca
thut toỏn, ... lm c s cho cu hỡnh ca gii thut gii bi toỏn.


Lp qun th (Population)
Lp ny lu tr cỏc thụng tin v qun th cỏc nhim sc th. Di õy l cỏc
th tc chớnh trong lp qun th.
10




THệ VIEN ẹIEN Tệ TRệẽC TUYEN
Trong ú :
o Evaluate(Solution *sol, struct individual &_f) : to ra cỏ th _f ( thớch
nghi, v trớ ) tng ng vi nhim sc th sol.

KIL
OBO
OKS
.CO
M

o initialize() : Sinh ra mt tp cỏc cỏ th mi trong qun th
o evolution() : Tin húa qun th bng cỏc phng phỏp: la chn, lai ghộp,
t bin.
o evaluate_parents() : To ra mt mng cha ng thớch nghi ca tt c
cỏc cỏ th v v trớ ca nú trong qun th. Cựng vi vic ỏnh giỏ thớch nghi ca
cha tt nht, cha ti nht v giỏ tr trung bỡnh
o evaluate_offsprings() : To ra mt mng cha ng thớch nghi ca tt c
cỏc cỏ th v cỏc con cựng v trớ ca nú trong qun th.
o select_parents() : La chn cha tin hnh lai ghộp, s dng mt trong 5
phng phỏp tin hnh la chn.
o select_offsprings() : La chn cỏc cỏ th cho qun th mi. Cú hai phng
phỏp hoc l ch la chn t qun th mi (combine = 0) hoc l la chn t qun
th mi v qun th c (combine = 1)
Hm quan trng nht trong lp ny l hm evolution(), nú thc hin cụng
vic tin hoỏ qun th hay sinh qun th mi qua cỏc phộp chn lc, lai ghep, t
bin nh trờn ó tỡm hiu.

Lp la chn (Selection)

thc hin vic chn lc cỏc cỏ th cú thớch nghi cao cho vo b lai
ghộp thc hin cỏc phộp bin i cho ra mt qun th mi cú thớch nghi cao
hn.
Di õy l cỏc th tc chớnh trong lp la chn.
Trong ú :
o prepare: thc hin vic chun b cỏc iu kin cho vic tin hnh chun b,
mi phng phỏp chn la thỡ yờu cu chun b ny s khỏc nhau.
o select_onechn mt cỏ th trong qun th cho vo b ghộp ụi, vic
chn la ny l ngu nhiờn theo xỏc xut chn la c tớnh t thớch nghi, cỏch
tớnh ny tu thuc theo tng phng phỏp chn la.
Cú 5 lp k tha t lp Selection tng ng vi 5 phng phỏp la chn ph
bin
Trong ú :

11



THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN
o Selection_Tournament : lựa chọn cạnh tranh, như đã giới thiệu trong phần
lý thuyết ở chương I.
o Selection_Roulette_Wheel : Lựa chọn bánh xe số.

KIL
OBO
OKS
.CO
M

o Selection_Rank : Lựa chọn theo danh sách xếp loại.

o Selection_Best : Lựa chọn tốt nhất.
o Selection_Worst : Lựa chọn tồi nhất .


Lớp chỉ định tốn tử sử dụng (Intra_Operator):
Để xác định phép biến đổi quần thể là lai ghép hay đột biến theo xác xác xuất
lai ghép và đột biến đã cho.
Hàm này gồm có cách thuộc tính và phương thức chính:
- int _number_operator: số hiệu của tốn tử áp dụng, được quy ước là bằng 0
nếu tốn tử là Crossover, bằng 1 nếu tốn tử là Mutation.
- probability: xác xuất (lai ghép hay đột biến)
- Intra_Operator *create(unsigned int _number_op): để tạo ra một đối tượng
thuộc lớp Crossover hoặc Mutation tuỳ theo tham số truyền vào (unsigned int
_number_op) là 0 hay 1..
- operator<< (ostream& os, const Intra_Operator& intra): Hàm đưa ra các
thơng số về đối tượng được tạo ra ở hàm creat

Lớp định nghĩa giao diện tốn tử (Inter_Operator)
Cung cấp những lớp định nghĩa giao diện chung cho nhiều tốn tử mà được
tạo nên từ hai phương thức chính: Setup, đọc cấu hình của tốn tử và execute, ứng
dụng tốn tử.

Lớp lai ghép (Crossover)
Để thực hiện việc lai ghép các lời giải với nhau tạo ra các lời giải mới. Dưới
đây là các thủ tục chính trong lớp lai ghép.
Trong đó:
- cross(Solution &sol1,Solution &sol2): hàm lai hai lời giải với nhau tạo ra
các lời giải mới.
- execute(Rarray<Solution*>& sols) : lai ghép 2 cá thể liên tiếp nhau trong
quần thể sols[] (một mảng các cá thể Solution).

Trong hai hàm này thì hàm Excute là chung cho mọi bài tốn, và ta chỉ cần
khai triển lại hàm Cross khi làm việc với các bài tốn cụ thể.
Ngồi ra còn các hàm

12



THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN
- setup(char line[MAX_BUFFER]) : nhận vào xác xuất lai ghép Probability.
- RefreshState(const StateCenter& _sc) : thiết lập lại các tham số phục vụ
cho việc lai ghép.

KIL
OBO
OKS
.CO
M

- UpdateFromState(const StateCenter& _sc) : cập nhật các tham số chung
của bài tốn sau một q trình lai ghép: quần thể lời giải, các thơng tin trong quần
thể, ...

Lớp Statistics
Lớp này thống kê những vết ở trạng thái hiện thời. Đưa ra thứ tự vết, q
trình tiến hố, chi phí tốt nhất, chi phí tổng cộng tốt nhất, giá trị trung bình,…

Lớp OperatorPool cung cấp một giao diện chung để sử dụng bất cứ tốn
tử.Tốn tử này quan tâm đến những thay đổi của các giải pháp trong quần thể


Lớp thực thi giải thuật (Solver)
Đư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
q trình thực hiện. có thể nói đây là lớp tổng hợp, được gọi trực tiếp từ chương
trình chính, nó sử dụng thành quả xây dựng được của các lớp trình bày phía trên
và là lớp trung gian giữa các lớp, thủ tục ta xây dựng phục vụ cho q trình tiến
hố với chương trình thực thi với các bài tốn cụ thể. Dưới đây là các hàm chính
trong lớp thực thi giải thuật
Trong đó :
o StartUp() : Khởi tạo quần thể, khởi tạo giá trị cho các biến trạng thái tiến
hố, các tham số cho quần thể trước khi bắt đầu một q trình tiến hố mới. Cập
nhật các biến kiểm sốt q trình chạy của cả bài tốn.
o DoStep() : Thực hiện các cơng việc trong một bước tiến hố của quần thể,
cập nhật lại các tham số của quần thể sau một bước tiến hố
o Run () : là thủ tục thực hiện tồn bộ q trình tìm kiếm của bài tốn dựa
vào các thơng tin về bài tốn, về các tham số, các điều kiện đầu vào được đọc vào
từ 2 file là file cấu hình và file bài tốn.

II. Khung thuật tốn tuần tự
Sử dụng lớp bài tốn tuần tự của phương pháp CHC.
1. Hàm void Solver_Seq::DoStep()

13



THệ VIEN ẹIEN Tệ TRệẽC TUYEN
void Solver_Seq::DoStep()
{

KIL

OBO
OKS
.CO
M

// tng bc lp hin thi lờn 1.
current_iteration(current_iteration()+1);

// gi n hm tin hoỏ ca qun th hin thi

current_population.evolution();
current_evaluations(current_population.evaluations());

// Ly nhng giỏ tr quan trng trong qun th hin thi

best_cost=current_population.best_cost(); // chi phớ tt nht

best_solution=current_population.best_solution(); // gii phỏp tt

nht

worst_cost=current_population.worst_cost(); // chi phớ ti nht

average_cost=current_population.average_cost(); //chi phớ trung

bỡnh

standard_deviation=current_population.standard_deviation();

//


time_spent_in_trial = _used_time(start_trial);
total_time_spent

= start_global + time_spent_in_trial; // tng s

thi gian s dng

// refresh state with these values
RefreshState();

RefreshCfgState();

if( (current_iteration() % params.refresh_global_state()) == 0)
UpdateFromCfgState();

14



THệ VIEN ẹIEN Tệ TRệẽC TUYEN
_stat.update(*this);

KIL
OBO
OKS
.CO
M

_userstat.update(*this);


if (display_state())

show_state();

}

Chng trỡnh:
Solver_Seq solver();
Solver.run();
Nu l mỏy ch (pid()= =0) thỡ
{

Gi n hm hin trng thỏi (show_state());
a ra gii phỏp tt nht;

a ta thớch nghi tt nht;
}

III. Khung thut toỏn song song
- La chn mụ hỡnh phn cng:
Cú hai mụ hỡnh ú l: mụ hỡnh phn cng phõn tỏn v mụ hỡnh phn cng
dựng chung.
+ Mụ hỡnh phn cng dung chung:
u im: tc nhanh
Nhc im: giỏ thnh cao.
+ Mụ hỡnh phn cng phõn tỏn:
u im: d ci t.

Nhc im: tc chm.

Vỡ nhng lý do trờn ta s dng mụ hỡnh phn cng phõn tỏn vic núi
chuyn gia cỏc mỏy tớnh c d dng.
Trong mụ hỡnh ny ta s dng cỏc th vin MPI v th vin NetStream nhm
to ra s thõn thin vi ngi s dng.
- La chn mụ hỡnh phn mm:
Cú ba mụ hỡnh phn mm:

15



THệ VIEN ẹIEN Tệ TRệẽC TUYEN
+ Mụ hỡnh ch - khỏch (Master_slave): õy mt b vi x lý n
duy trỡ vic iu khin qua cỏc vựng chn v s dng b vi x lý khỏc cho vic x
lý chộo, bin i v giỏ tr n l. tuy nhiờn gii thut ch hu ớch cho mt s

KIL
OBO
OKS
.CO
M

lng nh b vi x lý v mt s lng ln thi gian, mt khỏc mt giao tip tt
lm tng kh nng ca x lý song song.
+ Mụ hỡnh o (Island model): Trong mụ hỡnh ny mi b vi x lý chy gii
thut tin húa mt cỏch c lp, s dng cỏc qun th ph riờng bit cỏc b vi x
lý hp tỏc vi nhau bng vic thay i v trớ mt cỏch u n. Mụ hỡnh o c
bit thớch hp cho cỏc nhúm mỏy tớnh khi giao tip b hn ch.
+ Mụ hỡnh khuch tỏn (Diffusion model): mi cỏ nhõn l mt khụng
gian c sp xp v kt hp vi cỏ nhõn khỏc t mt mng ni b bờn cnh. Khi

x lý song song cú rt nhiu b vi x lý giao tip vi nhau (nh l nhng cỏ nhõn
giao tip vi hng xúm trong mi tng tỏc), nhng giao tip ch trong ni b. Vỡ
vy mụ hỡnh ny ch phự hp vi h thng mỏy tớnh song song ln vi mng ni
b tc cao.
Do ú ta s la chn mụ hỡnh phn mm l mụ hỡnh o (Island model).
Trong mụ hỡnh ny, mỏy ch v mỏy khỏch cú nhng nhim v khỏc nhau.
+ Mỏy ch: (mypid=0) thc hin lnh check_for_refresh_global_state();
+ Mỏy khỏch: (mypid!=0)Thc hin lnh DoStep();

Chng III. S dng khung thut toỏn gii quyt bi toỏn
MAXSAT
I. c file cu hỡnh
5
//s bc chy c lp
200
//s c lng
50
// s phn t

1
// trng thỏi hin th
Selection-Parameters // chn lc tham s

0.9 1 0.5
//tham s chn lc ,
Intra-Operators // toỏn t ỏp dng trong qun th
0 0.8
// xỏc sut lai

Inter-Operators // Toỏn t ỏp dng gia qun th ny v qun th khỏc


16



THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN
// số tốn tử, tốc độ tốn tử, số lượng cá thể, lựa chọn

0 25 5 1 3 1 5
cá thể đẻ gửi và lặp.
LAN-configuration

// làm mới trạng thái tồn bộ
// 0: chạy khơng đồng bộ / 1: chạy đồng bộ
// khoảng phát sinh để chọn giải pháp từ quần thể khác

KIL
OBO
OKS
.CO
M

101
0
1

II. Sử dụng khung thuật tốn giải quyết bai tốn MAXSAT
Để giải quyết một bài tốn bất kì trên khung CHC của bộ Mallba thì chúng ta phải đắp
thêm code vào 4 lớp đối với bài tốn Mallba. Bốn lớp đó là:


Problem


Solution



User_Statistics



Stop_condition_1

Đối với từng Class cụ thể ta thêm như sau.
Class problem và Solution nằm trong File CHC.hh để khai báo các thuộc tính và phương
thức:
-Ở lớp Problem ta phải thêm đoạn code sau:

-Ở lớp Solution ta phải thêm đoạn code sau:

17




KIL
OBO
OKS
.CO
M


THÖ VIEÄN ÑIEÄN TÖÛ TRÖÏC TUYEÁN

Trong File CHC.req.cc sẽ phải định nghĩa lại các phương thức sau
Đối với lớp Problem là:

18




KIL
OBO
OKS
.CO
M

THÖ VIEÄN ÑIEÄN TÖÛ TRÖÏC TUYEÁN

19




KIL
OBO
OKS
.CO
M


THÖ VIEÄN ÑIEÄN TÖÛ TRÖÏC TUYEÁN

Đối với lớp Solution:

20




KIL
OBO
OKS
.CO
M

THÖ VIEÄN ÑIEÄN TÖÛ TRÖÏC TUYEÁN

21




KIL
OBO
OKS
.CO
M

THÖ VIEÄN ÑIEÄN TÖÛ TRÖÏC TUYEÁN


22




KIL
OBO
OKS
.CO
M

THÖ VIEÄN ÑIEÄN TÖÛ TRÖÏC TUYEÁN

Đối với lớp StopCondition_1:

23



THÖ VIEÄN ÑIEÄN TÖÛ TRÖÏC TUYEÁN

III.

Kết quả thực nghiệm

KIL
OBO
OKS
.CO
M


(Chương trình đã chạy nhưng chưa đủ máy để chạy song song nên thứ 6 sẽ
trình bày sau)

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

2. Kết quả song song

Tài liệu tham khảo
[1]. Sergei L Kosakovsky Pond, Douglas D Richman, Simon D W Frost
Genetic Algorithms for Detecting Recombination
[2]. Sushil J. Louis, A Genetic Algorithm.

[3]. Helmut Pekari and Robert Clariso, MALLBA: instantiating SAT and
MAXCUT.
[4]. M.B Menai Département d’informatique, ‘Extremal Optimization’
for Max - SAT

24



×