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

📄 sim_failure.m

📁 best routing protocol
💻 M
字号:
function sim_failure(instance, job_id)% job_id: %  >0  -- called in condor for specific jobs, never use it manually%  except for debugging!%  ==0 -- called by user: run all jobs without using condor% unspecified -- save consts and schedule condor jobs% ==-1 -- don't run, process and plot!fn = 'sim_failure';MAX_JOBS = 100;if nargin==2  if job_id == -1    process_data(fn, instance)  else    get_raw_data(fn, instance, [job_id], MAX_JOBS)  end  returnendtotal_jobs = get_raw_data(fn, instance, [], MAX_JOBS)fid = fopen('condor.matlab','wt');if fid<0  error('could not open file');endfprintf(fid, '%s %s %d\n', fn, instance, min(total_jobs,MAX_JOBS));fclose(fid);! python gen_condor_jobs.pyfunction job_count = get_raw_data(fn, instance, job_ids, max_jobs)%%%%n_nodes = 3200;n_beacons = ceil(sqrt(n_nodes));if strcmp(instance,'low_rate')  beacon_only=0;  failure_percent = [0 0.02 0.04 0.06 0.08 0.10 0.12 0.14 0.16 0.18 ...		    0.20];elseif strcmp(instance,'beacon_failure')  beacon_only=1;  failure_percent = [0.05 0.1 0.15 0.2 0.3  0.5 0.6  0.8 1.0];else  error('wrong instance');end%failure_percent = [0.1];%repeat = 1;repeat = 10;%%%%const_fn = sprintf('%s/%s-const.mat', instance, fn);if length(job_ids)==0 | ismember(0, job_ids)  const_fn = sprintf('%s/%s-const.mat', instance, fn);  save(const_fn, 'repeat', 'failure_percent','max_jobs','-V6');endload(const_fn); %make sure it's consistent between instancesjob_count = 0;for i=1:repeat  for p = 1:length(failure_percent)    job_count = job_count + 1;    if schedule_job(job_count, job_ids, max_jobs)      fprintf('-------job_id = %d-----------repeat:%d, fail:%.2f\n', job_count, ...	       i, failure_percent(p));      res = sim_with_failure('topo-3200-5.12v6.mat',0, n_beacons, ...		     failure_percent(p), beacon_only);      final_fn = sprintf('%s/%s-%d.mat', instance, fn, job_count);      save(final_fn ,'res');    end  endendfunction get_raw_data_old(fn)n_nodes = 3200;n_beacons = ceil(sqrt(n_nodes));failure_percent = [0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9];repeat = 1;for i=1:repeat  for p = 1:length(failure_percent)    fprintf('------------------repeat:%d, fail:%.2f\n',i, failure_percent(p));    res(p,i) = study_cr('topo-3200-5.12.mat',0, n_beacons, failure_percent(p));    save(fn,'res','repeat','failure_percent');  endendfunction process_data(fn, instance)load(sprintf('%s/%s-const.mat', instance,fn))failure_percentjob_count = 0;for i=1:repeat  for p=1:length(failure_percent)    job_count = job_count + 1;    final_fn = sprintf('%s/%s-%d.mat', instance, fn, job_count);    TMP = load(final_fn);    res(p,i) = TMP.res;  endendfor i=1:repeat%for i=1:1  for p=1:length(failure_percent)    transmission_dist_bvr = res(p,i).transmission_dist_bvr_sf;    n_random_pairs = length(transmission_dist_bvr);    if n_random_pairs == 0      return    end        routing_dist_cr = res(p,i).routing_dist_cr;    routing_dist_opt = res(p,i).optimal_dist;    failure_bvr(p,i) = res(p,i).failure_bvr;    failure_bvr_real(p,i) = length(find(transmission_dist_bvr==Inf))/ ...    n_random_pairs;    failure_cr(p,i) = length(find(routing_dist_cr==Inf))/ ...	n_random_pairs;    failure_opt(p,i) = length(find(routing_dist_opt==Inf))/ ...	n_random_pairs;        fprintf('percent:%.2f: bvr:%.3f, bvrreal:%.3f, cr:%.3f, opt: %.3f\n',...	    failure_percent(p), failure_bvr(p,i), ...	    failure_bvr_real(p,i), failure_cr(p,i), ...	    failure_opt(p,i));  endendmsz = 12;figure(1)set(gca, 'FontSize',20);hold onplot(failure_percent, mean(failure_cr,2),'bo-', 'MarkerSize', msz)plot(failure_percent, mean(failure_bvr_real,2),'rx-', 'MarkerSize', msz)plot(failure_percent, mean(failure_bvr, 2),'kv-', 'MarkerSize', msz)plot(failure_percent, mean(failure_opt,2),'g*-', 'MarkerSize', msz)if strcmp(instance,'beacon_failure')  xlabel('fraction of dead beacon nodes');  legend('PCR','BVR','BVR w/o flooding','optimal',2);  ylim([0 0.09])else  xlabel('fraction of dead non-beacon nodes');  legend('PCR','BVR','BVR w/o flooding','optimal',2);endylabel('routing failure rate');saveas(gcf, sprintf('failure_%s.eps',instance),'psc2');figure(2)set(gca, 'FontSize',20);hold onp=1;i=1;plot_routing_stretch(res(p,i).routing_dist_cr, ...		     res(p,i).optimal_dist, 'g',[], 1);plot_routing_stretch(res(p,i).transmission_dist_bvr_sf', ...		     res(p,i).optimal_dist, 'r-.',[], 1);p=3;plot_routing_stretch(res(p,i).routing_dist_cr, ...		     res(p,i).optimal_dist, 'g--',[], 1);plot_routing_stretch(res(p,i).transmission_dist_bvr_sf', ...		     res(p,i).optimal_dist, 'r:',[], 1);legend('PCR failure rate=10%','BVR failure rate=10%', ...       'PCR failure rate=30%','BVR failure rate=30%',4);xlabel('trasmission stretch');ylabel('CDF');xlim([1 10]);saveas(gcf, sprintf('failure_stretch_%s.eps',instance),'psc2');figure(3)set(gca, 'FontSize',20);hold onp=3;i=1;%plot_cumu_matrix(res(p,i).load_optimal,'k');%plot_cumu_matrix(res(p,i).load_cr(res(p,i).beacons),'g');%plot_cumu_matrix(res(p,i).load_bvr_sf(res(p,i).beacons),'b');plot_cumu_matrix(res(p,i).load_cr,'g');plot_cumu_matrix(res(p,i).load_bvr_sf,'b');legend('PCR','BVR',0);xlabel('node load when failure rate=30%');ylabel('CDF');saveas(gcf, sprintf('failure_load_%s.eps', instance),'psc2');

⌨️ 快捷键说明

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