📄 sim_parallel.m
字号:
ylim([1 3.5]);xlabel('number of beacons K');ylabel('average transmission stretch');legend('S4','BVR w/ flooding','BVR 2-hop w/ flooding');saveas(gcf, 'avg_transmission_stretch.eps', 'psc2');%%%%%%%%%%%%%%%2 hop transmission stretch NEWfigure(12)set(gca, 'FontSize',fontsize);hold oncolors_bvr=['k--';' ';'k--';'k-.'];colors_bvr_rate=['g ';' ';' ';'g--'];colors_cr=['b ';' ';' ';'b:'];for b = [1,4] for i=1:repeat transmission_dist_bvr_2h(:,i)=res(b,i).transmission_dist_bvr_2h; transmission_dist_bvr_sf(:,i)=res(b,i).transmission_dist_bvr_sf; transmission_dist_cr(:,i)=res(b,i).routing_dist_cr; end worst_bvr(b) = plot_routing_stretch(transmission_dist_bvr_2h, optimal_dist, colors_bvr(b,:),[100],1); worst_cr(b) = plot_routing_stretch(transmission_dist_cr, optimal_dist, ... colors_cr(b,:),[100],1); %plot_routing_stretch(transmission_dist_bvr_2h, optimal_dist, 'r',[],1); tmp = mean(failure_bvr_2h,2); plot([1 6],[1-tmp(b), 1-tmp(b)],colors_bvr_rate(b,:));endbvr_str1 = sprintf('BVR 2hop w/ flooding. K=10, worst stretch=%.1f',worst_bvr(1));bvr_str2 = sprintf('BVR 2hop w/ flooding. K=56, worst stretch=%.1f',worst_bvr(4));cr_str1 = sprintf('S4. K=10, worst stretch=%.1f',worst_cr(1));cr_str2 = sprintf('S4. K=56, worst stretch=%.1f',round(worst_cr(4)));legend(bvr_str1, cr_str1, 'BVR 2hop success rate K=10', ... bvr_str2, ... cr_str2, 'BVR 2hop success rate K=56',0);xlabel('transmission stretch');ylabel('CDF');xlim([1 6])saveas(gcf, '2hop_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_bvr_2h_10(b,i) = percentile(res(b,i).load_bvr_2h(non_beacons), 10); load_bvr_2h_50(b,i) = percentile(res(b,i).load_bvr_2h(non_beacons), 50); load_bvr_2h_90(b,i) = percentile(res(b,i).load_bvr_2h(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',fontsize);hold ony = mean(load_bvr_50, 2);l = y- mean(load_bvr_10, 2);u = mean(load_bvr_90,2) - y;if 1 errorbar(n_beacons-INTERVAL, y, l, u, 'x-r','MarkerSize', msz);else plot(n_beacons, y, 'x-r','MarkerSize', msz);endy = mean(load_bvr_2h_50, 2);l = y- mean(load_bvr_2h_10, 2);u = mean(load_bvr_2h_90,2) - y;if 1 errorbar(n_beacons+INTERVAL, y, l, u, 'v-k','MarkerSize', msz);else plot(n_beacons, y, 'v-k','MarkerSize', msz);endy = mean(load_cr_50, 2);l = y- mean(load_cr_10, 2);u = mean(load_cr_90,2) - y;if 1 errorbar(n_beacons, y, l, u, 'o-b','MarkerSize', msz);else plot(n_beacons, y, 'o-b','MarkerSize', msz);endxlim([0 105]);ylim([0 1400]);xlabel('number of beacons K');ylabel('non-beacon node load');legend('BVR', 'BVR 2-hop', 'S4');saveas(gcf, 'nonbeacon_load.eps','psc2')%%%%%%%%figure 1.c,non-beacon node load 2 hop NEWif 0 for 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_2h(non_beacons), 10); load_bvr_50(b,i) = percentile(res(b,i).load_bvr_2h(non_beacons), 50); load_bvr_90(b,i) = percentile(res(b,i).load_bvr_2h(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); end end figure(13) set(gca, 'FontSize',fontsize); y = mean(load_bvr_50, 2); l = y- mean(load_bvr_10, 2); u = mean(load_bvr_90,2) - y; errorbar(n_beacons-INTERVAL, y, l, u,'x-r','MarkerSize', msz); hold on y = mean(load_cr_50, 2); l = y- mean(load_cr_10, 2); u = mean(load_cr_90,2) - y; errorbar(n_beacons+INTERVAL, y, l, u, 'o-b','MarkerSize', msz); xlabel('number of beacons K'); ylabel('non-beacon node load'); ylim([0 1400]) legend('BVR 2hop', 'S4'); saveas(gcf, '2hop_nonbeacon_load.eps','psc2')end%%%%%%%%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_bvr_2h_10(b,i) = percentile(res(b,i).load_bvr_2h(non_beacons), 10); load_bvr_2h_50(b,i) = percentile(res(b,i).load_bvr_2h(non_beacons), 50); load_bvr_2h_90(b,i) = percentile(res(b,i).load_bvr_2h(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)hold onset(gca, 'FontSize',fontsize);y = mean(load_bvr_50, 2);l = y- mean(load_bvr_10, 2);u = mean(load_bvr_90,2) - y;errorbar(n_beacons-INTERVAL, y, l, u,'x-r','MarkerSize', msz);y = mean(load_bvr_2h_50, 2);l = y- mean(load_bvr_2h_10, 2);u = mean(load_bvr_2h_90,2) - y;errorbar(n_beacons+INTERVAL, y, l, u,'v-k','MarkerSize', msz);y = mean(load_cr_50, 2);l = y- mean(load_cr_10, 2);u = mean(load_cr_90,2) - y;errorbar(n_beacons, y, l, u, 'o-b','MarkerSize', msz);xlabel('number of beacons K');ylabel('beacon node load');xlim([0 105]);ylim([0 2000]);legend('BVR', 'BVR 2-hop', 'S4');saveas(gcf, 'beacon_load.eps','psc2')%%%%%%%%figure 1.d beacon node load 2hop NEWfor 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_2h(non_beacons), 10); load_bvr_50(b,i) = percentile(res(b,i).load_bvr_2h(non_beacons), 50); load_bvr_90(b,i) = percentile(res(b,i).load_bvr_2h(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(14)set(gca, 'FontSize',fontsize);y = mean(load_bvr_50, 2);l = y- mean(load_bvr_10, 2);u = mean(load_bvr_90,2) - y;errorbar(n_beacons-INTERVAL, 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+INTERVAL, y, l, u, 'o-b','MarkerSize', msz);xlabel('number of beacons K');ylabel('beacon node load');legend('2hop BVR', 'S4');saveas(gcf, '2hop_beacon_load.eps','psc2')%%%%%%%%%figure 1.e all node routing stateNEXT_HOP_COST = 2; % 2 bytes to store a nexthop entryBYTE_PER_S4 = 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_S4...% + n_beacons(b)*(NEXT_HOP_COST+2); state_cr_10(b,i) = ... percentile(routing_state_cr(res(b,i)),0);% state_cr_50(b,i) = ...% percentile(res(b,i).cluster_cr(non_beacons), 50)*BYTE_PER_S4...% + n_beacons(b)*(NEXT_HOP_COST+2); state_cr_50(b,i) = ... percentile(routing_state_cr(res(b,i)),50);% state_cr_90(b,i) = ...% percentile(res(b,i).cluster_cr(non_beacons), 90)*BYTE_PER_S4...% + n_beacons(b)*(NEXT_HOP_COST+2); state_cr_90(b,i) = ... percentile(routing_state_cr(res(b,i)),100); % 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_10(b,i) = ... percentile(routing_state_bvr(res(b,i)),0);% 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_50(b,i) = ... percentile(routing_state_bvr(res(b,i)),50);% 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_sf_90(b,i) = ... percentile(routing_state_bvr(res(b,i)),100); % 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_10(b,i) = ... percentile(routing_state_bvr(res(b,i),2),0);% 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_50(b,i) = ... percentile(routing_state_bvr(res(b,i),2),50);% 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); state_bvr_2h_90(b,i) = ... percentile(routing_state_bvr(res(b,i),2),100); endendfigure(5)set(gca, 'FontSize',fontsize);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-INTERVAL, 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+INTERVAL, y, l, u,'v-k','MarkerSize', msz);xlabel('number of beacons K');xlim([0 105]);ylabel('routing state per node (Byte)');legend('S4', 'BVR', 'BVR 2hop',2);saveas(gcf, 'state.eps','psc2')%%%%%%%%%figure 1.g compare communication cost%BROADCAST_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; [cr_t(b,i), bvr_t(b,i),bvr_2h_t(b,i)] = setup_traffic(res(b,i)); endendfigure(7)set(gca, 'FontSize',fontsize);%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, l, u,'o-b','MarkerSize', msz);plot_errorbar( cr_t, n_beacons, 'o-b', msz, 1);tmp = mean(cr_t,2);fprintf('control overhead of S4, K=56:%.1f\n',tmp(find(n_beacons==56)));tmp = mean(bvr_t,2);fprintf('control overhead of BVR 1hop, K=56:%.1f\n',tmp(find(n_beacons==56)));hold on%plot(n_beacons, beacon_bd, 'x-r','MarkerSize', msz);plot_errorbar(bvr_t, n_beacons-INTERVAL, 'x-r',msz,1);plot_errorbar(bvr_2h_t, n_beacons+INTERVAL, 'v-k',msz,1);legend('S4', 'BVR', 'BVR 2 hop',2);xlabel('number of beacons K');ylabel('control traffic per node (Byte)');saveas(gcf, 'traffic.eps','psc2')%%%%%%%%%%%data traffic overhead (main packet header)if 0 routing_beacon = 10; for b=1:length(n_beacons) cr_packet_overhead(b) = 2+1; %beacon ID+distance to beacon bvr_packet_overhead(b) = routing_beacon*2; %to specify which beacons are routing beacons also incur overhead o = factorial(n_beacons(b))/factorial(n_beacons(b)- ... routing_beacon)/factorial(routing_beacon); bvr_packet_overhead(b) = bvr_packet_overhead(b) +log(o)/log(2)/8; end figure(8) set(gca, 'FontSize',fontsize); hold on plot(n_beacons, cr_packet_overhead,'o-b','MarkerSize', msz); plot(n_beacons, bvr_packet_overhead,'x-r','MarkerSize', msz); plot([0 100],[29 29],'k-'); legend('S4', 'BVR','default mica2 packet payload size',0); xlabel('number of beacons K'); ylabel('per data packet header overhead (Byte)'); saveas(gcf, 'header_overhead.eps','psc2')end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -