Chương tr nh mô phỏng lại thuật toán được em sử d ng ngôn ngữ C++, lập trình trên nền windows, với IDE là Code::blocks.
Ngôn ngữ được sử d ng để viết chương tr nh là C++ một ngôn ngữ thuần hướng đối tượng được sử d ng nhiều trong việc lập trình các thuật toán.
Phần mềm được chọn để sử d ng viết chương tr nh là Code:blocks Đây là một IDE C/C++ miễn phí tính hợp sẵn trình biên d ch minGW, hỗ trợ biên d ch và debug trực tiếp chương tr nh ngoài ra Code::blocks còn được tích hợp nhiều t nh n ng như auto complete hightlight code … giao diện thân thiện, dễ sử d ng.
5.2. Bố cục chương rình
43
Bắt đầu
Nạp đồ th và tập lightpath yêu cầu
Khởi tạo quần thể ban đầu Sắp xếp lightpath Đ nh tuyến và phân bước sóng bằng thuật toán BFD Sắp xếp quần thể theo độ thích nghi giảm dần Lai ghép – Đột biến – Tái sinh - Chọn lọc
Đường đi đ nh tuyến và bước sóng sử d ng Kết thúc Số bước sóng sử dụng nhỏ nhất Tìm min-length c a mỗi lightpath BFS d
44
Chương tr nh được thiết kế giống như lưu đồ trên:
Ban đầu một đồ th biểu diễn một topology và một tập các lightpath yêu cầu được nhập vào làm tham số đầu vào.
Sau đó hàm BFS được sử d ng để t m đường đi ngắn nhất c a các lightpath qua đó t nh được giá tr min-length m t khác t BFS ta t nh được giá tr d tức là giá tr lớn nhất c a độ dài mà đường đi lightpath cho ph p nhằm tránh cho các lightpath có đường đi quá dài khi đ nh tuyến.
M t khác ta tạo được quần thể ban đầu thông qua số đỉnh c a đồ th lightpath yêu cầu. Ở đây số cá thể trong quần thể được tạo bằng với số đỉnh c a đồ th và số gen trong một nhiễm sắc thể bằng với số lightpath yêu cầu. Mỗi gen là một số thực được sinh ra ngẫu nhiên trong khoảng (0, 1). Giá tr TOP và BOT được gán bằng 0.2 số các thể trong quần thể. Các tham số này có thể thay đ i tùy ý.
Sau đó một vòng l p sẽ tạo ra để duyệt qua t ng nhiễm sắc thể. Với mỗi nhiễm sắc thể, mỗi gen trong đó sẽ được công với giá tr min-length c a mỗi lightpath. Sau đó lightpath được sắp xếp theo thứ tự giảm dần c a giá tr sau khi được cộng trên và đưa vào thuật tóan BFD.
Các lightpath sẽ được đ nh tuyến và gán bước sóng theo thuật toán BFS Đầu ra sẽ là các đường đi cho các lightpath và các bước sóng sử d ng tương đương T ng số bước sóng sử d ng sẽ được gán cho độ thích nghi c a nhiễm sắc thể d ng đ ghép với các giá tr min-length bên trên.
Sau đó các nhiễm sắc thể này được sắp xếp theo thứ tự giảm dần c a độ thích nghi tức là t ng dần c a số bước sóng sử d ng.
Tiếp đó các quá tr nh di truyền diễn ra qua các phép toán di truyền như: ph p lai ph p đột biến, phép tái sinh và chọn lọc. T đó h nh thành lên một thế hệ mới
Tại thế hệ mới này các nhiễm sắc thể lại được sử d ng kết hợp với các giá tr min-length để tạo thứ tự sắp xếp đầu vào cho các lightpath để bắt đầu một vòng l p t m đường đi và bước sóng cho các lightpath mới.
Quá trình d ng lại khi chạy đ số thế hệ trong tham số đầu vào.
Kết quả đầu ra sẽ là đường đi c a các lightpath và bước sóng tương ứng với số bước sóng sử d ng là nhỏ nhất trong tất cả các vòng l p trên.
45
Đầu vào c a chương tr nh là 2 file te t lưu trong thư m c input gồm một file lưu đồ th (graph.txt) và một file lưu tập các lightpath yêu cầu (lightpath.txt) có đ nh dạng như sau: graph.txt: nV nA a1 b1 a2 b2 …… an bn Trong đó: - nV là số cạnh c a đồ th (topology mạng) - nA là số đỉnh c a đồ th ((topology mạng)
- a1,2,..n b1 2 … n biểu diễn các cạnh trên đồ th t các điểm a1, a2…, an đến các điểm b1, b2,…, bn. lightpath.txt: x1 y1 x2 y2 …… xn yn Trong đó:
- x1,2,..,n y1 2 … n biểu diễn các lightpath yêu cầu t x1, x2 … n đến y1, y2 … yn.
Đầu ra c a chương tr nh là một file t t lưu đường đi c a các lighpath được đ nh tuyến và bước sóng sử d ng tương ứng.