Tải bản đầy đủ (.docx) (37 trang)

CÁC KĨ THUẬT TỐI ƯU GABased Verification of Network Protocols Performance

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 (652.82 KB, 37 trang )

MỤC LỤC
LỜI NÓI ĐẦU
Trong ngành khoa học máy tính, tìm kiếm lời giải tối ưu cho các bài toán là vấn đề
được các nhà khoa học máy tính đặc biệt rất quan tâm. Mục đích chính của các thuật toán
tìm kiếm lời giải là tìm ra lời giải tối ƣu nhất cho bài toán trong thời gian nhỏ nhất. Các
thuật toán như tìm kiếm không có thông tin / vét cạn ( tìm kiếm trên danh sách, trên cây
hoặc đồ thị ) sử dụng phương pháp đơn giản nhất và trực quan nhất hoặc các thuật toán
tìm kiếm có thông tin sử dụng heurictics để áp dụng các tri thức về cấu trúc của không
gian tìm kiếm nhằm giảm thời gian cần thiết cho việc tìm kiếm được sử dụng nhiều
nhưng chỉ với không gian tìm kiếm nhỏ và không hiệu quả khi tìm kiếm trong không gian
tìm kiếm lớn. Tuy nhiên, trong thực tiễn có rất nhiều bài toán tối ưu với không gian tìm
kiếm rất lớn cần phải giải quyết. Vì vậy, việc đòi hỏi thuật giải chất lượng cao và sử dụng
kỹ thuật trí tuệ nhân tạo đặc biệt rất cần thiết khi giải quyết các bài toán có không gian
tìm kiếm lớn. Thuật giải di truyền (genetic algorithm) là một trong những kỹ thuật tìm
kiếm lời giải tối ưu đã đáp ứng được yêu cầu của nhiều bài toán và ứng dụng.
Thuật giải di truyền đã được phát minh ra để bắt chước quá trình phát triển tự nhiên
trong điều kiện quy định sẵn của môi trường. Trong bài tiểu luận này chúng ta sẽ nghiên
cứu về việc áp dụng thuật giải di truyền để thiết kế mạng tối ưu.
CÁC THUẬT NGỮ VIẾT TẮT
RIP Routing Information Protocol
SPFP Shortest-Path First
GAs Genetic Algorithm
GARA Genetic Adaptive Routing Algorithm
DANH MỤC CÁC HÌNH VẼ
Chương 1: Kỹ thuật tính toán Heuristic và thích nghi trong viễn thông
1.1 Các vấn đề tối ưu hóa trong viễn thông
Sự phức tạp và kích thước của các mạng viễn thông hiện đại cung cấp cho chúng ta
nhiều thách thức và cơ hội. Trong cuốn sách này, những thách thức mà chúng tôi tập
trung vào là những liên quan đến việc tối ưu hóa. Điều này chỉ đơn giản đề cập tới những
trường hợp mà trong đó chúng ta đang hướng tới tìm một cách tiếp cận phương án tốt
nhất giữa nhiều phương án có thể có để giải quyết bài toán. Ví dụ, có một số lượng lớn


cách để thiết kế các cấu trúc liên kết một mạng dữ liệu riêng cho một công ty lớn. Làm
thế nào chúng ta có thể tìm thấy một thiết kế đặc biệt tốt trong tất cả các khả năng? Ngoài
ra, chúng ta có thể thử tìm một cách tốt để gán kênh tần số cho nhiều người sử dụng
mạng di động. Có một loạt các khó khăn phức tạp liên quan ở đây, số lượng các phương
án có thể đáp ứng các khó khăn vẫn còn quá lớn để chúng tôi hy vọng sẽ kiểm tra lần lượt
từng phương án trong số chúng. Vì vậy, một lần nữa, chúng ta cần một số cách để tìm ra
giải pháp tốt trong tất cả các khả năng.
Những thách thức hiện tại là cơ hội cho sự hợp tác giữa các kỹ sư viễn thông, các nhà
nghiên cứu và phát triển trong khoa học máy tính và trí tuệ nhân tạo cộng đồng. Đặc biệt,
có một bộ các công nghệ phần mềm mới nổi nhằm tối ưu hóa các vấn đề mà hiện nay
đang được được sử dụng trong ngành công nghiệp, nhưng có tiềm năng lớn cho các giải
pháp có lợi nhuận và hiệu quả cho nhiều bài toán trong ngành viễn thông.
Phần lớn cuốn sách này tập trung vào các kỹ thuật tối ưu hóa, và các công trình
nghiên cứu trong các chương sắp tới trình bày một phần việc áp dụng những kỹ thuật này
cho các bài toán liên quan đến viễn thông. Các kỹ thuật sử dụng bao gồm các phương
pháp “tìm kiếm địa phương “ như ủ mô phỏng (Aarts và Korst, 1989) và tìm kiếm tabu
(Glover, 1989; 1989a), và các kỹ thuật tìm kiếm 'dựa trên tập hợp' như thuật toán di
truyền (Hà Lan, 1975 ; Goldberg, 1989), chiến lược phát triển (Schwefel, 1981; Back,
1996), lập trình tiến hóa (Fogel, 1995) và lập trình di truyền (Koza, 1992). Mục 1.3 giới
thiệu ngắn gọn và cơ bản các kỹ thuật trên, dành cho các kỹ sư viễn thông, quản lý hoặc
nghiên cứu, những người hiểu biết quá nhiều về vấn đề này, nhưng chưa biết cách để giải
quyết chúng. Chương sau thảo luận về việc sử dụng liên quan đến các bài toán đặc biệt
trong viễn thông.
1.2 Bài toán động và thích ứng
Một khía cạnh cơ bản của nhiều vấn đề tối ưu hóa trong viễn thông là một thực tế
rằng các giải pháp tối ưu là động. Những gì có thể là giải pháp tốt nhất bây giờ có thể
không phải là giải pháp lý tưởng trong một vài giờ, hoặc thậm chí một vài phút. Ví dụ,
các nhà cung cấp dịch vụ của một cơ sở dữ liệu phân tán (như video theo yêu cầu , dịch
vụ web - bộ nhớ đệm, vv) phải cố gắng để đảm bảo chất lượng dịch vụ cho mỗi khách
hàng. Để làm điều này liên quan đến việc chuyển hướng cơ sở dữ liệu của khách hàng

truy cập đến các máy chủ khác nhau tại các thời điểm khác nhau (khách hàng không thể
nhận biết) để thực hiện phù hợp cân bằng tải giữa các máy chủ. Kỹ thuật tối ưu hóa hiện
đại có thể được sử dụng để phân phối tải trọng phù hợp trên các máy chủ, tuy nhiên giải
pháp này trở nên không hợp lệ ngay sau khi có sự thay đổi trung bình trong mô hình truy
cập cơ sở dữ liệu của khách hàng. Một ví dụ khác là định tuyến gói chung trong một
mạng point-to-point. Theo truyền thống, routing table tại mỗi node được sử dụng để tìm
kiếm ' bước kế tiếp ' tốt nhất cho một gói dựa trên điểm đến cuối cùng của nó . Chúng ta
có thể tưởng tượng một kỹ thuật tối ưu hóa áp dụng cho vấn đề này, kỹ thuật này dựa vào
mô hình tổng thể và xác định các routing table thích hợp cho mỗi node, do đó ùn tắc
chung và sự chậm trễ có thể được giảm thiểu, tức là trong nhiều trường hợp là ' bước kế
tiếp “tốt nhất có thể không tìm được node tiếp theo trên con đường ngắn nhất, vì liên kết
này có thể được được sử dụng nhiều rồi. Tuy nhiên, đây rõ ràng là một chương trình cần
được thực hiện lặp đi lặp lại như những biểu đồ thay đổi lưu lượng truy cập.
Việc thực hiện lặp đi lặp lại của các kỹ thuật tối ưu hóa là một trong những cách có
thể để tiếp cận các bài toán động, nó thường là một cách khá phù hợp, đặc biệt là khi các
giải pháp tốt yêu cầu cần thiết phải rất nhanh, vì môi trường thay đổi rất nhanh chóng.
Thay vào đó, một phạm vi khác của các kỹ thuật tính toán hiện đại thường thích hợp cho
các bài toán như vậy. Chúng ta có thể gọi chung lớp này là kỹ thuật “thích ứng”, mặc dù
việc sử dụng ở các chương sau trong cuốn sách này thực sự khá đa dạng. Đặc biệt,
chương sau sẽ sử dụng tính toán thần kinh (neural), logic mờ và lý thuyết trò chơi để giải
quyết tối ưu hóa thích nghi trong môi trường động, trong một số trường hợp kết hợp với
tìm kiếm cụ bộ hoặc dựa vào tập hợp. Về cơ bản, một kỹ thuật tối ưu hóa cung cấp một
cách nhanh chóng và hiệu quả để tìm một giải pháp tốt trong nhiều giải pháp, một kỹ
thuật thích ứng phải cung cấp một giải pháp tốt gần như là ngay lập tức.
Thủ thuật ở đây đó là các phương pháp sử dụng tiến trình “off-line” để học về vấn đề
đang giải quyết sao cho khi mà các kết quả tốt và nhanh được yêu cầu thì chúng sẽ được
chuyển đi. Ví dụ, một cách tiếp cận thích hợp cho việc định tuyến gói tin trong các mặt
thay đổi trong mô hình giao thông sẽ bao gồm một số liên tục nhưng tôi thiểu hóa xử lý
mà được cập nhật liên tục trong routing table tại mỗi node dựa trên thông tin hiện tại về
độ trễ và mức độ giao thông.

Trong phần còn lại của chương này chúng ta sẽ giới thiệu ngắn gọn về sự tối ưu và và
các kỹ thuật thích ứng mà chúng ta đã đề cập ở trên. Chi tiết sẽ được nói ở các chương
sau. Sau đó chúng ta sẽ nói một chút về ba phần trong cuốn sách này trong các chương
tiếp theo. Sau cùng, chúng ta sẽ chỉ ra tại sao những kỹ thuật này là quan trọng trong viễn
thông, và chúng sẽ ngày càng phát triển theo thời gian.
1.3 Các kỹ thuật Heuristic hiện đại
Có một loạt các phương pháp nổi tiếng trong hoạt động nghiên cứu, như là : quy
hoạch động (DynamicProgramming), quy hoạch tuyến tính(Integer Programming) đã
được sử dụng để giải quyết các lọa vấn đề tối ưu khác nhau. Tuy nhiên , một cộng đồng
lớn của các nhà khoa học máy tính và các nhà nghiên cứu trí tuệ nhân tạo ngày nay đang
dành rất nhiều nỗ lực vào những ý tưởng hiện đại hơn được gọi là “metaheuristics” hay
còn gọi là “heuristic”. Vấn đề khác nhau cơ bản giữa các phương pháp hiên đại và
phương pháp cổ điển đó là, nó dễ áp dụng hơn. Tực là nếu đưa ra một vấn đề thực tế điển
hình và phức tạp thì nó sẽ cần ít công sức để phát triển cách tiếp cận mô hình tôi thép để
giải quyết vấn đề đó hơn là trình bày vấn đề theo cách quy hoạch tuyến tính có thể áp
dụng trên nó.
Điều này không nói rằng các phương pháp hiện đại sẽ làm tốt hơn phương pháp cổ
điển. Trên thực tế, kịch bản thực tế và điển hình khi mà cả hai loại phương pháp được áp
dụng đó là :
• Một chuyên gia metaheuristics so sánh hại loại kỹ thuật : phương pháp hiện đại làm
tốt hơn phương pháp cổ điện
• Một chuyên gia nghiên cứu các hoạt động cổ điển so sánh hai loại kỹ thuật : phương
pháp cổ điển vượt trội hơn phương pháp hiện đại
Mặc dù sự quan sát này dựa trên một khía cạnh quan trọng trong việc giải quyết các
vấn đề tối ưu, bạn càng hiểu rõ các kỹ thuật riêng biệt mà bạn đang áp dụng thì bạn càng
có khả sử dụng và khai thác nó để đạt được kết quả tốt hơn.
Trong phần này chúng tôi chỉ cung cấp khía quát về một số thuật toán tối ưu hiện đại,
và do đó không cung cấp khá đầy đủ thông tin cho một người đọc để có thể chỉnh cho
phù hợp với các vấn đề cụ thể. Mặc dù chúng tôi không chỉ cho bạn cách để sáng tạo với
chúng, nhưng chúng tôi chỉ ra điểm mấu chốt ở đâu. Làm cách nào để áp dụng sáng tạo

chúng thì phụ thuộc và rất nhiều vấn đề, nhưng chương sau sẽ cung cấp các thông tin cho
từng trường hợp cụ thể. Những gì sẽ trở nên rõ ràng từ chương này, tuy nhiên, đó là
những kỹ thuật được đánh giá cao chung trong ứng dụng của chúng. Trong thực tế, bất cứ
khi nào cũng có một số cách khá sẵn để đánh giá hoặc tính điểm giải pháp ứng cử viên
cho vấn đề của bạn, sau đó các kỹ thuật này có thể được áp dụng.
Về bản chất các kỹ thuật này được chia làm 2 nhóm: tìm kiếm cục bộ, tìm kiếm dựa
trên quần thể. Đó sẽ là những thứ sẽ được bàn đến tiếp theo đây.
1.4 Tìm kiếm cục bộ
Giả sử rằng bạn đang cố gắng để giải quyết một vấn đề P, và bạn có một tập hợp S là
các giải pháp tiềm năng cho vấn đề này. Bạn không nhất thiết phải có tập S, vì nó quá lớn
để có thể hiểu rõ toàn bộ. Tuy nhiên, bạn có một số cách để tạo ra các giải pháp từ nó. Ví
dụ, S có thể là một tập hợp các cấu trúc liên kết cho một mạng, và các giải pháp ứng cử s,
s’, s”, … là các đề cử cấu trúc kết nối cụ thể mà bạn đã đưa ra theo cách nào đó. Thêm
vào đó, hãy tưởng tượng rằng bạn có một hàm chuẩn hóa f(s) (fitness function) có chức
năng đưa ra kết quả của một giải pháp đề cử. Kết quả tốt hơn đồng nghĩa với việc đó là
giải pháp tốt hơn. Lấy ví dụ, chúng ta đang cố gắng tìm ra những cấu trúc liên kết mạng
đáng tin cậy nhất, sau đó f (s) có thể tính toán xác suất thất bại của liên kết giữa hai node
đặc biệt quan trọng. Trong trường hợp chúng ta muốn sử dụng nghịch đảo của giá trị này
nếu chúng ta thực sự muốn gọi nó là ‘chuẩn hóa’ (fitness). Trong những trường hợp khi
mà kết quả thấp hơn, thì tốt hơn và thường thì thích hợp hơn đó là coi f(s) là một hàm chi
phí.
Chúng ta còn cần thêm một điều nữa, mà chúng ta gọi là một toán tử lân cận
(neighbourhood operator). Đây là hàm có chức năng lấy ra một giải pháp đề cử s, và tạo
ra một giải pháp đề cử mới s’ - thường chỉ hơi khác một chút so với s. Chúng ta sẽ sử
dụng thuật ngữ ‘biến cố’ (mutation) để mô tả cho toán tử này. Ví dụ, nếu chúng ta biến
đổi một cấu trúc liên kết mạng, kết quả biến đổi có thể bao gồm một liên kết thêm không
có trong cấu trúc liên kết ‘cha mẹ’, hoặc cũng có thể là giống như nhau. Ngoài ra, biến cố
có thể loại bỏ, hoặc di chuyển, một liên kết.
Bây giờ chúng ta có thể mô tả một cách cơ bản về tìm kiếm cục bộ. Trước tiên, hãy
xem xét một trong những phương pháp tìm kiếm cục bộ đơn giản nhất, được gọi là

phương pháp leo đồi (hillclimbing), thực hiện theo các bước dưới đây:
1. Bắt đầu: tạo ra một giải pháp đề cử ban đầu (có thể bằng một cách ngẫu nhiên);
gọi đây là giải pháp hiện tại, c. Đánh giá nó.
2. Biến đổi c để tạo ra một biến cố m, sau đó đánh giá m.
3. Nếu f(m) là tốt hơn hơn hoặc tương đương f(c), vậy thì cần thay thế c với m. (Ví
dụ c bây giờ là một bản sao của m).
4. Lặp lại bước 2, cho đến khi nào đạt tới một tiêu chí kết thúc.
Ý tưởng của hillclimbing nên được trình bày rõ ràng theo thuật toán nêu trên. Ở bất
kỳ bước nào, chúng ta có một giải pháp hiện tại, và khi chúng ta nhìn vào một ân cận của
giải pháp này – có vài điểm khác nhau. Nếu giải pháp lân cận là một bộ lọc (fitter) (hoặc
tương đương), vậy thì có vẻ như là đây một ý tưởng tốt để chuyển sang lân cận đó; do đó,
cần bắt đầu lại với lân cận giống như là với một giải pháp hiện tại mới. Ý tưởng căn bản
đằng sau điều này, và đằng sau phương pháp tìm kiếm cục bộ nói chung, đó là sự hội tụ
của các giải pháp tốt. Bạn có thể không thực sự mong đợi một cấu trúc liên kết đáng tin
cậy xuất hiện, ví dụ, thêm một liên kết đơn vào một cấu trúc liên kết không đáng tin cậy.
Tuy nhiên, bạn có thể mong đợi rằng một sự thay đổi như vậy có thể biến một cấu trúc
liên kết đáng tin cậy thành một cấu trúc liên kết đáng tin cậy hơn.
Trong tìm kiếm cục bộ, chúng ta khai thác ý tưởng này bằng cách liên tục tìm kiếm
trong vùng lân cận của giải pháp hiện tại. Sau đó chúng ta sẽ chuyển đến một giải pháp
phù hợp, và tái thực thi quá trình này. Sự nguy hiểm ở đây là chúng ta có thể gặp khó
khăn trong với cái gọi là ‘tối ưu cục bộ’, tức là giải pháp hiện tại là không đủ tốt cho mục
đích của chúng ta, nhưng tất cả các phương án lân cận của nó thậm chí còn tồi hơn. Đây
là điểm không tốt đối với thuật toán leo đồi (hillclimbing), vì đơn giản là nó sẽ bị mắc kẹt
ở đó. Các phương pháp tìm kiếm cục bộ khác ngoài hillclimbing, có cách để giải quyết
chính xác tình huống này.
Các phương pháp tìm kiếm cục bộ khác được phân biệt chúng với hillclimbing, tuy
nhiên, có một số cách để giải quyết tình trạng này một cách chính xác. Chúng ta sẽ xem
xét lại 2 phương pháp ở đây, đây là những phương pháp được sử dụng phổ biến và được
sử dụng ở phần sau trong cuốn sách này. Dưới đây là mô phỏng luyện kim (simulated
annealing) và tìm kiếm tabu (tabu search).

1.5 Mô phỏng luyện kim
Thuật toán Mô phỏng luyện kim giống với thuật toán leo đồi. Sự khác biệt duy nhất là
việc thêm vào của 1 cặp tham số, một bước phụ mà một số cuốn sách thực hiện với
những tham số này, và đây là điểm chính, bước 3 được thay đổi để sử dụng các tham số
này:
1. Bắt đầu: Tạo và đánh giá giải pháp ứng cử ban đầu (một cách ngẫu nhiên); gọi đây
là giải pháp hiện tại c. Khởi tạo tham số nhiệt độ T và độ làm mát r (0<r<1).
2. Biến đổi c tạo ra m, kết quả của việc biến đổi c, và đánh giá m.
3. Nếu đánh giá test(f(m), f(c), T) là đúng, thì thay thế c bằng m (c bây giờ là bản sao
của m).
4. Cập nhật tham số nhiệt độ (T thành rT).
5. Lặp lại bước 2, cho tới khi đạt được tiêu chí kết thúc.
Vấn đề xảy ra trong mô phỏng luyện kim đó là đôi khi chúng ta chấp nhận kết quả của
việc biến đổi ngay cả khi nó kém hơn cả giải pháp hiện tại. Tuy nhiên, chúng không xảy
ra thường xuyên và khả năng kết quả của việc biến đổi kém hơn là rất thấp. Ngoài ra,
chúng ta có ít khả năng làm như vậy trong thời gian tới. Kết quả tổng thể là thuật toán có
cơ hội tốt để thoát khỏi optima cục bộ, do đó có thể tìm kiếm các miền tốt hơn của không
gian sau này. Tuy nhiên, hướng cơ bản của sự dịch chuyển về các miền tốt hơn được duy
trì. Tất cả những điều này được thực hiện trong chức năng test của bước 3. Một ví dụ về
loại sử dụng test là đầu tiên thực hiện:
( ( ) ( ))/f m f c T
e

Giả thiết rằng chúng ta thực hiện tối ưu hóa cost (nếu không chúng ta chỉ cần chuyển
đổi f(m) và f(c)). Nếu kết quả của việc biến đổi tốt hơn hoặc tương đương giải pháp hiện
tại, thì biểu thức trên sẽ lớn hơn hoặc bằng 1. Nếu kết quả của việc biến đổi kém hơn, thì
kết quả sẽ nhỏ hơn 1 và kém hơn kết quả biến đổi là gần bằng 0. Do đó, kết quả của biểu
thức được sử dụng như một xác suất. Tạo ngẫu nhiên 1 số rand, với 0<rand<1 và thực
hiện test trong bước 3 chỉ đơn giản là kiểm tra có hay không biểu thức nhỏ hơn rand. Nếu
vậy (luôn luôn được như vậy nếu kết quả biến đổi tốt hơn hoặc tương đương), chúng ta

chấp nhận kết quả biến đổi. T là tham số nhiệt độ. Với bắt đầu lớn và giảm dần (xem
bước 4) theo thời gian. Điều bạn có thể nói từ biểu thức trên, là xác suất của kết quả biến
đổi kém chấp nhận được cũng sẽ giảm dần theo thời gian.
Mô phỏng luyện kim tạo ra một phương pháp mạnh, mặc dù nó khá khó khăn để đạt
được những tham số đúng. Tham khảo cuốn A good modern account, Dowsland (1995).
1.6 Tabu Search
Một cách khác để thoát khỏi optima cục bộ được cung cấp bởi tìm kiếm tabu (Glover
1989; 1989a; Glover and Laguna, 1997). Có nhiều khía cạnh tinh vi để tìm kiếm tabu, ở
đây chúng ta chỉ tìm hiểu về bản chất của kỹ thuật. Giới thiệu một cách rõ ràng và đầy đủ
được cung cấp trong Glover and Laguna (1995; 1997).
Phương pháp tìm kiếm Tabu, như nhiều phương pháp tìm kiếm cục bộ khác không
bàn và xem xét về các láng giềng của giải pháp hiện tại và thậm chí chọn một trong láng
giềng để chuyển đến. Đặc tính có tính phân biệt này của phương pháp tìm kiếm Tabu là
về vấn đề đưa ra sự lựa chọn như thế nào. Đây không đơn giản là việc lựa chọn láng
giềng nào phù hợp nhất trong số những láng giềng đã được kiểm tra. Phương pháp tìm
kiếm Tabu tính đến cả sự biến đổi (mutation) mà cho chúng ta kết quả. Ví dụ, nếu láng
giềng tốt nhất trong giải pháp của bạn là láng giềng mà kết nối bằng việc thay đổi liên kết
từ node k, nhưng chúng ta đã thực hiện việc kết nối đó trong lần lặp trước thì có thể một
láng giềng khác sẽ được lựa chọn thay thế, thậm chí nếu sự di chuyển tốt nhất hiện tại là
di chuyển gần đây nhất cũng có thể không được chấp nhận. Tìm kiếm tabu cung cấp một
cơ chế dựa trên chỉ tiêu nguyện vọng cho phép ta chọn nhiều hơn nếu láng giềng đang
được xem xét mà phù hợp hơn so với láng giềng hiện tại.
Do vậy, bất kỳ việc cài đặt phướng pháp tìm kiếm tabu nào đều duy trì một vài dạng
bộ nhớ ghi lại những thuộc tính nhất định của những di chuyển gần đây. Những thuộc
tính này phụ thuộc nhiều vào vấn đề đang xem xét và đây là một phần của việc áp dụng
phương pháp tìm kiếm tabu. Ví dụ, nếu chúng ta cố gắng tối ưu hóa topo mạng, một dạng
của bộ biến đổi sẽ phải thay đổi đường cáp liên kết giữa node a và node b. Hoặc là trong
việc cài đặt phương pháp tìm kiếm tabu, chúng ta có lẽ chỉ ghi lại sự kiện thay đổi đường
cáp ở lần lặp thứ i, hoặc là đơn giản chỉ ghi lại sự thay đổi trong liên kết giữa node a với
một node mà liên kết với node b. Nếu chúng ta chỉ ghi lại kiểu thuộc tính trước đó thì

những di chuyển có thể xảy ra gần thời điểm đó có thể không được chấp nhận và không
phụ thuộc vào các node có liên quan. Nếu chúng ta chỉ ghi lại thuộc tính sau đó thì những
thay đổi tiềm năng bao gồm node a và (hoặc) node b có thể không được chấp nhận nhưng
những di chuyển thay đổi cáp có thể được chấp nhận.
1.7 Phương pháp tìm kiếm cục bộ Artful
Có một vài điểm chú ý về việc thuật toán tabu minh họa đó là khía cạnh quan trọng
của phương pháp tìm kiểm cục bộ tốt là quyết định láng giềng nào cần di chuyển đến. Tất
cả các phương pháp tìm kiếm cục bộ thực hiện các ý tưởng cơ bản về di chuyển cục bộ
đều là những ý tưởng tốt. Ví dụ, nếu giải pháp hiện tại của bạn tốt thì có thể có một giải
pháp tốt hơn gần đó và có thể có một giải pháp tốt hơn nữa
Tuy nhiên, rõ ràng là thỉnh thoảng (có lẽ là thường xuyên) chúng ta phải chấp nhận
thực tế là chúng ta chỉ có thể tìm kiếm các giải pháp được cải tiến bằng cách tạm thời
thực hiện các giải pháp khác tồi hơn. Thuật toán mô phỏng annealing và phương pháp
tìm kiếm tabu là hai cách tiếp cận để giải quyết vấn đề này. Tuy nhiên, đối với một vấn
đề cụ thể thì cách tốt nhất trong triển khai và thiết kế hai cách tiếp cận trên là không rõ
ràng. Có nhiều sự lựa chọn có thể đưa ra: cách đầu tiên có thể là làm cách nào để trình
bày một giải pháp đưa ra tại vị trí đầu tiên. Lấy ví dụ, một topo mạng có thể được biểu
diễn dưới dạng cách danh sách của các liên kết trong đó mỗi cặp liên kết là một cặp node
(a, b). Việc giải mã danh sách đó thành một topo mạng đơn giản là vẽ liên kết cho mỗi
cặp node trong danh sách đó. Nói cách khác, chúng ta có thể biểu diễn một topo mạng
như là một chuỗi nhị phân chứa thông tin về các liên kết có thể có. Mỗi vị trí trong chuỗi
bit này sẽ có thể thể hiện một liên kết điểm tới điểm. Do vậy, một giải pháp đưa ra là
“10010 ” có thể chỉ ra một liên kết điểm tới điểm giữa node 1 và 2, không có liên kết
giữa node 1 và node 3 hoặc là giữa node 1 và node 4 hoặc là có một liên kết giữa node 1
và node 5
Nói chung, trên đây là những cách để đưa ra một phương pháp đại diện cho các giải
pháp của vấn đề. Tất nhiên sự lựa chọn cũng ảnh hưởng đến thiết kế của các toán tử láng
giềng. Trong ví dụ trên, loại bỏ 1 liên kết từ topology liên quan đến 2 loại hoạt động khác
nhau trong 2 đại diện. Trong trường hợp danh sách cặp node, chúng ta cần thực sự loại bỏ
1 cặp từ danh sách. Trong trường hợp nhị phân, chúng ta thay đổi một bit 1 đến một bit 0

trong một vị trí cụ thể trong chuỗi.
Đề ra các đại diện và vận hành tốt là một phần của nghệ thuật sử dụng hiệu quả tìm
kiếm địa phương để giải quyết các vấn đề tối ưu hóa cứng. Tuy nhiên một phần quan
trọng khác của nghệ thuật này là vấn đề sử dụng tri thức cụ thể hoặc chuẩn đoán tồn tại
khi có thể. Ví dụ, một vấn đề với một trong hai đại diện mà chúng ta đã ghi nhận cho đến
nay cho topology mạng là một topology được tạo ngẫu nhiên điển hình cũng có thể là
không kết nối. Đó là một giải pháp ứng cử có thể chỉ đơn giản là không chứa các đường
dẫn giữa mỗi cặp node. Thông thường, chúng ta chỉ quan tâm đến các mạng hướng kết
nối, vì vậy bất kỳ thuật toán tìm kiếm nào mà effort dành cho kết nối với các mạng hướng
không kết nối thẩm định thì có vẻ khá lãng phí. Đây là nơi mà miền tri thức cơ bản và
những chuẩn đoán tồn tại sẽ có ích. Đầu tiên, bất kỳ một nhà thiết kế mạng tốt nào đều sẽ
biết các khái niệm lý thuyết đồ thị khác nhau, chẳng hạn như là: cây spanning, thuật toán
đường đi ngắn nhất… Nó không khó để đưa ra 1 thay đổi đại diện danh sách cặp node là
đã kết nối, đảm bảo rằng tất cả các giải pháp ứng viên s chứa 1 cây spanning cho mạng.
Một cách để làm điều này là liên quan đến việc giải thích những cặp node đầu tiên gián
tiếp. Thay vì (a, b) chỉ ra rằng mạng này chứa liên kết giữa a và b, nó sẽ có nghĩa là node
a đã kết nối sẽ được liên kết với node b không kết nối. Bằng cách này, mọi cặp node tiếp
theo cho thấy làm thế nào để tham gia như 1 node chưa được sử dụng để phát triển cây
spanning. Khi tất cả các node đã được kết nối như vậy, cặp node còn lại có thể được giải
thích trực tiếp.
Tuy nhiên vấn đề chúng ta giải quyết sẽ liên quan đến vấn đề chi phí, do đó chi phí
của các liên kết cụ thể sẽ đóng vai trò quan trọng trong “hàm thích nghi” (fitness
function). Miền tri thức cho chúng ta biết một số thuật toán nổi tiếng và nhanh chóng đưa
ra đáp án cho việc tìm cây spanning chi phí nhỏ nhất (Kruskal, 1956; Prim, 1957). Do đó
nó có thể làm cho ý nghĩa tốt, tùy thuộc vào các chi tiết khác nhau của vấn đề, để khởi tạo
mỗi giải pháp ứng viên với cây chi phí nhỏ nhất, và tất cả những gì chúng ta cần là đại
diện cho các liên kết chúng ta thêm vào cây này.
Có rất rất nhiều cách trong đó miền tri thức hoặc chuẩn đoán tồn tại có thể được sử
dụng để hưởng lợi từ phương pháp tiếp cận tìm kiếm địa phương cho vấn đề tối ưu hóa.
Một số về vấn đề này có thể cho chúng ta biết, ví dụ những loại biến đổi có cơ hội tốt hơn

dẫn đến hàng xóm tốt. Một phương thức chuẩn đoán hiện có cho biết nhanh chóng giao
các kênh trong mạng di động, có thể được sử dụng để cung cấp điểm khởi tạo cho tìm
kiếm địa phương mà cố gắng để tìm ra giải pháp tốt hơn.
1.8 Tìm kiến dựa trên quần thể (Population-Based Search)
Một lựa chọn khác của thuật toán, hiện giờ đang rất phổ biến, được xây dựng dựa trên
ý tưởng về tìm kiếm địa phương bằng cách sử dụng tập hợp các giải pháp “hiện tại” thay
vì chỉ một. Có 2 cách mà điều này có khả năng tương cường cơ hội tìm kiếm giải pháp
tốt. Đầu tiên, khi chúng ta có 1 tập hợp, chúng ta có thể dành thời gian 1 cách hiệu quả để
tìm kiếm trong nhiều khu vực lân cận khác nhau như một. Thuật toán dựa trên tập hợp có
xu hướng chia sẻ effort tính toán đến các giải pháp ứng viên khác nhau trong 1 cách thiên
vị bởi “mối quan hệ thích ứng” (relative fitness) của chúng. Đó là, nhiều thời gian sẽ
được dùng để tìm kiếm các vùng lân cận của các giải pháp tốt hơn là các giải pháp trung
bình.
Tuy nhiên, tối thiểu cần một ít thời gian cho việc tìm kiếm trong những miền nghiệm
ôn hòa hoặc thô, nên điều này dẫn đến việc tìm kiếm một đột biến đặc biệt tốt trên đường
đi, sau đó các cân bằng tải của nỗ lực tính toán sẽ được sửa đổi cho phù hợp.
Một hướng tiếp cận khác được cung cấp bởi kỹ thuật dựa trên tổ hợp là chúng ta thử
sử dụng toán tử tái tổ hợp. Đây là cách để tạo ra những đột biến, nhưng lần này từ 2 hoặc
nhiều các nghiệm cha chứ không phải chỉ 1. Do đó kết quả được gọi là một tổ hợp chứ
không phải là một đột biến. Tái tổ hợp cung cấp một cách có nguyên tắc tưởng đối để giải
thích sự dịch chuyển của một vùng lân cận lớn. Một trong những khó khăn của tìm kiếm
cục bộ là ngay cả các kỹ thuật tiên tiến như mô phỏng và tìm kiếm cũng khó khăn để tối
ưu cục bộ, nó chỉ “thoát” trừ khi nó có thể là một đột biến khá quyết liệt. Đó là thuật toán
có thể thử tất cả các chuyển động cục bộ có thể, và do đó phải bắt đầu thử với các di
chuyển phi cục bộ nếu nó có bất kỳ cơ hội nào để đạt được bất kỳ nơi nào. Vấn đề thực tế
ở đây là có rất nhiều khả năng di chuyển phi cục bộ. Thật vậy các hàng xóm “phi cục bộ”
là toàn bộ không gian khả năng.
Tái tổ hợp là một phương pháp cung cấp một cách lựa chọn di chuyển phi cục bộ tốt
từ một không gian lớn các khả năng. Ví dụ, nếu 2 nghiệm cha là mỗi vécto của k phần tử,
một toán tử tái tổ hợp được gọi là giao đơn điệu (uniform crossover), sẽ tạo ra một

nghiệm con từ 2 nghiệm cha này bằng cách, với mỗi phần tử được trả ra lấy ngẫu nhiên
giá trị của nó tử một trong 2 điểm. Mỗi nghiệm con có thể khác biệt tới 50% cha mẹ của
nó, và lớn hơn rất nhiều so với sự khác biệt điển hình giữa một nghiệm cha đơn với một
vài hàng xóm cục bộ của nó.
Dưới đây là những bước cho một thuật toán dựa trên tổ hợp chung:
1. Bắt đầu: sinh ra một tập ban đâu các giải pháp có khả năng nhất (candidate). Đánh
giá chúng.
2. Lựa chọn một vài tập làm cha.
3. Áp dụng toán tử tái tổ hợp và đột biến để từ các bộ cha mẹ tạo ra các bộ con.
4. Kết hợp các bộ con được sinh ra vào tập hợp.
5. Cho đến khi đạt được tiêu chí kết thúc, thì quay trở lại bước 2.
Có rất nhiều cách để thực hiện ở mỗi bước, nhưng có những điểm quan trọng như sau.
Bước 2 thường sử dụng chiến lược chọn lọc tự nhiên (survival of the fittest), đây là nơi
mà các tải chia sẻ (load sharing) được thảo luận ở trên sẽ được áp dụng. Các nghiệm ứng
viên được tạo thành, càng nhiều cơ hội nó trở thành cha, và do đó có nhiều cơ hội hơn để
thuật toán tìm ra các vùng lân cận của nó. Có những kỹ thuật chọn lựa khác nhau, hầu hết
đều được tham số hóa để thay đổi mức độ để các tổ hợp cha được tạo ra ưa thích hơn (các
áp lực chọn lọc). Bước 3 áp dụng các toán tử tái tổ hợp hoặc đột biến, hoặc cả hai. Đây
có tất cả các toán tử tái tổ hợp và đột biến, nhưng như chúng tôi gợi ý trên, những lợi ích
thực sự đến khi một vài suy nghĩ đã được đưa vào thiết kế cụ thể các loại toán tử sử dụng
miền tri thức. Trong bước 4, nhớ rằng chúng ta luôn duy trì một kích thước tổ hợp cố
định. Vì vậy, nếu chúng ta có một tổ hợp 100, nhưng 20 phần tử con được thêm vào, thì
20 của 120 phần tử phải được loại bỏ. Một cách tiếp cận phổ biến nhất là chỉ đơn giản
loại bò 20 phần tử ít phù hợp nhất với các nhóm kết hợp, nhưng có một vài phương pháp
khác; chúng ta có thể sử dụng công nghệ được gọi là “dồn nén” (crowding), eg. De Jonh
(1975), trong đó đa dạng đóng vai trò quyết đinh về những giải pháp ứng viên để loại bỏ.
Ví dụ, chúng ta muốn loại bỏ solution s để có lợi cho solution t ít phù hợp hơn, nếu
xảy ra trường hợp s đã có một bản sao trong quần thể còn t là ‘mới’. Cuối cùng, chúng ta
sẽ chỉ ra vài vấn đề về thuật ngữ. Thực tế, có nhiều thuật toán dựa trên quần thể
(population based) (hay còn gọi là thuật toán tiến hóa (evolutionary algorithms – EAs)).

Một thuật ngữ phổ biến khác được sử dụng là thuật ngữ “thuật toán di truyền” (genetic
algorithm), liên quan đến một họ các phương pháp sử dụng toán tử tái tổ hợp
(recombination operator) (Holland, 1965; Goldberg, 1989), trong khi đó, các họ khác
của thuật toán đó lại được gọi là lập trình tiến hóa (evolutionary programming) (Fogel,
1995) và chiến lược tiến hóa (Bäck, 1996), có xu hướng sử dụng đột biến một mình
(mutable alone). Trong mọi trường hợp, một solution ứng viên được gọi là NST, và các
thành phần của nó được gọi là các gene.
1.9 Kỹ thuật tính toán thích nghi
Để giải quyết nhu cầu tối ưu trong môi trường viễn thông luôn luôn thay đổi, sử dụng
trực tiếp các kỹ thuật tối ưu cục bộ (local optimization) hoặc tối ưu quần thể cho kết quả
không phù hợp. Lý do là nó mất nhiều thời gian để hội tụ về một solution tốt, vì thế thời
điểm mà nó đưa ra solution thì bài toán đã thay đổi.
Cái chúng ta cần là một cách đưa ra các decision nhanh và tốt. VD, để xác định xem
“bước kế tiếp”(next hop) cho một gói tin từ node a (đích đến là node d ), chúng ta có thể
chạy mô phỏng mô hình giao thông mạng (network traffic model) ở thời điểm hiện tại và
ước lượng gần đúng thời điểm đến node d với các “bước kế tiếp” hiện tại của node a. Tuy
nhiên, vì thời gian để có thể dựng mô phỏng với phần cứng của bộ chuyển mạch mạng
(network switch) lên đến nhiều giờ nên ý tưởng chạy mô hình mô phỏng không phù hợp.
Thay vào đó, chúng ta cần một cách khác. Lý tưởng nhất, chúng ta đang tìm một “hộp
đen” (black box), đầu vào là question và các điều kiện hiện tại còn đầu ra là answer hợp
lý và ngay lập tức. VD về “hộp đen”: Routing table. Question được hỏi bởi gói tin là:
“Tôi muốn đi đến node d, vậy bước tiếp theo tôi nên đi như thế nào?”. Routing table đưa
ra một cách nhanh chóng câu trả lời nhanh chóng và gửi gói tin đi. Cách làm này về cơ
bản là không linh hoạt (non-adaptive). Nếu một số giao thức quản lý mạng tiên tiến
(advanced network management protocols) không hoạt động, routing table luôn đưa ra
cùng 1 answer, thậm chí ngay cả khi đường đi đến d mà nó suggest đang bị tắc nghẽn ở
thời điểm hiện tại. Vì thế, hộp đen của chúng ta phải có khả năng thay đổi để thích hợp
với điều kiện hiện tại. Chương 8 và chương 9 sẽ thảo luận về cách để thực thi vấn đề này
liên quan đến routing table trong mạng chuyển mạch gói.
Vì vậy, kỹ thuật thích ứng trong bối cảnh viễn thông có xu hướng liên quan đến các

hộp đen , hoặc các mô hình , mà bằng cách nào đó tìm hiểu và thích ứng với ' ẩn ' nhưng
có thể phản ứng rất nhanh chóng và thích hợp khi được hỏi cho một quyết định. Trong
một số các chương có liên quan đến thích ứng, các kỹ thuật được sử dụng là những người
chúng ta đã thảo luận đã có trong phần 1.3, nhưng thay đổi một cách thích hợp trong ánh
sáng của sự cần thiết phải quyết định nhanh chóng. Mặc dù vậy, ở những người khác,
nhất định kỹ thuật quan trọng khác hiện đại được sử dụng, mà bây giờ chúng tôi sẽ giới
thiệu một thời gian ngắn.
Ví dụ, chúng ta muốn loại bỏ solution s để có lợi cho solution t ít phù hợp hơn, nếu
xảy ra trường hợp s đã có một bản sao trong quần thể còn t là ‘mới’. Cuối cùng, chúng ta
sẽ chỉ ra vài vấn đề về thuật ngữ. Thực tế, có nhiều thuật toán dựa trên quần thể
(population based) (hay còn gọi là thuật toán tiến hóa (evolutionary algorithms – EAs)).
Một thuật ngữ phổ biến khác được sử dụng là thuật ngữ “thuật toán di truyền” (genetic
algorithm), liên quan đến một họ các phương pháp sử dụng toán tử tái tổ hợp
(recombination operator) (Holland, 1965; Goldberg, 1989), trong khi đó, các họ khác
của thuật toán đó lại được gọi là lập trình tiến hóa (evolutionary programming) (Fogel,
1995) và chiến lược tiến hóa (Bäck, 1996), có xu hướng sử dụng đột biến một mình
(mutable alone). Trong mọi trường hợp, một solution ứng viên được gọi là NST, và các
thành phần của nó được gọi là các gene.
1.10 Kỹ thuật tính toán thích nghi
Để giải quyết nhu cầu tối ưu trong môi trường viễn thông luôn luôn thay đổi, sử dụng
trực tiếp các kỹ thuật tối ưu cục bộ (local optimization) hoặc tối ưu quần thể cho kết quả
không phù hợp. Lý do là nó mất nhiều thời gian để hội tụ về một solution tốt, vì thế thời
điểm mà nó đưa ra solution thì bài toán đã thay đổi.
Cái chúng ta cần là một cách đưa ra các decision nhanh và tốt. VD, để xác định xem
“bước kế tiếp”(next hop) cho một gói tin từ node a (đích đến là node d ), chúng ta có thể
chạy mô phỏng mô hình giao thông mạng (network traffic model) ở thời điểm hiện tại và
ước lượng gần đúng thời điểm đến node d với các “bước kế tiếp” hiện tại của node a. Tuy
nhiên, vì thời gian để có thể dựng mô phỏng với phần cứng của bộ chuyển mạch mạng
(network switch) lên đến nhiều giờ nên ý tưởng chạy mô hình mô phỏng không phù hợp.
Thay vào đó, chúng ta cần một cách khác. Lý tưởng nhất, chúng ta đang tìm một “hộp

đen” (black box), đầu vào là question và các điều kiện hiện tại còn đầu ra là answer hợp
lý và ngay lập tức. VD về “hộp đen”: Routing table (Routing table). Question được hỏi
bởi gói tin là: “Tôi muốn đi đến node d, vậy bước tiếp theo tôi nên đi như thế nào”.
Routing table đưa ra một cách nhanh chóng câu trả lời nhanh chóng và gửi gói tin đi.
Cách làm này về cơ bản là không linh hoạt (non-adaptive). Nếu một số giao thức quản lý
mạng tiên tiến (advanced network management protocols) không hoạt động, routing table
luôn đưa ra cùng 1 answer, thậm chí ngay cả khi đường đi đến d mà nó suggest đang bị
tắc nghẽn ở thời điểm hiện tại. Vì thế, hộp đen của chúng ta phải có khả năng thay đổi để
thích hợp với điều kiện hiện tại. Chương 8 và chương 9 sẽ thảo luận về cách để thực thi
vấn đề này liên quan đến routing table trong mạng chuyển mạch gói.
Đây là sự ước lượng về thần kinh, logic mờ và lý thuyết trò chơi. Vai trò của ước
lượng thần kinh trong hoàn cảnh này là phát triển một mô hình ẩn, mô hình đó nghiên
cứu (từ ví dụ) để làm thế nào có quyết định đúng đắn trong tập các trường hợp khác nhau.
Kết quả tạo ra sẽ như một mạng lưới thần kinh, sau đó để làm việc trực tuyến như thế nào
thì nhà sản xuất sẽ quyết định. Vai trò của logic mờ là đưa ra cách để tạo ra các quy định
vững chắc, đây là những quy định để ra quyết định. Điều này về cơ bản là tạo ra cách giải
quyết của hộp đen, giống như một mạng lưới thần kinh nhưng với hoạt động bên trong
khác nhau. Cuối cùng lý thuyết trò chơi sẽ đưa ra một cách nhìn khác, đó là một kịch bản
mạng năng động. Về cơ bản, nếu chúng ta xem một số khía cạnh của quản lý mạng như là
một 'trò chơi', một tập hợp các phương trình và các mô hình được biết đến bắt đầu hoạt
động, nó sẽ lần lượt cung cấp những phép tính gần đúng của mạng năng động thực sự.
1.11 Tính toán hệ thần kinh
Tính toán hệ thần kinh (Rumelhart và MacClelland năm 1989; Haykin, 1998) về cơ
bản là một kỹ thuật phân loại mô hình, nhưng ngay từ cái nhìn đầu tiên nó đã cho thấy
khả năng ứng dụng rộng rãi hơn. Sức mạnh thực sự của phương pháp này nằm trong thực
tế và chúng ta không cần phải biết cách phân biệt các loại mô hình. Ta cần xây dựng một
hệ thống chuyên gia dựa trên nguyên tắc cổ điển, ví dụ chúng ta cần phải có các quy tắc
rồi mới xây dựng thành hệ thống. Nếu chúng ta sử dụng cách tính toán hệ thần kinh, tuy
nhiên một loại đặc biệt của hộp đen được gọi là “mạng lưới thấn kinh” sẽ chủ yếu học
các quy tắc cơ bản bằng ví dụ. Một ứng dụng điển hình của kỹ thuật này là đánh giá rủi

ro tín dụng. Các quy tắc là cơ sở ra quyết định về người sẽ hoặc sẽ không thể là một rủi
ro tín dụng, giả định rằng chúng ta bỏ qua trường hợp những người có tài sản thế chấp
cao nhưng lương thấp, nó tương đối phức tạp. Chúng ta có thể đào tạo một mạng lưới
thần kinh để dự đoán rủi ro xấu, tuy nhiên, chỉ đơn giản bằng cách cung cấp một bộ các
ví dụ được biết trước, chẳng hạn như “người p từ vùng r với lương s và nghề y trả cho
khoản vay kích cỡ m; người q với mức lương t và vv. Với p, r, s, vv, như đầu vào, các
mạng lưới thần kinh dần dần tự điều chỉnh trong nội bộ một cách hợp lý để cuối cùng sẽ
cho kết quả chính xác (chỉ khả năng mặc định của khoản vay) và đó chính là những ví dụ
đã được đào tạo trước. Đáng chú ý, và rất hữu ích, chúng ta có thể hi vọng là các mạng
lưới thần kinh có thể đưa là các dự đoán một cách nhanh chóng và tốt khi chúng ta cung
cấp thông tin đầu vào mà trước đó chưa có trong dữ liệu.
Trong nội bộ, một mạng lưới thần kinh là một cấu trúc rất đơn giản; nó chỉ là một tập
hợp các node (đôi khi được gọi là “tế bào thần kinh nhân tạo”) với các liên kết đầu vào và
đầu ra, mỗi node trong số đó có cách xử lý khá đơn giản. nó thêm các số thông qua các
liên kết đầu vào của nó, mỗi trọng số bằng một giá trị mạnh (gọi là trọng lượng) liên quan
đến việc liên kết giữa nó với đối tượng khác, sau đó nó sẽ xử lý tổng hợp và gửi kết quả
lên liên kết đầu ra của nó. Với cách gọi là “feed-forward” mạng lưới thần kinh là một tập
hợp các node như vậy, tổ chức thành lớp. Vấn đề sẽ được đưa vào lớp đầu tiên, sau đó nó
xử lý và kết quả sẽ được đưa vào lớp thứ 2, và cứ như vậy, mặc dù chúng thường chỉ có 3
lớp. Rõ ràng những con số đi ra ở cuối (kết quả) sẽ phụ thuộc vào những gì đã đi vào đầu
vào, nó liên quan mật thiết và được xác định bởi trọng số của các liên kết.
Cách cổ điển, đây là một phương pháp gọi là lan truyền ngược (Rumelhart và
MacClelland 1989), nhưng cũng có nhiều phiên bản hiện đại. Trên thực tế, các loại
mạng mà chúng tôi đã mô tả ngắn gọn ở đây chỉ là một trong nhiều loại có sẵn (Haykin,
1999)1989), nhưng có rất nhiều biến thể hiện đại. Trên thực tế, các loại mạng chúng ta đã
mô tả một cách ngắn gọn ở đây chỉ là một trong nhiều loại có sẵn.
1.12 Logic mờ
Trong một số trường hợp chúng ta có thể nghĩ về các quy tắc hợp lệ cho miền giá trị
của vấn đề. Ví dụ, “nếu lưu lượng đông đúc, sử dụng node a’ và ‘nếu lưu lượng rất đông
đúc, sử dụng node b’. Tuy nhiên, những quy luật như vậy không thực sự hữu ích nếu

không có một cách tốt để quyết định rằng “đông đúc” hay “rất đông đúc” thực sự có ý
nghĩa gì. Trong cách tiếp cận hệ thống chuyên gia cổ điển, chúng ta sẽ áp dụng ngưỡng
được xác định trước cho những cái gọi là “biến ngôn ngữ”, và quyết định, ví dụ, “lưu
lượng đông đúc” có nghĩa là việc sử dụng liên kết trong câu hỏi là giữa 70% và 85%.
Điều này có vẻ tốt, nhưng không khó để thấy rằng việc sử dụng 69.5% có thể là nguyên
nhân gây ra các vấn đề; trong một kịch bản như vậy, quy luật có điều kiện là “lưu lượng
trung bình” (có thể là từ 55% đến 70%) sẽ được sử dụng, nhưng nó có thể thích hợp hơn,
và mang lại một kết quả tốt hơn là sử dụng “lưu lượng đông đúc”
Logic mờ cung cấp một cách để sử dụng các biến ngôn ngữ để giải quyết vấn đề
ngưỡng một cách rất tự nhiên và mạnh mẽ. Thực tế, nó gần như loại bỏ nhu cầu ngưỡng,
thay vì giới thiệu những thứ gọi là “các chức năng thành viên”. Chúng ta không còn có
lưu lượng đông đúc hay trung bình. Thay vào đó, một giá trị lưu lượng nhất định cho lưu
lượng ở mức đông đúc và một giá trị cho mức độ trung bình. Các mức độ phụ thuộc vào
các giá trị số thực tế bằng cách các chức năng thành phần, thường đơn giản là “chức năng
hình tam giác”. Ví dụ, mức độ lưu lượng nặng có thể là 0 giữa 0% và 35% sử dụng, sau
đó nó có thể tăng lên 1 giữa 35% và 75%, và sau đó lại giảm xuống 0 giữa 75% và 90%.
Chức năng thành phần (membership function) cho biến ngôn ngữ “rất nặng” sẽ chồng
chéo nhau với điều này, bởi vậy một giá trị lưu lượng 82.5% có thể là ‘nặng’ đến mức 0.5
và ‘rất nặng’ đến mức 0.7.
Với mỗi điều kiện môi trường nhất định, các quy tắc khác nhau sẽ áp dụng những
mức độ khác nhau. Đặc biệt, logic mờ cung cấp nhiều cách để xác định mức độ mà các
quy luật khác nhau được áp dụng khi các thành phần điều kiện trong quy luật liên quan
đến nhiều biến ngôn ngữ. Chương 8 sử dụng logic mờ, sẽ thảo luận chi tiết hơn về vấn đề
này.
Sức mạnh chính của logic mờ là chúng ta chỉ cần đảm bảo rằng các chức năng thành
phần là hợp lý. Hệ thống kết quả, với các quyết định phù hợp, hướng tới các biến thể
trong các chức năng thành phần, trong giới hạn hợp lý. Tuy nhiên chúng ta có thể phải
làm một số việc, là xây dựng các nguyên tắc hoạt động. Đây là nơi việc học ‘offline’ đưa
ra trong khi chúng ta đang sử dụng logic mờ trong một môi trường thích nghi. Đôi khi,
các thuật toán di truyền có thể được sử dụng cho nhiệm vụ xây dựng một tập các quy luật

tốt.
1.13 Lý thuyết trò chơi
Cuối cùng, lý thuyết trò chơi cung cấp một cách khác để nhìn vào các vấn đề phức
tạp, dynamic và liên quan đến giao tiếp, đặc biệt là liên quan đến quản lý mạng và cung
cấp dịch vụ. Xem xét các quá trình ra quyết định phức tạp liên quan trong việc quyết định
những gì để thiết lập cho lời gọi kết nối hoặc cung cấp dịch vụ dữ liệu trong một môi
trường mạng động, liên quan đến cạnh tranh với nhiều nhà cung cấp dịch vụ khác.
1.14 Tổng kết
Phương pháp Heuristic và các kĩ thuật thích hợp được ứng dụng trong rất nhiều trong
viễn thông liên quan tới việc tối ưu. Nó được chia làm 3 phần chính, tương đương với 3
vấn đề thường gặp. Thứ nhất, đó là vấn đề thiết kế và tổ chức mạng. Trong thực tế, có rất
nhiều hoạt động sử dụng kĩ thuật Heuristic hiện đại, việc thiết kế mạng sẽ đơn giản với
các vấn đề tối ưu do các vấn đề này đã được xác định rõ rang.Điều đó có nghĩa là chúng
ta có thể tiết kiệm nhiều thời gian và công sức để phát triển 1 kĩ thuật tối ưu tốt nhờ sử
dụng các thuật toán và cơ chế đặc tả. Khi một giải pháp được thiết kế, nó có thể được
thực hiện cài đặt trong vài tuần hoặc vài tháng.
Ngược lại, với vấn đề định tuyến và sử dụng giao thức được nói đến trong phần 2, bao
gồm các kĩ thuật tối ưu động gồm 2 vấn đề liên quan đến tối ưu thời gian tiêu thụ.vấn đề
chính ở phần này là tập trung vào các phương thức để thực thi và tích hợp mô hình “hộp
đen” .Trong một trường hợp, hộp đen là mạng tự nhiên, trường hợp khác, nó là tập luật
logic mờ hay 1 form được đặc tả trong routing table.
Phần 3 xem xét phạm vi vấn đề, bao gồm phần mềm, chiến thuật, phương thức quản
lý lưu lượng. Phát triển phần mềm cũng có nhiều vấn đề trong lĩnh vực viễn thông tuy
nhiên nó cũng cung cấp nhiều giải pháp hợp lý trong việc cung cấp dịch vụ. Các vấn đề
cung cấp dịch vụ, trang bị trong mạng, đều cần tới những ưu điểm và tính linh động của
các phần mềm .Tuy nhiên các phần mềm cần nhiều thời gian để phát triển. Phần 3 cũng
chỉ ra tầm quan trọng của “chiến lược” bang cách xem xét các vấn đề của việc quản lý 1
mạng động phức tạp. Các vấn đề bao gồm cấp phát dịch vụ, quản trị luồng dữ liệu. Trong
mỗi trường hợp, một cách tiếp cận dựa vào lý thuyết game được tích hợp. Cuối cùng, ở
phần 3 cũng chỉ ra vẫn đề quản lý băng thông trong cả mạng cố định và mạng di động.

Chính vì vậy, chúng tôi đã bao quát một phạm vi rộng của các vấn đề tối ưu mạng
viễn thông trong quyển sách này. Chúng tôi đã trình bày một tập các vấn đề cần được
hoàn thiện. Các vấn đề tương tự trong việc kết nối các kĩ thuật lại cũng được nhắc đến.
Việc phát triển các kĩ thuật tính toán đã được tích hợp và cài đặt nhanh chóng trong lĩnh
vực viễn thông.
Chương 9: Thuật toán Genetic Adaptive Routing Algorithm
9.1 Giới thiệu
Một thuật toán định tuyến xây dựng các routing table để chuyển tiếp các gói thông tin
dựa trên trạng thái mạng. Sự phát triển của Internet làm tăng khả năng nhu cầu về mở
rộng các thuật toán định tuyến. Các giao thức thông thường như RIP (Routing
Information Protocol) và OSPF (Open Shortest-Path First) không phải là thuật toán thích
nghi; bởi vì chúng chỉ dựa vào số lượng hop-count để tính toán đường đi ngắn nhất.
Trong các mạng lưới rộng hơn, rất khó để thực hiện một thuật toán thích nghi dựa vào
cách tiếp cận thông thường. Đó là vì chúng sử dụng phương pháp broadcasts để thu thập
thông tin trong routing table hoặc tình trạng liên kết mạng, gây ra lãng phí trong các thuật
toán thích ứng.
Trong chương này, chúng tôi mô tả một thuật toán định tuyến thích nghi gọi là
Genetic Adaptive Routing Algorithm (GARA). Thuật toán này duy trì một số lượng các
route thường xuyên được sử dụng. Thay vì phải broadcast toàn bộ routing table hoặc
trạng thái kết nối, nó chỉ theo dõi độ trễ thông tin cho các alternative route. Nó cũng cố
gắng để cân bằng tải bằng cách phân bổ các gói tín giữa các alternative route trong
routing table của nó. Các alternative route được sinh bởi path genetic operators (toán tử
di truyền).
9.2 Các thuật toán định tuyến trên Internet
Trong những năm gần đây trên Internet, các thuật toán định tuyến distance vector dựa
trên thuật toán Bellman-Ford (Bellman, 1957; Ford and Fulkerson, 1962) thường được sử
dụng. Giao thức RIP dựa trên thuật toán vector-distance và hop-count thường được sử
dụng trong các mạng LAN nhỏ. Trong các mạng lớn, các thuật toán này gây tổn thất chi
phí vì nó định kỳ gửi các broadcast message (có cả thông tin về toàn bộ routing table).
Chính xác hơn, số lượng các message để broadcast route table là n

2
(n là số node trong
mạng) và kích thước của một routing table là n,có nghĩa là tổng chi phí truyền gửi thông
tin định tuyến là O(n
3
). Thuật toán vector distance cũng bị tác động vì cần có thời gian để
routing table lấy được thông tin toàn bộ các node trong mạng để đưa ra khoảng cách
đúng.
Để giảm chi phí truyền tải, các thuật toán định tuyến dựa trên thông tin trạng thái kết
nốii (VD: Shortest Path First (SPF)…) gửi các broadcast message chỉ chứa thông tin link
status. Dựa trên một cơ sở dữ liệu topo từ việc thu thập link status, thuật toán tính toán
được đường đi ngắn nhất sử dụng thuật toán đường đi ngắn nhất Dijkstra) tại mỗi node.
Broadcast message SPF chỉ chứa link status của node thay vì toàn bộ routing table. Vì
thế, kích thước của message trở thành O(1). Tuy nhiên, số lượng các message tương
đương với n
2
, dẫn đến các chi phí mở rộng trong mạng lớn.
Có vẻ như khá dễ dảng để thu thập thông tin độ trễ của kết nối và tính toán định tuyến
với độ trễ nhỏ; Tuy nhiên, trong mạng lớn thì đó là điều không thể. Đó là vì chúng ta cần
thu thập độ trễ thông tin của tất cả các kết nối thường xuyên sử dụng bởi broadcast
message, dẫn đến chi phí truyền thông rất lớn. Trong một mạng lớn VD như Internet,
điều cần thiết cho các thuật toán định tuyến đó là dễ mở rộng. Để có khả năng mở rộng
trong các thuật toán định tuyến thích nghi, cần phải theo dõi độ trễ thông tin với chi phí
truyền thông nhỏ nhất có thể.
9.3 Giải thuật di truyền trong Quản lý tài nguyên mạng
Trước khi giới thiệu thuật toán định tuyến GAs, phần này sẽ nói ngắn gọn về việc áp
dụng GAs trong việc quản lý tài nguyên mạng. Từ khi có nhiều vấn đề được phân loại
vào lớp các bài toán tối ưu tổ hợp, chúng có thể trực tiếp giải quyết bằng GAs. Ví dụ, một
ứng dụng của GAs cho mạng định tuyến trong viễn thông được đề xuất trong cuốn
Handbook of Genetic Algorithms (Davis, 1991) by Cox et al. (1991). Tác giả giải quyết

vấn đề tối ưu hóa ràng buộc bằng cách cho phép liên kết giữa bandwidth với mỗi
connection. Theo cách tiếp cận khác, Munakata và Hashier (1993) đã giải quyết tối đa
vấn đề lưu lượng mạng. Mục tiêu của bài toán này là tối đa hóa lưu lượng mạng dựa trên
thông tin toàn cầu của mạng. Hai thuật toán này không thể áp dụng trực tiếp đến việc
định tuyến trong mạng chuyển mạch gói (packet-switching networks) vì chúng dựa trên
mạng chuyển mạch (circuit switching network), trong đó, bandwidth của mạng được cấp
phát cho các mạch – các connections giữa các node (Tanenbaum, 1988). Mặt khác, Carse
et al. (1995) đã áp dụng Fuzzy Classifer System (FCS) (Hệ thống phân loại mờ) để phân
tán thuật toán định tuyến trong packet-switching networks, mà mỗi gói được định tuyến
một cách độc lập bởi một routing table. Tuy nhiên, thuật toán định tuyến này chỉ quyết
định được khi nào thì một packet được định tuyến trực tiếp hoặc gián tiếp bằng cách sử
dụng FCS. Vì thế, thuật toán không thể áp dụng trực tiếp cho các thuật toán định tuyến
hiện tại.
9.4 Tổng quan về GARA
Thuật toán Genetic Adaptive Routing Algorithm (GARA) là một thuật toán định
tuyến thích nghi sử dụng toán tử di truyền để thiết lập các alternative route trong một
routing table. Nó dựa trên các thuật toán định tuyến nguồn, trong đó xác định toàn bộ
route của một packet từ node nguồn của nó. Mỗi node có một routing table chứa một bộ
các alternative route, mỗi alternative route được tạo bởi genetic operators. Mỗi packet lựa
chọn một trong các alternative route để đi đến đích. Thuật toán theo dõi độ trễ thông tin
của các route thường xuyên được sử dụng.
Hình 9.1: Overview of the GARA
Hình 9.1 thể hiện tổng quan về GARA. Mỗi node có một routing table chứa các route
đến đích. Mỗi đích được gán một bộ các alternative route. Mỗi route có giá trị trọng số
(weight), giá trị weight đại diện cho xác suất một route được chọn từ bộ các alternative
route. Trọng số được tính toán từ độ trễ thông tin, được theo dõi bằng cách gửi packet
vấn tin trễ. Ban đầu, routing table là rỗng. Khi một packet được gửi đi, một default route
được sinh bằng cách sử dụng thuật toán đường đi ngắn nhất Dijkstra dựa trên hop-count.
Sau khi một số packets đã được gửi theo route, một packet được gửi để theo dõi độ trễ
thông tin của route. Để sinh alternative route (alternative route), path genetic operators

được gọi với xác suất như trong bảng sau mỗi phép đánh giá giá trị weight. Để chống tràn
overflow routing table, các selection operator (phép chọn) được áp dụng giảm kích thước
routing table. Toán tử selection operator là phép xóa một route có giá trị weight thất nhất.
Hơn nữa, một toán tử selection operator khác cũng có thể được áp dụng; nó xóa toàn bộ
tất cả các route có số packet được gửi đến đích là nhỏ nhất.
GARA có thể làm giảm chi phí truyền thông cho việc theo dõi động trạng thái mạng
bằng cách giới hạn số lượng các alternative route cần theo dõi. Nó cũng có thể làm giảm
khả năng tắc nghẽn giữa các alternative route.
9.5 Path genetic operators (Toán tử di truyền)
Theo thuật toán GARA, các path genetic operators e.g. path mutation (toán tử đột
biến) và path crossover (toán tử lai ghép) được thiết kế để sinh các alternative routes dựa
trên thông tin topological của mạng. Toán tử path mutation gây ra một sự xáo trộn trong
một route để tạo một alternative route. Toán tử path crossover trao đổi chéo các sub-
routes giữa một cặp route.
Một route (path) được mã hóa thành một list node IDs từ node nguồn đến node đích.
Ví dụ, một route từ node 0 đến node 9 được mã hóa thành một list các node: (0 1 2 5 8 3
4 9). Route bị ràng buộc với topo mạng; nghĩa là, mỗi bước của một route phải đi qua
một liên kết vật lý của mạng.
9.5.1 Path mutation (Toán tử đột biến)
Path mutation tạo ra một alternative route bằng cách làm xáo trộn. Hình 9.2 cho thấy
các để thực hiện toán tử này. Để thực hiện một mutation, bước 1, một node được lựa
chọn ngẫu nhiên từ route gốc, gọi là mutation node. Bước 2, một node khác được lựa
chọn ngẫu nhiên trong số các node có liên kết trực tiếp đến mutation node. Bước 3, một
alternative route được sinh ra bằng cách liên kết từ node nguồn đến node được lựa chọn
và từ node được lựa chọn đến đích thực hiện thuật toán đường đi ngắn nhất Dijkstra.
1. Mutation node n
m

được lựa chọn ngẫu nhiên từ tất cả các node của route r, ngoại
trừ node nguồn và node đích.

2. Node khác n
m
’ được lựa chọn ngẫu nhiên từ hàng xóm của mutation node.
3. Sinh đường đi ngắn nhất r
1
từ node nguồn đến n
m
’, và đường đi ngắn nhất khác
r
2
từ n
m
’ đến đích.
4. Nếu không có node trùng lặp giữa r
1

và r
2
,
các node được liên kết tạo thành
mutated route r = r
1
+ r
2
.
Ngược lại, loại bỏ và không thực hiện mutation.
Hình 9.2: Path mutation applied to a route
Giả sử mutation operator được áp dụng cho route r = (0 3 5 6 7 10 12 15). Bước 1, lựa
chọn node 7 như một node mutation. Bước 2, node 8 được lựa chọn ngẫu nhiên từ node
mutation cận kề. Bước 3, bằng thuật toán Dijkstra, kết nối node nguồn 0 và lựa chọn

node 8 để thực hiện một path r
1
= (0 2 4 8). Kết nối node 8 và node 15 để thực hiện path
khác là r
2
= (8 10 12 15). Kết thúc mutation bằng cách kết nối route r
1
và r
2
để có r’ = (0 2
4 8 10 12 15). Chúng ta không sinh route r’ nếu không tồn tại bất cứ trùng lặp nào giữa r
1
và r
2
. Đó là vì chúng ta cần loại bỏ việc tạo ra vòng lặp trong route.
9.5.2 Path crossover (Toán tử lai ghép)
Toán tử path crossover trao đổi các sub-route giữa một cặp routes. Để thực hiện
crossover, cặp route phải có cùng node nguồn và node đích. Hình 9.3 mô tả tổng quan
crossover operator.
Crossover operator áp dụng cho một cặp route r
1
và r
2
hoạt động theo trình tự sau:
1. Một bộ các node N
c
nằm trên cả r
1
và r
2

(ngoại trừ node nguồn và node đích) được
lựa chọn, gọi là các crossing site tiềm năng. Nếu N
c
rỗng, không thực hiện
crossover.
2. Một node n
c
được lựa chọn ngẫu nhiên từ N
c
như một crossing site.
3. Crossover thực hiện bằng cách trao đổi tất cả các node phía sau crossing site n
c
giữa r
1
và r
2
.
Hình 9.3: Path crossover applied to a pair of routes
Giả sử, path crossover được ứng dụng cho cặp route r
1
và r
2
từ node 0 đến node 20
như sau:
Các crossing site tiềm năng của là các node 7, 11, 15. Chọn node 11 như một crossing
site, phép crossover được thực hiện bằng cách thay đổi các route con sau crossing site:
Nếu không có node chung trong một cặp route, ta không thể lựa chọn crossing site và
chúng ta không thực hiện được crossover. Trước đây, để thực hiện một crossover khi cặp
không có các node chung, chúng tôi kết nối các crossing site bằng cách tính toán đường
đi ngắn nhất giữa chúng. Tuy nhiên, một cặp route mà không có bất kỳ node chung nào

thì không có giá trị crossover, bởi vì crossover operator có thể sinh route quá xa so với bố
mẹ.

×