num_pods = 4;
num_racks_per_pod = 4;
num_nodes_per_rack = 4;
max_wavelength = 50;
num_packets = 1000;
packet_size = 1500;
link_bandwidth = 100e6;
link_delay = 1e-6;
[adj_matrix, node_list] = generate_topology(num_pods, num_racks_per_pod, num_nodes_per_rack);
traffic_matrix = generate_traffic_matrix(length(node_list), num_packets);
[wavelength_assignment, conflict_graph] = assign_wavelengths(adj_matrix, max_wavelength);
fprintf('冲突图边数: %d\n', sum(conflict_graph(:)) / 2);
fprintf('波长分配完成,使用的波长数: %d\n', length(unique(wavelength_assignment)));
[avg_delay, blocking_rate] = simulate_network(adj_matrix, wavelength_assignment, traffic_matrix, link_bandwidth, link_delay, packet_size);
fprintf('平均时延: %.6f 秒\n', avg_delay);
fprintf('阻塞率: %.2f%%\n', blocking_rate * 100);function [adj_matrix, node_list] = generate_topology(num_pods, num_racks_per_pod, num_nodes_per_rack)total_nodes = num_pods * num_racks_per_pod * num_nodes_per_rack;adj_matrix = zeros(total_nodes, total_nodes); node_list = 1:total_nodes; for pod = 1:num_podsstart_rack = (pod-1)*num_racks_per_pod + 1;end_rack = pod*num_racks_per_pod;racks_in_pod = start_rack:end_rack;for rack = racks_in_podnodes = (rack-1)*num_nodes_per_rack + 1 : rack*num_nodes_per_rack;adj_matrix(nodes, nodes) = 1;endfor i = 1:length(racks_in_pod)for j = i+1:length(racks_in_pod)if rand() < 0.5rack1 = racks_in_pod(i);rack2 = racks_in_pod(j);range1 = (rack1-