Hình4.1 Sơ đồ chức năng của chương trình.
Chương trình chính main() gồm có các chương trình con như hình4.1 để thực hiện quá trình tính toán và xử lý.
Chương trình con randGaussian() có tác dụng tạo ra các biến ngẫu nhiên Gauss với tham số đầu vào từ hàm rand(). Kết quả của hàm này cho ra một số nốt (ở đây là 30
Chương trình con pathloss() có nhận tham số đầu vào là kết quả của hàm
distant(), và năng lượng giữa các nốt lân cận tích cực trong mạng. Hàm này sẽ dựa vào kết quả của hàm tính khoảng cách để tính ra năng lượng nhiễu có ích giữa các nốt lân cận với nhau, giá trị năng lượng này chỉ được tính khi giá tri khoảng cách với nốt lân cận nằm trong một khoảng xác định [dmin, dmax]. Sau đó sẽ đưa ra giá trị năng lượng thật mà một nốt nhận được bằng việc cộng các giá trị năng lượng này với nhau.
Chương trình con routing() là hàm nhận tham số đầu vào là khoảng cách và năng lượng (năng lượng của một nốt nhận được tính thông qua năng lượng truyền từ nốt nguồn tới và năng lượng nhiễu có ích nhận đựơc từ các nốt lân cận) sắp xếp theo thuật toán bọt xà phòng và thuật toán sắp xếp Dijkstra để chọn ra tuyến đường tối ưu nhất (ngắn nhất và năng lượng truyền tin nhỏ nhất) từ một nốt tới tất cả các nốt còn lại. Cứ sau mỗi lần lặp, kết quả sẽ được lưu và bộ nhớ cho đến khi đến được đích cần đến. Chương trình con filedump() hàm này nhận tham số đầu vào là các kết quả của hàm routing() và bộ nhớ để từ đó vẽ đường từ nốt nguồn tới nốt đích vào file có định dạng MatLab.