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

Gải thuật toán di truyền song song và ứng dụng giải quyết bài toán Max-sat

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 (364.12 KB, 28 trang )


THệ VIEN ẹIEN Tệ TRệẽC TUYEN
TRNG I HC S PHM H NI

OBO
OK S
.CO
M

KHOA CễNG NGH THễNG TIN

BO CO KHOA HC
TI:

GII THUT DI TRUYN SONG SONG V NG DNG GII
BI TON MAX- SAT

Ging viờn hng dn : Thy Trung Kiờn
Sinh viờn thc hin

: Nguyn Th La K54C

KIL

Vn Quang K55B

Trn ng Doanh- K55B



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



ti: thut toỏn di tuyn song song v ng dng gii quyt bi toỏn Max-sat

KIL
OBO
OKS
.CO
M

MC LC

LI M U2
Chng I : Tng quan ...3
1. Tng quan thut toỏn di truyn 4
1.1 Khỏi nim..4
1.2 Cu trỳc ca thut toỏn di truyn .7
2. Vớ d minh ha12
2.1 Bi toỏn Max-sat .12
2.2 Gii thut di truyn gii quyờt bi toỏn Max-sat..14
Chng II : Xõy dng thut toỏn di truyn ...14
1.

Khung thit k thut toỏn di truyn ...15

1.1 Lp provides lp cung cp..15
1.2 Lp Requide Lp yờu cu ..16
2. Khung thut toỏn tun t .20
3. Khung thut toỏn song song .22
3.1 La chn phn cng .22
3.2 La chn phn mm.22

Chng III : s dng khung thut toỏn di truyn gii quyt bi toỏn Maxsat26
1. ci t bi toỏn Max-sat...26
1.1 file cu hỡnh .cfg.26
1.2 file u vo .dat .26
2. S dng khung thut toỏn di truyn gii bi toỏn Max-sat..27
Chng III : Kt qu thc nghim ..28
1. kt qu tun t ..28
2.Kt qu song song.28

Nguyn Th La k54C Vn Quang Trn ng Doanh- K55B

2



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

ti: thut toỏn di tuyn song song v ng dng gii quyt bi toỏn Max-sat

KIL
OBO
OKS
.CO
M

LI M U

Vi kh nng hin nay, mỏy tớnh ó giỳp gii c rt nhiu bi toỏn khú m
trc õy thng bú tay. Mc dự vy vn cú mt s ln cỏc bi toỏn thỳ v m
cha cú gii thut hp lý gii chỳng. Trong ú cỏc bi toỏn ti u l nng bi

toỏn thng gp trong thc tin.

Trong thc tin, cú nhiu bi toỏn ti u quan trng ũi hi nhng thut toỏn
cú cht lng cao. Vớ d ta cú th dựng phng phỏp mụ phng luyn thộp
gii quyt bi toỏn tỡm ng i ngn nht cho xe cu ha hay bi toỏn ngi du
lch Cng cú nhiu bi toỏn ti u t hp (trong ú cú nhiu bi toỏn c
chỳng minh l NP - ) cú th gii gn ỳng trờn mỏy tớnh hin i bng k thut
Monte - Carlo.

Núi chung bi toỏn ti u cú th xem nh bi toỏn tỡm kim gii phỏp tt
nht trong khụng gian vụ cựng ln cỏc gii phỏp. Khi khụng gian tỡm kim nh,
nhng phng phỏp c in nh trờn cng thớch hp, nhng khi khụng gian
tỡm kim ln phi dựng k thut trớ tu nhõn to c bit. Thut gii di truyn
(GA) l mt trong nhng k thut ú.

Nguyn Th La k54C Vn Quang Trn ng Doanh- K55B

3



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

Đề tài: thuật tốn di tuyền song song và ứng dụng giải quyết bài tốn Max-sat

KIL
OBO
OKS
.CO
M


CHƯƠNG I : TỔNG QUAN
1. Tổng quan thuật tốn di truyền (Genetic Algorithm)
1.1 Khái niệm

Thuật tốn di truyền cổ điền là các kỹ thuật phỏng theo q trình thích nghi
tiến hóa của các quần thể sinh học dựa trên học thuyết Darwin.

Tư tưởng của thuật tốn di truyền là mơ phỏng các hiện tượng tự nhiên: Kế
thừa và đấu tranh sinh tồn để cái tiến lời giải và khảo sát khơng gian lời giải khái
niệm kế thừa và đấu tranh sinh tồn được giải thích qua thí dụ về sự tiến hóa của
một quần thể thỏ như sau:

Có một quần thể thỏ, trong đó có một số con nhanh nhẹn và thơng minh hơn
những con khác. Những chú thỏ nhanh nhẹn và thơng minh có xác suất bị chồn
cáo ăn thịt nhỏ hơn, do đó cũng tồn tại dể làm những gì tốt nhất có thể : Tạo
thêm nhiều thỏ tốt. Dĩ nhiên, một số thỏ chậm chạp đần độn cũng sống sót vì
may mắn. Quần thể những chú thỏ còn sống sót sẽ bắt đầu sinh sản. Việc sinh
sản này sẽ tạo ra một hỗn hợp tốt về "ngun liệu di truyền thỏ". Một số thỏ
chậm chạp có con với những con thỏ nhanh, một số nhanh nhẹn có con với thỏ
nhanh nhẹn, một số thơng minh với thỏ đần độn… Và trên tất cả thiên nhiên lại
ném vào một con thỏ "hoang dã" bằng cách làm đột biến ngun liệu di truyền
thỏ. Những chú thỏ con do kết quả này sẽ nhanh hơn và thơng minh hơn những
con thỏ trong quần thể gốc vì có nhiều bố mẹ nhanh nhẹn và thơng minh hơn đã
thốt chết khỏi chồn cáo.

Khi tìm kiếm lời giải tối ưu , thuật tốn di truyền cũng thực hiện các bước
tương ứng với câu chuyện đấu tranh sinh tồn của lồi thỏ.

Nguyến Thị Lụa k54C – Đỗ Văn Quang – Trần Đăng Doanh- K55B


4



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

ti: thut toỏn di tuyn song song v ng dng gii quyt bi toỏn Max-sat

Thut toỏn di truyn s dng cỏc thut ng vay mn ca di truyn hc. Ta
cú th núi v cỏc cỏ th (hay kiu gen, cu trỳc) trong mt qun th, nhng cỏ

KIL
OBO
OKS
.CO
M

th ny cng cũn c gi l chui hay cỏc nhim sc th.

Mi kiu gen (ta gi l mt nhim sc th) s biu din mt li gii ca bi
toỏn ang gii (ý tng ca mt nhim sc th c th c ngi s dng xỏc
nh trc), mt tin trỡnh tin húa c thc hin trờn mt qun th cỏc nhim
sc th tng ng vi mt quỏ trỡnh tỡm kim li gii trong khụng gian li gii.
Tỡm kim ú cn cõn i hai mc tiờu: Khai thỏc nhng li gii tt nht v kho
sỏt khụng gian tỡm kim. Leo i l mt vớ d v chin lc cho phộp khai thỏc
v ci thin li gii tt nht hin hnh nhng leo i li b qua vic kho sỏt
khụng gian tỡm kim. Ngc li, tỡm kim ngu nhiờn l mt vớ d in hỡnh ca
chin lc kho sỏt khụng gian tỡm kim m khụng chỳ ý n vic khai thỏc
nhng vựng y ha hn ca khụng gian. Thut toỏn di truyn (GA) l phng

phỏp tỡm kim (c lp min) to c s cõn i ỏng k gia vic khai thỏc v
kho sỏt khụng gian tỡm kim.

Thc ra, GA thuc lp cỏc thut gii xut sc, nhng li rt khỏc nhng thut
gii ngu nhiờn vỡ chỳng kt hp cỏc phn t tỡm kim trc tip v ngu nhiờn.
Khỏc bit quan trng gia tỡm kim ca GA v cỏc phng phỏp tỡm kim khỏc
l GA duy trỡ v x lý mt tp cỏc li gii (ta gi l mt qun th)
Theo xut ca giỏo s John Holland, mt vn bi toỏn t ra s
c mó húa thnh cỏc chui vi chiu di bit c nh. Núi mt cỏch chớnh xỏc
l cỏc thụng s ca bi toỏn s c chuyn i v biu din li di dng cỏc
chui nh phõn. Cỏc thụng s ny cú th l cỏc bin ca mt hm hoc h s ca
mt biu thc toỏn hc. Ngi ta gi cỏc chui bớt ny l mó genome ng vi
mi cỏ th, cỏc genome u cú cựng chiu di. Núi ngn gn, mt li gii s
c biu din bng mt chui bớt, cng nh mi cỏ th u c quy nh bng
gen ca cỏ th ú vy. Nh vy, i vi thut gii di truyn, mt cỏ th ch cú

Nguyn Th La k54C Vn Quang Trn ng Doanh- K55B

5



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

ti: thut toỏn di tuyn song song v ng dng gii quyt bi toỏn Max-sat

mt gen duy nht v mt gen cng ch phc v cho mt cỏ th duy nhõt. Do ú,
gen chớnh l cỏ th v cỏ th chớnh l gen.

KIL

OBO
OKS
.CO
M

Ban u, ta s phỏt sinh mt s lng ln, gii hn cỏc cỏ th cú gen ngu
nhiờn - ngha l phỏt sinh mt tp hp cỏc chui bit ngu nhiờn. Tp cỏc cỏ th
ny c gi l qun th ban u (initial population). Sau ú, da trờn mt hm
no ú, ta s xỏc nh c mt giỏ tr cú thớch nghi - Fitness. Giỏ tr ny,
n gin cho n gin chớnh l "tt" ca li gii hay cao trong tỡm kim
theo kiu leo i. Vỡ phỏt sinh ngu nhiờn nờn "tt" ca li gii hay tớnh thớch
nghi ca cỏ th trong qun th ban u l khụng xỏc nh.

ci thin tớnh thớch nghi ca qun th ngi ta tỡm cỏch to ra qun th
mi. Cú hai cỏch thao tỏc thc hin trờn th h hin ti to ra mt th h khỏc
vi thớch nghi tt hn.

Thao tỏc u tiờn l sao chộp nguyờn mu mt nhúm cỏc cỏ th tt t th h
trc ri a sang th h sau (selection). Thao tỏc ny m bo thớch nghi
ca th h sau luụn c gi mt mc hp lý. Cỏc cỏ th c chn thụng
thng l cỏc cỏ th cú thớch nghi cao nht.

Thao tỏc th hai l to ra cỏ th mi bng cỏch thc hin cỏc thao tỏc sinh
sn trờn mt s cỏ th c chn t th h trc, thụng thng cng l nhng cỏ
th cú thớch cao. Cú hai loi thao tỏc sinh sn: mt l thao tỏc lai to
(crossover), hai l t bin (mutalion). Trong thao tỏc lai to, t gen ca hai cỏ
th c chn trong th h trc s c phi hp vi nhau (theo mt quy tỏc
no ú) to thnh hai gen mi.

Thao tỏc chn lc v lai to giỳp to ra th h sau. Tuy nhiờn, nhiu khi do

th h khi to ban u cú c tớnh cha phong phỳ v cha phự hp nờn cỏc cỏ
th khụng ri u c khụng gian ca bi toỏn (tng t nh trng hp leo
i, cỏc ngi leo i tp trung dn vo mt gúc trờn vựng t). T ú, khú cú
th tỡm ra li gii ti u cho bi toỏn. Thao tỏc t bin s giỳp gii quyt c

Nguyn Th La k54C Vn Quang Trn ng Doanh- K55B

6



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

Đề tài: thuật tốn di tuyền song song và ứng dụng giải quyết bài tốn Max-sat

vấn đề này. Đó là sự biến đổi ngẫu nhiên một hoặc nhiều thành phần gen của
một cá thể ở thế hệ trước tạo ra một cá thể hồn tồn mới ở thế hệ sau. Nhưng

KIL
OBO
OKS
.CO
M

thao tác này chỉ được phép sảy ra với tần xuất rất thấp (thường dưới 0.01), vì
thao tác này có thể gây xáo trộn và làm mất đi những cá thể chọn lọc và lai tạo
có tính thích nghi cao, dẫn đến thuật tốn khơng còn hiệu quả.

Thế hệ mới được tạo ra lại được xử lý như thế hệ trước cho đến khi có một cá
thể đạt được giải pháp mong muốn hoặc đạt đến thời gian giới hạn.


1.2 Cấu trúc của giải thuật di truyền như sau:

1.

t=0

2.

initialize

P(t)

Nguyến Thị Lụa k54C – Đỗ Văn Quang – Trần Đăng Doanh- K55B

7



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

ti: thut toỏn di tuyn song song v ng dng gii quyt bi toỏn Max-sat

3.

evaluate

4.

while not end do


6.
7.
8.
9.
10.

in

P(t)

t=t+1

KIL
OBO
OKS
.CO
M

5.

structures

select

C(t) from

P(t - 1)

recombine


structures in C(t) forming C'(t)

mutate

structures in C' (t) forming C'' (t)

evaluate

structures in

replace

C''(t)

P(t) from C''(t) and/or P (t - 1)

Khi to qun th (initialize): Qun th u tiờn c khi to mt cỏch ngu
nhiờn t tp hp nhng cỏ th riờng l. Kớch c ca qun th u tiờn ph thuc
vo yu t t nhiờn ca bi toỏn, nhng nhỡn chung thỡ mt bi toỏn cú n hng
trm hay hng nghỡn gii phỏp hp lý. Tp hp nhng gii phỏp hp lý cho vn
c gi l khụng gian tỡm kim (search space). Trc mt bi toỏn ỏp dng
thut toỏn di truyn, ta cn phi xỏc nh rừ nhim sc th v cỏ th cho vn ,
v thụng thng ú s l kt qu cui cựng. Vic phõn tớch s da trờn kt qu
c bn tt nht.

Hm nh ngha thớch nghi (evaluate): Cỏc quỏ trỡnh tin húa din ra trong
vũng lp While, ti th h th t, thut toỏn di truyn duy trỡ mt tp li gii P(t) =
{xt1, xt2, ,, xtn }. Mi li gii xti c ỏnh giỏ " thớch nghi ", hay "tt"
ca li gii.


Phộp chn lc (select): Phộp chn l quỏ trỡnh loi b cỏc cỏ th xu trong qun
th ch d li trong qun th cỏc cỏ th tt.
Phộp chn c mụ phng:

Sp xp qun th theo th t thớch nghi gim dn.

Nguyn Th La k54C Vn Quang Trn ng Doanh- K55B

8



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

ti: thut toỏn di tuyn song song v ng dng gii quyt bi toỏn Max-sat

Loi b cỏc cỏ th cui dóy ch gi li n cỏ th tt nht. Gi s õy
qun th cú kớch thc c nh n.

KIL
OBO
OKS
.CO
M

Cú nhiu phng phỏp chn lc Nhim sc th:
o

Chn lc Roulette (Roulett Wheel Selection).


o

Chn lc xp hng (Rank Selection).

o

Chn lc cnh tranh (Tournament Selection)

Quỏ trỡnh sinh sn: Cú hai loi thao tỏc sinh sn

Phộp lai to (Crossover): l quỏ trỡnh hỡnh thnh nhim sc th mi trờn c
s nhim sc th cha m bng cỏch ghộp mt hay nhiu on gen ca hai hay
nhiu nhim sc th cha m vi nhau.
Cú nhng phng phỏp lai ghộp sau:
o

Lai ghộp ỏnh x tng phn (PMX Partial Mapped Crossover).

o

Lai ghộp cú trt t (OX order Crossover).

o

Lai ghộp da trờn v trớ (Position Based Crossover).

o

Lai ghộp da trờn th t (Order Base Crossover).


o

Lai ghộp cú chu trỡnh (CX cycle Crossover).

o

Lai ghộp th t tuyn tớnh (LOX Linear order Crossover).

Phộp lai to xy ra vi xỏc sut pc, c mụ phng nh sau:

Chn ngu nhiờn mt hay nhiu cỏ th bt k trong qun th. Gi
s cỏc nhim sc th ca cha m u cú m gen.

To mt s ngu nhiờn trong khong t 1 n m - 1 (c gi l
im lai). im lai chia cỏc chui cha m cú di m thnh hai
nhúm chui con vi di m1, m2 hai chui nhim sc th mi l
m11 + m12 v m21 + m22

Nguyn Th La k54C Vn Quang Trn ng Doanh- K55B

9



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

ti: thut toỏn di tuyn song song v ng dng gii quyt bi toỏn Max-sat

a hai cỏ th mi vo qun th tham gia cỏc quỏ trỡnh tin


KIL
OBO
OKS
.CO
M

húa tip theo.

Vớ d : Hai nhim sc th cha m :

Parent 1:

1

0

1

0

1

1

1

0

0


1

1

1

1

0

0

1

1

1

0

Parent 2:

0

Thỡ vic trao i chộo cỏc nhim sc th sau gen th nm s to ra hai con:

Child 1:

1


0

1

0

1

0

1

1

1

0

1

1

1

0

1

1


0

0

1

Child 2:

0

Phộp t bin (mutalion): Phộp t bin l hin tng cỏ th con mang mt
(hoc mt s) tớnh trng cú trong mó di truyn ca cha m, tc l s sa i mt
hoc mt vi gen ca mt nhim sc th chn bng cỏch thay i ngu nhiờn vi
xỏc sut l t l t bin.

Nguyn Th La k54C Vn Quang Trn ng Doanh- K55B

10



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

ti: thut toỏn di tuyn song song v ng dng gii quyt bi toỏn Max-sat

Khụng ai cú th ỏnh giỏ c phng phỏp t bin no tt hn, do ú cú
mt vi phng phỏp n gin, cng cú vi trng hp khỏ phc tp. Ngi ta

KIL

OBO
OKS
.CO
M

thng chn mt trong nhng phng phỏp sau :

o t bin o ngc (Inversion Mutation).
o t bin chốn (Insertion Mutation)

o t bin thay th (Displacement Mutation).
o t bin tng h (Reciprocal Exchange).
o t bin chuyn dch (Shift Mutation).

Phộp t bin xy ra vi xỏc sut pm nh hn rt nhiu so vi xỏc sut lai pc.
Phộp t bin cú th c mụ phng:

Chn ngu nhiờn mt cỏ th bt k cha m trong qun th.
To mt s ngu nhiờn k trong khong t 1 n m vi 1 k m.
Thay i gen th k v tr cỏ th ny v qun th tham gia vo quỏ
trỡnh tin húa tip theo.
NST1

NST1

0

1

1


1

1

0

1

1

1

0

0

1

1

1

0

0

1

1


1

0

Mt thut gii di truyn, gii mt bi toỏn c cho phi cú nm thnh phn:
Mt cu trỳc d liu biu din khụng gian li gii ca bi toỏn.

Nguyn Th La k54C Vn Quang Trn ng Doanh- K55B

11



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

ti: thut toỏn di tuyn song song v ng dng gii quyt bi toỏn Max-sat

Phng phỏp khi to qun th ban u P(0).
Hm nh ngha thớch nghi evaluate úng vai trũ mụi trng.

KIL
OBO
OKS
.CO
M

Cỏc phộp toỏn di truyn nh ó mụ phng trờn.

V cỏc tham s thut toỏn di truyn s dng (kớch thc, qun th, xỏc

sut lai, t bin)

iu kin kt thỳc

Thoỏt ra quỏ trỡnh tin húa qun th, da vo bi toỏn m cú cỏc cỏch kt thỳc
vn khỏc nhau, mt khi ó t n mc yờu cu. Mt vi trng hp thụng
thng nh sau:

Kt thỳc theo kt qu: mt khi t n mc giỏ tr yờu cu thỡ chm dt
ngay quỏ trỡnh thc hin.

Kt thỳc da vo s th h: chn s th h, quỏ trỡnh s dng li ỳng
ngay s th h ó qui nh trc, khụng cn bit kt qu nh th no.
Tớnh theo thi gian: Khụng cn bit ó bao nhiờu th h hay kt qu th
no, ch cn da vo s gi qui nh m kt thỳc.

T hp: dung nhiu phng ỏn khỏc nhau cho vn , chng hn nh:
chy theo s th h xong sau ú ỏnh giỏ cho chy theo kt qu, hoc
ngc li.

2. Mt s vớ d minh ha.
2.1 Bi toỏn Max-sat.

Vn bi toỏn SAT (SATisfiability) l vn cú tớnh ng dng rng rói c
trong lý thuyt phc tp, trong Trớ tu nhõn to hay nhng lnh vc thc t
khỏc M cn a ra nhng gii phỏp tt gii quyt.

Nguyn Th La k54C Vn Quang Trn ng Doanh- K55B

12




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

ti: thut toỏn di tuyn song song v ng dng gii quyt bi toỏn Max-sat

Bi toỏn SAT: Cho tp m mnh C= {C1, C2, C3, ,Cm} bao gm n giỏ tr
bin x1 x2, , xn. Bi toỏn SAT gii quyt vn cú tn ti hay khụng? S phõn

KIL
OBO
OKS
.CO
M

b trờn cỏc bin sao cho cỏc mnh tha món ng thi. Bi toỏn Max-Sat
(Maximum Satisfiability) l bi toỏn tỡm s phõn b trờn cỏc bin sao cho cỏc
mnh tha món l ln nht. Vn gii quyt c hai bi toỏn SAT v Maxsat
l thuc bi toỏn NP- khú.

Cú rt nhiu gii thut thut c xut v ó t c nhng tin b quan
trng. Nhng gii thut ny c chia thnh hai lp: Gii thut y (chớnh
xỏc) v gii thut cha y .

Thut gii y :Gii thut c coi l tt da trờn th tc DPLP. SAT2
l vớ d khỏ ni ting v gii thut . Gii thut Nhỏnh cn v kt ni
da vo th t DPLP l mt trong nhng gii thut chớnh xỏc v mnh
nht gii quyt bi toỏn Max-Sat. Gii thut BnB cú th c vn dng
vi mc khú va phi, c nh ngha bi t s mnh trờn s bin

ca bi toỏn Max-Sat.

Gii thut cha y : Ch yu da vo tỡm kim cc b v gii thut
tin húa. Tỡm kim Tabu, mụ phng luyn thộp, gii thut di truyn,
GRASP, ú l nhng vớ d v gii thut cha y gii quyt bi
toỏn Max-Sat. Tỡm kim da vo heuristics l phng phỏp gii quyt tt
tỡm kim gii phỏp tng i cho nhng bi toỏn khụng bit c v
khụng tha món li gii.

Núi chung, phng phỏp y m bo c mt li gii ti u, nhng
thi gian thc thi ca bi toỏn thỡ t l thun vi kớch thc bi toỏn. Vỡ vy ch
cú nhng bi toan nh tht s cú th gii quyt c. gii quyt nhng bi
toỏn ln, ch cú kh nng gii quyt bng cỏch s dng tỡm kim heuristics tỡm
kim mt gii phỏp tng i ti u cho cỏc bi toỏn ln trong thi gian gii
hn, nhng kh nng ti u thỡ khụng c m bo. Thc t thỡ ú l nhng s
c gng khỏc nhau kt hp nhng gii phỏp chớnh xỏc v tỡm kim heuristics.
Nguyn Th La k54C Vn Quang Trn ng Doanh- K55B

13



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

Đề tài: thuật tốn di tuyền song song và ứng dụng giải quyết bài tốn Max-sat

Mục đích tìm giải pháp tối ưu cho bài tốn Max-Sat tương đối khó khăn

KIL
OBO

OKS
.CO
M

chúng ta đề xuất giải pháp lai ghép gồm có Thuật giải di truyền là thuật giải chưa
đầy đủ kết hợp với chiến lược đầy đủ của đơn vị nhân bản.

2.2 Giải thuật di truyền giải quyết bài tốn Max-Sat:

o Biểu diễn cá thể: Một cá thể được biểu diễn bới chuỗi X (n vecto) mỗi
thành phần Xi nhận giá trị 0 (False) hoặc 1 (True).

o Lai ghép: là phép tốn mục đích xây dựng một quần thể mới (quần thể
con) từ quần thể ban đầu.

o Đột biến: là phép tốn dùng phát sinh cá thể mới .

CHƯƠNG II : XÂY DỰNG KHUNG THUẬT TỐN DI TRUYỀN

Để giải quyết các bài tốn với độ phức tạp rất lớn hoặc những bài tốn có
NP-khó thì một giải pháp là sử dụng các thuật tốn chẳng hạn như thuật tốn di
truyền. Xây dựng khung chương trình (Skeletons) cần thiết cho những người
muốn áp dụng các thuật tốn nổi tiếng để giải bài tốn khó, khi giải quyết những
bài tốn tương đối giống nhau cùng sử dụng một tư tưởng của của thuật giải, sử
dụng các hàm và thư viện giống nhau, việc viết đi viết lại những hàm và thư viện
này khiến mất thời gian và cơng sức. Xây dựng khung chương trình nhằm 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 lập

Nguyến Thị Lụa k54C – Đỗ Văn Quang – Trần Đăng Doanh- K55B


14



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

ti: thut toỏn di tuyn song song v ng dng gii quyt bi toỏn Max-sat

trin..

KIL
OBO
OKS
.CO
M

trỡnh song song hiu bi toỏn m cha cn hiu sõu v code v quỏ trỡnh phỏt

1. Thit k khung thut toỏn di truyn.

Khung thut toỏn di truyn bao gm hai lp chớnh l: lp Provides v
Requies

1.1 Lp Provides (lp cung cpi) lm nhim v thi hnh bờn trong b khung ca
bi toỏn, nú to ra nhiu phng ỏn cho bi toỏn.

o Hm Solver: Hin th trng thỏi, xỏc sut, xỏc sut t bin v chn ra
cha m v con cỏi. Solver gm mt s hm:
Class Solver {


Run() // Thc thi thut toỏn

StartUp() // Thit lp cỏc thụng s.

DoStep() // Thc hin theo khung thut toỏn newGA,
}

-

Hm Solver_Sqe: Gii quyt bi toỏn bng phng phỏp tun t chy
trờn mt mỏy, u vo l bi toỏn v cỏc tham s ci t.

-

Hm Solver_Lan: Gii quyt bi toỏn trờn mụi trng song song chy
kt hp trờn nhiu mỏy. Bao gm khi to MPI, thit lp s hiu ca
cỏc mỏy, hm in Solver_lan::pid() cont tr v s hiu ca mi mỏy t
ú cú th xỏc nh c mỏy khỏch, mỏy ch.

o Lp Selection: Hm la chn nhng phn t tt nht.

Nguyn Th La k54C Vn Quang Trn ng Doanh- K55B

15



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

ti: thut toỏn di tuyn song song v ng dng gii quyt bi toỏn Max-sat


1.2 Lp Requied (lp yờu cu) Cỏc lp ũi hi c s dng lu tr d liu
c bn ca thut toỏn : bi toỏn, trng thỏi khụng gian tỡm kim v vo/ra. C

KIL
OBO
OKS
.CO
M

th bao gm cỏc lp.
o Bi toỏn Problem: nh ngha bi toỏn cn gii quyt bao gm mt s
hm:

Khai bỏo lp Problem cho bi toỏn Maxsat.

Class Problem {
Public:

int numvar() const;

// S bin a vo ca bi toỏn

int numclause() const;

// S mnh ca bi toỏn

int lenclause() const;

// Chiu di mnh


private:

int _numvar;

int _numclause;
int _lenclause;

int ** _clauses;
}

Khai bỏo hm trong Problem.

- istream& operator>> (istream& is, Problem& pbm){}: Nhp vo
kớch thc, s mnh v chiu di mnh .

- Problem& Problem::operator=

(const Problem& pbm{}: To ra

mng mt chiu _clauses gm s mnh , s phn t
Nguyn Th La k54C Vn Quang Trn ng Doanh- K55B

to ra mng 2

16



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


ti: thut toỏn di tuyn song song v ng dng gii quyt bi toỏn Max-sat

chiu kớch thc s mnh , di mnh . Lu cỏc phn t mnh
vo mng. To ra bin _dimension. Truyn giỏ tr s mnh trong

KIL
OBO
OKS
.CO
M

pbm.numlause() ca lp Pro vo _numclause trong mng clause.
- Direction Problem::direction() const{}: Tr ra kớch thc mnh
ln nht.

- int Problem::dimension() const{}: Tr ra kớch thc mnh .
- int Problem::numclause() const : tr ra s mnh .

- int Problem::lenclause() const : tr ra di mnh
- int *Problem::clause(const int i) const:tr ra giỏ tr ca mnh th i

o Lp Solution :nh ngha mt gii phỏp cú kh thi hay khụng
Khai bỏo lp Sulutioncho bi toỏn Maxsat:
Class Solution {

friend ostream& operator<< (ostream& os, const Solution& sol); // a ra
cỏc thụng s ca mt li gii

friend istream& operator>> (istream& is, Solution& sol); // nhn vo cỏc

thụng s ca mt li gii
.

void initialize(); // Hm khi to b giỏ tr ngu nhiờn cho cỏc phn t trong
li gii

double fitness (); // Hm tớnh thớch nghi lm c s ỏnh giỏ li gii.

Mt s hm trong lp Solution:

Nguyn Th La k54C Vn Quang Trn ng Doanh- K55B

17



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

ti: thut toỏn di tuyn song song v ng dng gii quyt bi toỏn Max-sat

- Solution& Solution::operator= (const Solution &sol): Gỏn cỏc giỏ tr
trong cỏc phng thc ca lp solution cho cỏc bin.

KIL
OBO
OKS
.CO
M

- bool Solution::operator== (const Solution& sol) const: Li gii bi

toỏn xỏc nh giỏ tr ca mnh l ỳng hay sai, v tr ra giỏ tr cho
mnh ỳng.

- double Solution::fitness(): Hm ỏnh giỏ li gii bi toỏn.
- void Solution::to_Solution(char *_string_) : duyt tng phn t ca
mnh .

- void Solution::add(unsigned long element) :Phng thc thờm vo
mt li gii phự hp.

- void Solution::initialize_feasibles(Feasibles &_feasibles): khi to giỏ
tr ban u cho li gii kh thi. Nu (_freedomV[i] > 0) thỡ thờm giỏ tr
ú vo danh sỏch li gii kh thi.

- void Solution::update(Feasibles &f,unsigned long &selection) : cp
nht li gii kh thi vo trong danh sỏch li gii kh thi
o 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.
o Lp chộo húa Crossover.

requires class Crossover: public Intra_Operator
{
public:

Crossover();

virtual ~Crossover();


friend ostream& operator << (ostream& os, const Crossover& cross);

Nguyn Th La k54C Vn Quang Trn ng Doanh- K55B

18



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

ti: thut toỏn di tuyn song song v ng dng gii quyt bi toỏn Max-sat

void cross(Solution &sol1,Solution &sol2) const;

KIL
OBO
OKS
.CO
M

virtual void execute(Rarray<Solution*>& sols) const;
virtual void setup(char line[MAX_BUFFER]);

virtual void RefreshState(const StateCenter& _sc) const;
virtual void UpdateFromState(const StateCenter& _sc);
};

o Lp t bin (Mutation)


requires class Mutation: public Intra_Operator
{
public:

Mutation();

virtual ~Mutation();

friend ostream& operator<< (ostream& os, const Mutation&
mutation);

void mutate(Solution& sol) const;

//Hin th t bin qua tt c cỏc gii phỏp trong mng Sols
virtual void execute(Rarray<Solution*>& sols) const;
virtual void setup(char line[MAX_BUFFER]);

virtual void RefreshState(const StateCenter& _sc) const;
virtual void UpdateFromState(const StateCenter& _sc);

};

Nguyn Th La k54C Vn Quang Trn ng Doanh- K55B

19



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


ti: thut toỏn di tuyn song song v ng dng gii quyt bi toỏn Max-sat

2. Khung thut toỏn tun t.

KIL
OBO
OKS
.CO
M

S dng khung thut toỏn di truyn cho bi toỏn (newGA) u vo a vo
gm hai file cu hỡnh.

Gi ti hm Problem: Hin th mn hỡnh thụng s a vo.
Hm void Solver_sqe :: DoStep()
Class Solver_sqe:: DoStep(){

current_iteration(current_iteration()+1);

current_population.evolution();

current_evaluations(current_population.evaluations());

// Ly giỏ tr phự hp thc hin trong qun th ang thc thi.

best_cost=current_population.best_cost();
best_solution=current_population.best_solution();
worst_cost=current_population.worst_cost();
average_cost=current_population.average_cost();
standard_deviation=current_population.standard_deviation();


time_spent_in_trial = _used_time(start_trial);
total_time_spent

= start_global + time_spent_in_trial;

// ly li trng thỏi vi nhng giỏ tr ny
RefreshState();

Nguyn Th La k54C Vn Quang Trn ng Doanh- K55B

20



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

ti: thut toỏn di tuyn song song v ng dng gii quyt bi toỏn Max-sat

KIL
OBO
OKS
.CO
M

RefreshCfgState();

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


_stat.update(*this);

_userstat.update(*this);

if (display_state())

show_state();

Hm mainseq ()

Void Solver_Seq :: solver();

S dng khung newGA;

M file f1 l newGA.cfg c vo cu hỡnh
c file f1>>cfg;
M file f2 c Problem.dat
c file f2>>pbm
Thc hin hm SetUpParams

Solver.run(); // thc hin hm 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;

Nguyn Th La k54C Vn Quang Trn ng Doanh- K55B

21




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

ti: thut toỏn di tuyn song song v ng dng gii quyt bi toỏn Max-sat

a ta thớch nghi tt nht;

KIL
OBO
OKS
.CO
M

}

3. Khung thut toỏn song song.

3.1 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.

3.2 La chn mụ hỡnh phn mm:

Cú ba mụ hỡnh phn mm:

- 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 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.

Nguyn Th La k54C Vn Quang Trn ng Doanh- K55B

22



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

ti: thut toỏn di tuyn song song v ng dng gii quyt bi toỏn Max-sat

- 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

KIL
OBO
OKS
.CO
M

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).
Hm void Solver_lan:: DoStep()

Voi Solver_lan::DoStep()
{

current_iteration(current_iteration()+1);
current_population.evolution();

current_evaluations(current_population.evaluations());
_netstream << set_source(0);
int pending;


_netstream._probe(regular, pending);
if(pending)

final_phase = true;

current_population.interchange(current_iteration(),_netstream);

Nguyn Th La k54C Vn Quang Trn ng Doanh- K55B

23



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

ti: thut toỏn di tuyn song song v ng dng gii quyt bi toỏn Max-sat

best_cost=current_population.best_cost();

KIL
OBO
OKS
.CO
M

best_solution=current_population.best_solution();
worst_cost=current_population.worst_cost();
average_cost=current_population.average_cost();
standard_deviation=current_population.standard_deviation();


time_spent_in_trial = _used_time(start_trial);
total_time_spent

= start_global + time_spent_in_trial;

// refresh state with these values
RefreshState();

RefreshCfgState();

// in this iteration i have to send data about my local state to the

global state

if ((int)current_iteration() % params.refresh_global_state()

==0)

{

send_local_state_to(mypid);
UpdateFromCfgState();

}

_stat.update(*this);

Nguyn Th La k54C Vn Quang Trn ng Doanh- K55B


24



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

ti: thut toỏn di tuyn song song v ng dng gii quyt bi toỏn Max-sat

_userstat.update(*this);

}

KIL
OBO
OKS
.CO
M

// if (display_state()) show_state();

Hm void main_lan();

S dng khung newGA;

M file f1 l newGA.cfg c vo cu hỡnh
c file f1>>cfg;
M file f2 c Problem.dat
c file f2>>pbm
Thc hin hm SetUpParams


Solver.run(); // thc hin hm 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;

}

Nguyn Th La k54C Vn Quang Trn ng Doanh- K55B

25


×