function [node,TS]=MHDOPP15(node,C,maxpower,total_node_num,naka_m,sim_number,Icood,signs,Effb,node_orderM,th_out) %the simulation of MHDOPP14.m for i=1:total_node_num node(i).b=0; node(i).energy=0; node(i).energy_real=0; node(i).received=zeros(total_node_num,total_node_num); node(i).transmitted=zeros(total_node_num,total_node_num); node(i).outtime=0; node(i).energy_history=[]; node(i).b_history=[]; node(i).out_history=[]; node(i).queue=[]; end node(1).delayPMF=zeros(1,200); node(1).b=sim_number; node(1).B=sim_number; node(2).B=sim_number; TS=1; for i=1:length(Icood) E_avg(i)=(node(1).energy_avg-node(Icood(i,1)).energy_avg)+(node(Icood(i,2)).energy_avg-node(2).energy_avg); end while node(2).bth_out).*channels;%abvove outage threshold %channels outflag=0; if sum(sum(channels>0))==0 outflag=1; node(1).outtime=node(1).outtime+1; node(1).out_history(TS)=1; end if outflag==0 for i=1:length(Icood) e2e_trans_power(i)=C(Icood(i,1),Icood(i,2))/channels(Icood(i,1),Icood(i,2))+E_avg(i)+signs(i)*Effb;%+ is right end %e2e_trans_power I=find(e2e_trans_power==min(e2e_trans_power)); end %%%%transmit if outflag==0 node(Icood(I,1)).b=node(Icood(I,1)).b-1; node(Icood(I,2)).b=node(Icood(I,2)).b+1; node(Icood(I,1)).transmitted(Icood(I,1),Icood(I,2))=node(Icood(I,1)).transmitted(Icood(I,1),Icood(I,2))+1; node(Icood(I,2)).received(Icood(I,1),Icood(I,2))=node(Icood(I,2)).received(Icood(I,1),Icood(I,2))+1; node(Icood(I,1)).energy_real=node(Icood(I,1)).energy_real+C(Icood(I,1),Icood(I,2))/channels(Icood(I,1),Icood(I,2)); if Icood(I,1)==1&Icood(I,2)~=2%from SN to RN node(Icood(I,2)).queue(node(Icood(I,2)).b)=TS; end if Icood(I,1)==1&Icood(I,2)==2%from SN to DN node(1).delayPMF(1)=node(1).delayPMF(1)+1; end if Icood(I,1)~=1&Icood(I,2)==2%from RN to DN if TS-node(Icood(I,1)).queue(1)<200 node(1).delayPMF(TS-node(Icood(I,1)).queue(1)+1)=node(1).delayPMF(TS-node(Icood(I,1)).queue(1)+1)+1;node(Icood(I,1)).queue(1)=[]; end end if Icood(I,1)~=1&Icood(I,2)~=2%from RN to RN node(Icood(I,2)).queue(node(Icood(I,2)).b)=node(Icood(I,1)).queue(1);node(Icood(I,1)).queue(1)=[]; end end TS=TS+1; end end