⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sim2.m

📁 best routing protocol
💻 M
字号:
function sim2%vary the number of beacons%DEPRICATEDfn = 'sim2result_v4.mat';%get_raw_data(fn)process_data(fn)function get_raw_data(fn)topo = 'topo-3200-5.12.mat';repeat = 10;n_beacons =[10, 20, 30, 56, 80, 100]S = load(topo);[optimal_dist optimal_nexthop] = allpair_dijkstra(S.D, ...						  1:S.n_nodes, 1, ...						  'optimal-cache.mat');load_optimal = get_nexthop_load(optimal_nexthop, S.random_pairs);for i=1:repeat  for b=1:length(n_beacons)    fprintf('****sim2 test beacon=%d, i=%d\n', n_beacons(b), i);    %res(b,i) = study_cr(topo,0.0, n_beacons(b));    res(b,i) = simulation(topo, n_beacons(b));    res(b,i).failure_bvr    save(fn, 'res','optimal_dist','load_optimal', 'n_beacons','repeat','topo');  endendfunction process_data(fn)msz = 12; %MarkerSizen_beacons =[10, 20, 56, 80, 100]repeat = 10;S = load('topo-3200-5.12.mat');load(fn);%%%%figure 1.a routing success ratefor i=1:repeat  for b=1:length(n_beacons)    failure_bvr(b,i) = res(b,i).failure_bvr;  endendy = mean(failure_bvr,2);l = y - min(failure_bvr,[],2);u = max(failure_bvr,[],2) - y;figure(1)set(gca, 'FontSize',20);hold onerrorbar(n_beacons, y, l, u, 'x-r', 'MarkerSize', msz)plot(n_beacons, zeros(1, length(n_beacons)),'o-b', 'MarkerSize', msz)xlabel('number of beacons K');ylabel('routing failure rate');ylim([-0.05 0.3]);legend('BVR no flooding', 'PCR');saveas(gcf, 'failure_rate.eps','psc2')%%%%%figure 1.b routing stretch vs Kpair_indices = S.random_pairs(:,1)+(S.random_pairs(:,2)-1)*S.n_nodes;optimal_dist = optimal_dist(pair_indices);failure_opt = length(find(optimal_dist==Inf))/S.n_random_pairs;figure(2)set(gca, 'FontSize',15);hold oncolors_bvr=['k--';'k--';'k-.'];colors_bvr_rate=['g  ';'   ';'g--'];colors_cr=['b ';'  ';'b:'];for b = [1,3]  for i=1:repeat    routing_dist_bvr_2h(:,i)=res(b,i).routing_dist_bvr_2h;    routing_dist_bvr_sf(:,i)=res(b,i).routing_dist_bvr_sf;    routing_dist_cr(:,i)=res(b,i).routing_dist_cr;  end  worst_bvr(b) = plot_routing_stretch(routing_dist_bvr_sf, optimal_dist, colors_bvr(b,:),[100],1);  worst_cr(b) = plot_routing_stretch(routing_dist_cr, optimal_dist, ...				 colors_cr(b,:),[100],1);  %plot_routing_stretch(routing_dist_bvr_2h, optimal_dist, 'r',[],1);  tmp = mean(failure_bvr,2);  plot([1 6],[1-tmp(b), 1-tmp(b)],colors_bvr_rate(b,:));endbvr_str1 = sprintf('BVR w/ flooding. K=10, worst stretch=%.1f',worst_bvr(1));bvr_str2 = sprintf('BVR w/ flooding. K=56, worst stretch=%.1f',worst_bvr(3));cr_str1 = sprintf('PCR. K=10, worst stretch=%.1f',worst_cr(1));cr_str2 = sprintf('PCR. K=56, worst stretch=%.1f',round(worst_cr(3)));legend(bvr_str1, cr_str1, 'BVR success rate K=10', ...       bvr_str2, ...       cr_str2, 'BVR success rate K=56',0);xlabel('transmission stretch');ylabel('CDF');xlim([1 6])if 0for i=1:repeat  for b=1:length(n_beacons)    tmp = plot_routing_stretch(res(b,i).routing_dist_bvr, optimal_dist, ...			       '', [10, 50, 90], 0);    stretch_bvr_10(b,i) = tmp(1);    stretch_bvr_50(b,i) = tmp(2);    stretch_bvr_90(b,i) =tmp(3);    tmp	= plot_routing_stretch(res(b,i).routing_dist_cr, optimal_dist, ...			       '', [10, 50, 90], 0);    stretch_cr_10(b,i) = tmp(1);    stretch_cr_50(b,i) = tmp(2);    stretch_cr_90(b,i) =tmp(3);  endendy = mean(stretch_bvr_50,2);l = y - mean(stretch_bvr_10,2);u = mean(stretch_bvr_90,2) - y;errorbar(n_beacons, y, l, u,'x-r');%plot(n_beacons, mean(stretch_bvr_50,2),'x-r');y = mean(stretch_cr_50,2);l = y - mean(stretch_cr_10,2);u = mean(stretch_cr_90,2) - y;errorbar(n_beacons, y, l, u,'o-b');%plot(n_beacons, mean(stretch_cr_50,2),'o-b');xlabel('number of beacons K');ylabel('transmission stretch');legend('BVR', 'PCR');endsaveas(gcf, 'stretch_normal.eps','psc2')%%%%%%%%figure 1.c,non-beacon node loadfor i=1:repeat  for b=1:length(n_beacons)    non_beacons = setdiff(1:S.n_nodes, res(b,i).beacons);    load_bvr_10(b,i) = percentile(res(b,i).load_bvr_sf(non_beacons), 10);    load_bvr_50(b,i) = percentile(res(b,i).load_bvr_sf(non_beacons), 50);    load_bvr_90(b,i) = percentile(res(b,i).load_bvr_sf(non_beacons), 90);    load_cr_10(b,i) = percentile(res(b,i).load_cr(non_beacons), 10);    load_cr_50(b,i) = percentile(res(b,i).load_cr(non_beacons), 50);    load_cr_90(b,i) = percentile(res(b,i).load_cr(non_beacons), 90);  endendfigure(3)set(gca, 'FontSize',20);y = mean(load_bvr_50, 2);l = y- mean(load_bvr_10, 2);u = mean(load_bvr_90,2) - y;errorbar(n_beacons-0.5, y, l, u,'x-r','MarkerSize', msz);hold ony = mean(load_cr_50, 2);l = y- mean(load_cr_10, 2);u = mean(load_cr_90,2) - y;errorbar(n_beacons+0.5, y, l, u, 'o-b','MarkerSize', msz);xlabel('number of beacons K');ylabel('non-beacon node load');legend('BVR', 'PCR');saveas(gcf, 'nonbeacon_load.eps','psc2')%%%%%%%%figure 1.d beacon node loadfor i=1:repeat  for b=1:length(n_beacons)    non_beacons = res(b,i).beacons; %we want beacons.. lazy to rename    load_bvr_10(b,i) = percentile(res(b,i).load_bvr_sf(non_beacons), 10);    load_bvr_50(b,i) = percentile(res(b,i).load_bvr_sf(non_beacons), 50);    load_bvr_90(b,i) = percentile(res(b,i).load_bvr_sf(non_beacons), 90);    load_cr_10(b,i) = percentile(res(b,i).load_cr(non_beacons), 10);    load_cr_50(b,i) = percentile(res(b,i).load_cr(non_beacons), 50);    load_cr_90(b,i) = percentile(res(b,i).load_cr(non_beacons), 90);  endendfigure(4)set(gca, 'FontSize',20);y = mean(load_bvr_50, 2);l = y- mean(load_bvr_10, 2);u = mean(load_bvr_90,2) - y;errorbar(n_beacons-0.5, y, l, u,'x-r','MarkerSize', msz);hold ony = mean(load_cr_50, 2);l = y- mean(load_cr_10, 2);u = mean(load_cr_90,2) - y;errorbar(n_beacons+0.5, y, l, u, 'o-b','MarkerSize', msz);xlabel('number of beacons K');ylabel('beacon node load');legend('BVR', 'PCR');saveas(gcf, 'beacon_load.eps','psc2')%%%%%%%%%figure 1.e all node routing stateNEXT_HOP_COST = 2; % 2 bytes to store a nexthop entryBYTE_PER_PCR = 2+1+NEXT_HOP_COST; %byte per each pcr routing entry%%bvr routing state calculationneighbor_count = sum(S.D,2);%only the n_beacon matters. which nodes are beacons does not matter.%for b=1:length(n_beacons)  %bvr_routing_bytes(:,b) = (neighbor_count+1).*n_beacons(b)+ ...  %    repmat(n_beacons(b)*(NEXT_HOP_COST+2), S.n_nodes, 1);  %!!!!!!!!change this after v3 is done%end%size(bvr_routing_bytes)%%for i=1:repeat  for b=1:length(n_beacons)    %non_beacons = setdiff(1:S.n_nodes, res(b,i).beacons);    non_beacons = 1:S.n_nodes;    state_cr_10(b,i) = ...	percentile(res(b,i).cluster_cr(non_beacons), 10)*BYTE_PER_PCR...	+ n_beacons(b)*(NEXT_HOP_COST+2);    state_cr_50(b,i) = ...	percentile(res(b,i).cluster_cr(non_beacons), 50)*BYTE_PER_PCR...	+ n_beacons(b)*(NEXT_HOP_COST+2);    state_cr_90(b,i) = ...	percentile(res(b,i).cluster_cr(non_beacons), 90)*BYTE_PER_PCR...	+ n_beacons(b)*(NEXT_HOP_COST+2);        state_bvr_sf_10(b,i) = ...	percentile(res(b,i).state_per_node_bvr_sf(non_beacons), ...		   10)*n_beacons(b)+n_beacons(b)*(NEXT_HOP_COST+2);    state_bvr_sf_50(b,i) = ...	percentile(res(b,i).state_per_node_bvr_sf(non_beacons), ...		   50)*n_beacons(b)+n_beacons(b)*(NEXT_HOP_COST+2);    state_bvr_sf_90(b,i) = ...	percentile(res(b,i).state_per_node_bvr_sf(non_beacons), ...		   90)*n_beacons(b)+n_beacons(b)*(NEXT_HOP_COST+2);        state_bvr_2h_10(b,i) = ...	percentile(res(b,i).state_per_node_bvr_2h(non_beacons), ...		   10)*n_beacons(b)+n_beacons(b)*(NEXT_HOP_COST+2);    state_bvr_2h_50(b,i) = ...	percentile(res(b,i).state_per_node_bvr_2h(non_beacons), ...		   50)*n_beacons(b)+n_beacons(b)*(NEXT_HOP_COST+2);    state_bvr_2h_90(b,i) = ...	percentile(res(b,i).state_per_node_bvr_2h(non_beacons), ...		   90)*n_beacons(b)+n_beacons(b)*(NEXT_HOP_COST+2);      endendfigure(5)set(gca, 'FontSize',20);y = mean(state_cr_50, 2);l = y - mean(state_cr_10, 2);u = mean(state_cr_90,2) -y;errorbar(n_beacons, y, l, u,'o-b','MarkerSize', msz);hold on%y = percentile(bvr_routing_bytes(non_beacons, :), 50);%l = percentile(bvr_routing_bytes(non_beacons, :), 10);%u = percentile(bvr_routing_bytes(non_beacons, :), 90);y = mean(state_bvr_sf_50, 2);l = y - mean(state_bvr_sf_10, 2);u = mean(state_bvr_sf_90,2) -y;errorbar(n_beacons, y, l, u,'x-r','MarkerSize', msz);y = mean(state_bvr_2h_50, 2);l = y - mean(state_bvr_2h_10, 2);u = mean(state_bvr_2h_90,2) -y;errorbar(n_beacons, y, l, u,'*-k','MarkerSize', msz);xlabel('number of beacons K');ylabel('routing state per node (Byte)');legend('PCR', 'BVR', 'BVR 2hop',2);saveas(gcf, 'state.eps','psc2')%%%%%%%%%figure 1.g compare communication costBROADCAST_PACKET_SIZE=2+1;beacon_bd = S.n_nodes*n_beacons*BROADCAST_PACKET_SIZE;beacon_bd = beacon_bd';DV_ENTRY_SIZE=2+1+1;for i=1:repeat  for b=1:length(n_beacons)    cr_local_dv_size(b,i) = res(b,i).dv_entries_cr*DV_ENTRY_SIZE;  endendfigure(7)set(gca, 'FontSize',20);%size(mean(cr_local_dv_size, 2))%size(beacon_bd)y = mean(cr_local_dv_size, 2);l = y - min(cr_local_dv_size,[], 2);u = max(cr_local_dv_size, [], 2) -y;errorbar(n_beacons, y+beacon_bd, l, u,'o-b','MarkerSize', msz);hold onplot(n_beacons, beacon_bd, 'x-r','MarkerSize', msz);legend('PCR', 'BVR');xlabel('number of beacons K');ylabel('setup control traffic (Byte)');saveas(gcf, 'traffic.eps','psc2')if 0%%%%%%%%%figure 1.h compare communication cost by packetbeacon_bd = S.n_nodes*n_beacons;beacon_bd = beacon_bd';for i=1:repeat  for b=1:length(n_beacons)    cr_local_dv_pkt(b,i) = res(b,i).dv_packets_cr;  endendfigure(8)set(gca, 'FontSize',20);%size(mean(cr_local_dv_size, 2))%size(beacon_bd)y = mean(cr_local_dv_pkt, 2);l = y - min(cr_local_dv_pkt,[], 2);u = max(cr_local_dv_pkt, [], 2) -y;errorbar(n_beacons, y+beacon_bd, l, u,'o-b','MarkerSize', msz);hold onplot(n_beacons, beacon_bd, 'x-r','MarkerSize', msz);legend('PCR', 'BVR');xlabel('number of beacons K');ylabel('setup control traffic (packet)');saveas(gcf, 'packet.eps','psc2')end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -