1. 4 Kết luận
4.2.3. Giải thuật di truyền II
Bảng 4.3 Kết quả đạt đƣợc bởi GA II.
Bộ dữ liệu GA II Tốt nhất Trung bỡnh 1 203,6 204.5 2 253,1 253,1 3 268,6 277 4 537,3 560.4 5 548,1 619,4 6 683,6 727,7 7 465,8 528,5 8 711,2 751,4 9 610,3 655,7 10 1110,1 1170 11 1104,1 1165,3 12 981,1 1028,4 13 3080,4 3151 14 2974 3120,4 15 3233,2 3234,6
Kết quả từ bảng 4.2 và 4.3 cho thấy rằng hai thuật toỏn GA I và GA II sử dụng cụng thức (3.8) đều tỡm đƣợc lời giải khả thi cho bài toỏn TA trong tất cả cỏc bộ dữ liệu trờn. Và sự thực hiện của hai thuật toỏn GA I và GA II cú sự sai khỏc nhau rất nhỏ.
Qua kết quả trờn, cho thấy rằng lai ghộp giữa mạng nơ ron Hopfield và giải thuật di truyền là một phƣơng phỏp hữu hiệu để giải quyết cỏc bài toỏn tối ƣu nhƣ TA, nú cú thể chạy đƣợc với cỏc bộ dữ liệu cú kớch thƣớc lớn. Và cú thể ỏp dụng phƣơng phỏp này cho nhiều bài toỏn tối ƣu ràng buộc tƣơng tự khỏc nhƣ BP, TSAP,…
KẾT LUẬN
Luận văn “Lai ghộp mạng nơ ron Hopfield và giải thuật di truyền giải bài toỏn tối ưu ràng buộc” đó đạt được một số kết quả sau:
Đó trỡnh bày cơ sở của mạng nơ ron nhõn tạo đặc biệt là mạng nơ ron Hopfield, phƣơng phỏp ỏnh xạ một bài toỏn thoả món ràng buộc và tối ƣu thoả món ràng buộc lờn mạng nơ ron.
Tỡm hiểu về giải thuật di truyền và tớnh toỏn tiến húa. Và ứng dụng của nú đối với bài toỏn tối ƣu tổ hợp.
Qua đú đề xuất phƣơng phỏp lai ghộp giữa mạng nơ ron Hopfield và giải thuật di truyền ỏp dụng cho bài toỏn TA và thu đƣợc kết quả tốt so với cỏc cỏch tiếp cận trƣớc đõy. Luận văn đề xuất đƣợc quy tắc cập nhật trạng thỏi của mạng nơ ron (cụng thức 3.8) và qua thực nghiệm đó cho thấy nú là phƣơng phỏp tốt để tỡm đƣợc giải phỏp khả thi cho bài toỏn TA và cho kết quả hội tụ nhanh.
Hướng phỏt triển tiếp theo:
Lai ghộp mạng nơ ron Hopfield với thuật toỏn tỡm kiếm toàn cục khỏc nhƣ mụ phỏng tụi luyện và tỡm kiếm tabu ỏp dụng cho bài toỏn TA. Và đỏnh giỏ hiệu quả của cỏc thuật toỏn này so với hiệu quả của thuật toỏn lai ghộp giữa mạng nơ ron và giải thuật toỏn di truyền.
TÀI LIỆU THAM KHẢO Tiếng việt:
1. Đặng Quang Á (2001), Một cỏch nhỡn về việc sử dụng mạng Hopfield giải cỏc bài toỏn thỏa món ràng buộc và tối ƣu cú ràng buộc, Bỏo cỏo tại Hội thảo quốc gia “Một số vấn đề chọn lọc của cụng nghệ thụng tin”
2. Đặng Quang Á (2001), Ứng dụng của mạng nơ ron trong tớnh toỏn, Sỏch “Hệ mờ, mạng nơ ron và ứng dụng”, Chủ biờn: Bựi cụng Cƣờng, Nguyễn Doón Phƣớc, Nhà XBKH-KT, Hà nội.
3. Vũ Ngọc Phàn (2005), Tối ƣu húa – Cơ sở lý thuyết và ứng dụng trong cụng nghệ bƣu chớnh viễn thụng, NXB Bƣu Điện.
Tiếng Anh:
4. A. Kershembaum. (1993), Telecommunications Network Design Algorithms. NewYork, McGraw-Hill.
5. C.H.Chu, G. Premkumar, and H. Chou. (2000), “Digital data networks design using genetic algorithms”, European Journal of Operational Research, 127, pp 140-158.
6. E. Falkenauer. (1996), “A hybrid grouping genetic algorithm for bin packing”, J. Heuristic, vol 2, pp. 5-30.
7. F.N. Abuali, D. A. Schoenefeld, and R. L. Wainwright. (1994), “Terminal assignment in a communications network using genetic algorithms”, in Proc. 22nd Annu. ACM Computer Science Conf. pp. 74-81.
8. J. Hertz, A. Krogh, R. G. Palmer. (1997), Introduction to the Theory of Neural Computation, Addison-Wesley.
9. J.A Holland. (1975), Adaption in Natural and Artificial System , Univeristy of Michigan press, Ann Arbor.
10. J.Back, U.Hammel, and H.P.Shwefel. (1997), “Evolutionary computation: Comments on the history and current state”, IEEE Transactitions on Evolutionary
Computation1, 1,pp. 3-17.
11. J.Back, U.Hammel, and H.P.Shwefel. (1997), “Evolutionary computation: Comments on the history and current state”, IEEE Transactions on Evolutionary Computation1(1) ,pp. 3-17.
12. J.J. Hopfield and D.W. Tank, “Neural computation of decisions in optimization problems,” Biol. Cybern, 52, pp. 141-152.
13. L. Wang. (1997), “Discrete-time convergence theory and updating rules for neural networks with energy functions”, IEEE Transactions on neural networks, vol. 8, No 2, pp. 445- 447.
14. LiMin Fu. (1994), Neural Network in Computer Intelligence, Mc. Graw Hill. 15. R.Ceft. (1996), A new genetic algorithms, Analysis of Applied Probability, pp.
778-817
16. S. Khuri and T. Chiu. (1997), “Heuristic algorithms for the terminal assignment problem”, in Proc. ACM Symp, Applied Computing, pp. 247-251.
17. S. Khuri, M. Schulz, and J. Hitkotter. (1995), “Evolutionary heuristics for the bin packing problem”, in Proc. Int. Conf. Artifical Neural Networks Genetic Algorithms, pp. 18-21.
18. S. Matsuda. (1999), Quantized Hopfield networks for integer programming, Systems and Computers in Japan,Vol. 30, No 6, pp. 1354-1364.
19. Sami Khuri, (2000) “An introduction to genetic algorithms”,
http://citeseer.ist.psu.edu/cache/papers/cs/27143/http:zSzzSzneo.lcc.uma.eszSzpdf- charlaszSzcomb-opt.pdf/an-introduction-to-genetic.pdf
20. Sancho Salcedo-Sanz, Xin Yao. (2004), “A hybrid hopfield network-genetic algorithm approach for the terminal assignement problem”, IEEE Transaction On System.
21. Sancho Salcedo-Sanz, Yong Xu, Xin Yao. (2004), “Hybrid meta-heuristics algorithms for task assignment in heterogeneous computing systems”,
22. Y. Takefuji. (1997), Neural Network Parallel Computing, Kluwer Acad. Publ. 23. Z.Michalewicz. (1996), Genetic Algorithms + Data Structures = Evolution
PHỤ LỤC
Chương trỡnh thử nghiệm lai ghộp mạng nơ ron Hopfield và giải thuật di truyền giải bài toỏn TA.
/* Định nghĩa lớp cỏc thiết bị đầu cuối – bộ tập trung*/
publicclass CTerminal
{ public CTerminal() { } publicdouble x, y; publicint w;
public CTerminal(int x, int y, int w) { this.x = x; this.y = y; this.w = w; } } /*Định nghĩa lớp cỏc cỏ thể*/
publicclass CGenetic {
public CGenetic() {
}
publicint[] s;
publicdouble fitness;
public CGenetic(int[] s, double fitness) {
this.s = s;
this.fitness = fitness; }
public CGenetic Clone()
{
CGenetic ogenetic =new CGenetic(); ogenetic.fitness =this.fitness;
ogenetic.s = (this.s.Clone() asint[]);
return ogenetic; }
/* Thủ tục tỡm giải phỏp khả thi cho bài toỏn theo cụng thức (3.8)*/
privateint[,] f(int[,] arrHNN) {
int[,] a =new int[N,M];
a = (arrHNN.Clone() as int[,]);
for (int i =0; i <N; i++) {
for (int j =0; j <M; j++) {
CTerminal oConcentrator = (CTerminal)arrConcentrator[j];
int xij = TinhTongGiaTriDongi(a,i,j);
//Tinh tong dung luong cac thiet bi dau cuoi trong bo tap trung j
int sum = SumWeight(a, j+1);
if ((xij >1) | (sum > oConcentrator.w)) { a[i,j] =0; } elseif (xij ==1) { if (a[i,j] ==1) { break; } } else { a[i,j] =1;
if (SumWeight(a,j+1) > oConcentrator.w) a[i,j] =0;
if (a[i,j] ==1)break; } } } return a; }
/* Thủ tục chớnh của chƣơng trỡnh: lai ghộp mạng nơ ron Hopfield và giải thuật di truyền */
//Khai bỏo cỏc biến
int SLCTheTrongQT = 50; //Số lƣợng cỏ thể trong quần thể. int SLToiDa = 1000; //Số lƣợng tối đa cỏc thế hệ đƣợc sinh ra
double XSLaiGhep = 0.6; double XSDotBien = 0.01;
void Run() {
arrGA =new ArrayList();
//Khởi tạo quần thể ban đầu một cỏch ngẫu nhiờn. KhoiTaoCaThe();
for (int i =0; i < SLCTheTrongQT; i++) {
AnhxaGAToHNN((CGenetic)arrGA[i],i); }
//Sắp xếp độ thớch nghi của cỏc thể theo thứ tự giảm dần.
Sort();
//Lƣu một giải phỏp xấu nhất
CGenetic oGeneticToiNhat = (CGenetic)arrGA[0];
//Kiểm tra xem một giải phỏp khả thi khụng, nếu khụng cung cấp hàm phạt.
for (int i =0; i < arrGA.Count; i++) {
CGenetic oGenetic = (CGenetic)arrGA[i];
if (KiemTraMotGiaiPhap(oGenetic.s) ==false) {
ArrayList arrTemp =new ArrayList();
oGenetic.fitness += N * oGeneticToiNhat.fitness; arrTemp.Add(oGenetic);
arrGA[i] = arrTemp[0]; }
}
//Sắp xếp lại độ thớch nghi giảm dần.
Sort();
int k =0;
while (k < SLToiDa ) {
Random rd =new Random();
ArrayList arrTempGA1 =new ArrayList();
for (int j =0;j < arrGA.Count; j=j+2) {
//Chon 2 ca the ngau nhieu theo banh xe xoso
int m = ChonCaThe(); int n = ChonCaThe();
double rr = rd.NextDouble(); if (rr < XSLaiGhep )
int idiemlaighep = rd.Next(0,N); ArrayList ar =new ArrayList(); ar = (ArrayList)arrGA.Clone();
CGenetic oGenetic1 =new CGenetic(); oGenetic1 =((CGenetic)arrGA[m]).Clone(); CGenetic oGenetic2 =new CGenetic();
oGenetic2 = (arrGA[n] as CGenetic).Clone();
for (int i =0; i <= idiemlaighep; i++) {
int luu = oGenetic1.s[i];
oGenetic1.s[i] = oGenetic2.s[i]; oGenetic2.s[i] = luu;
}
//Dot bien 2 ca the vua duoc sinh ra
for (int i =0; i <2; i++) {
double r = rd.NextDouble(); if (r < XSDotBien)
{
int idiemdotbien = rd.Next(0,N); int igiatridotbien=rd.Next(1,M+1); if (i==0)
{
while (igiatridotbien==oGenetic1.s[idiemdotbien]) {
igiatridotbien = rd.Next(1,M+1); }
oGenetic1.s[idiemdotbien] = igiatridotbien; }
if (i ==1) {
while (igiatridotbien==oGenetic2.s[idiemdotbien]) {
igiatridotbien = rd.Next(1,M+1); }
oGenetic2.s[idiemdotbien] = igiatridotbien; }
}
} //End for dot bien
//Ánh xạ cỏ thể mới đƣợc sinh ra tới mạng nơ ron
AnhxaGAToHNN(oGenetic2,0);
if (KiemTraMotGiaiPhap(oGenetic1.s) ==false) {
oGenetic1.fitness += N * oGeneticToiNhat.fitness; }
if (KiemTraMotGiaiPhap(oGenetic2.s) ==false) {
oGenetic2.fitness += N * oGeneticToiNhat.fitness; }
arrTempGA1.Add(oGenetic1); arrTempGA1.Add(oGenetic2); } //End for lai ghep
}
for (int i =0; i < arrTempGA1.Count; i++) {
CGenetic oGenectic = (CGenetic)arrTempGA1[i]; arrGA.Add(oGenectic);
}
//Sap xep do thich nghi giam dan
Sort();
//Loại bỏ cỏc cỏ thể cú độ thớch nghi kộm. arrGA.RemoveRange(0,arrTempGA1.Count); k +=1;
}
//Lấy giải phỏp tốt nhất cho bài toỏn.
CGenetic oTotNhat = (CGenetic)arrGA[SLCTheTrongQT -1]; }