mirror of
https://gitlab.com/manzerbredes/loosely-coupled-dss-extended.git
synced 2025-06-26 23:37:41 +00:00
Cleaning repository
This commit is contained in:
parent
42594cfab4
commit
8260634af4
80 changed files with 169459 additions and 541081 deletions
Binary file not shown.
Before Width: | Height: | Size: 314 KiB |
Binary file not shown.
Binary file not shown.
Before Width: | Height: | Size: 354 KiB |
Binary file not shown.
Binary file not shown.
|
@ -1,148 +0,0 @@
|
|||
library("tidyverse")
|
||||
library("knitr")
|
||||
|
||||
data=read_csv("results.csv")
|
||||
ccgrid=read_csv("ccgrid.csv")
|
||||
|
||||
|
||||
r_=function(x){round(x,digits=2)}
|
||||
|
||||
finalEnergy=data%>%group_by(simkey,wireless,wakeupfor)%>%summarize(wireless=first(wireless),sd=sd(energy),wakeupfor=first(wakeupfor),energy=mean(energy))
|
||||
#finalStats=data%>%group_by(simkey,wireless,wakeupfor,seed)%>%
|
||||
# summarise(success=sum(nSend))%>%
|
||||
# ungroup()%>%group_by(simkey,wireless,wakeupfor)%>%
|
||||
# summarise(sd_success=sd(success),success=mean(success))
|
||||
|
||||
# Success
|
||||
finalStats=data%>%filter(isSender!=0)%>%group_by(simkey,wireless,wakeupfor)%>%summarise(sd_success=sd(nSend),success=mean(nSend))
|
||||
|
||||
# Hint Added
|
||||
#hintAdded=data%>%filter(isSender==0)%>%group_by(simkey,wireless,wakeupfor)%>%summarise(hint_added=mean(hint_added))
|
||||
#finalStats=finalStats%>%left_join(hintAdded,by=c("simkey","wireless","wakeupfor"))
|
||||
|
||||
# Sender energy
|
||||
senderEnergy=data%>%filter(isSender!=0)%>%group_by(simkey,wireless,wakeupfor)%>%summarise(senderEnergy=mean(energy),senderEnergy_sd=sd(energy))
|
||||
receiverEnergy=data%>%filter(isSender==0)%>%group_by(simkey,wireless,wakeupfor)%>%summarise(receiverEnergy=mean(energy),receiverEnergy_sd=sd(energy))
|
||||
finalStats=finalStats%>%left_join(senderEnergy,by=c("simkey","wireless","wakeupfor"))
|
||||
finalStats=finalStats%>%left_join(receiverEnergy,by=c("simkey","wireless","wakeupfor"))
|
||||
|
||||
# J per success
|
||||
finalStats=finalStats%>%mutate(senderJPS=senderEnergy/success)
|
||||
finalStats=finalStats%>%mutate(receiverJPS=receiverEnergy/success)
|
||||
|
||||
# Uptime
|
||||
senderUptime=data%>%filter(isSender!=0)%>%group_by(simkey,wireless,wakeupfor)%>%summarise(senderUptime=mean(totalUptime))
|
||||
receiverUptime=data%>%filter(isSender==0)%>%group_by(simkey,wireless,wakeupfor)%>%summarise(receiverUptime=mean(totalUptime))
|
||||
finalStats=finalStats%>%left_join(senderUptime,by=c("simkey","wireless","wakeupfor"))
|
||||
finalStats=finalStats%>%left_join(receiverUptime,by=c("simkey","wireless","wakeupfor"))
|
||||
|
||||
# avgTimedataRcv
|
||||
avgTimeDataRcvData=data%>%filter(timeDataRcv!=-1)%>%group_by(simkey,wireless,wakeupfor)%>%summarise(avgTimeDataRcv=mean(timeDataRcv))
|
||||
finalStats=finalStats%>%left_join(avgTimeDataRcvData,by=c("simkey","wireless","wakeupfor"))
|
||||
|
||||
# Uptime Overhead compare to baseline
|
||||
baseline=finalStats%>%filter(simkey=="baseline")%>%select(senderUptime,receiverUptime,simkey,wireless,wakeupfor)
|
||||
keys=unique(finalStats$simkey)
|
||||
baseline=baseline%>%uncount(length(keys),.id="id")%>%mutate(simkey=keys[id])
|
||||
finalStats=finalStats%>%left_join(baseline,by=c("simkey","wireless","wakeupfor"),suffix = c("","_baseline"))
|
||||
finalStats=finalStats%>%mutate(senderUptimeOverhead=senderUptime-senderUptime_baseline)
|
||||
finalStats=finalStats%>%mutate(receiverUptimeOverhead=receiverUptime-receiverUptime_baseline)
|
||||
|
||||
# Energy Overhead (percent) compare to baseline
|
||||
baseline=finalStats%>%filter(simkey=="baseline")%>%select(senderEnergy,receiverEnergy,simkey,wireless,wakeupfor)
|
||||
baseline=baseline%>%uncount(length(keys),.id="id")%>%mutate(simkey=keys[id])
|
||||
finalStats=finalStats%>%left_join(baseline,by=c("simkey","wireless","wakeupfor"),suffix = c("","_baseline"))
|
||||
finalStats=finalStats%>%mutate(senderEnergyOverheadPercent=r_((senderEnergy-senderEnergy_baseline)/senderEnergy*100))
|
||||
finalStats=finalStats%>%mutate(receiverEnergyOverheadPercent=r_((receiverEnergy-receiverEnergy_baseline)/receiverEnergy*100))
|
||||
|
||||
# Comparison
|
||||
finalStats=finalStats%>%left_join(ccgrid,by=c("simkey","wireless","wakeupfor"),suffix = c("","_ccgrid"))
|
||||
finalStats=finalStats%>%mutate(senderEnergy_err=abs(r_((senderEnergy-senderEnergy_ccgrid)/senderEnergy)*100))
|
||||
finalStats=finalStats%>%mutate(receiverEnergy_err=abs(r_((receiverEnergy-receiverEnergy_ccgrid)/receiverEnergy)*100))
|
||||
finalStats=finalStats%>%mutate(senderUptime_err=abs(r_((senderUptime-senderUptime_ccgrid)/senderUptime)*100))
|
||||
finalStats=finalStats%>%mutate(receiverUptime_err=abs(r_((receiverUptime-receiverUptime_ccgrid)/receiverUptime)*100))
|
||||
|
||||
# Add nSendFail to stats
|
||||
sendFail=data%>%filter(node=="on0")%>%group_by(simkey,wireless,wakeupfor)%>%summarise(nSendFail=mean(nSendFail))
|
||||
finalStats=finalStats%>%left_join(sendFail,by=c("simkey","wireless","wakeupfor"))
|
||||
|
||||
# Add nWakeUp to stats
|
||||
nWakeUpRcv=data%>%filter(node!="on0")%>%group_by(simkey,wireless,wakeupfor)%>%summarise(nWakeUpRcv=mean(nWakeUp))
|
||||
finalStats=finalStats%>%left_join(nWakeUpRcv,by=c("simkey","wireless","wakeupfor"))
|
||||
nWakeUpSend=data%>%filter(node=="on0")%>%group_by(simkey,wireless,wakeupfor)%>%summarise(nWakeUpSender=mean(nWakeUp))
|
||||
finalStats=finalStats%>%left_join(nWakeUpSend,by=c("simkey","wireless","wakeupfor"))
|
||||
|
||||
|
||||
ggplot(finalStats,aes(x=simkey,senderEnergy_err,color=wireless,group=wireless))+geom_point()+geom_line()+facet_wrap(~wakeupfor)+xlab("Scenarios") + ylab("Sender Energy Relative Error (%)") + expand_limits(x = 0, y = 0)
|
||||
ggsave("err_sender_energy.png",width=7,height = 5)
|
||||
|
||||
ggplot(finalStats,aes(x=simkey,receiverEnergy_err,color=wireless,group=wireless))+geom_point()+geom_line()+facet_wrap(~wakeupfor)+xlab("Scenarios") + ylab("Receiver Energy Relative Error (%)") + expand_limits(x = 0, y = 0)
|
||||
ggsave("err_receiver_energy.png",width=7,height = 5)
|
||||
|
||||
ggplot(finalStats,aes(x=simkey,senderUptime_err,color=wireless,group=wireless))+geom_point()+geom_line()+facet_wrap(~wakeupfor)+xlab("Scenarios") + ylab("Sender AccUptime Energy Relative Error (%)") + expand_limits(x = 0, y = 0)
|
||||
ggsave("err_sender_accuptime.png",width=7,height = 5)
|
||||
|
||||
ggplot(finalStats,aes(x=simkey,receiverUptime_err,color=wireless,group=wireless))+geom_point()+geom_line()+facet_wrap(~wakeupfor)+xlab("Scenarios") + ylab("Receiver AccUptime Energy Relative Error (%)") + expand_limits(x = 0, y = 0)
|
||||
ggsave("err_rcv_accuptime.png",width=7,height = 5)
|
||||
|
||||
|
||||
# Generate plots
|
||||
ggplot(finalEnergy,aes(x=simkey,y=energy,fill=wireless))+
|
||||
geom_bar(stat="identity",position=position_dodge())+
|
||||
xlab("Scenarios")+ylab("Energy (J)")+
|
||||
geom_errorbar(position=position_dodge(0.9),aes(ymin=energy-sd, ymax=energy+sd),width=0.5,size=1.5,) +
|
||||
facet_wrap(~ wakeupfor) +
|
||||
geom_text(aes(label = r_(energy+sd), y= energy+sd),vjust=-0.4,position=position_dodge(0.9))+
|
||||
geom_text(aes(label = r_(energy-sd), y= energy-sd),vjust=+1.5,position=position_dodge(0.9))+
|
||||
geom_text(aes(label = r_(energy), y= energy/2),fontface="bold",colour="white",position=position_dodge(0.9))
|
||||
ggsave("energy.png",width=13,height = 6)
|
||||
|
||||
ggplot(finalStats,aes(x=simkey,y=success,fill=wireless))+
|
||||
geom_bar(stat="identity",position=position_dodge())+
|
||||
xlab("Scenarios")+ylab("Number of Transmission Success")+
|
||||
geom_errorbar(position=position_dodge(0.9),aes(ymin=success-sd_success, ymax=success+sd_success),width=0.5,size=1.5,) +
|
||||
geom_text(aes(label = r_(success+sd_success), y= success+sd_success),vjust=-0.4,position=position_dodge(0.9))+
|
||||
geom_text(aes(label = r_(success-sd_success), y= success-sd_success),vjust=+1.5,position=position_dodge(0.9))+
|
||||
geom_text(aes(label = r_(success), y= success/2),fontface="bold",colour="white",position=position_dodge(0.9))+
|
||||
facet_wrap(~ wakeupfor) +
|
||||
ggsave("success.png")
|
||||
|
||||
ggplot(finalStats,aes(x=simkey,y=avgTimeDataRcv,fill=wireless))+
|
||||
geom_bar(stat="identity",position=position_dodge())+
|
||||
xlab("Scenarios")+ylab("Average Data Received Time")+
|
||||
facet_wrap(~ wakeupfor) +
|
||||
ggsave("avgDataTimeRcv.png")
|
||||
|
||||
ggplot(finalStats,aes(x=simkey,y=nWakeUpRcv,fill=wireless))+
|
||||
geom_bar(stat="identity",position=position_dodge())+
|
||||
xlab("Scenarios")+ylab("Average Number of receiver Wake up")+
|
||||
facet_wrap(~ wakeupfor) +
|
||||
ggsave("nWakeUpRcv.png")
|
||||
|
||||
ggplot(finalStats,aes(x=simkey,y=nWakeUpSender,fill=wireless))+
|
||||
geom_bar(stat="identity",position=position_dodge())+
|
||||
xlab("Scenarios")+ylab("Average Number of sender Wake up")+
|
||||
facet_wrap(~ wakeupfor) +
|
||||
ggsave("nWakeUpSender.png")
|
||||
|
||||
|
||||
|
||||
##### Save tables #####
|
||||
tf="tables-energy.org"
|
||||
write("",file=tf)
|
||||
for(wake in unique(data$wakeupfor)){
|
||||
write(kable(finalEnergy%>%filter(wireless=="lora",wakeupfor==wake)),file=tf,append=TRUE)
|
||||
write("\n",file=tf,append=TRUE)
|
||||
write(kable(finalEnergy%>%filter(wireless=="nbiot",wakeupfor==wake)),file=tf,append=TRUE)
|
||||
write("\n",file=tf,append=TRUE)
|
||||
}
|
||||
|
||||
tf="tables-stats.org"
|
||||
write("",file=tf)
|
||||
for(wake in unique(data$wakeupfor)){
|
||||
write(kable(finalStats%>%filter(wireless=="lora",wakeupfor==wake)),file=tf,append=TRUE)
|
||||
write("\n",file=tf,append=TRUE)
|
||||
write(kable(finalStats%>%filter(wireless=="nbiot",wakeupfor==wake)),file=tf,append=TRUE)
|
||||
write("\n",file=tf,append=TRUE)
|
||||
}
|
||||
|
|
@ -1,169 +0,0 @@
|
|||
library("tidyverse")
|
||||
library("gridExtra")
|
||||
library("patchwork")
|
||||
library(RColorBrewer)
|
||||
|
||||
data=read_csv("results.csv")
|
||||
r_=function(x){round(x,digits=1)}
|
||||
color=function(){scale_fill_brewer(palette = "Accent")}
|
||||
color2=function(){scale_fill_brewer(palette = "Set2")}
|
||||
nolegend=function(){theme(legend.position="none")}
|
||||
simkeys=unique(data$simkey)
|
||||
nsimkeys=length(simkeys)
|
||||
s_=function(x){if(x<0){return("")}else{return("+")}}
|
||||
simkey_rename=function(key){
|
||||
if(key=="hint")
|
||||
return("Hints")
|
||||
if(key=="baseline")
|
||||
return("Baseline")
|
||||
if(key=="extended")
|
||||
return("Extended")
|
||||
if(key=="hintandextended")
|
||||
return("Hints+Extended")
|
||||
return(key)
|
||||
}
|
||||
dformat=function(data){
|
||||
data%>%rowwise()%>%mutate(simkey=simkey_rename(simkey))%>%mutate(wireless=ifelse(wireless=="lora","LoRa","NbIoT"))
|
||||
}
|
||||
g_legend <- function(a.gplot){
|
||||
tmp <- ggplot_gtable(ggplot_build(a.gplot))
|
||||
leg <- which(sapply(tmp$grobs, function(x) x$name) == "guide-box")
|
||||
legend <- tmp$grobs[[leg]]
|
||||
legend
|
||||
}
|
||||
|
||||
energy60=data%>%filter(wakeupfor==60)
|
||||
energy60Snd=energy60%>%filter(isSender==1)%>%group_by(simkey,wireless)%>%summarise(sd=sd(energy),energy=mean(energy),type="Sender")
|
||||
energy60Rcv=energy60%>%filter(isSender==0)%>%group_by(simkey,wireless)%>%summarise(sd=sd(energy),energy=mean(energy),type="Receiver")
|
||||
energy60=energy60Snd%>%ungroup()%>%rbind(energy60Rcv)
|
||||
energy60=energy60%>%mutate(sd_min=energy-sd,sd_max=energy+sd)%>%mutate(sd_min_txt=paste0("-",r_(sd_min)))%>%mutate(sd_max_txt=paste0("+",r_(sd_max)))
|
||||
energy60Baseline=energy60%>%filter(simkey=="baseline")%>%uncount(nsimkeys,.id="id")%>%mutate(simkey=simkeys[id])
|
||||
energy60=energy60%>%left_join(energy60Baseline,by=c("simkey","wireless","type"),suffix = c("","_baseline"))
|
||||
energy60=energy60%>%mutate(ovhd=energy*100/energy_baseline-100)
|
||||
energy60=energy60%>%rowwise()%>%mutate(ovhd_txt=paste0("(",s_(ovhd),r_(ovhd),"%)"))
|
||||
success60Snd=data%>%filter(wakeupfor==60)%>%filter(isSender!=0)%>%group_by(simkey,wireless,wakeupfor)%>%summarise(success_orig=mean(nSend),success=r_(mean(nSend)),type="Sender")
|
||||
success60Rcv=data%>%filter(wakeupfor==60)%>%filter(isSender!=0)%>%group_by(simkey,wireless,wakeupfor)%>%summarise(success_orig=mean(nSend),success=r_(mean(nSend)),type="Receiver")
|
||||
success60=rbind(success60Snd,success60Rcv)
|
||||
success60=success60%>%rowwise()%>%mutate(success_txt=paste0("[",success,"]"))
|
||||
energy60=energy60%>%left_join(success60)%>%rowwise()%>%mutate(infos=paste0(ovhd_txt,"\n{",r_(energy/success_orig),"}"))
|
||||
energy60=energy60%>%mutate(type=factor(type,levels = c("Sender","Receiver")))
|
||||
|
||||
|
||||
energy60P=ggplot(energy60%>%dformat,aes(x=simkey,y=energy,fill=type))+
|
||||
geom_bar(colour="black", stat="identity",position=position_dodge())+
|
||||
geom_errorbar(position=position_dodge(0.9),aes(ymin=energy-sd, ymax=energy+sd),width=0.3,size=1)+
|
||||
geom_text(aes(label = r_(sd_max), y= sd_max),vjust=-0.4,position=position_dodge(0.9))+
|
||||
geom_text(aes(label = r_(sd_min), y= sd_min),vjust=+1.5,position=position_dodge(0.9))+
|
||||
geom_text(aes(label = paste0(r_(energy),"\n",infos), y= min(energy)/2),fontface="bold",colour="white",position=position_dodge(0.9))+
|
||||
geom_label(data=success60%>%dformat(),aes(label = success_txt, y=35),label.padding=unit(0.35,"lines"),label.r=unit(0.09,"lines"),fill="#f0f0f0",label.size=0.5,fontface="bold",colour="black",position=position_dodge(0.9))+
|
||||
facet_wrap(~wireless)+
|
||||
xlab(element_blank())+ylab("Energy consumption (J)")+
|
||||
labs(fill="60s uptime:")+theme(legend.position="top")+color()+coord_cartesian(ylim=c(0,1200))
|
||||
#ggsave("energy-60sec.png",width = 12,height=4.8)
|
||||
|
||||
|
||||
energy180=data%>%filter(wakeupfor==180)
|
||||
energy180Snd=energy180%>%filter(isSender==1)%>%group_by(simkey,wireless)%>%summarise(sd=sd(energy),energy=mean(energy),type="Sender")
|
||||
energy180Rcv=energy180%>%filter(isSender==0)%>%group_by(simkey,wireless)%>%summarise(sd=sd(energy),energy=mean(energy),type="Receiver")
|
||||
energy180=energy180Snd%>%ungroup()%>%rbind(energy180Rcv)%>%mutate(type=factor(type,levels = c("Sender","Receiver")))
|
||||
energy180=energy180%>%mutate(sd_min=energy-sd,sd_max=energy+sd)%>%mutate(sd_min_txt=paste0("-",r_(sd_min)))%>%mutate(sd_max_txt=paste0("+",r_(sd_max)))
|
||||
energy180Baseline=energy180%>%filter(simkey=="baseline")%>%uncount(nsimkeys,.id="id")%>%mutate(simkey=simkeys[id])
|
||||
energy180=energy180%>%left_join(energy180Baseline,by=c("simkey","wireless","type"),suffix = c("","_baseline"))
|
||||
energy180=energy180%>%mutate(ovhd=energy*100/energy_baseline-100)
|
||||
energy180=energy180%>%rowwise()%>%mutate(ovhd_txt=paste0("(",s_(ovhd),r_(ovhd),"%)"))
|
||||
success180Snd=data%>%filter(wakeupfor==180)%>%filter(isSender!=0)%>%group_by(simkey,wireless,wakeupfor)%>%summarise(success_orig=mean(nSend),success=r_(mean(nSend)),type="Sender")
|
||||
success180Rcv=data%>%filter(wakeupfor==180)%>%filter(isSender!=0)%>%group_by(simkey,wireless,wakeupfor)%>%summarise(success_orig=mean(nSend),success=r_(mean(nSend)),type="Receiver")
|
||||
success180=rbind(success180Snd,success180Rcv)
|
||||
success180=success180%>%rowwise()%>%mutate(success_txt=paste0("[",success,"]"))
|
||||
energy180=energy180%>%left_join(success180)%>%rowwise()%>%mutate(infos=paste0(ovhd_txt,"\n{",r_(energy/success_orig),"}"))
|
||||
energy180=energy180%>%mutate(type=factor(type,levels = c("Sender","Receiver")))
|
||||
|
||||
energy180P=ggplot(energy180%>%dformat,aes(x=simkey,y=energy,fill=type))+
|
||||
geom_bar(colour="black",stat="identity",position=position_dodge())+
|
||||
geom_errorbar(position=position_dodge(0.9),aes(ymin=energy-sd, ymax=energy+sd),width=0.3,size=1)+
|
||||
geom_text(aes(label = r_(sd_max), y= sd_max),vjust=-0.4,position=position_dodge(0.9))+
|
||||
geom_text(aes(label = r_(sd_min), y= sd_min),vjust=+1.5,position=position_dodge(0.9))+
|
||||
geom_text(aes(label = paste0(r_(energy),"\n",infos), y= min(energy)/2),fontface="bold",colour="white",position=position_dodge(0.9))+
|
||||
geom_label(data=success180%>%dformat(),aes(label = success_txt, y=100),label.padding=unit(0.35,"lines"),label.r=unit(0.09,"lines"),fill="#f0f0f0",label.size=0.5,fontface="bold",colour="black",position=position_dodge(0.9))+
|
||||
facet_wrap(~wireless)+
|
||||
xlab(element_blank())+ylab("Energy consumption (J)")+
|
||||
labs(fill="180s uptime:")+theme(legend.position="top")+color2()+coord_cartesian(ylim=c(0,2600))
|
||||
#ggsave("energy-180sec.png",width = 12,height=4.8)
|
||||
|
||||
totalUptime60=data%>%filter(wakeupfor==60)
|
||||
totalUptime60Snd=totalUptime60%>%filter(isSender==1)%>%group_by(simkey,wireless)%>%summarise(sd=sd(totalUptime),totalUptime=mean(totalUptime),type="Sender")
|
||||
totalUptime60Rcv=totalUptime60%>%filter(isSender==0)%>%group_by(simkey,wireless)%>%summarise(sd=sd(totalUptime),totalUptime=mean(totalUptime),type="Receiver")
|
||||
totalUptime60=totalUptime60Snd%>%ungroup()%>%rbind(totalUptime60Rcv)%>%mutate(type=factor(type,levels = c("Sender","Receiver")))
|
||||
totalUptime60=totalUptime60%>%mutate(sd_min=totalUptime-sd,sd_max=totalUptime+sd)%>%mutate(sd_min_txt=paste0("-",r_(sd_min)))%>%mutate(sd_max_txt=paste0("+",r_(sd_max)))
|
||||
totalUptime60Baseline=totalUptime60%>%filter(simkey=="baseline")%>%uncount(nsimkeys,.id="id")%>%mutate(simkey=simkeys[id])
|
||||
totalUptime60=totalUptime60%>%left_join(totalUptime60Baseline,by=c("simkey","wireless","type"),suffix = c("","_baseline"))
|
||||
totalUptime60=totalUptime60%>%mutate(ovhd=totalUptime-totalUptime_baseline)
|
||||
totalUptime60=totalUptime60%>%rowwise()%>%mutate(ovhd_txt=paste0("(",s_(ovhd),r_(ovhd),")"))
|
||||
totalUptime60=totalUptime60%>%mutate(type=factor(type,levels = c("Sender","Receiver")))
|
||||
|
||||
totalUptime60P=ggplot(totalUptime60%>%dformat,aes(x=simkey,y=totalUptime,fill=type))+
|
||||
geom_bar(colour="black", stat="identity",position=position_dodge())+
|
||||
geom_errorbar(position=position_dodge(0.9),aes(ymin=totalUptime-sd, ymax=totalUptime+sd),width=0.3,size=1)+
|
||||
geom_text(aes(label = r_(sd_max), y= sd_max),vjust=-0.4,position=position_dodge(0.9))+
|
||||
geom_text(aes(label = r_(sd_min), y= sd_min),vjust=+1.5,position=position_dodge(0.9))+
|
||||
geom_text(aes(label = paste0(r_(totalUptime),"\n",ovhd_txt), y= min(totalUptime)/2),fontface="bold",colour="white",position=position_dodge(0.9))+
|
||||
facet_wrap(~wireless)+
|
||||
xlab("Policy")+ylab("Accumulated uptime (s)")+
|
||||
labs(fill="Total uptime:")+color2()+theme(legend.position="top")+coord_cartesian(ylim=c(0,2500))
|
||||
|
||||
totalUptime180=data%>%filter(wakeupfor==180)
|
||||
totalUptime180Snd=totalUptime180%>%filter(isSender==1)%>%group_by(simkey,wireless)%>%summarise(sd=sd(totalUptime),totalUptime=mean(totalUptime),type="Sender")
|
||||
totalUptime180Rcv=totalUptime180%>%filter(isSender==0)%>%group_by(simkey,wireless)%>%summarise(sd=sd(totalUptime),totalUptime=mean(totalUptime),type="Receiver")
|
||||
totalUptime180=totalUptime180Snd%>%ungroup()%>%rbind(totalUptime180Rcv)%>%mutate(type=factor(type,levels = c("Sender","Receiver")))
|
||||
totalUptime180=totalUptime180%>%mutate(sd_min=totalUptime-sd,sd_max=totalUptime+sd)%>%mutate(sd_min_txt=paste0("-",r_(sd_min)))%>%mutate(sd_max_txt=paste0("+",r_(sd_max)))
|
||||
totalUptime180Baseline=totalUptime180%>%filter(simkey=="baseline")%>%uncount(nsimkeys,.id="id")%>%mutate(simkey=simkeys[id])
|
||||
totalUptime180=totalUptime180%>%left_join(totalUptime180Baseline,by=c("simkey","wireless","type"),suffix = c("","_baseline"))
|
||||
totalUptime180=totalUptime180%>%mutate(ovhd=totalUptime-totalUptime_baseline)
|
||||
totalUptime180=totalUptime180%>%rowwise()%>%mutate(ovhd_txt=paste0("(",s_(ovhd),r_(ovhd),")"))
|
||||
totalUptime180=totalUptime180%>%mutate(type=factor(type,levels = c("Sender","Receiver")))
|
||||
|
||||
totalUptime180P=ggplot(totalUptime180%>%dformat,aes(x=simkey,y=totalUptime,fill=type))+
|
||||
geom_bar(colour="black",stat="identity",position=position_dodge())+
|
||||
geom_errorbar(position=position_dodge(0.9),aes(ymin=totalUptime-sd, ymax=totalUptime+sd),width=0.3,size=1)+
|
||||
geom_text(aes(label = r_(sd_max), y= sd_max),vjust=-0.4,position=position_dodge(0.9))+
|
||||
geom_text(aes(label = r_(sd_min), y= sd_min),vjust=+1.5,position=position_dodge(0.9))+
|
||||
geom_text(aes(label = paste0(r_(totalUptime),"\n",ovhd_txt), y= min(totalUptime)/2),fontface="bold",colour="white",position=position_dodge(0.9))+
|
||||
facet_wrap(~wireless)+
|
||||
xlab("Policy")+ylab("Accumulated uptime (s)")+
|
||||
labs(fill="Total uptime:")+theme(legend.position="top")+color2()+coord_cartesian(ylim=c(0,5600))
|
||||
|
||||
success60=data%>%filter(wakeupfor==60)
|
||||
success60=success60%>%filter(isSender==1)%>%group_by(simkey,wireless)%>%summarise(sd=sd(nSend),success=mean(nSend))
|
||||
success60=success60%>%mutate(sd_min=success-sd,sd_max=success+sd)
|
||||
|
||||
success60P=ggplot(success60%>%dformat,aes(x=simkey,y=success))+
|
||||
geom_bar(stat="identity",position=position_dodge(),fill="gray50")+
|
||||
geom_errorbar(position=position_dodge(0.9),aes(ymin=success-sd, ymax=success+sd),width=0.2,size=1)+
|
||||
geom_text(aes(label = r_(sd_max), y= sd_max),vjust=-0.4,position=position_dodge(0.9))+
|
||||
geom_text(aes(label = r_(sd_min), y= sd_min),vjust=+1.5,position=position_dodge(0.9))+
|
||||
geom_text(aes(label = r_(success), y= success/2),fontface="bold",colour="white",position=position_dodge(0.9))+
|
||||
facet_wrap(~wireless)+
|
||||
xlab("Policy")+ylab("Number of success")+
|
||||
labs(fill="Node type")+theme(legend.position="none")+color()+coord_cartesian(ylim=c(0,11))
|
||||
#ggsave("success-60sec.png",width = 5.8,height=4.2)
|
||||
|
||||
success180=data%>%filter(wakeupfor==180)
|
||||
success180=success180%>%filter(isSender==1)%>%group_by(simkey,wireless)%>%summarise(sd=sd(nSend),success=mean(nSend))
|
||||
success180=success180%>%mutate(sd_min=success-sd,sd_max=success+sd)
|
||||
|
||||
success180P=ggplot(success180%>%dformat,aes(x=simkey,y=success))+
|
||||
geom_bar(stat="identity",position=position_dodge(),fill="gray50")+
|
||||
geom_errorbar(position=position_dodge(0.9),aes(ymin=success-sd, ymax=success+sd),width=0.2,size=1)+
|
||||
geom_text(aes(label = r_(sd_max), y= sd_max),vjust=-0.4,position=position_dodge(0.9))+
|
||||
geom_text(aes(label = r_(sd_min), y= sd_min),vjust=+1.5,position=position_dodge(0.9))+
|
||||
geom_text(aes(label = r_(success), y= success/2),fontface="bold",colour="white",position=position_dodge(0.9))+
|
||||
facet_wrap(~wireless)+
|
||||
xlab("Policy")+ylab("Number of success")+
|
||||
labs(fill="Node type")+theme(legend.position="none")+color()+coord_cartesian(ylim=c(0,13))
|
||||
#ggsave("success-180sec.png",width = 5.8,height=4.2)
|
||||
|
||||
|
||||
ggsave("60sec.pdf",plot=(energy60P)/(totalUptime60P)+ plot_layout(guides = "collect")&theme(legend.position = "top"),width=12,height=7)
|
||||
ggsave("180sec.pdf",plot=(energy180P)/(totalUptime180P)+ plot_layout(guides = "collect")&theme(legend.position = "top"),width=12,height=7)
|
||||
ggsave("results.pdf",plot=(energy60P)/(energy180P)+ plot_layout(guides = "collect")&theme(legend.position = "top"),width=12,height=7)
|
||||
|
|
@ -1,169 +0,0 @@
|
|||
library("tidyverse")
|
||||
library("gridExtra")
|
||||
library("patchwork")
|
||||
library(RColorBrewer)
|
||||
|
||||
data=read_csv("results.csv")
|
||||
r_=function(x){round(x,digits=1)}
|
||||
color=function(){scale_fill_brewer(palette = "Accent")}
|
||||
color2=function(){scale_fill_brewer(palette = "Set2")}
|
||||
nolegend=function(){theme(legend.position="none")}
|
||||
simkeys=unique(data$simkey)
|
||||
nsimkeys=length(simkeys)
|
||||
s_=function(x){if(x<0){return("")}else{return("+")}}
|
||||
simkey_rename=function(key){
|
||||
if(key=="hint")
|
||||
return("Hints")
|
||||
if(key=="baseline")
|
||||
return("Baseline")
|
||||
if(key=="extended")
|
||||
return("Extended")
|
||||
if(key=="hintandextended")
|
||||
return("Hints+Extended")
|
||||
return(key)
|
||||
}
|
||||
dformat=function(data){
|
||||
data%>%rowwise()%>%mutate(simkey=simkey_rename(simkey))%>%mutate(wireless=ifelse(wireless=="lora","LoRa","NbIoT"))
|
||||
}
|
||||
g_legend <- function(a.gplot){
|
||||
tmp <- ggplot_gtable(ggplot_build(a.gplot))
|
||||
leg <- which(sapply(tmp$grobs, function(x) x$name) == "guide-box")
|
||||
legend <- tmp$grobs[[leg]]
|
||||
legend
|
||||
}
|
||||
|
||||
energy60=data%>%filter(wakeupfor==60)
|
||||
energy60Snd=energy60%>%filter(isSender==1)%>%group_by(simkey,wireless)%>%summarise(sd=sd(energy),energy=mean(energy),type="Sender")
|
||||
energy60Rcv=energy60%>%filter(isSender==0)%>%group_by(simkey,wireless)%>%summarise(sd=sd(energy),energy=mean(energy),type="Receiver")
|
||||
energy60=energy60Snd%>%ungroup()%>%rbind(energy60Rcv)
|
||||
energy60=energy60%>%mutate(sd_min=energy-sd,sd_max=energy+sd)%>%mutate(sd_min_txt=paste0("-",r_(sd_min)))%>%mutate(sd_max_txt=paste0("+",r_(sd_max)))
|
||||
energy60Baseline=energy60%>%filter(simkey=="baseline")%>%uncount(nsimkeys,.id="id")%>%mutate(simkey=simkeys[id])
|
||||
energy60=energy60%>%left_join(energy60Baseline,by=c("simkey","wireless","type"),suffix = c("","_baseline"))
|
||||
energy60=energy60%>%mutate(ovhd=energy*100/energy_baseline-100)
|
||||
energy60=energy60%>%rowwise()%>%mutate(ovhd_txt=paste0("(",s_(ovhd),r_(ovhd),"%)"))
|
||||
success60Snd=data%>%filter(wakeupfor==60)%>%filter(isSender!=0)%>%group_by(simkey,wireless,wakeupfor)%>%summarise(success_orig=mean(nSend),success=r_(mean(nSend)),type="Sender")
|
||||
success60Rcv=data%>%filter(wakeupfor==60)%>%filter(isSender!=0)%>%group_by(simkey,wireless,wakeupfor)%>%summarise(success_orig=mean(nSend),success=r_(mean(nSend)),type="Receiver")
|
||||
success60=rbind(success60Snd,success60Rcv)
|
||||
success60=success60%>%rowwise()%>%mutate(success_txt=paste0("[",success,"]"))
|
||||
energy60=energy60%>%left_join(success60)%>%rowwise()%>%mutate(infos=paste0(ovhd_txt,"\n{",r_(energy/success_orig),"}"))
|
||||
energy60=energy60%>%mutate(type=factor(type,levels = c("Sender","Receiver")))
|
||||
|
||||
|
||||
energy60P=ggplot(energy60%>%dformat,aes(x=simkey,y=energy,fill=type))+
|
||||
geom_bar(colour="black", stat="identity",position=position_dodge())+
|
||||
geom_errorbar(position=position_dodge(0.9),aes(ymin=energy-sd, ymax=energy+sd),width=0.3,size=1)+
|
||||
geom_text(aes(label = r_(sd_max), y= sd_max),vjust=-0.4,position=position_dodge(0.9))+
|
||||
geom_text(aes(label = r_(sd_min), y= sd_min),vjust=+1.5,position=position_dodge(0.9))+
|
||||
geom_text(aes(label = paste0(r_(energy),"\n",infos), y= min(energy)/2),fontface="bold",colour="white",position=position_dodge(0.9))+
|
||||
geom_label(data=success60%>%dformat(),aes(label = success_txt, y=35),label.padding=unit(0.35,"lines"),label.r=unit(0.09,"lines"),fill="#f0f0f0",label.size=0.5,fontface="bold",colour="black",position=position_dodge(0.9))+
|
||||
facet_wrap(~wireless)+
|
||||
xlab(element_blank())+ylab("Energy consumption (J)")+
|
||||
labs(fill="60s uptime:")+theme(legend.position="top")+color()+coord_cartesian(ylim=c(0,2200))
|
||||
#ggsave("energy-60sec.png",width = 12,height=4.8)
|
||||
|
||||
|
||||
energy180=data%>%filter(wakeupfor==180)
|
||||
energy180Snd=energy180%>%filter(isSender==1)%>%group_by(simkey,wireless)%>%summarise(sd=sd(energy),energy=mean(energy),type="Sender")
|
||||
energy180Rcv=energy180%>%filter(isSender==0)%>%group_by(simkey,wireless)%>%summarise(sd=sd(energy),energy=mean(energy),type="Receiver")
|
||||
energy180=energy180Snd%>%ungroup()%>%rbind(energy180Rcv)%>%mutate(type=factor(type,levels = c("Sender","Receiver")))
|
||||
energy180=energy180%>%mutate(sd_min=energy-sd,sd_max=energy+sd)%>%mutate(sd_min_txt=paste0("-",r_(sd_min)))%>%mutate(sd_max_txt=paste0("+",r_(sd_max)))
|
||||
energy180Baseline=energy180%>%filter(simkey=="baseline")%>%uncount(nsimkeys,.id="id")%>%mutate(simkey=simkeys[id])
|
||||
energy180=energy180%>%left_join(energy180Baseline,by=c("simkey","wireless","type"),suffix = c("","_baseline"))
|
||||
energy180=energy180%>%mutate(ovhd=energy*100/energy_baseline-100)
|
||||
energy180=energy180%>%rowwise()%>%mutate(ovhd_txt=paste0("(",s_(ovhd),r_(ovhd),"%)"))
|
||||
success180Snd=data%>%filter(wakeupfor==180)%>%filter(isSender!=0)%>%group_by(simkey,wireless,wakeupfor)%>%summarise(success_orig=mean(nSend),success=r_(mean(nSend)),type="Sender")
|
||||
success180Rcv=data%>%filter(wakeupfor==180)%>%filter(isSender!=0)%>%group_by(simkey,wireless,wakeupfor)%>%summarise(success_orig=mean(nSend),success=r_(mean(nSend)),type="Receiver")
|
||||
success180=rbind(success180Snd,success180Rcv)
|
||||
success180=success180%>%rowwise()%>%mutate(success_txt=paste0("[",success,"]"))
|
||||
energy180=energy180%>%left_join(success180)%>%rowwise()%>%mutate(infos=paste0(ovhd_txt,"\n{",r_(energy/success_orig),"}"))
|
||||
energy180=energy180%>%mutate(type=factor(type,levels = c("Sender","Receiver")))
|
||||
|
||||
energy180P=ggplot(energy180%>%dformat,aes(x=simkey,y=energy,fill=type))+
|
||||
geom_bar(colour="black",stat="identity",position=position_dodge())+
|
||||
geom_errorbar(position=position_dodge(0.9),aes(ymin=energy-sd, ymax=energy+sd),width=0.3,size=1)+
|
||||
geom_text(aes(label = r_(sd_max), y= sd_max),vjust=-0.4,position=position_dodge(0.9))+
|
||||
geom_text(aes(label = r_(sd_min), y= sd_min),vjust=+1.5,position=position_dodge(0.9))+
|
||||
geom_text(aes(label = paste0(r_(energy),"\n",infos), y= min(energy)/2),fontface="bold",colour="white",position=position_dodge(0.9))+
|
||||
geom_label(data=success180%>%dformat(),aes(label = success_txt, y=100),label.padding=unit(0.35,"lines"),label.r=unit(0.09,"lines"),fill="#f0f0f0",label.size=0.5,fontface="bold",colour="black",position=position_dodge(0.9))+
|
||||
facet_wrap(~wireless)+
|
||||
xlab(element_blank())+ylab("Energy consumption (J)")+
|
||||
labs(fill="180s uptime:")+theme(legend.position="top")+color()+coord_cartesian(ylim=c(0,4500))
|
||||
#ggsave("energy-180sec.png",width = 12,height=4.8)
|
||||
|
||||
totalUptime60=data%>%filter(wakeupfor==60)
|
||||
totalUptime60Snd=totalUptime60%>%filter(isSender==1)%>%group_by(simkey,wireless)%>%summarise(sd=sd(totalUptime),totalUptime=mean(totalUptime),type="Sender")
|
||||
totalUptime60Rcv=totalUptime60%>%filter(isSender==0)%>%group_by(simkey,wireless)%>%summarise(sd=sd(totalUptime),totalUptime=mean(totalUptime),type="Receiver")
|
||||
totalUptime60=totalUptime60Snd%>%ungroup()%>%rbind(totalUptime60Rcv)%>%mutate(type=factor(type,levels = c("Sender","Receiver")))
|
||||
totalUptime60=totalUptime60%>%mutate(sd_min=totalUptime-sd,sd_max=totalUptime+sd)%>%mutate(sd_min_txt=paste0("-",r_(sd_min)))%>%mutate(sd_max_txt=paste0("+",r_(sd_max)))
|
||||
totalUptime60Baseline=totalUptime60%>%filter(simkey=="baseline")%>%uncount(nsimkeys,.id="id")%>%mutate(simkey=simkeys[id])
|
||||
totalUptime60=totalUptime60%>%left_join(totalUptime60Baseline,by=c("simkey","wireless","type"),suffix = c("","_baseline"))
|
||||
totalUptime60=totalUptime60%>%mutate(ovhd=totalUptime-totalUptime_baseline)
|
||||
totalUptime60=totalUptime60%>%rowwise()%>%mutate(ovhd_txt=paste0("(",s_(ovhd),r_(ovhd),")"))
|
||||
totalUptime60=totalUptime60%>%mutate(type=factor(type,levels = c("Sender","Receiver")))
|
||||
|
||||
totalUptime60P=ggplot(totalUptime60%>%dformat,aes(x=simkey,y=totalUptime,fill=type))+
|
||||
geom_bar(colour="black", stat="identity",position=position_dodge())+
|
||||
geom_errorbar(position=position_dodge(0.9),aes(ymin=totalUptime-sd, ymax=totalUptime+sd),width=0.3,size=1)+
|
||||
geom_text(aes(label = r_(sd_max), y= sd_max),vjust=-0.4,position=position_dodge(0.9))+
|
||||
geom_text(aes(label = r_(sd_min), y= sd_min),vjust=+1.5,position=position_dodge(0.9))+
|
||||
geom_text(aes(label = paste0(r_(totalUptime),"\n",ovhd_txt), y= min(totalUptime)/2),fontface="bold",colour="white",position=position_dodge(0.9))+
|
||||
facet_wrap(~wireless)+
|
||||
xlab("Policy")+ylab("Accumulated uptime (s)")+
|
||||
labs(fill="Total uptime:")+color2()+theme(legend.position="top")+coord_cartesian(ylim=c(0,4000))
|
||||
|
||||
totalUptime180=data%>%filter(wakeupfor==180)
|
||||
totalUptime180Snd=totalUptime180%>%filter(isSender==1)%>%group_by(simkey,wireless)%>%summarise(sd=sd(totalUptime),totalUptime=mean(totalUptime),type="Sender")
|
||||
totalUptime180Rcv=totalUptime180%>%filter(isSender==0)%>%group_by(simkey,wireless)%>%summarise(sd=sd(totalUptime),totalUptime=mean(totalUptime),type="Receiver")
|
||||
totalUptime180=totalUptime180Snd%>%ungroup()%>%rbind(totalUptime180Rcv)%>%mutate(type=factor(type,levels = c("Sender","Receiver")))
|
||||
totalUptime180=totalUptime180%>%mutate(sd_min=totalUptime-sd,sd_max=totalUptime+sd)%>%mutate(sd_min_txt=paste0("-",r_(sd_min)))%>%mutate(sd_max_txt=paste0("+",r_(sd_max)))
|
||||
totalUptime180Baseline=totalUptime180%>%filter(simkey=="baseline")%>%uncount(nsimkeys,.id="id")%>%mutate(simkey=simkeys[id])
|
||||
totalUptime180=totalUptime180%>%left_join(totalUptime180Baseline,by=c("simkey","wireless","type"),suffix = c("","_baseline"))
|
||||
totalUptime180=totalUptime180%>%mutate(ovhd=totalUptime-totalUptime_baseline)
|
||||
totalUptime180=totalUptime180%>%rowwise()%>%mutate(ovhd_txt=paste0("(",s_(ovhd),r_(ovhd),")"))
|
||||
totalUptime180=totalUptime180%>%mutate(type=factor(type,levels = c("Sender","Receiver")))
|
||||
|
||||
totalUptime180P=ggplot(totalUptime180%>%dformat,aes(x=simkey,y=totalUptime,fill=type))+
|
||||
geom_bar(colour="black",stat="identity",position=position_dodge())+
|
||||
geom_errorbar(position=position_dodge(0.9),aes(ymin=totalUptime-sd, ymax=totalUptime+sd),width=0.3,size=1)+
|
||||
geom_text(aes(label = r_(sd_max), y= sd_max),vjust=-0.4,position=position_dodge(0.9))+
|
||||
geom_text(aes(label = r_(sd_min), y= sd_min),vjust=+1.5,position=position_dodge(0.9))+
|
||||
geom_text(aes(label = paste0(r_(totalUptime),"\n",ovhd_txt), y= min(totalUptime)/2),fontface="bold",colour="white",position=position_dodge(0.9))+
|
||||
facet_wrap(~wireless)+
|
||||
xlab("Policy")+ylab("Accumulated uptime (s)")+
|
||||
labs(fill="Total uptime:")+theme(legend.position="top")+color2()+coord_cartesian(ylim=c(0,8800))
|
||||
|
||||
success60=data%>%filter(wakeupfor==60)
|
||||
success60=success60%>%filter(isSender==1)%>%group_by(simkey,wireless)%>%summarise(sd=sd(nSend),success=mean(nSend))
|
||||
success60=success60%>%mutate(sd_min=success-sd,sd_max=success+sd)
|
||||
|
||||
success60P=ggplot(success60%>%dformat,aes(x=simkey,y=success))+
|
||||
geom_bar(stat="identity",position=position_dodge(),fill="gray50")+
|
||||
geom_errorbar(position=position_dodge(0.9),aes(ymin=success-sd, ymax=success+sd),width=0.2,size=1)+
|
||||
geom_text(aes(label = r_(sd_max), y= sd_max),vjust=-0.4,position=position_dodge(0.9))+
|
||||
geom_text(aes(label = r_(sd_min), y= sd_min),vjust=+1.5,position=position_dodge(0.9))+
|
||||
geom_text(aes(label = r_(success), y= success/2),fontface="bold",colour="white",position=position_dodge(0.9))+
|
||||
facet_wrap(~wireless)+
|
||||
xlab("Policy")+ylab("Number of success")+
|
||||
labs(fill="Node type")+theme(legend.position="none")+color()+coord_cartesian(ylim=c(0,11))
|
||||
#ggsave("success-60sec.png",width = 5.8,height=4.2)
|
||||
|
||||
success180=data%>%filter(wakeupfor==180)
|
||||
success180=success180%>%filter(isSender==1)%>%group_by(simkey,wireless)%>%summarise(sd=sd(nSend),success=mean(nSend))
|
||||
success180=success180%>%mutate(sd_min=success-sd,sd_max=success+sd)
|
||||
|
||||
success180P=ggplot(success180%>%dformat,aes(x=simkey,y=success))+
|
||||
geom_bar(stat="identity",position=position_dodge(),fill="gray50")+
|
||||
geom_errorbar(position=position_dodge(0.9),aes(ymin=success-sd, ymax=success+sd),width=0.2,size=1)+
|
||||
geom_text(aes(label = r_(sd_max), y= sd_max),vjust=-0.4,position=position_dodge(0.9))+
|
||||
geom_text(aes(label = r_(sd_min), y= sd_min),vjust=+1.5,position=position_dodge(0.9))+
|
||||
geom_text(aes(label = r_(success), y= success/2),fontface="bold",colour="white",position=position_dodge(0.9))+
|
||||
facet_wrap(~wireless)+
|
||||
xlab("Policy")+ylab("Number of success")+
|
||||
labs(fill="Node type")+theme(legend.position="none")+color()+coord_cartesian(ylim=c(0,13))
|
||||
#ggsave("success-180sec.png",width = 5.8,height=4.2)
|
||||
|
||||
|
||||
ggsave("60sec.pdf",plot=(energy60P)/(totalUptime60P)+ plot_layout(guides = "collect")&theme(legend.position = "top"),width=12,height=11)
|
||||
ggsave("180sec.pdf",plot=(energy180P)/(totalUptime180P)+ plot_layout(guides = "collect")&theme(legend.position = "top"),width=12,height=11)
|
||||
ggsave("results.pdf",plot=(energy60P)/(energy180P)+ plot_layout(guides = "collect")&theme(legend.position = "top"),width=12,height=7)
|
||||
|
|
@ -1,237 +0,0 @@
|
|||
library("tidyverse")
|
||||
library("gridExtra")
|
||||
library("patchwork")
|
||||
library("knitr")
|
||||
library(RColorBrewer)
|
||||
|
||||
r_=function(x){round(x,digits=2)}
|
||||
color=function(){scale_fill_brewer(palette = "Accent")}
|
||||
color2=function(){scale_fill_brewer(palette = "Set2")}
|
||||
nolegend=function(){theme(legend.position="none")}
|
||||
simkeys=unique(read_csv("results.csv")$simkey)
|
||||
nsimkeys=length(simkeys)
|
||||
s_=function(x){if(x<0){return("")}else{return("+")}}
|
||||
simkey_rename=function(key){
|
||||
if(key=="hint")
|
||||
return("Hints")
|
||||
if(key=="baseline")
|
||||
return("Baseline")
|
||||
if(key=="extended")
|
||||
return("Extended")
|
||||
if(key=="hintandextended")
|
||||
return("Hints+Extended")
|
||||
return(key)
|
||||
}
|
||||
dformat=function(data){
|
||||
data%>%rowwise()%>%mutate(simkey=simkey_rename(simkey))%>%mutate(wireless=ifelse(wireless=="lora","LoRa","NbIoT"))
|
||||
}
|
||||
|
||||
build_stats=function(file){
|
||||
data=read_csv(file)
|
||||
energy60=data%>%filter(wakeupfor==60)
|
||||
energy60Snd=energy60%>%filter(isSender==1)%>%group_by(simkey,wireless)%>%summarise(sd=sd(energy),sd_energy=sd(energy),energy=mean(energy),type="Sender")
|
||||
energy60Rcv=energy60%>%filter(isSender==0)%>%group_by(simkey,wireless)%>%summarise(sd=sd(energy),sd_energy=sd(energy),energy=mean(energy),type="Receiver")
|
||||
energy60=energy60Snd%>%ungroup()%>%rbind(energy60Rcv)
|
||||
energy60=energy60%>%mutate(sd_min=energy-sd,sd_max=energy+sd)%>%mutate(sd_min_txt=paste0("-",r_(sd_min)))%>%mutate(sd_max_txt=paste0("+",r_(sd_max)))
|
||||
energy60Baseline=energy60%>%filter(simkey=="baseline")%>%uncount(nsimkeys,.id="id")%>%mutate(simkey=simkeys[id])
|
||||
energy60=energy60%>%left_join(energy60Baseline,by=c("simkey","wireless","type"),suffix = c("","_baseline"))
|
||||
energy60=energy60%>%mutate(ovhd=energy*100/energy_baseline-100)
|
||||
energy60=energy60%>%rowwise()%>%mutate(ovhd_txt=paste0("(",s_(ovhd),r_(ovhd),"%)"))
|
||||
success60Snd=data%>%filter(wakeupfor==60)%>%filter(isSender!=0)%>%group_by(simkey,wireless,wakeupfor)%>%summarise(success_orig=mean(nSend),success=mean(nSend),type="Sender")
|
||||
success60Rcv=data%>%filter(wakeupfor==60)%>%filter(isSender!=0)%>%group_by(simkey,wireless,wakeupfor)%>%summarise(success_orig=mean(nSend),success=mean(nSend),type="Receiver")
|
||||
success60=rbind(success60Snd,success60Rcv)
|
||||
success60=success60%>%rowwise()%>%mutate(success_txt=paste0("[",success,"]"))
|
||||
energy60=energy60%>%left_join(success60)%>%rowwise()%>%mutate(infos_txt=paste0(ovhd_txt,"\n{",r_(energy/success_orig),"}"),infos=energy/success_orig)
|
||||
energy60=energy60%>%mutate(type=factor(type,levels = c("Sender","Receiver")),wakeupfor=60)
|
||||
|
||||
|
||||
energy180=data%>%filter(wakeupfor==180)
|
||||
energy180Snd=energy180%>%filter(isSender==1)%>%group_by(simkey,wireless)%>%summarise(sd=sd(energy),sd_energy=sd(energy),energy=mean(energy),type="Sender")
|
||||
energy180Rcv=energy180%>%filter(isSender==0)%>%group_by(simkey,wireless)%>%summarise(sd=sd(energy),sd_energy=sd(energy),energy=mean(energy),type="Receiver")
|
||||
energy180=energy180Snd%>%ungroup()%>%rbind(energy180Rcv)%>%mutate(type=factor(type,levels = c("Sender","Receiver")))
|
||||
energy180=energy180%>%mutate(sd_min=energy-sd,sd_max=energy+sd)%>%mutate(sd_min_txt=paste0("-",r_(sd_min)))%>%mutate(sd_max_txt=paste0("+",r_(sd_max)))
|
||||
energy180Baseline=energy180%>%filter(simkey=="baseline")%>%uncount(nsimkeys,.id="id")%>%mutate(simkey=simkeys[id])
|
||||
energy180=energy180%>%left_join(energy180Baseline,by=c("simkey","wireless","type"),suffix = c("","_baseline"))
|
||||
energy180=energy180%>%mutate(ovhd=energy*100/energy_baseline-100)
|
||||
energy180=energy180%>%rowwise()%>%mutate(ovhd_txt=paste0("(",s_(ovhd),r_(ovhd),"%)"))
|
||||
success180Snd=data%>%filter(wakeupfor==180)%>%filter(isSender!=0)%>%group_by(simkey,wireless,wakeupfor)%>%summarise(success_orig=mean(nSend),success=mean(nSend),type="Sender")
|
||||
success180Rcv=data%>%filter(wakeupfor==180)%>%filter(isSender!=0)%>%group_by(simkey,wireless,wakeupfor)%>%summarise(success_orig=mean(nSend),success=mean(nSend),type="Receiver")
|
||||
success180=rbind(success180Snd,success180Rcv)
|
||||
success180=success180%>%rowwise()%>%mutate(success_txt=paste0("[",success,"]"))
|
||||
energy180=energy180%>%left_join(success180)%>%rowwise()%>%mutate(infos_txt=paste0(ovhd_txt,"\n{",r_(energy/success_orig),"}"),infos=energy/success_orig)
|
||||
energy180=energy180%>%mutate(type=factor(type,levels = c("Sender","Receiver")),wakeupfor=180)
|
||||
|
||||
totalUptime60=data%>%filter(wakeupfor==60)
|
||||
totalUptime60Snd=totalUptime60%>%filter(isSender==1)%>%group_by(simkey,wireless)%>%summarise(sd=sd(totalUptime),totalUptime=mean(totalUptime),type="Sender")
|
||||
totalUptime60Rcv=totalUptime60%>%filter(isSender==0)%>%group_by(simkey,wireless)%>%summarise(sd=sd(totalUptime),totalUptime=mean(totalUptime),type="Receiver")
|
||||
totalUptime60=totalUptime60Snd%>%ungroup()%>%rbind(totalUptime60Rcv)%>%mutate(type=factor(type,levels = c("Sender","Receiver")))
|
||||
totalUptime60=totalUptime60%>%mutate(sd_min=totalUptime-sd,sd_max=totalUptime+sd)%>%mutate(sd_min_txt=paste0("-",r_(sd_min)))%>%mutate(sd_max_txt=paste0("+",r_(sd_max)))
|
||||
totalUptime60Baseline=totalUptime60%>%filter(simkey=="baseline")%>%uncount(nsimkeys,.id="id")%>%mutate(simkey=simkeys[id])
|
||||
totalUptime60=totalUptime60%>%left_join(totalUptime60Baseline,by=c("simkey","wireless","type"),suffix = c("","_baseline"))
|
||||
totalUptime60=totalUptime60%>%mutate(ovhd=totalUptime-totalUptime_baseline)
|
||||
totalUptime60=totalUptime60%>%rowwise()%>%mutate(ovhd_txt=paste0("(",s_(ovhd),r_(ovhd),")"))
|
||||
totalUptime60=totalUptime60%>%mutate(type=factor(type,levels = c("Sender","Receiver")),,wakeupfor=60)
|
||||
|
||||
totalUptime180=data%>%filter(wakeupfor==180)
|
||||
totalUptime180Snd=totalUptime180%>%filter(isSender==1)%>%group_by(simkey,wireless)%>%summarise(sd=sd(totalUptime),totalUptime=mean(totalUptime),type="Sender")
|
||||
totalUptime180Rcv=totalUptime180%>%filter(isSender==0)%>%group_by(simkey,wireless)%>%summarise(sd=sd(totalUptime),totalUptime=mean(totalUptime),type="Receiver")
|
||||
totalUptime180=totalUptime180Snd%>%ungroup()%>%rbind(totalUptime180Rcv)%>%mutate(type=factor(type,levels = c("Sender","Receiver")))
|
||||
totalUptime180=totalUptime180%>%mutate(sd_min=totalUptime-sd,sd_max=totalUptime+sd)%>%mutate(sd_min_txt=paste0("-",r_(sd_min)))%>%mutate(sd_max_txt=paste0("+",r_(sd_max)))
|
||||
totalUptime180Baseline=totalUptime180%>%filter(simkey=="baseline")%>%uncount(nsimkeys,.id="id")%>%mutate(simkey=simkeys[id])
|
||||
totalUptime180=totalUptime180%>%left_join(totalUptime180Baseline,by=c("simkey","wireless","type"),suffix = c("","_baseline"))
|
||||
totalUptime180=totalUptime180%>%mutate(ovhd=totalUptime-totalUptime_baseline)
|
||||
totalUptime180=totalUptime180%>%rowwise()%>%mutate(ovhd_txt=paste0("(",s_(ovhd),r_(ovhd),")"))
|
||||
totalUptime180=totalUptime180%>%mutate(type=factor(type,levels = c("Sender","Receiver")),wakeupfor=180)
|
||||
|
||||
totalUptime=rbind(totalUptime60,totalUptime180)
|
||||
energy=rbind(energy60,energy180)
|
||||
totalUptime%>%left_join(energy,by=c("simkey","wireless","wakeupfor","type"),suffix = c("",""))
|
||||
|
||||
}
|
||||
|
||||
# Load stats
|
||||
stats=build_stats("results.csv")
|
||||
stats_prev=build_stats("results_prev.csv")
|
||||
stats=stats%>%left_join(stats_prev,by=c("simkey","wireless","wakeupfor","type"),suffix=c("","_prev"))
|
||||
|
||||
# Additional computations
|
||||
stats=stats%>%mutate(energy_diff=energy-energy_prev)
|
||||
stats=stats%>%mutate(success_diff=success-success_prev)
|
||||
stats=stats%>%mutate(ovhd_diff=ovhd-ovhd_prev)
|
||||
stats=stats%>%mutate(infos_diff=infos-infos_prev)
|
||||
|
||||
# Final results
|
||||
stats=stats%>%select(simkey,wireless,wakeupfor,type,energy,energy_diff,success_diff,ovhd_diff,infos_diff,ovhd,infos,success)
|
||||
|
||||
|
||||
|
||||
tf="tables-stats.org"
|
||||
fw=function(str){write(str,file=tf,append = TRUE)}
|
||||
df=function(d,rcolor=FALSE){
|
||||
|
||||
if(is.na(d)||is.infinite(d)){
|
||||
return("")
|
||||
}
|
||||
else if(d<0){
|
||||
c="green!60"
|
||||
if(rcolor){c="red!60"}
|
||||
return(paste0(r"(~{\color{)",c,r"(}\textbf{)",r_(d),"}}"))
|
||||
}
|
||||
else if (d>0){
|
||||
c="red!60"
|
||||
if(rcolor){c="green!60"}
|
||||
return(paste0(r"(~{\color{)",c,r"(}\textbf{+)",r_(d),"}}"))
|
||||
}
|
||||
r"(~{\color{blue!60}\textbf{=}})"
|
||||
}
|
||||
mbox=function(v,d,alpha){
|
||||
if(is.infinite(v))
|
||||
v="--"
|
||||
paste0(r"(\makebox[)",alpha,r"(cm]{\hfill )",v,r"(})",d)
|
||||
}
|
||||
|
||||
write_table=function(techno){
|
||||
stats%>%filter(wireless==techno)%>%group_by(wakeupfor)%>%group_walk(function(d1,g1){
|
||||
uptime=as.numeric(g1)
|
||||
first=TRUE
|
||||
d1%>%group_by(simkey)%>%group_walk(function(d2,g2){
|
||||
scenario=as.character(g2)
|
||||
senders=d2%>%filter(type=="Sender")
|
||||
receivers=d2%>%filter(type=="Receiver")
|
||||
|
||||
#### Stats
|
||||
sender_energy=r_(as.numeric(senders%>%select(energy)))
|
||||
receiver_energy=r_(as.numeric(receivers%>%select(energy)))
|
||||
sender_ovhd=r_(as.numeric(senders%>%select(ovhd)))
|
||||
if(sender_ovhd>0)
|
||||
sender_ovhd=paste0("+",sender_ovhd)
|
||||
receiver_ovhd=r_(as.numeric(receivers%>%select(ovhd)))
|
||||
if(receiver_ovhd>0)
|
||||
receiver_ovhd=paste0("+",receiver_ovhd)
|
||||
sender_eff=r_(as.numeric(senders%>%select(infos)))
|
||||
receiver_eff=r_(as.numeric(receivers%>%select(infos)))
|
||||
succ=r_(as.numeric(senders%>%select(success)))
|
||||
|
||||
#### Diff
|
||||
sender_energy_diff=df(r_(as.numeric(senders%>%select(energy_diff))))
|
||||
receiver_energy_diff=df(r_(as.numeric(receivers%>%select(energy_diff))))
|
||||
sender_ovhd_diff=df(r_(as.numeric(senders%>%select(ovhd_diff))))
|
||||
receiver_ovhd_diff=df(r_(as.numeric(receivers%>%select(ovhd_diff))))
|
||||
sender_eff_diff=df(r_(as.numeric(senders%>%select(infos_diff))))
|
||||
receiver_eff_diff=df(r_(as.numeric(receivers%>%select(infos_diff))))
|
||||
succ_diff=df(r_(as.numeric(senders%>%select(success_diff))),rcolor = TRUE)
|
||||
|
||||
tw=paste0("&",scenario,"&",
|
||||
mbox(succ,succ_diff,0.5),"&",
|
||||
mbox(sender_energy,sender_energy_diff,0.8),"&",
|
||||
mbox(receiver_energy,receiver_energy_diff,0.8),"&",
|
||||
mbox(sender_ovhd,sender_ovhd_diff,0.7),"&",
|
||||
mbox(receiver_ovhd,receiver_ovhd_diff,0.7),"&",
|
||||
mbox(sender_eff,sender_eff_diff,0.65),"&",
|
||||
mbox(receiver_eff,receiver_eff_diff,0.65))
|
||||
|
||||
|
||||
if(first)
|
||||
tw=paste0(r"(\multirow{4}{*}{)",uptime,"}",tw)
|
||||
fw(paste0(tw,r"(\\)"))
|
||||
|
||||
first<<-FALSE
|
||||
})
|
||||
if(uptime==60)
|
||||
fw(r"(\midrule)")
|
||||
})
|
||||
}
|
||||
|
||||
strategy="shutdown on received"
|
||||
header=paste0(r"(\begin{table*}
|
||||
\centering
|
||||
\caption{)","Simulation results using the ",strategy,r"( strategy. Comparison between our previous results\cite{prev} are in color. Green indicates improvements, red shows regressions and blue indicates no change.)",r"(}
|
||||
\begin{tabular}{crlllllll}
|
||||
\toprule
|
||||
\multirow{2}{*}{Uptime} & \multirow{2}{*}{Scenario} & \multirow{2}{*}{$\# Succ_p$} & \multicolumn{2}{c}{Energy Consumption (J)} & \multicolumn{2}{c}{$eOvhd(p)$ (\%)} & \multicolumn{2}{c}{$eff(p)$ (J)}\\
|
||||
\cmidrule(lr){4-5}\cmidrule(lr){6-7}\cmidrule(lr){8-9}
|
||||
&&&Sender & Receiver&Sender & Receiver&Sender & Receiver\\
|
||||
\midrule)")
|
||||
footer=r"(\bottomrule
|
||||
\end{tabular}
|
||||
\end{table*})"
|
||||
|
||||
|
||||
write("",file=tf)
|
||||
fw(header)
|
||||
fw(r"(\multicolumn{9}{c}{LoRa}\\)")
|
||||
fw(r"(\midrule)")
|
||||
write_table("lora")
|
||||
fw(r"(\midrule)")
|
||||
fw(r"(\multicolumn{9}{c}{NbIoT}\\)")
|
||||
fw(r"(\midrule)")
|
||||
write_table("nbiot")
|
||||
fw(footer)
|
||||
|
||||
|
||||
|
||||
## Print energy sd infos
|
||||
stats_sor=build_stats("logs/sor_results/results.csv")
|
||||
stats_uor=build_stats("logs/uor_results/results.csv")
|
||||
stats_farhint=build_stats("logs/farhint_results/results.csv")
|
||||
stats_combined=build_stats("logs/combined/results.csv")
|
||||
message(paste0("Energy std SOR: min=",
|
||||
round(min(stats_sor$sd_energy)),
|
||||
" max=",round(max(stats_sor$sd_energy)),
|
||||
" median=",round(median(stats_sor$sd_energy))))
|
||||
|
||||
message(paste0("Energy std UOR: min=",
|
||||
round(min(stats_uor$sd_energy)),
|
||||
" max=",round(max(stats_uor$sd_energy)),
|
||||
" median=",round(median(stats_uor$sd_energy))))
|
||||
|
||||
|
||||
message(paste0("Energy std FARHINT: min=",
|
||||
round(min(stats_farhint$sd_energy)),
|
||||
" max=",round(max(stats_farhint$sd_energy)),
|
||||
" median=",round(median(stats_farhint$sd_energy))))
|
||||
|
||||
message(paste0("Energy std combined: min=",
|
||||
round(min(stats_combined$sd_energy)),
|
||||
" max=",round(max(stats_combined$sd_energy)),
|
||||
" median=",round(median(stats_combined$sd_energy))))
|
|
@ -1,118 +0,0 @@
|
|||
library("tidyverse")
|
||||
library("ggthemes")
|
||||
library("gridExtra")
|
||||
library("patchwork")
|
||||
library(RColorBrewer)
|
||||
|
||||
data=read_csv("results_scalability.csv")
|
||||
r_=function(x){round(x,digits=1)}
|
||||
color=function(){scale_fill_brewer(palette = "Accent")}
|
||||
color2=function(){scale_fill_brewer(palette = "Set2")}
|
||||
nolegend=function(){theme(legend.position="none")}
|
||||
simkeys=unique(data$simkey)
|
||||
nsimkeys=length(simkeys)
|
||||
s_=function(x){if(x<0){return("")}else{return("+")}}
|
||||
simkey_rename=function(key){
|
||||
if(key=="hint")
|
||||
return("Hints")
|
||||
if(key=="baseline")
|
||||
return("Baseline")
|
||||
if(key=="extended")
|
||||
return("Extended")
|
||||
if(key=="hintandextended")
|
||||
return("Hints+Extended")
|
||||
return(key)
|
||||
}
|
||||
dformat=function(data){
|
||||
data%>%rowwise()%>%mutate(simkey=simkey_rename(simkey))%>%mutate(wireless=ifelse(wireless=="lora","LoRa","Nb-IoT"))
|
||||
}
|
||||
g_legend <- function(a.gplot){
|
||||
tmp <- ggplot_gtable(ggplot_build(a.gplot))
|
||||
leg <- which(sapply(tmp$grobs, function(x) x$name) == "guide-box")
|
||||
legend <- tmp$grobs[[leg]]
|
||||
legend
|
||||
}
|
||||
|
||||
custom_theme=function(){theme_clean()+ theme(plot.background=element_blank())}
|
||||
|
||||
data=data%>%dformat()
|
||||
|
||||
# Compute delivery success
|
||||
statsSuccess=data%>%filter(isSender!=0)%>%group_by(wireless,wakeupfor,n_nodes,seed,simkey)%>%summarize(success=mean(nSend))%>%ungroup()
|
||||
data=data%>%left_join(statsSuccess,by=c("wireless","wakeupfor","n_nodes","seed","simkey"))
|
||||
|
||||
# Computer stats senders
|
||||
statsSender=data%>%filter(isSender!=0)%>%group_by(wireless,wakeupfor,n_nodes,seed,simkey)%>%summarize(success=mean(success),energy=mean(energy))%>%ungroup()
|
||||
statsSender=statsSender%>%group_by(wireless,wakeupfor,n_nodes,simkey)%>%summarize(success_sd=sd(success),success=mean(success),energy_sd=sd(energy),energy=mean(energy))%>%ungroup()
|
||||
|
||||
# Computer stats receiver
|
||||
statsReceiver=data%>%filter(isSender==0)%>%group_by(wireless,wakeupfor,n_nodes,seed,simkey)%>%summarize(success=mean(success),energy=mean(energy))%>%ungroup()
|
||||
statsReceiver=statsReceiver%>%group_by(wireless,wakeupfor,n_nodes,simkey)%>%summarize(success_sd=sd(success),success=mean(success),energy_sd=sd(energy),energy=mean(energy))%>%ungroup()
|
||||
|
||||
|
||||
# Energy
|
||||
sender60sPlotEnergy=ggplot(statsSender%>%filter(wakeupfor==60),aes(n_nodes,energy,color=simkey,group=simkey))+
|
||||
geom_ribbon(aes(ymin=energy-energy_sd, ymax=energy+energy_sd,fill=simkey),linetype=1,alpha=0.4)+
|
||||
geom_point()+geom_line()+
|
||||
facet_wrap(~wireless)+xlab("Number of node")+ylab("Energy consumption (J)")+labs(colour="Policy")+custom_theme()+theme(legend.position="top")+ggtitle("Sender")+
|
||||
guides(colour=FALSE,fill=guide_legend(title="Policy"))
|
||||
|
||||
sender180sPlotEnergy=ggplot(statsSender%>%filter(wakeupfor==180),aes(n_nodes,energy,color=simkey,group=simkey))+
|
||||
geom_ribbon(aes(ymin=energy-energy_sd, ymax=energy+energy_sd,fill=simkey),linetype=1,alpha=0.4)+
|
||||
geom_point()+geom_line()+
|
||||
facet_wrap(~wireless)+xlab("Number of node")+ylab("Energy consumption (J)")+labs(colour="Policy")+custom_theme()+theme(legend.position="top")+ggtitle("Sender")+
|
||||
guides(colour=FALSE,fill=guide_legend(title="Policy"))
|
||||
|
||||
|
||||
receiver60sPlotEnergy=ggplot(statsReceiver%>%filter(wakeupfor==60),aes(n_nodes,energy,color=simkey,group=simkey))+
|
||||
geom_ribbon(aes(ymin=energy-energy_sd, ymax=energy+energy_sd,,fill=simkey),linetype=1,alpha=0.4)+
|
||||
geom_point()+geom_line()+
|
||||
facet_wrap(~wireless)+xlab("Number of node")+ylab("Energy consumption (J)")+labs(colour="Policy") + custom_theme()+theme(legend.position="top")+ggtitle("Receiver")+
|
||||
guides(colour=FALSE,fill=guide_legend(title="Policy"))
|
||||
|
||||
receiver180sPlotEnergy=ggplot(statsReceiver%>%filter(wakeupfor==180),aes(n_nodes,energy,color=simkey,group=simkey))+
|
||||
geom_ribbon(aes(ymin=energy-energy_sd, ymax=energy+energy_sd,fill=simkey),linetype=1,alpha=0.4)+
|
||||
geom_point()+geom_line()+
|
||||
facet_wrap(~wireless)+xlab("Number of node")+ylab("Energy consumption (J)")+labs(colour="Policy")+custom_theme()+theme(legend.position="top")+ggtitle("Receiver")+
|
||||
guides(colour=FALSE,fill=guide_legend(title="Policy"))
|
||||
|
||||
# Success
|
||||
sender60sPlotSuccess=ggplot(statsSender%>%filter(wakeupfor==60),aes(n_nodes,success,color=simkey,group=simkey))+
|
||||
geom_ribbon(aes(ymin=success-success_sd, ymax=success+success_sd,fill=simkey),linetype=1,alpha=0.4)+
|
||||
geom_point()+geom_line()+
|
||||
facet_wrap(~wireless)+xlab("Number of node")+ylab("Number of delivery success")+labs(colour="Policy")+custom_theme()+theme(legend.position="top")+
|
||||
theme(panel.background = element_rect(fill = '#EFEFEF', color=NA))+guides(colour=FALSE,fill=guide_legend(title="Policy"))
|
||||
|
||||
sender180sPlotSuccess=ggplot(statsSender%>%filter(wakeupfor==180),aes(n_nodes,success,color=simkey,group=simkey))+
|
||||
geom_ribbon(aes(ymin=success-success_sd, ymax=success+success_sd,fill=simkey),linetype=1,alpha=0.4)+
|
||||
geom_point()+geom_line()+
|
||||
facet_wrap(~wireless)+xlab("Number of node")+ylab("Number of delivery success")+labs(colour="Policy")+custom_theme()+theme(legend.position="top")+
|
||||
theme(panel.background = element_rect(fill = '#EFEFEF', color=NA))+guides(colour=FALSE,fill=guide_legend(title="Policy"))
|
||||
|
||||
|
||||
receiver60sPlotSuccess=ggplot(statsReceiver%>%filter(wakeupfor==60),aes(n_nodes,success,color=simkey,group=simkey))+
|
||||
geom_ribbon(aes(ymin=success-success_sd, ymax=success+success_sd,fill=simkey),linetype=1,alpha=0.4)+
|
||||
geom_point()+geom_line()+
|
||||
facet_wrap(~wireless)+xlab("Number of node")+ylab("Number of delivery success")+labs(colour="Policy") + custom_theme()+theme(legend.position="top")+
|
||||
theme(panel.background = element_rect(fill = '#EFEFEF', color=NA))+guides(colour=FALSE,fill=guide_legend(title="Policy"))
|
||||
|
||||
receiver180sPlotSuccess=ggplot(statsReceiver%>%filter(wakeupfor==180),aes(n_nodes,success,color=simkey,group=simkey))+
|
||||
geom_ribbon(aes(ymin=success-success_sd, ymax=success+success_sd,fill=simkey),linetype=1,alpha=0.4)+
|
||||
geom_point()+geom_line()+
|
||||
facet_wrap(~wireless)+xlab("Number of node")+ylab("Number of delivery success")+labs(colour="Policy")+custom_theme()+theme(legend.position="top")+
|
||||
theme(panel.background = element_rect(fill = '#EFEFEF', color=NA))+guides(colour=FALSE,fill=guide_legend(title="Policy"))
|
||||
|
||||
|
||||
|
||||
w1=7
|
||||
h1=4
|
||||
w2=15
|
||||
h2=4
|
||||
ggsave("scalability_60s_sender_energy.pdf",plot=sender60sPlotEnergy+guides(fill = FALSE, color = FALSE),width=w1,height=h1)
|
||||
ggsave("scalability_60s_receiver_energy.pdf",plot=receiver60sPlotEnergy+guides(fill = FALSE, color = FALSE),width=w1,height=h1)
|
||||
ggsave("scalability_60s_success.pdf",plot=sender60sPlotSuccess,width=w2,height=h2)
|
||||
|
||||
ggsave("scalability_180s_sender_energy.pdf",plot=sender180sPlotEnergy+guides(fill = FALSE, color = FALSE),width=w1,height=h1)
|
||||
ggsave("scalability_180s_receiver_energy.pdf",plot=receiver180sPlotEnergy+guides(fill = FALSE, color = FALSE),width=w1,height=h1)
|
||||
ggsave("scalability_180s_success.pdf",plot=sender180sPlotSuccess,width=w2,height=h2)
|
||||
|
|
@ -1,68 +0,0 @@
|
|||
library("tidyverse")
|
||||
library("gridExtra")
|
||||
library("patchwork")
|
||||
library("knitr")
|
||||
library(RColorBrewer)
|
||||
library(latex2exp)
|
||||
|
||||
r_=function(x){round(x,digits=2)}
|
||||
color=function(){scale_fill_brewer(palette = "Accent")}
|
||||
color2=function(){scale_fill_brewer(palette = "Set2")}
|
||||
nolegend=function(){theme(legend.position="none")}
|
||||
simkeys=unique(read_csv("results.csv")$simkey)
|
||||
nsimkeys=length(simkeys)
|
||||
s_=function(x){if(x<0){return("")}else{return("+")}}
|
||||
simkey_rename=function(key){
|
||||
if(key=="hint")
|
||||
return("Hints")
|
||||
if(key=="baseline")
|
||||
return("Baseline")
|
||||
if(key=="extended")
|
||||
return("Extended")
|
||||
if(key=="hintandextended")
|
||||
return("Hints+\nExtended")
|
||||
return(key)
|
||||
}
|
||||
dformat=function(data){
|
||||
data%>%rowwise()%>%mutate(simkey=simkey_rename(simkey))%>%
|
||||
mutate(wireless=ifelse(wireless=="lora","LoRa","Nb-IoT"))%>%mutate(facet=paste0("With ",wakeupfor,"s uptime using ",wireless))
|
||||
}
|
||||
|
||||
|
||||
|
||||
data=read_csv("results_datasize.csv")
|
||||
|
||||
data=data%>%filter(isSender!=0)%>%group_by(wakeupfor,simkey,datasize,wireless)%>%summarize(success_mean=mean(nSend),success_sd=sd(nSend))
|
||||
data=data%>%mutate(datasize=ifelse(datasize==1000,"1KB",as.character(datasize)))
|
||||
data=data%>%mutate(datasize=ifelse(datasize==10000,"10KB",as.character(datasize)))
|
||||
data=data%>%mutate(datasize=ifelse(datasize==100000,"100KB",as.character(datasize)))
|
||||
data=data%>%mutate(datasize=ifelse(datasize==500000,"500KB",as.character(datasize)))
|
||||
data=data%>%mutate(datasize=ifelse(datasize==1000000,"1MB",as.character(datasize)))
|
||||
data=data%>%mutate(datasize=ifelse(datasize==2000000,"2MB",as.character(datasize)))
|
||||
data=data%>%mutate(datasize=ifelse(datasize==10000000,"10MB",as.character(datasize)))
|
||||
data=data%>%mutate(datasize=ifelse(datasize==50000000,"50MB",as.character(datasize)))
|
||||
data=data%>%mutate(datasize=ifelse(datasize==100000000,"100MB",as.character(datasize)))
|
||||
data=data%>%mutate(datasize=ifelse(datasize==500000000,"500MB",as.character(datasize)))
|
||||
data=data%>%mutate(datasize=ifelse(datasize==1000000000,"1GB",as.character(datasize)))
|
||||
data$datasize=factor(data$datasize,levels=c("1KB","10KB","100KB","500KB","1MB","2MB","10MB","50MB","100MB","500MB","1GB"))
|
||||
data=data%>%dformat()
|
||||
data$facet=factor(data$facet,levels=c("With 60s uptime using LoRa","With 60s uptime using Nb-IoT","With 180s uptime using LoRa","With 180s uptime using Nb-IoT"))
|
||||
#ggplot(data,aes(x=datasize,y=success, color=simkey))+geom_point()
|
||||
|
||||
ggplot(data,aes(x=datasize,y=success_mean,color=simkey,group=simkey))+
|
||||
geom_point()+geom_line()+facet_wrap(~facet)+
|
||||
xlab("Data size")+ylab(TeX(r'(#Succ$_p$)'))+scale_fill_brewer(palette = "Set1")+scale_color_brewer(palette = "Set1")+
|
||||
labs(color="Policy:")+labs(fill="Standard deviation:")+
|
||||
geom_ribbon(aes(ymin=success_mean-success_sd, ymax=success_mean+success_sd,fill=simkey),linetype=0,alpha=0.2)+
|
||||
guides(color=guide_legend(override.aes=list(fill=NA)))+theme_bw()+ theme(legend.position="top")
|
||||
ggsave("datasize.pdf",width=12,height=6)
|
||||
|
||||
ggplot(data%>%filter(wakeupfor==180,wireless=="LoRa"),aes(x=datasize,y=success_mean,color=simkey,group=simkey))+
|
||||
geom_point()+geom_line()+facet_wrap(~facet)+
|
||||
xlab("Data size")+ylab(TeX(r'(#Succ$_p$)'))+scale_fill_brewer(palette = "Set1")+scale_color_brewer(palette = "Set1")+
|
||||
labs(color="Policy:")+labs(fill="Standard deviation:")+
|
||||
geom_ribbon(aes(ymin=success_mean-success_sd, ymax=success_mean+success_sd,fill=simkey),linetype=0,alpha=0.2)+
|
||||
guides(color=guide_legend(override.aes=list(fill=NA)))+theme_bw()+ theme(legend.position="top")
|
||||
ggsave("datasize_lora180.pdf",width=9.5,height=4)
|
||||
|
||||
|
|
@ -1,135 +0,0 @@
|
|||
library("tidyverse")
|
||||
library("ggthemes")
|
||||
library("gridExtra")
|
||||
library("patchwork")
|
||||
library(RColorBrewer)
|
||||
|
||||
data=read_csv("results_datasize.csv")
|
||||
r_=function(x){round(x,digits=1)}
|
||||
color=function(){scale_fill_brewer(palette = "Accent")}
|
||||
color2=function(){scale_fill_brewer(palette = "Set2")}
|
||||
nolegend=function(){theme(legend.position="none")}
|
||||
simkeys=unique(data$simkey)
|
||||
nsimkeys=length(simkeys)
|
||||
s_=function(x){if(x<0){return("")}else{return("+")}}
|
||||
simkey_rename=function(key){
|
||||
if(key=="hint")
|
||||
return("Hints")
|
||||
if(key=="baseline")
|
||||
return("Baseline")
|
||||
if(key=="extended")
|
||||
return("Extended")
|
||||
if(key=="hintandextended")
|
||||
return("Hints+Extended")
|
||||
return(key)
|
||||
}
|
||||
dformat=function(data){
|
||||
data%>%rowwise()%>%mutate(simkey=simkey_rename(simkey))%>%mutate(wireless=ifelse(wireless=="lora","LoRa","Nb-IoT"))
|
||||
}
|
||||
|
||||
dsformat=function(data){
|
||||
data=data%>%mutate(datasize=ifelse(datasize==1000,"1KB",as.character(datasize)))
|
||||
data=data%>%mutate(datasize=ifelse(datasize==10000,"10KB",as.character(datasize)))
|
||||
data=data%>%mutate(datasize=ifelse(datasize==100000,"100KB",as.character(datasize)))
|
||||
data=data%>%mutate(datasize=ifelse(datasize==500000,"500KB",as.character(datasize)))
|
||||
data=data%>%mutate(datasize=ifelse(datasize==1000000,"1MB",as.character(datasize)))
|
||||
data=data%>%mutate(datasize=ifelse(datasize==2000000,"2MB",as.character(datasize)))
|
||||
data=data%>%mutate(datasize=ifelse(datasize==10000000,"10MB",as.character(datasize)))
|
||||
data=data%>%mutate(datasize=ifelse(datasize==50000000,"50MB",as.character(datasize)))
|
||||
data=data%>%mutate(datasize=ifelse(datasize==100000000,"100MB",as.character(datasize)))
|
||||
data=data%>%mutate(datasize=ifelse(datasize==500000000,"500MB",as.character(datasize)))
|
||||
data=data%>%mutate(datasize=ifelse(datasize==1000000000,"1GB",as.character(datasize)))
|
||||
data$datasize=factor(data$datasize,levels=c("1KB","10KB","100KB","500KB","1MB","2MB","10MB","50MB","100MB","500MB","1GB"))
|
||||
return(data)
|
||||
}
|
||||
|
||||
g_legend <- function(a.gplot){
|
||||
tmp <- ggplot_gtable(ggplot_build(a.gplot))
|
||||
leg <- which(sapply(tmp$grobs, function(x) x$name) == "guide-box")
|
||||
legend <- tmp$grobs[[leg]]
|
||||
legend
|
||||
}
|
||||
|
||||
custom_theme=function(){theme_clean()+ theme(plot.background=element_blank())}
|
||||
|
||||
data=data%>%dformat()
|
||||
|
||||
# Compute delivery success
|
||||
statsSuccess=data%>%filter(isSender!=0)%>%group_by(wireless,wakeupfor,datasize,seed,simkey)%>%summarize(success=mean(nSend))%>%ungroup()
|
||||
data=data%>%left_join(statsSuccess,by=c("wireless","wakeupfor","datasize","seed","simkey"))
|
||||
|
||||
# Computer stats senders
|
||||
statsSender=data%>%filter(isSender!=0)%>%group_by(wireless,wakeupfor,datasize,seed,simkey)%>%summarize(success=mean(success),energy=mean(energy))%>%ungroup()
|
||||
statsSender=statsSender%>%group_by(wireless,wakeupfor,datasize,simkey)%>%summarize(success_sd=sd(success),success=mean(success),energy_sd=sd(energy),energy=mean(energy))%>%ungroup()
|
||||
|
||||
# Computer stats receiver
|
||||
statsReceiver=data%>%filter(isSender==0)%>%group_by(wireless,wakeupfor,datasize,seed,simkey)%>%summarize(success=mean(success),energy=mean(energy))%>%ungroup()
|
||||
statsReceiver=statsReceiver%>%group_by(wireless,wakeupfor,datasize,simkey)%>%summarize(success_sd=sd(success),success=mean(success),energy_sd=sd(energy),energy=mean(energy))%>%ungroup()
|
||||
|
||||
|
||||
# Energy
|
||||
sender60sPlotEnergy=ggplot(statsSender%>%filter(wakeupfor==60)%>%dsformat(),aes(datasize,energy,color=simkey,group=simkey))+
|
||||
geom_ribbon(aes(ymin=energy-energy_sd, ymax=energy+energy_sd,fill=simkey),linetype=1,alpha=0.4)+
|
||||
geom_point()+geom_line()+
|
||||
facet_wrap(~wireless)+xlab("Data size")+ylab("Energy consumption (J)")+labs(colour="Policy")+custom_theme()+theme(legend.position="top")+ggtitle("Sender")+
|
||||
guides(colour=FALSE,fill=guide_legend(title="Policy"))
|
||||
|
||||
sender180sPlotEnergy=ggplot(statsSender%>%filter(wakeupfor==180)%>%dsformat(),aes(datasize,energy,color=simkey,group=simkey))+
|
||||
geom_ribbon(aes(ymin=energy-energy_sd, ymax=energy+energy_sd,fill=simkey),linetype=1,alpha=0.4)+
|
||||
geom_point()+geom_line()+
|
||||
facet_wrap(~wireless)+xlab("Data size")+ylab("Energy consumption (J)")+labs(colour="Policy")+custom_theme()+theme(legend.position="top")+ggtitle("Sender")+
|
||||
guides(colour=FALSE,fill=guide_legend(title="Policy"))
|
||||
|
||||
|
||||
receiver60sPlotEnergy=ggplot(statsReceiver%>%filter(wakeupfor==60)%>%dsformat(),aes(datasize,energy,color=simkey,group=simkey))+
|
||||
geom_ribbon(aes(ymin=energy-energy_sd, ymax=energy+energy_sd,,fill=simkey),linetype=1,alpha=0.4)+
|
||||
geom_point()+geom_line()+
|
||||
facet_wrap(~wireless)+xlab("Data size")+ylab("Energy consumption (J)")+labs(colour="Policy") + custom_theme()+theme(legend.position="top")+ggtitle("Receiver")+
|
||||
guides(colour=FALSE,fill=guide_legend(title="Policy"))
|
||||
|
||||
receiver180sPlotEnergy=ggplot(statsReceiver%>%filter(wakeupfor==180)%>%dsformat(),aes(datasize,energy,color=simkey,group=simkey))+
|
||||
geom_ribbon(aes(ymin=energy-energy_sd, ymax=energy+energy_sd,fill=simkey),linetype=1,alpha=0.4)+
|
||||
geom_point()+geom_line()+
|
||||
facet_wrap(~wireless)+xlab("Data size")+ylab("Energy consumption (J)")+labs(colour="Policy")+custom_theme()+theme(legend.position="top")+ggtitle("Receiver")+
|
||||
guides(colour=FALSE,fill=guide_legend(title="Policy"))
|
||||
|
||||
# Success
|
||||
sender60sPlotSuccess=ggplot(statsSender%>%filter(wakeupfor==60)%>%dsformat(),aes(datasize,success,color=simkey,group=simkey))+
|
||||
geom_ribbon(aes(ymin=success-success_sd, ymax=success+success_sd,fill=simkey),linetype=1,alpha=0.4)+
|
||||
geom_point()+geom_line()+
|
||||
facet_wrap(~wireless)+xlab("Data size")+ylab("Number of delivery success")+labs(colour="Policy")+custom_theme()+theme(legend.position="top")+
|
||||
theme(panel.background = element_rect(fill = '#EFEFEF', color=NA))+guides(colour=FALSE,fill=guide_legend(title="Policy"))
|
||||
|
||||
sender180sPlotSuccess=ggplot(statsSender%>%filter(wakeupfor==180)%>%dsformat(),aes(datasize,success,color=simkey,group=simkey))+
|
||||
geom_ribbon(aes(ymin=success-success_sd, ymax=success+success_sd,fill=simkey),linetype=1,alpha=0.4)+
|
||||
geom_point()+geom_line()+
|
||||
facet_wrap(~wireless)+xlab("Data size")+ylab("Number of delivery success")+labs(colour="Policy")+custom_theme()+theme(legend.position="top")+
|
||||
theme(panel.background = element_rect(fill = '#EFEFEF', color=NA))+guides(colour=FALSE,fill=guide_legend(title="Policy"))
|
||||
|
||||
|
||||
receiver60sPlotSuccess=ggplot(statsReceiver%>%filter(wakeupfor==60)%>%dsformat(),aes(datasize,success,color=simkey,group=simkey))+
|
||||
geom_ribbon(aes(ymin=success-success_sd, ymax=success+success_sd,fill=simkey),linetype=1,alpha=0.4)+
|
||||
geom_point()+geom_line()+
|
||||
facet_wrap(~wireless)+xlab("Data size")+ylab("Number of delivery success")+labs(colour="Policy") + custom_theme()+theme(legend.position="top")+
|
||||
theme(panel.background = element_rect(fill = '#EFEFEF', color=NA))+guides(colour=FALSE,fill=guide_legend(title="Policy"))
|
||||
|
||||
receiver180sPlotSuccess=ggplot(statsReceiver%>%filter(wakeupfor==180)%>%dsformat(),aes(datasize,success,color=simkey,group=simkey))+
|
||||
geom_ribbon(aes(ymin=success-success_sd, ymax=success+success_sd,fill=simkey),linetype=1,alpha=0.4)+
|
||||
geom_point()+geom_line()+
|
||||
facet_wrap(~wireless)+xlab("Data size")+ylab("Number of delivery success")+labs(colour="Policy")+custom_theme()+theme(legend.position="top")+
|
||||
theme(panel.background = element_rect(fill = '#EFEFEF', color=NA))+guides(colour=FALSE,fill=guide_legend(title="Policy"))
|
||||
|
||||
|
||||
|
||||
w1=10
|
||||
h1=4
|
||||
w2=15
|
||||
h2=4
|
||||
ggsave("scalability_datasize_60s_sender_energy.pdf",plot=sender60sPlotEnergy+guides(fill = FALSE, color = FALSE),width=w1,height=h1)
|
||||
ggsave("scalability_datasize_60s_receiver_energy.pdf",plot=receiver60sPlotEnergy+guides(fill = FALSE, color = FALSE),width=w1,height=h1)
|
||||
ggsave("scalability_datasize_60s_success.pdf",plot=sender60sPlotSuccess,width=w2,height=h2)
|
||||
|
||||
ggsave("scalability_datasize_180s_sender_energy.pdf",plot=sender180sPlotEnergy+guides(fill = FALSE, color = FALSE),width=w1,height=h1)
|
||||
ggsave("scalability_datasize_180s_receiver_energy.pdf",plot=receiver180sPlotEnergy+guides(fill = FALSE, color = FALSE),width=w1,height=h1)
|
||||
ggsave("scalability_datasize_180s_success.pdf",plot=sender180sPlotSuccess,width=w2,height=h2)
|
||||
|
56399
results/backup.org
56399
results/backup.org
File diff suppressed because it is too large
Load diff
|
@ -1,17 +0,0 @@
|
|||
simkey,wireless,wakeupfor,sd_success,success,senderEnergy,receiverEnergy,senderUptime,receiverUptime
|
||||
baseline,lora,60,0,0,619.73,579.84,1440,1440
|
||||
extended,lora,60,2,7.70,1207.61,627.35,2564.53,1523.52
|
||||
hint,lora,60,0,0,753.42,957.64,1440,2354.94
|
||||
hintandextended,lora,60,2.20,9.80,1397.98,663.58,2904.50,1602.39
|
||||
baseline,nbiot,60,1.12,1.27,749.69,591.07,1440,1440
|
||||
extended,nbiot,60,1.80,7.16,946.39,599.13,1788.32,1447.54
|
||||
hint,nbiot,60,3.45,9.72,1007.06,702.59,1440,1666.51
|
||||
hintandextended,nbiot,60,2.36,9.41,1066.66,623.30,1901.47,1492.53
|
||||
baseline,lora,180,1.40,1.91,2026.23,1755.92,4320,4320
|
||||
extended,lora,180,0.70,11.45,2692.46,1772.35,6038.78,4364.27
|
||||
hint,lora,180,0,12, 2094.09,2169.50,4320,5344.86
|
||||
hintandextended,lora,180,0.24,11.94,2757.79,1867.34,6155.50,4600.09
|
||||
baseline,nbiot,180,1.33,9.90,2117.65,1761.78,4320,4320
|
||||
extended,nbiot,180,0.87,11.23,2311.52,1760.92,4868.78,4323.71
|
||||
hint,nbiot,180,0.37,11.92,2180.07,1868.54,4320,4576.83
|
||||
hintandextended,nbiot,180,0.41,11.88,2151.14,1822.44,4906.10,4473.32
|
|
Can't render this file because it is too large.
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
136
results/paper.sh
136
results/paper.sh
|
@ -1,136 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
wai=$(dirname $(readlink -f "$0"))
|
||||
scenarios="${wai}/../scenarios"
|
||||
inputs="${wai}/../inputs.json"
|
||||
simulator="make -C ${wai}/../ run"
|
||||
sched="${wai}/scheduler/analysis.sh"
|
||||
parser="${wai}/../parser.awk"
|
||||
results="${wai}/results.csv"
|
||||
aheaders="simkey,wireless,wakeupfor"
|
||||
avalues="none,none,none"
|
||||
log_file="${wai}/logs/$(date +%s).org" && mkdir -p "${wai}/logs/"
|
||||
gen_log=0 # Should we generate logs ?
|
||||
|
||||
run-simulation () {
|
||||
# Generate inputs
|
||||
$scenarios $seed $simtime $wakeupevery $wakeupfor $n_nodes $extended $hint $poff $pon $prx $ptx $datasize $bitrate $hintsize $latency $shutdown_on_rcv $unschedule_on_rcv $farhint $hintdist > "$inputs"
|
||||
|
||||
# Init logs
|
||||
[ $gen_log -eq 1 ] && echo -e "* seed=$seed simtime=$simtime wakeupevery=$wakeupevery wakeupfor=$wakeupfor n_nodes=$n_nodes extended=$extended hint=$hint poff=$poff pon=$pon prx=$prx ptx=$ptx datasize=$datasize bitrate=$bitrate \n" >> "${log_file}"
|
||||
|
||||
# Run simulations
|
||||
tmp=$(mktemp)
|
||||
$simulator &> $tmp
|
||||
[ $gen_log -eq 1 ] && cp $tmp "${log_file}"
|
||||
|
||||
# Gen csv
|
||||
[ ! -e "$results" ] && { cat $tmp | $parser | sed "1 s/$/,${aheaders}/g" | sed "2,\$s/$/,${avalues}/" > "$results"; }
|
||||
[ -e "$results" ] && { cat $tmp | $parser | sed 1d | sed "s/$/,${avalues}/" >> "$results"; }
|
||||
|
||||
# Gen scheduler analysis
|
||||
[ $seed -eq 1 ] && $sched $tmp "logs/$(echo ${avalues}|tr ',' '_')_hint${hint}_extended${extended}.png"
|
||||
|
||||
# Clear tmp
|
||||
rm $tmp
|
||||
}
|
||||
|
||||
# Default Parameters
|
||||
seed=0
|
||||
simtime=86400 # One day
|
||||
wakeupevery=3600
|
||||
wakeupfor=60
|
||||
n_nodes=13 # First node will be the sender so n_receivers=n_nodes-1
|
||||
extended="false"
|
||||
hint="false"
|
||||
poff=0
|
||||
pon=0.4
|
||||
prx=0.16
|
||||
ptx=0.16
|
||||
datasize=1000000 # 1Mb
|
||||
hintsize=8 # Integer
|
||||
hintdist=10800 # Hint distance while using farhint
|
||||
latency=0 # in Seconds
|
||||
shutdown_on_rcv="false"
|
||||
unschedule_on_rcv="false"
|
||||
farhint="false"
|
||||
bitrate="100kbps"
|
||||
|
||||
|
||||
run-scenarios() {
|
||||
# Configure number of seed per scenarios
|
||||
nseed=200
|
||||
|
||||
# Baseline
|
||||
avalues="baseline,$wireless,$wakeupfor"
|
||||
for seed in $(seq 1 $nseed)
|
||||
do
|
||||
printf "\rBaseline...${seed}"
|
||||
run-simulation
|
||||
done
|
||||
echo
|
||||
|
||||
# Hint
|
||||
hint="true"
|
||||
avalues="hint,$wireless,$wakeupfor"
|
||||
for seed in $(seq 1 $nseed)
|
||||
do
|
||||
printf "\rHint...${seed}"
|
||||
run-simulation
|
||||
done
|
||||
hint="false"
|
||||
echo
|
||||
|
||||
# Extended
|
||||
extended="true"
|
||||
avalues="extended,$wireless,$wakeupfor"
|
||||
for seed in $(seq 1 $nseed)
|
||||
do
|
||||
printf "\rExtended...${seed}"
|
||||
run-simulation
|
||||
done
|
||||
extended="false"
|
||||
echo
|
||||
|
||||
# Hint+Extended
|
||||
extended="true"
|
||||
hint="true"
|
||||
avalues="hintandextended,$wireless,$wakeupfor"
|
||||
for seed in $(seq 1 $nseed)
|
||||
do
|
||||
printf "\rHint + Extended...${seed}"
|
||||
run-simulation
|
||||
done
|
||||
extended="false"
|
||||
hint="false"
|
||||
echo
|
||||
}
|
||||
|
||||
# Clean previous runs
|
||||
[ -e "${results}" ] && rm "${results}"
|
||||
|
||||
for wakeupfor in 60 180
|
||||
do
|
||||
|
||||
# Lora
|
||||
echo "----- Run Lora (wakeupfor=$wakeupfor) -----"
|
||||
wireless="lora"
|
||||
bitrate="50kbps"
|
||||
pon=0.4
|
||||
prx=0.16
|
||||
ptx=0.16
|
||||
latency=0
|
||||
run-scenarios
|
||||
|
||||
# NbIot
|
||||
echo "----- Run NbIoT (wakeupfor=$wakeupfor) -----"
|
||||
wireless="nbiot"
|
||||
bitrate="200kbps"
|
||||
pon=0.4
|
||||
prx=0.65
|
||||
ptx=0.65
|
||||
latency=0
|
||||
run-scenarios
|
||||
done
|
|
@ -1,89 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
wai=$(dirname $(readlink -f "$0"))
|
||||
scenarios="${wai}/../scenarios"
|
||||
inputs="${wai}/../inputs.json"
|
||||
simulator="make -C ${wai}/../ run"
|
||||
sched="${wai}/scheduler/analysis.sh"
|
||||
parser="${wai}/../parser.awk"
|
||||
results="${wai}/results.csv"
|
||||
aheaders="simkey,wireless,wakeupfor"
|
||||
avalues="none,none,none"
|
||||
log_file="${wai}/logs/$(date +%s).org" && mkdir -p "${wai}/logs/"
|
||||
gen_log=0 # Should we generate logs ?
|
||||
|
||||
run-simulation () {
|
||||
# Generate inputs
|
||||
$scenarios $seed $simtime $wakeupevery $wakeupfor $n_nodes $extended $hint $poff $pon $prx $ptx $datasize $bitrate $hintsize $latency > "$inputs"
|
||||
|
||||
# Init logs
|
||||
[ $gen_log -eq 1 ] && echo -e "* seed=$seed simtime=$simtime wakeupevery=$wakeupevery wakeupfor=$wakeupfor n_nodes=$n_nodes extended=$extended hint=$hint poff=$poff pon=$pon prx=$prx ptx=$ptx datasize=$datasize bitrate=$bitrate \n" >> "${log_file}"
|
||||
|
||||
# Run simulations
|
||||
tmp=$(mktemp)
|
||||
$simulator &> $tmp
|
||||
[ $gen_log -eq 1 ] && cp $tmp "${log_file}"
|
||||
|
||||
# Gen csv
|
||||
[ ! -e "$results" ] && { cat $tmp | $parser | sed "1 s/$/,${aheaders}/g" | sed "2,\$s/$/,${avalues}/" > "$results"; }
|
||||
[ -e "$results" ] && { cat $tmp | $parser | sed 1d | sed "s/$/,${avalues}/" >> "$results"; }
|
||||
|
||||
# Gen scheduler analysis
|
||||
#[ $seed -eq 1 ] && $sched $tmp "logs/$(echo ${avalues}|tr ',' '_')_hint${hint}_extended${extended}.png"
|
||||
|
||||
# Clear tmp
|
||||
cat $tmp
|
||||
rm $tmp
|
||||
}
|
||||
|
||||
# Default Parameters
|
||||
seed=0
|
||||
simtime=86400 # One day
|
||||
wakeupevery=3600
|
||||
wakeupfor=60
|
||||
n_nodes=13
|
||||
extended="false"
|
||||
hint="false"
|
||||
poff=0
|
||||
pon=0.4
|
||||
prx=0.16
|
||||
ptx=0.16
|
||||
datasize=1000000 # 1Mb
|
||||
hintsize=8 # Integer
|
||||
latency=0 # in Seconds
|
||||
bitrate="100kbps"
|
||||
|
||||
|
||||
|
||||
run-scenarios() {
|
||||
# Configure number of seed per scenarios
|
||||
nseed=200
|
||||
|
||||
# Baseline
|
||||
avalues="baseline,$wireless,$wakeupfor"
|
||||
for seed in 17
|
||||
do
|
||||
printf "\rBaseline...${seed}"
|
||||
run-simulation
|
||||
done
|
||||
echo
|
||||
}
|
||||
|
||||
# Clean previous runs
|
||||
[ -e "${results}" ] && rm "${results}"
|
||||
|
||||
for wakeupfor in 60
|
||||
do
|
||||
|
||||
# Lora
|
||||
echo "----- Run Lora (wakeupfor=$wakeupfor) -----"
|
||||
wireless="lora"
|
||||
bitrate="50kbps"
|
||||
pon=0.4
|
||||
prx=0.16
|
||||
ptx=0.16
|
||||
latency=0
|
||||
run-scenarios
|
||||
done
|
|
@ -1,140 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
wai=$(dirname $(readlink -f "$0"))
|
||||
scenarios="${wai}/../scenarios"
|
||||
inputs="${wai}/../inputs.json"
|
||||
simulator="make -C ${wai}/../ run"
|
||||
sched="${wai}/scheduler/analysis.sh"
|
||||
parser="${wai}/../parser.awk"
|
||||
results="${wai}/results_datasize.csv"
|
||||
aheaders="simkey,wireless,wakeupfor,n_nodes,datasize"
|
||||
avalues="none,none,none,none"
|
||||
log_file="${wai}/logs/$(date +%s).org" && mkdir -p "${wai}/logs/"
|
||||
gen_log=0 # Should we generate logs ?
|
||||
|
||||
run-simulation () {
|
||||
# Generate inputs
|
||||
$scenarios $seed $simtime $wakeupevery $wakeupfor $n_nodes $extended $hint $poff $pon $prx $ptx $datasize $bitrate $hintsize $latency $shutdown_on_rcv $unschedule_on_rcv $farhint $hintdist > "$inputs"
|
||||
|
||||
# Init logs
|
||||
[ $gen_log -eq 1 ] && echo -e "* seed=$seed simtime=$simtime wakeupevery=$wakeupevery wakeupfor=$wakeupfor n_nodes=$n_nodes extended=$extended hint=$hint poff=$poff pon=$pon prx=$prx ptx=$ptx datasize=$datasize bitrate=$bitrate \n" >> "${log_file}"
|
||||
|
||||
# Run simulations
|
||||
tmp=$(mktemp)
|
||||
$simulator &> $tmp
|
||||
[ $gen_log -eq 1 ] && cp $tmp "${log_file}"
|
||||
|
||||
# Gen csv
|
||||
[ ! -e "$results" ] && { cat $tmp | $parser | sed "1 s/$/,${aheaders}/g" | sed "2,\$s/$/,${avalues}/" > "$results"; }
|
||||
[ -e "$results" ] && { cat $tmp | $parser | sed 1d | sed "s/$/,${avalues}/" >> "$results"; }
|
||||
|
||||
# Gen scheduler analysis
|
||||
#[ $seed -eq 1 ] && $sched $tmp "logs/$(echo ${avalues}|tr ',' '_')_hint${hint}_extended${extended}.png"
|
||||
|
||||
# Clear tmp
|
||||
rm $tmp
|
||||
}
|
||||
|
||||
# Default Parameters
|
||||
seed=0
|
||||
simtime=86400 # One day
|
||||
wakeupevery=3600
|
||||
wakeupfor=60
|
||||
n_nodes=13 # First node will be the sender so n_receivers=n_nodes-1
|
||||
extended="false"
|
||||
hint="false"
|
||||
poff=0
|
||||
pon=0.4
|
||||
prx=0.16
|
||||
ptx=0.16
|
||||
datasize=1000000 # 1Mb
|
||||
hintsize=8 # Integer
|
||||
hintdist=10800 # Hint distance while using farhint
|
||||
latency=0 # in Seconds
|
||||
shutdown_on_rcv="false"
|
||||
unschedule_on_rcv="false"
|
||||
farhint="false"
|
||||
bitrate="100kbps"
|
||||
|
||||
|
||||
run-scenarios() {
|
||||
# Configure number of seed per scenarios
|
||||
nseed=200
|
||||
|
||||
# Baseline
|
||||
avalues="baseline,$wireless,$wakeupfor,$n_nodes,$datasize"
|
||||
for seed in $(seq 1 $nseed)
|
||||
do
|
||||
printf "\rBaseline...${seed}"
|
||||
run-simulation
|
||||
done
|
||||
echo
|
||||
|
||||
# Hint
|
||||
hint="true"
|
||||
avalues="hint,$wireless,$wakeupfor,$n_nodes,$datasize"
|
||||
for seed in $(seq 1 $nseed)
|
||||
do
|
||||
printf "\rHint...${seed}"
|
||||
run-simulation
|
||||
done
|
||||
hint="false"
|
||||
echo
|
||||
|
||||
# Extended
|
||||
extended="true"
|
||||
avalues="extended,$wireless,$wakeupfor,$n_nodes,$datasize"
|
||||
for seed in $(seq 1 $nseed)
|
||||
do
|
||||
printf "\rExtended...${seed}"
|
||||
run-simulation
|
||||
done
|
||||
extended="false"
|
||||
echo
|
||||
|
||||
# Hint+Extended
|
||||
extended="true"
|
||||
hint="true"
|
||||
avalues="hintandextended,$wireless,$wakeupfor,$n_nodes,$datasize"
|
||||
for seed in $(seq 1 $nseed)
|
||||
do
|
||||
printf "\rHint + Extended...${seed}"
|
||||
run-simulation
|
||||
done
|
||||
extended="false"
|
||||
hint="false"
|
||||
echo
|
||||
}
|
||||
|
||||
# Clean previous runs
|
||||
[ -e "${results}" ] && rm "${results}"
|
||||
|
||||
for wakeupfor in 60 180
|
||||
do
|
||||
|
||||
# Datasize: 1KB 10KB 100KB 500KB 1MB 2MB 10MB 50MB 100MB 500MB 1GB
|
||||
for datasize in 1000 10000 100000 500000 1000000 2000000 10000000 50000000 100000000 500000000 1000000000
|
||||
do
|
||||
# Lora
|
||||
echo "----- Run Lora (wakeupfor=$wakeupfor datasize=$datasize) -----"
|
||||
wireless="lora"
|
||||
bitrate="50kbps"
|
||||
pon=0.4
|
||||
prx=0.16
|
||||
ptx=0.16
|
||||
latency=0
|
||||
run-scenarios
|
||||
|
||||
# NbIot
|
||||
echo "----- Run NbIoT (wakeupfor=$wakeupfor datasize=$datasize) -----"
|
||||
wireless="nbiot"
|
||||
bitrate="200kbps"
|
||||
pon=0.4
|
||||
prx=0.65
|
||||
ptx=0.65
|
||||
latency=0
|
||||
run-scenarios
|
||||
done
|
||||
done
|
|
@ -1,139 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
wai=$(dirname $(readlink -f "$0"))
|
||||
scenarios="${wai}/../scenarios"
|
||||
inputs="${wai}/../inputs.json"
|
||||
simulator="make -C ${wai}/../ run"
|
||||
sched="${wai}/scheduler/analysis.sh"
|
||||
parser="${wai}/../parser.awk"
|
||||
results="${wai}/results_scalability.csv"
|
||||
aheaders="simkey,wireless,wakeupfor,n_nodes"
|
||||
avalues="none,none,none,none"
|
||||
log_file="${wai}/logs/$(date +%s).org" && mkdir -p "${wai}/logs/"
|
||||
gen_log=0 # Should we generate logs ?
|
||||
|
||||
run-simulation () {
|
||||
# Generate inputs
|
||||
$scenarios $seed $simtime $wakeupevery $wakeupfor $n_nodes $extended $hint $poff $pon $prx $ptx $datasize $bitrate $hintsize $latency $shutdown_on_rcv $unschedule_on_rcv $farhint $hintdist > "$inputs"
|
||||
|
||||
# Init logs
|
||||
[ $gen_log -eq 1 ] && echo -e "* seed=$seed simtime=$simtime wakeupevery=$wakeupevery wakeupfor=$wakeupfor n_nodes=$n_nodes extended=$extended hint=$hint poff=$poff pon=$pon prx=$prx ptx=$ptx datasize=$datasize bitrate=$bitrate \n" >> "${log_file}"
|
||||
|
||||
# Run simulations
|
||||
tmp=$(mktemp)
|
||||
$simulator &> $tmp
|
||||
[ $gen_log -eq 1 ] && cp $tmp "${log_file}"
|
||||
|
||||
# Gen csv
|
||||
[ ! -e "$results" ] && { cat $tmp | $parser | sed "1 s/$/,${aheaders}/g" | sed "2,\$s/$/,${avalues}/" > "$results"; }
|
||||
[ -e "$results" ] && { cat $tmp | $parser | sed 1d | sed "s/$/,${avalues}/" >> "$results"; }
|
||||
|
||||
# Gen scheduler analysis
|
||||
#[ $seed -eq 1 ] && $sched $tmp "logs/$(echo ${avalues}|tr ',' '_')_hint${hint}_extended${extended}.png"
|
||||
|
||||
# Clear tmp
|
||||
rm $tmp
|
||||
}
|
||||
|
||||
# Default Parameters
|
||||
seed=0
|
||||
simtime=86400 # One day
|
||||
wakeupevery=3600
|
||||
wakeupfor=60
|
||||
n_nodes=13 # First node will be the sender so n_receivers=n_nodes-1
|
||||
extended="false"
|
||||
hint="false"
|
||||
poff=0
|
||||
pon=0.4
|
||||
prx=0.16
|
||||
ptx=0.16
|
||||
datasize=1000000 # 1Mb
|
||||
hintsize=8 # Integer
|
||||
hintdist=10800 # Hint distance while using farhint
|
||||
latency=0 # in Seconds
|
||||
shutdown_on_rcv="false"
|
||||
unschedule_on_rcv="false"
|
||||
farhint="false"
|
||||
bitrate="100kbps"
|
||||
|
||||
|
||||
run-scenarios() {
|
||||
# Configure number of seed per scenarios
|
||||
nseed=5
|
||||
|
||||
# Baseline
|
||||
avalues="baseline,$wireless,$wakeupfor,$n_nodes"
|
||||
for seed in $(seq 1 $nseed)
|
||||
do
|
||||
printf "\rBaseline...${seed}"
|
||||
run-simulation
|
||||
done
|
||||
echo
|
||||
|
||||
# Hint
|
||||
hint="true"
|
||||
avalues="hint,$wireless,$wakeupfor,$n_nodes"
|
||||
for seed in $(seq 1 $nseed)
|
||||
do
|
||||
printf "\rHint...${seed}"
|
||||
run-simulation
|
||||
done
|
||||
hint="false"
|
||||
echo
|
||||
|
||||
# Extended
|
||||
extended="true"
|
||||
avalues="extended,$wireless,$wakeupfor,$n_nodes"
|
||||
for seed in $(seq 1 $nseed)
|
||||
do
|
||||
printf "\rExtended...${seed}"
|
||||
run-simulation
|
||||
done
|
||||
extended="false"
|
||||
echo
|
||||
|
||||
# Hint+Extended
|
||||
extended="true"
|
||||
hint="true"
|
||||
avalues="hintandextended,$wireless,$wakeupfor,$n_nodes"
|
||||
for seed in $(seq 1 $nseed)
|
||||
do
|
||||
printf "\rHint + Extended...${seed}"
|
||||
run-simulation
|
||||
done
|
||||
extended="false"
|
||||
hint="false"
|
||||
echo
|
||||
}
|
||||
|
||||
# Clean previous runs
|
||||
[ -e "${results}" ] && rm "${results}"
|
||||
|
||||
for wakeupfor in 60 180
|
||||
do
|
||||
|
||||
for n_nodes in $(shuf -i 12-100 -n 30|sort)
|
||||
do
|
||||
# Lora
|
||||
echo "----- Run Lora (wakeupfor=$wakeupfor) -----"
|
||||
wireless="lora"
|
||||
bitrate="50kbps"
|
||||
pon=0.4
|
||||
prx=0.16
|
||||
ptx=0.16
|
||||
latency=0
|
||||
run-scenarios
|
||||
|
||||
# NbIot
|
||||
echo "----- Run NbIoT (wakeupfor=$wakeupfor) -----"
|
||||
wireless="nbiot"
|
||||
bitrate="200kbps"
|
||||
pon=0.4
|
||||
prx=0.65
|
||||
ptx=0.65
|
||||
latency=0
|
||||
run-scenarios
|
||||
done
|
||||
done
|
119
results/pareto.R
119
results/pareto.R
|
@ -1,119 +0,0 @@
|
|||
library("tidyverse")
|
||||
library("gridExtra")
|
||||
library("patchwork")
|
||||
library("knitr")
|
||||
library(RColorBrewer)
|
||||
library(latex2exp)
|
||||
|
||||
r_=function(x){round(x,digits=2)}
|
||||
color=function(){scale_fill_brewer(palette = "Accent")}
|
||||
color2=function(){scale_fill_brewer(palette = "Set2")}
|
||||
nolegend=function(){theme(legend.position="none")}
|
||||
simkeys=unique(read_csv("results.csv")$simkey)
|
||||
nsimkeys=length(simkeys)
|
||||
s_=function(x){if(x<0){return("")}else{return("+")}}
|
||||
simkey_rename=function(key){
|
||||
if(key=="hint")
|
||||
return("Hints")
|
||||
if(key=="baseline")
|
||||
return("Baseline")
|
||||
if(key=="extended")
|
||||
return("Extended")
|
||||
if(key=="hintandextended")
|
||||
return("Hints+\nExtended")
|
||||
return(key)
|
||||
}
|
||||
dformat=function(data){
|
||||
data%>%rowwise()%>%mutate(simkey=simkey_rename(simkey))%>%mutate(wireless=ifelse(wireless=="lora","LoRa","NbIoT"))
|
||||
}
|
||||
|
||||
build_stats=function(file){
|
||||
data=read_csv(file)
|
||||
|
||||
energy=data%>%group_by(simkey,wireless,seed,isSender,wakeupfor)%>%summarise(sd=sd(energy),energy=mean(energy))%>%mutate(type=ifelse(isSender,"Sender","Receiver"))
|
||||
|
||||
# Only sender knows success:
|
||||
success=data%>%filter(isSender==1)%>%group_by(simkey,wireless,seed,wakeupfor)%>%summarise(success_orig=mean(nSend),success=mean(nSend))
|
||||
|
||||
return(energy%>%ungroup()%>%left_join(success))
|
||||
|
||||
|
||||
energy60=data%>%filter(wakeupfor==60)
|
||||
energy60Snd=energy60%>%filter(isSender==1)%>%group_by(simkey,wireless,seed)%>%summarise(sd=sd(energy),energy=mean(energy),type="Sender")
|
||||
energy60Rcv=energy60%>%filter(isSender==0)%>%group_by(simkey,wireless,seed)%>%summarise(sd=sd(energy),energy=mean(energy),type="Receiver")
|
||||
energy60=energy60Snd%>%ungroup()%>%rbind(energy60Rcv)
|
||||
|
||||
print(energy60)
|
||||
stopifnot(1)
|
||||
|
||||
success60Snd=data%>%filter(wakeupfor==60)%>%filter(isSender!=0)%>%group_by(simkey,wireless,seed)%>%summarise(success_orig=mean(nSend),success=mean(nSend),type="Sender")
|
||||
success60Rcv=data%>%filter(wakeupfor==60)%>%filter(isSender!=0)%>%group_by(simkey,wireless,seed)%>%summarise(success_orig=mean(nSend),success=mean(nSend),type="Receiver")
|
||||
success60=rbind(success60Snd,success60Rcv)
|
||||
|
||||
total60=energy60%>%left_join(success60,by=c("simkey","wireless","type"))
|
||||
|
||||
energy180=data%>%filter(wakeupfor==180)
|
||||
energy180Snd=energy180%>%filter(isSender==1)%>%group_by(simkey,wireless,seed)%>%summarise(sd=sd(energy),energy=mean(energy),type="Sender")
|
||||
energy180Rcv=energy180%>%filter(isSender==0)%>%group_by(simkey,wireless,seed)%>%summarise(sd=sd(energy),energy=mean(energy),type="Receiver")
|
||||
energy180=energy180Snd%>%ungroup()%>%rbind(energy180Rcv)
|
||||
|
||||
success180Snd=data%>%filter(wakeupfor==180)%>%filter(isSender!=0)%>%group_by(simkey,wireless,seed)%>%summarise(success_orig=mean(nSend),success=mean(nSend),type="Sender")
|
||||
success180Rcv=data%>%filter(wakeupfor==180)%>%filter(isSender!=0)%>%group_by(simkey,wireless,seed)%>%summarise(success_orig=mean(nSend),success=mean(nSend),type="Receiver")
|
||||
success180=rbind(success180Snd,success180Rcv)
|
||||
|
||||
total180=energy180%>%left_join(success180,by=c("simkey","wireless","type"))
|
||||
|
||||
return(rbind(total60%>%mutate(wakeupfor=60),total180%>%mutate(wakeupfor=180)))
|
||||
}
|
||||
|
||||
# Load stats
|
||||
stats_sor=build_stats("logs/sor_results/results.csv")%>%filter(type=="Sender")%>%mutate(strategy="SOR")
|
||||
stats_uor=build_stats("logs/uor_results/results.csv")%>%filter(type=="Sender")%>%mutate(strategy="UOR")
|
||||
stats_fh=build_stats("logs/farhint_results/results.csv")%>%filter(type=="Sender")%>%mutate(strategy="FH")
|
||||
stats_cmb=build_stats("logs/combined/results.csv")%>%filter(type=="Sender")%>%mutate(strategy="Combined")
|
||||
stats_none=build_stats("results_prev.csv")%>%filter(type=="Sender")%>%mutate(strategy="None")
|
||||
stats=rbind(stats_sor,stats_uor,stats_fh,stats_cmb,stats_none)%>%filter(wireless=="nbiot",wakeupfor==60) # Change filter as you which (which plot you want down bellow)
|
||||
|
||||
pareto=tibble()
|
||||
stats%>%ungroup()%>%group_by(wakeupfor,wireless)%>%group_walk(function(data, t){
|
||||
for(i in 1:NROW(data)){
|
||||
pt=data[i,]
|
||||
e=pt$energy
|
||||
s=pt$success
|
||||
|
||||
domE=data$energy<e
|
||||
domS=data$success>=s
|
||||
|
||||
if(!any(domE & domS)){
|
||||
pareto<<-rbind(pareto,cbind(pt,t))
|
||||
}
|
||||
}})
|
||||
pareto = pareto %>% mutate(energy = as.numeric(energy))
|
||||
pareto = pareto %>% mutate(success = as.numeric(success))
|
||||
pareto = pareto %>% arrange(energy,success)
|
||||
pareto = pareto %>% dformat()
|
||||
|
||||
##### Policies
|
||||
ggplot(stats%>%dformat(),aes(energy,success,color=simkey,shape=simkey))+
|
||||
geom_line(data=pareto,aes(energy,success),linetype="dashed", size=1,inherit.aes=FALSE)+
|
||||
geom_point(size=4)+
|
||||
geom_point(data=pareto,size=4)+scale_y_reverse()+
|
||||
labs(color="Policies:",shape="Policies:")+scale_color_brewer(palette = "Set1")+theme_minimal()+theme(text=element_text(size=20), legend.position=c(.8,.75),legend.box.background = element_rect(color="black", size=1, fill="white"))+scale_shape_manual(values = c(17,18,20,3,4))+
|
||||
xlab("Sender energy consumption (J)")+ylab(TeX(r'(#Succ$_p$)'))
|
||||
# +facet_wrap(~wakeupfor+wireless,scale="free")
|
||||
ggsave("pareto_policies.pdf",width=10,height=9)
|
||||
|
||||
##### Strategies
|
||||
ggplot(stats%>%dformat(),aes(energy,success,color=strategy,shape=strategy))+
|
||||
geom_line(data=pareto,aes(energy,success),linetype="dashed", size=1,inherit.aes=FALSE)+
|
||||
geom_point(size=4)+
|
||||
geom_point(data=pareto,size=4)+scale_y_reverse()+
|
||||
labs(color="Strategies:",shape="Strategies:")+scale_color_brewer(palette = "Dark2")+theme_minimal()+theme(text=element_text(size=20), legend.position=c(.8,.75),legend.box.background = element_rect(color="black", size=1, fill="white"))+scale_shape_manual(values = c(17,18,20,3,4))+
|
||||
xlab("Sender energy consumption (J)")+ylab(TeX(r'(#Succ$_p$)'))
|
||||
# +facet_wrap(~wakeupfor+wireless,scale="free")
|
||||
ggsave("pareto_strategies.pdf",width=10,height=9)
|
||||
|
||||
|
||||
message("Pareto infos:")
|
||||
print(pareto%>%group_by(simkey)%>%summarize(count=n()))
|
||||
print(pareto%>%group_by(strategy)%>%summarize(count=n()))
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
320101
results/results.csv
320101
results/results.csv
File diff suppressed because it is too large
Load diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Can't render this file because it is too large.
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Can't render this file because it is too large.
|
|
@ -1,58 +0,0 @@
|
|||
{
|
||||
"seed": 200,
|
||||
"bitrate": "0.5MBps",
|
||||
"latency": 0.01,
|
||||
"extended": false,
|
||||
"hint_size": 8,
|
||||
"nodes": {
|
||||
"on0": {
|
||||
"use_hint": false,
|
||||
"power_off": 0.0,
|
||||
"power_on": 0.4,
|
||||
"power_rx": 0.65,
|
||||
"power_tx": 0.65,
|
||||
"is_sender": true,
|
||||
"data_size": 1000000,
|
||||
"wake_ts": [
|
||||
5,
|
||||
50
|
||||
],
|
||||
"wake_duration": [
|
||||
10,
|
||||
10
|
||||
]
|
||||
},
|
||||
"on1": {
|
||||
"use_hint": true,
|
||||
"power_off": 0.0,
|
||||
"power_on": 0.4,
|
||||
"power_rx": 0.65,
|
||||
"power_tx": 0.65,
|
||||
"is_sender": false,
|
||||
"data_size": 1000000,
|
||||
"wake_ts": [
|
||||
0,
|
||||
20
|
||||
],
|
||||
"wake_duration": [
|
||||
10,
|
||||
10
|
||||
]
|
||||
},
|
||||
"on2": {
|
||||
"use_hint": true,
|
||||
"power_off": 0.0,
|
||||
"power_on": 0.4,
|
||||
"power_rx": 0.65,
|
||||
"power_tx": 0.65,
|
||||
"is_sender": false,
|
||||
"data_size": 1000000,
|
||||
"wake_ts": [
|
||||
25
|
||||
],
|
||||
"wake_duration": [
|
||||
10
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,58 +0,0 @@
|
|||
{
|
||||
"seed": 200,
|
||||
"bitrate": "0.2MBps",
|
||||
"latency": 0.01,
|
||||
"extended": true,
|
||||
"hint_size": 8,
|
||||
"nodes": {
|
||||
"on0": {
|
||||
"use_hint": false,
|
||||
"power_off": 0.0,
|
||||
"power_on": 0.4,
|
||||
"power_rx": 0.65,
|
||||
"power_tx": 0.65,
|
||||
"is_sender": true,
|
||||
"data_size": 1000000,
|
||||
"wake_ts": [
|
||||
5,
|
||||
50
|
||||
],
|
||||
"wake_duration": [
|
||||
10,
|
||||
10
|
||||
]
|
||||
},
|
||||
"on1": {
|
||||
"use_hint": true,
|
||||
"power_off": 0.0,
|
||||
"power_on": 0.4,
|
||||
"power_rx": 0.65,
|
||||
"power_tx": 0.65,
|
||||
"is_sender": false,
|
||||
"data_size": 1000000,
|
||||
"wake_ts": [
|
||||
0,
|
||||
20
|
||||
],
|
||||
"wake_duration": [
|
||||
10,
|
||||
10
|
||||
]
|
||||
},
|
||||
"on2": {
|
||||
"use_hint": true,
|
||||
"power_off": 0.0,
|
||||
"power_on": 0.4,
|
||||
"power_rx": 0.65,
|
||||
"power_tx": 0.65,
|
||||
"is_sender": false,
|
||||
"data_size": 1000000,
|
||||
"wake_ts": [
|
||||
25
|
||||
],
|
||||
"wake_duration": [
|
||||
10
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,58 +0,0 @@
|
|||
{
|
||||
"seed": 200,
|
||||
"bitrate": "0.5MBps",
|
||||
"latency": 0.01,
|
||||
"extended": false,
|
||||
"hint_size": 8,
|
||||
"nodes": {
|
||||
"on0": {
|
||||
"use_hint": true,
|
||||
"power_off": 0.0,
|
||||
"power_on": 0.4,
|
||||
"power_rx": 0.65,
|
||||
"power_tx": 0.65,
|
||||
"is_sender": true,
|
||||
"data_size": 1000000,
|
||||
"wake_ts": [
|
||||
5,
|
||||
50
|
||||
],
|
||||
"wake_duration": [
|
||||
10,
|
||||
10
|
||||
]
|
||||
},
|
||||
"on1": {
|
||||
"use_hint": true,
|
||||
"power_off": 0.0,
|
||||
"power_on": 0.4,
|
||||
"power_rx": 0.65,
|
||||
"power_tx": 0.65,
|
||||
"is_sender": false,
|
||||
"data_size": 1000000,
|
||||
"wake_ts": [
|
||||
0,
|
||||
20
|
||||
],
|
||||
"wake_duration": [
|
||||
10,
|
||||
10
|
||||
]
|
||||
},
|
||||
"on2": {
|
||||
"use_hint": true,
|
||||
"power_off": 0.0,
|
||||
"power_on": 0.4,
|
||||
"power_rx": 0.65,
|
||||
"power_tx": 0.65,
|
||||
"is_sender": false,
|
||||
"data_size": 1000000,
|
||||
"wake_ts": [
|
||||
25
|
||||
],
|
||||
"wake_duration": [
|
||||
10
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,58 +0,0 @@
|
|||
{
|
||||
"seed": 200,
|
||||
"bitrate": "0.2MBps",
|
||||
"latency": 0.01,
|
||||
"extended": true,
|
||||
"hint_size": 8,
|
||||
"nodes": {
|
||||
"on0": {
|
||||
"use_hint": true,
|
||||
"power_off": 0.0,
|
||||
"power_on": 0.4,
|
||||
"power_rx": 0.65,
|
||||
"power_tx": 0.65,
|
||||
"is_sender": true,
|
||||
"data_size": 1000000,
|
||||
"wake_ts": [
|
||||
5,
|
||||
50
|
||||
],
|
||||
"wake_duration": [
|
||||
10,
|
||||
10
|
||||
]
|
||||
},
|
||||
"on1": {
|
||||
"use_hint": true,
|
||||
"power_off": 0.0,
|
||||
"power_on": 0.4,
|
||||
"power_rx": 0.65,
|
||||
"power_tx": 0.65,
|
||||
"is_sender": false,
|
||||
"data_size": 1000000,
|
||||
"wake_ts": [
|
||||
0,
|
||||
20
|
||||
],
|
||||
"wake_duration": [
|
||||
10,
|
||||
10
|
||||
]
|
||||
},
|
||||
"on2": {
|
||||
"use_hint": true,
|
||||
"power_off": 0.0,
|
||||
"power_on": 0.4,
|
||||
"power_rx": 0.65,
|
||||
"power_tx": 0.65,
|
||||
"is_sender": false,
|
||||
"data_size": 1000000,
|
||||
"wake_ts": [
|
||||
25
|
||||
],
|
||||
"wake_duration": [
|
||||
10
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,52 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
wai=$(dirname $(readlink -f "$0"))
|
||||
inputs="${wai}/../../inputs.json"
|
||||
simulator="make -C ${wai}/../../ run"
|
||||
|
||||
run-simulation () {
|
||||
# Run simulations
|
||||
$simulator 2>&1
|
||||
}
|
||||
|
||||
|
||||
echo "Which scenario to run:"
|
||||
echo "(a) Baseline"
|
||||
echo "(b) Extended"
|
||||
echo "(c) Hint"
|
||||
echo "(d) Hint+Extended"
|
||||
|
||||
read -p "> " -n 1 -r
|
||||
echo
|
||||
|
||||
case $REPLY in
|
||||
a)
|
||||
echo "Run baseline scenarios (a)"
|
||||
cp ${wai}/baseline.json $inputs
|
||||
run-simulation
|
||||
;;
|
||||
b)
|
||||
echo "Run extended scenarios (b)"
|
||||
cp ${wai}/extended.json $inputs
|
||||
run-simulation
|
||||
;;
|
||||
c)
|
||||
echo "Run hint scenarios (c)"
|
||||
cp ${wai}/hint.json $inputs
|
||||
run-simulation
|
||||
;;
|
||||
d)
|
||||
echo "Run hint+extended scenarios (d)"
|
||||
cp ${wai}/hint_extended.json $inputs
|
||||
run-simulation
|
||||
;;
|
||||
*)
|
||||
echo "Unknown choice"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 195 KiB |
|
@ -1,18 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
wai=$(dirname $(readlink -f "$0")) # Current script directory
|
||||
|
||||
log=$1
|
||||
out=$2
|
||||
|
||||
# Generate csv
|
||||
cat $log | $wai/wakeup.awk > $wai/wakeup.csv
|
||||
cat $log | $wai/data.awk > $wai/data.csv
|
||||
cat $log | $wai/hint.awk > $wai/hint.csv
|
||||
cat $log | $wai/hint_fw.awk > $wai/hint_fw.csv
|
||||
|
||||
cd $wai
|
||||
Rscript ./wakeup.R &> /dev/null || { echo "Schduler data analysis failed"; exit 1; }
|
||||
cd - > /dev/null
|
||||
|
||||
mv $wai/schedule.png $out
|
|
@ -1,15 +0,0 @@
|
|||
#!/usr/bin/awk -f
|
||||
|
||||
BEGIN {
|
||||
RS="\n"
|
||||
FS=" "
|
||||
CSV_HEADER="node,ts"
|
||||
CSV_DATA=""
|
||||
skip=1
|
||||
print(CSV_HEADER)
|
||||
}
|
||||
|
||||
/received data success/ {
|
||||
gsub("]","",$0)
|
||||
print($4","$2)
|
||||
}
|
|
@ -1,13 +0,0 @@
|
|||
node,ts
|
||||
on8,4398.000320
|
||||
on4,4438.000960
|
||||
on10,8258.000320
|
||||
on6,8299.600960
|
||||
on2,16300.000320
|
||||
on7,16341.001280
|
||||
on5,16381.400640
|
||||
on1,16421.700960
|
||||
on12,18289.600640
|
||||
on11,18340.600640
|
||||
on3,22575.000320
|
||||
on9,52295.000320
|
|
|
@ -1,15 +0,0 @@
|
|||
#!/usr/bin/awk -f
|
||||
|
||||
BEGIN {
|
||||
RS="\n"
|
||||
FS=" "
|
||||
CSV_HEADER="node,wakets,duration,rcvat"
|
||||
CSV_DATA=""
|
||||
skip=1
|
||||
print(CSV_HEADER)
|
||||
}
|
||||
|
||||
/add a new hint/ {
|
||||
gsub("]","",$0)
|
||||
print($4","$10","$15","$2)
|
||||
}
|
|
@ -1,41 +0,0 @@
|
|||
node,wakets,duration,rcvat
|
||||
on4,8218.000000,180.000000,4398.000320
|
||||
on4,8218.000000,180.000000,4398.000640
|
||||
on6,11726.000000,180.000000,8258.000320
|
||||
on6,11726.000000,180.000000,8258.000640
|
||||
on2,16260.000000,180.000000,11906.000000
|
||||
on7,16260.000000,180.000000,12051.000000
|
||||
on5,16260.000000,180.000000,12200.800000
|
||||
on7,16260.000000,180.000000,15800.000000
|
||||
on1,16260.000000,180.000000,16208.200000
|
||||
on2,16260.000000,180.000000,16230.000000
|
||||
on1,16260.000000,180.000000,16230.000000
|
||||
on2,16260.000000,180.000000,16230.000000
|
||||
on1,18125.000000,180.000000,16300.000320
|
||||
on5,18125.000000,180.000000,16300.000640
|
||||
on7,18125.000000,180.000000,16300.000640
|
||||
on5,18125.000000,180.000000,16301.000320
|
||||
on7,18125.000000,180.000000,16301.000320
|
||||
on1,18125.000000,180.000000,16301.000960
|
||||
on5,18125.000000,180.000000,16301.000960
|
||||
on1,18125.000000,180.000000,16302.000320
|
||||
on5,18125.000000,180.000000,16302.000320
|
||||
on1,18125.000000,180.000000,16302.000320
|
||||
on5,18125.000000,180.000000,16302.000320
|
||||
on5,18125.000000,180.000000,16304.600320
|
||||
on5,18125.000000,180.000000,16304.600320
|
||||
on1,18125.000000,180.000000,16304.600320
|
||||
on1,18125.000000,180.000000,16341.400320
|
||||
on1,18125.000000,180.000000,16344.000320
|
||||
on1,18125.000000,180.000000,16381.400640
|
||||
on1,18125.000000,180.000000,16381.400640
|
||||
on12,22535.000000,180.000000,18249.000000
|
||||
on12,22535.000000,180.000000,18249.000000
|
||||
on12,22535.000000,180.000000,18249.000000
|
||||
on12,22535.000000,180.000000,18249.000320
|
||||
on11,22535.000000,180.000000,18300.000320
|
||||
on3,22535.000000,180.000000,19137.000000
|
||||
on3,22535.000000,180.000000,19139.600000
|
||||
on9,52255.000000,180.000000,50848.000000
|
||||
on9,52255.000000,180.000000,50848.000000
|
||||
on9,52255.000000,180.000000,50977.000000
|
|
|
@ -1,15 +0,0 @@
|
|||
#!/usr/bin/awk -f
|
||||
|
||||
BEGIN {
|
||||
RS="\n"
|
||||
FS=" "
|
||||
CSV_HEADER="node,ts"
|
||||
CSV_DATA=""
|
||||
skip=1
|
||||
print(CSV_HEADER)
|
||||
}
|
||||
|
||||
/forward a hint successfully/ {
|
||||
gsub("]","",$0)
|
||||
print($4","$2)
|
||||
}
|
|
@ -1,81 +0,0 @@
|
|||
node,ts
|
||||
on8,4398.000320
|
||||
on4,4398.000640
|
||||
on10,8258.000320
|
||||
on4,8258.000640
|
||||
on4,8260.600640
|
||||
on6,11906.000000
|
||||
on2,12051.000000
|
||||
on7,12200.800000
|
||||
on7,15800.000000
|
||||
on6,15800.000000
|
||||
on2,16208.200000
|
||||
on2,16230.000000
|
||||
on1,16230.000000
|
||||
on8,16230.000000
|
||||
on8,16230.000000
|
||||
on1,16260.000000
|
||||
on8,16260.000000
|
||||
on2,16300.000320
|
||||
on5,16300.000640
|
||||
on1,16301.000320
|
||||
on2,16301.000320
|
||||
on1,16301.000960
|
||||
on2,16302.000320
|
||||
on8,16302.000320
|
||||
on8,16302.000320
|
||||
on8,16302.000320
|
||||
on2,16302.000320
|
||||
on2,16302.000320
|
||||
on5,16304.600320
|
||||
on1,16304.600320
|
||||
on10,16304.600320
|
||||
on10,16304.600320
|
||||
on7,16341.400320
|
||||
on1,16344.000320
|
||||
on7,16344.000320
|
||||
on5,16381.400640
|
||||
on1,16381.400640
|
||||
on5,16381.400640
|
||||
on5,16399.000000
|
||||
on5,18126.000320
|
||||
on7,18126.000320
|
||||
on1,18249.000000
|
||||
on7,18249.000000
|
||||
on5,18249.000000
|
||||
on5,19137.000000
|
||||
on3,19139.600000
|
||||
on5,19139.600000
|
||||
on1,20363.000000
|
||||
on6,20363.000000
|
||||
on3,22575.000320
|
||||
on12,22575.000320
|
||||
on12,22588.000000
|
||||
on3,22596.000000
|
||||
on3,23433.000000
|
||||
on5,23433.000000
|
||||
on3,23485.000000
|
||||
on12,24844.000000
|
||||
on1,24844.000000
|
||||
on12,29192.000000
|
||||
on4,41511.000000
|
||||
on2,41511.000000
|
||||
on12,41511.000000
|
||||
on4,41645.000000
|
||||
on11,46980.000320
|
||||
on11,50686.000000
|
||||
on6,50686.000000
|
||||
on11,50848.000000
|
||||
on6,50848.000000
|
||||
on9,50977.000000
|
||||
on2,50977.000000
|
||||
on2,51128.000000
|
||||
on10,52054.000000
|
||||
on3,52054.000000
|
||||
on10,52126.000000
|
||||
on5,52234.000000
|
||||
on9,52295.000320
|
||||
on5,52295.000320
|
||||
on4,52295.000320
|
||||
on5,52295.000320
|
||||
on0,52318.000000
|
|
54358
results/scheduler/j
54358
results/scheduler/j
File diff suppressed because it is too large
Load diff
54364
results/scheduler/j2
54364
results/scheduler/j2
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -1,65 +0,0 @@
|
|||
library("tidyverse")
|
||||
library("gridExtra")
|
||||
|
||||
pdf(NULL)
|
||||
|
||||
# Load data
|
||||
data=read_csv("wakeup.csv")
|
||||
yorder=str_sort(unique(data$node),numeric=TRUE)
|
||||
data=data%>%mutate(node=factor(node,levels=yorder))
|
||||
|
||||
# Load hint
|
||||
hint=read_csv("hint.csv")
|
||||
|
||||
# Load hint forward
|
||||
hint_fw=read_csv("hint_fw.csv")
|
||||
|
||||
# Load data
|
||||
data_rcv=read_csv("data.csv")
|
||||
|
||||
|
||||
# Configure axis
|
||||
ts_range=seq(0, 24)*3600
|
||||
ts_labels=ts_range/3600
|
||||
|
||||
# Plot
|
||||
p1=ggplot(data,aes(x=wakets,y=node)) + geom_hline(aes(yintercept=node),color="grey",size=3)
|
||||
if(NROW(hint)!=0){
|
||||
p1=p1+geom_vline(data=hint,aes(xintercept=wakets,color="Hint slots"),show.legend = FALSE,linetype="longdash",size=0.3)
|
||||
}
|
||||
p1=p1+geom_linerange(aes(xmin=wakets,xmax=sleepts),size=10)
|
||||
if(NROW(hint)!=0){
|
||||
p1=p1+geom_linerange(data=hint,aes(xmin=wakets,xmax=wakets+duration,color="Hint slots"),size=10)
|
||||
}
|
||||
if(NROW(data_rcv)!=0){
|
||||
p1=p1+geom_point(data=data_rcv,aes(x=ts,color="Data received"),shape=18,size=4)
|
||||
}
|
||||
if(NROW(hint)!=0){
|
||||
p1=p1+geom_point(data=hint,aes(x=rcvat,color="Hint received"),shape=18,size=3)
|
||||
}
|
||||
if(NROW(hint_fw)!=0){
|
||||
p1=p1+geom_point(data=hint_fw,aes(x=ts,color="Hint Forwarded"),shape=18,size=2)
|
||||
}
|
||||
p1=p1+
|
||||
xlab("Time (hours)")+ylab("Node")+
|
||||
scale_x_continuous(breaks = ts_range, labels=ts_labels,expand = c(0, 0))+
|
||||
scale_colour_manual(name="Legend",values=c("Hint slots"="blue","Data received"="red","Hint received"="green","Hint Forwarded"="purple"))+
|
||||
theme(panel.grid.major.x = element_line(size = 1.2),panel.grid.major.y = element_blank(),panel.grid.minor = element_blank())
|
||||
|
||||
stats=data%>%group_by(node)%>%summarise(n=n())%>%mutate(nwakeup=n-24)
|
||||
|
||||
p2=ggplot(stats,aes(x=node,y=nwakeup))+
|
||||
geom_bar(stat="identity")+xlab("Node")+ylab("Extra wake up count")+ylim(0,10)+
|
||||
scale_y_continuous(breaks = seq(0,10))
|
||||
|
||||
stats2=tibble(
|
||||
metric=c("Hint Received","Hint Forwarded","Data Received"),
|
||||
count=c(NROW(hint),NROW(hint_fw),NROW(data_rcv))
|
||||
)
|
||||
|
||||
p3=ggplot(stats2,aes(x=metric,y=count))+
|
||||
geom_bar(stat="identity")+xlab("Metric")+ylab("Count")+ylim(0,20)
|
||||
|
||||
|
||||
p=grid.arrange(p1,p2,p3,heights=c(10,5,5))
|
||||
ggsave(plot=p,"schedule.png",dpi=300,width = 10,height=10)
|
|
@ -1,43 +0,0 @@
|
|||
#!/usr/bin/awk -f
|
||||
|
||||
BEGIN {
|
||||
RS="\n"
|
||||
FS=" "
|
||||
CSV_HEADER="node,wakets,sleepts,duration"
|
||||
CSV_DATA=""
|
||||
skip=1
|
||||
}
|
||||
|
||||
/wakes up/{
|
||||
gsub("]","",$0)
|
||||
wakets[$4][length(wakets[$4])+1]=$2
|
||||
skip=0
|
||||
}
|
||||
|
||||
/is sleeping/{
|
||||
gsub("]","",$0)
|
||||
if(!skip){
|
||||
sleepts[$4][length(sleepts[$4])+1]=$2
|
||||
}
|
||||
}
|
||||
|
||||
/LOG2PARSE/{
|
||||
gsub("]","",$0)
|
||||
endts[$6][length(endts[$6])+1]=$2
|
||||
}
|
||||
|
||||
END {
|
||||
print(CSV_HEADER);
|
||||
for(node in wakets){
|
||||
for(j=1;j<=length(wakets[node]);j++){
|
||||
start=wakets[node][j]
|
||||
end=endts[node][1]
|
||||
# Pay attention, the last sleep report for the last wake up is not printed
|
||||
# so use the printed sleep only if available (otherwise we use the en of the simulation)
|
||||
if(j<=length(sleepts[node])){
|
||||
end=sleepts[node][j]
|
||||
}
|
||||
print(node","start","end","end-start)
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,324 +0,0 @@
|
|||
node,wakets,sleepts,duration
|
||||
on2,2988.000000,3168.000000,180
|
||||
on2,5124.000000,5304.000000,180
|
||||
on2,7307.000000,7487.000000,180
|
||||
on2,11906.000000,12086.000000,180
|
||||
on2,16052.000000,16232.000000,180
|
||||
on2,16260.000000,16440.000000,180
|
||||
on2,18629.000000,18809.000000,180
|
||||
on2,24126.000000,24306.000000,180
|
||||
on2,27021.000000,27201.000000,180
|
||||
on2,30940.000000,31120.000000,180
|
||||
on2,33021.000000,33201.000000,180
|
||||
on2,38381.000000,38561.000000,180
|
||||
on2,41334.000000,41514.000000,180
|
||||
on2,46009.000000,46189.000000,180
|
||||
on2,49004.000000,49184.000000,180
|
||||
on2,50976.000000,51156.000000,180
|
||||
on2,56335.000000,56515.000000,180
|
||||
on2,59641.000000,59821.000000,180
|
||||
on2,63959.000000,64139.000000,180
|
||||
on2,67516.000000,67696.000000,180
|
||||
on2,69194.000000,69374.000000,180
|
||||
on2,74457.000000,74637.000000,180
|
||||
on2,75623.000000,75803.000000,180
|
||||
on2,80256.000000,80436.000000,180
|
||||
on2,85098.000000,85278.000000,180
|
||||
on10,1202.000000,1382.000000,180
|
||||
on10,3963.000000,4143.000000,180
|
||||
on10,8211.000000,8391.000000,180
|
||||
on10,12692.000000,12872.000000,180
|
||||
on10,16304.000000,16484.000000,180
|
||||
on10,20652.000000,20832.000000,180
|
||||
on10,22800.000000,22980.000000,180
|
||||
on10,28551.000000,28731.000000,180
|
||||
on10,29999.000000,30179.000000,180
|
||||
on10,35257.000000,35437.000000,180
|
||||
on10,39292.000000,39472.000000,180
|
||||
on10,41152.000000,41332.000000,180
|
||||
on10,43224.000000,43404.000000,180
|
||||
on10,47156.000000,47336.000000,180
|
||||
on10,51981.000000,52161.000000,180
|
||||
on10,55236.000000,55416.000000,180
|
||||
on10,60536.000000,60716.000000,180
|
||||
on10,62364.000000,62544.000000,180
|
||||
on10,66865.000000,67045.000000,180
|
||||
on10,68970.000000,69150.000000,180
|
||||
on10,74632.000000,74812.000000,180
|
||||
on10,75899.000000,76079.000000,180
|
||||
on10,79855.000000,80035.000000,180
|
||||
on10,85242.000000,85422.000000,180
|
||||
on3,2462.000000,2642.000000,180
|
||||
on3,3879.000000,4059.000000,180
|
||||
on3,8872.000000,9052.000000,180
|
||||
on3,12460.000000,12640.000000,180
|
||||
on3,14753.000000,14933.000000,180
|
||||
on3,19080.000000,19260.000000,180
|
||||
on3,22535.000000,22715.000000,180
|
||||
on3,23366.000000,23546.000000,180
|
||||
on3,28542.000000,28722.000000,180
|
||||
on3,29192.000000,29372.000000,180
|
||||
on3,35481.000000,35661.000000,180
|
||||
on3,37027.000000,37207.000000,180
|
||||
on3,41644.000000,41824.000000,180
|
||||
on3,43489.000000,43669.000000,180
|
||||
on3,48140.000000,48320.000000,180
|
||||
on3,52052.000000,52232.000000,180
|
||||
on3,56430.000000,56610.000000,180
|
||||
on3,59561.000000,59741.000000,180
|
||||
on3,61812.000000,61992.000000,180
|
||||
on3,65543.000000,65723.000000,180
|
||||
on3,69750.000000,69930.000000,180
|
||||
on3,72603.000000,72783.000000,180
|
||||
on3,78127.000000,78307.000000,180
|
||||
on3,80672.000000,80852.000000,180
|
||||
on3,85444.000000,85624.000000,180
|
||||
on11,610.000000,790.000000,180
|
||||
on11,3701.000000,3881.000000,180
|
||||
on11,7941.000000,8121.000000,180
|
||||
on11,11372.000000,11552.000000,180
|
||||
on11,14657.000000,14837.000000,180
|
||||
on11,18300.000000,18480.000000,180
|
||||
on11,22535.000000,22715.000000,180
|
||||
on11,23929.000000,24109.000000,180
|
||||
on11,27867.000000,28047.000000,180
|
||||
on11,29463.000000,29643.000000,180
|
||||
on11,35740.000000,35920.000000,180
|
||||
on11,37138.000000,37318.000000,180
|
||||
on11,39954.000000,40134.000000,180
|
||||
on11,45772.000000,45952.000000,180
|
||||
on11,46925.000000,47105.000000,180
|
||||
on11,50685.000000,50865.000000,180
|
||||
on11,55558.000000,55738.000000,180
|
||||
on11,60582.000000,60762.000000,180
|
||||
on11,62564.000000,62744.000000,180
|
||||
on11,67911.000000,68091.000000,180
|
||||
on11,69193.000000,69373.000000,180
|
||||
on11,73720.000000,73900.000000,180
|
||||
on11,78079.000000,78259.000000,180
|
||||
on11,81229.000000,81409.000000,180
|
||||
on11,84036.000000,84216.000000,180
|
||||
on4,3074.000000,3254.000000,180
|
||||
on4,4368.000000,4548.000000,180
|
||||
on4,8218.000000,8398.000000,180
|
||||
on4,8426.000000,8606.000000,180
|
||||
on4,12910.000000,13090.000000,180
|
||||
on4,16399.000000,16579.000000,180
|
||||
on4,18069.000000,18249.000000,180
|
||||
on4,22587.000000,22767.000000,180
|
||||
on4,26241.000000,26421.000000,180
|
||||
on4,30356.000000,30536.000000,180
|
||||
on4,32847.000000,33027.000000,180
|
||||
on4,36488.000000,36668.000000,180
|
||||
on4,41510.000000,41690.000000,180
|
||||
on4,45935.000000,46115.000000,180
|
||||
on4,46841.000000,47021.000000,180
|
||||
on4,52231.000000,52411.000000,180
|
||||
on4,54914.000000,55094.000000,180
|
||||
on4,60723.000000,60903.000000,180
|
||||
on4,61845.000000,62025.000000,180
|
||||
on4,65545.000000,65725.000000,180
|
||||
on4,69599.000000,69779.000000,180
|
||||
on4,73986.000000,74166.000000,180
|
||||
on4,77997.000000,78177.000000,180
|
||||
on4,80616.000000,80796.000000,180
|
||||
on4,83326.000000,83506.000000,180
|
||||
on12,222.000000,402.000000,180
|
||||
on12,5482.000000,5662.000000,180
|
||||
on12,10214.000000,10394.000000,180
|
||||
on12,11441.000000,11621.000000,180
|
||||
on12,17789.000000,17969.000000,180
|
||||
on12,18249.000000,18429.000000,180
|
||||
on12,22535.000000,22715.000000,180
|
||||
on12,24684.000000,24864.000000,180
|
||||
on12,25778.000000,25958.000000,180
|
||||
on12,29150.000000,29330.000000,180
|
||||
on12,34012.000000,34192.000000,180
|
||||
on12,38358.000000,38538.000000,180
|
||||
on12,41415.000000,41595.000000,180
|
||||
on12,45112.000000,45292.000000,180
|
||||
on12,48066.000000,48246.000000,180
|
||||
on12,51461.000000,51641.000000,180
|
||||
on12,56575.000000,56755.000000,180
|
||||
on12,59994.000000,60174.000000,180
|
||||
on12,64607.000000,64787.000000,180
|
||||
on12,65517.000000,65697.000000,180
|
||||
on12,71153.000000,71333.000000,180
|
||||
on12,72112.000000,72292.000000,180
|
||||
on12,76602.000000,76782.000000,180
|
||||
on12,80090.000000,80270.000000,180
|
||||
on12,83681.000000,83861.000000,180
|
||||
on5,796.000000,976.000000,180
|
||||
on5,6968.000000,7148.000000,180
|
||||
on5,10284.000000,10464.000000,180
|
||||
on5,12200.000000,12380.000000,180
|
||||
on5,16260.000000,16440.000000,180
|
||||
on5,16874.000000,17054.000000,180
|
||||
on5,18125.000000,18305.000000,180
|
||||
on5,19136.000000,19316.000000,180
|
||||
on5,23431.000000,23611.000000,180
|
||||
on5,28535.000000,28715.000000,180
|
||||
on5,31912.000000,32092.000000,180
|
||||
on5,33244.000000,33424.000000,180
|
||||
on5,39233.000000,39413.000000,180
|
||||
on5,42498.000000,42678.000000,180
|
||||
on5,44113.000000,44293.000000,180
|
||||
on5,48807.000000,48987.000000,180
|
||||
on5,52126.000000,52306.000000,180
|
||||
on5,56470.000000,56650.000000,180
|
||||
on5,57841.000000,58021.000000,180
|
||||
on5,63414.000000,63594.000000,180
|
||||
on5,66967.000000,67147.000000,180
|
||||
on5,71377.000000,71557.000000,180
|
||||
on5,72043.000000,72223.000000,180
|
||||
on5,76177.000000,76357.000000,180
|
||||
on5,80878.000000,81058.000000,180
|
||||
on5,85966.000000,86146.000000,180
|
||||
on6,2430.000000,2610.000000,180
|
||||
on6,6024.000000,6204.000000,180
|
||||
on6,8144.000000,8324.000000,180
|
||||
on6,11726.000000,11975.000000,249
|
||||
on6,15800.000000,15980.000000,180
|
||||
on6,20361.000000,20541.000000,180
|
||||
on6,24330.000000,24510.000000,180
|
||||
on6,27397.000000,27577.000000,180
|
||||
on6,28895.000000,29075.000000,180
|
||||
on6,32580.000000,32760.000000,180
|
||||
on6,37384.000000,37564.000000,180
|
||||
on6,39956.000000,40136.000000,180
|
||||
on6,45724.000000,45904.000000,180
|
||||
on6,47802.000000,47982.000000,180
|
||||
on6,50671.000000,50851.000000,180
|
||||
on6,56215.000000,56395.000000,180
|
||||
on6,59447.000000,59627.000000,180
|
||||
on6,61283.000000,61463.000000,180
|
||||
on6,67701.000000,67881.000000,180
|
||||
on6,68947.000000,69127.000000,180
|
||||
on6,74090.000000,74270.000000,180
|
||||
on6,76806.000000,76986.000000,180
|
||||
on6,82217.000000,82397.000000,180
|
||||
on6,82919.000000,83099.000000,180
|
||||
on7,0.000000,180.000000,180
|
||||
on7,6571.000000,6751.000000,180
|
||||
on7,10296.000000,10476.000000,180
|
||||
on7,12051.000000,12231.000000,180
|
||||
on7,15735.000000,15915.000000,180
|
||||
on7,16260.000000,16440.000000,180
|
||||
on7,18125.000000,18305.000000,180
|
||||
on7,19353.000000,19533.000000,180
|
||||
on7,22596.000000,22776.000000,180
|
||||
on7,25545.000000,25725.000000,180
|
||||
on7,30364.000000,30544.000000,180
|
||||
on7,35548.000000,35728.000000,180
|
||||
on7,37340.000000,37520.000000,180
|
||||
on7,42565.000000,42745.000000,180
|
||||
on7,46496.000000,46676.000000,180
|
||||
on7,48657.000000,48837.000000,180
|
||||
on7,53349.000000,53529.000000,180
|
||||
on7,57391.000000,57571.000000,180
|
||||
on7,59638.000000,59818.000000,180
|
||||
on7,63320.000000,63500.000000,180
|
||||
on7,65127.000000,65307.000000,180
|
||||
on7,69541.000000,69721.000000,180
|
||||
on7,75122.000000,75302.000000,180
|
||||
on7,76198.000000,76378.000000,180
|
||||
on7,80344.000000,80524.000000,180
|
||||
on7,84348.000000,84528.000000,180
|
||||
on8,1889.000000,2069.000000,180
|
||||
on8,4224.000000,4404.000000,180
|
||||
on8,10504.000000,10684.000000,180
|
||||
on8,12566.000000,12746.000000,180
|
||||
on8,16230.000000,16410.000000,180
|
||||
on8,20900.000000,21080.000000,180
|
||||
on8,23485.000000,23665.000000,180
|
||||
on8,28238.000000,28418.000000,180
|
||||
on8,31251.000000,31431.000000,180
|
||||
on8,35168.000000,35348.000000,180
|
||||
on8,36868.000000,37048.000000,180
|
||||
on8,39965.000000,40145.000000,180
|
||||
on8,45109.000000,45289.000000,180
|
||||
on8,49872.000000,50052.000000,180
|
||||
on8,52318.000000,52498.000000,180
|
||||
on8,54052.000000,54232.000000,180
|
||||
on8,60400.000000,60580.000000,180
|
||||
on8,62246.000000,62426.000000,180
|
||||
on8,65604.000000,65784.000000,180
|
||||
on8,68862.000000,69042.000000,180
|
||||
on8,74903.000000,75083.000000,180
|
||||
on8,77140.000000,77320.000000,180
|
||||
on8,79633.000000,79813.000000,180
|
||||
on8,85528.000000,85708.000000,180
|
||||
on9,239.000000,419.000000,180
|
||||
on9,5568.000000,5748.000000,180
|
||||
on9,8857.000000,9037.000000,180
|
||||
on9,14162.000000,14342.000000,180
|
||||
on9,14753.000000,14933.000000,180
|
||||
on9,20801.000000,20981.000000,180
|
||||
on9,24297.000000,24477.000000,180
|
||||
on9,27442.000000,27622.000000,180
|
||||
on9,30012.000000,30192.000000,180
|
||||
on9,34980.000000,35160.000000,180
|
||||
on9,37795.000000,37975.000000,180
|
||||
on9,40429.000000,40609.000000,180
|
||||
on9,46468.000000,46648.000000,180
|
||||
on9,48268.000000,48448.000000,180
|
||||
on9,50847.000000,51027.000000,180
|
||||
on9,52255.000000,52435.000000,180
|
||||
on9,54085.000000,54265.000000,180
|
||||
on9,59623.000000,59803.000000,180
|
||||
on9,63723.000000,63903.000000,180
|
||||
on9,66458.000000,66638.000000,180
|
||||
on9,70119.000000,70299.000000,180
|
||||
on9,75383.000000,75563.000000,180
|
||||
on9,75756.000000,75936.000000,180
|
||||
on9,80972.000000,81152.000000,180
|
||||
on9,83349.000000,83529.000000,180
|
||||
on0,2668.000000,2848.000000,180
|
||||
on0,4358.000000,4538.000000,180
|
||||
on0,8218.000000,8398.000000,180
|
||||
on0,11726.000000,11906.000000,180
|
||||
on0,16260.000000,16440.000000,180
|
||||
on0,18125.000000,18340.600640,215.601
|
||||
on0,22535.000000,22715.000000,180
|
||||
on0,25547.000000,25727.000000,180
|
||||
on0,29100.000000,29280.000000,180
|
||||
on0,34755.000000,34935.000000,180
|
||||
on0,36503.000000,36683.000000,180
|
||||
on0,41983.000000,42163.000000,180
|
||||
on0,43942.000000,44122.000000,180
|
||||
on0,46979.000000,47159.000000,180
|
||||
on0,52255.000000,52435.000000,180
|
||||
on0,55038.000000,55218.000000,180
|
||||
on0,60722.000000,60902.000000,180
|
||||
on0,64114.000000,64294.000000,180
|
||||
on0,68124.000000,68304.000000,180
|
||||
on0,68400.000000,68580.000000,180
|
||||
on0,73539.000000,73719.000000,180
|
||||
on0,77940.000000,78120.000000,180
|
||||
on0,79722.000000,79902.000000,180
|
||||
on0,84219.000000,84399.000000,180
|
||||
on1,169.000000,349.000000,180
|
||||
on1,3903.000000,4083.000000,180
|
||||
on1,7508.000000,7688.000000,180
|
||||
on1,11360.000000,11540.000000,180
|
||||
on1,16207.000000,16421.700960,214.701
|
||||
on1,18125.000000,18305.000000,180
|
||||
on1,20188.000000,20368.000000,180
|
||||
on1,24844.000000,25024.000000,180
|
||||
on1,27462.000000,27642.000000,180
|
||||
on1,31747.000000,31927.000000,180
|
||||
on1,34449.000000,34629.000000,180
|
||||
on1,36975.000000,37155.000000,180
|
||||
on1,42194.000000,42374.000000,180
|
||||
on1,45374.000000,45554.000000,180
|
||||
on1,48711.000000,48891.000000,180
|
||||
on1,51128.000000,51308.000000,180
|
||||
on1,56474.000000,56654.000000,180
|
||||
on1,59653.000000,59833.000000,180
|
||||
on1,62431.000000,62611.000000,180
|
||||
on1,67444.000000,67624.000000,180
|
||||
on1,71195.000000,71375.000000,180
|
||||
on1,74618.000000,74798.000000,180
|
||||
on1,77887.000000,78067.000000,180
|
||||
on1,80821.000000,81001.000000,180
|
||||
on1,85119.000000,85299.000000,180
|
|
41614
results/strategy_combined.csv
Normal file
41614
results/strategy_combined.csv
Normal file
File diff suppressed because it is too large
Load diff
41614
results/strategy_farhint.csv
Normal file
41614
results/strategy_farhint.csv
Normal file
File diff suppressed because it is too large
Load diff
41614
results/strategy_sor.csv
Normal file
41614
results/strategy_sor.csv
Normal file
File diff suppressed because it is too large
Load diff
41614
results/strategy_uor.csv
Normal file
41614
results/strategy_uor.csv
Normal file
File diff suppressed because it is too large
Load diff
|
@ -1,33 +0,0 @@
|
|||
|
||||
|simkey |wireless | wakeupfor| sd| energy|
|
||||
|:---------------|:--------|---------:|---------:|--------:|
|
||||
|baseline |lora | 60| 12.24495| 583.9238|
|
||||
|extended |lora | 60| 115.45964| 642.2366|
|
||||
|hint |lora | 60| 20.53987| 589.3509|
|
||||
|hintandextended |lora | 60| 141.76021| 677.3258|
|
||||
|
||||
|
||||
|simkey |wireless | wakeupfor| sd| energy|
|
||||
|:---------------|:--------|---------:|--------:|--------:|
|
||||
|baseline |nbiot | 60| 40.62986| 602.7992|
|
||||
|extended |nbiot | 60| 49.77154| 604.1915|
|
||||
|hint |nbiot | 60| 83.54788| 642.8335|
|
||||
|hintandextended |nbiot | 60| 75.21984| 652.5453|
|
||||
|
||||
|
||||
|simkey |wireless | wakeupfor| sd| energy|
|
||||
|:---------------|:--------|---------:|---------:|--------:|
|
||||
|baseline |lora | 180| 77.43296| 1785.567|
|
||||
|extended |lora | 180| 119.64561| 1800.206|
|
||||
|hint |lora | 180| 215.10178| 2099.966|
|
||||
|hintandextended |lora | 180| 153.73928| 1953.732|
|
||||
|
||||
|
||||
|simkey |wireless | wakeupfor| sd| energy|
|
||||
|:---------------|:--------|---------:|---------:|--------:|
|
||||
|baseline |nbiot | 180| 83.57518| 1782.950|
|
||||
|extended |nbiot | 180| 75.65543| 1770.256|
|
||||
|hint |nbiot | 180| 201.06420| 2030.174|
|
||||
|hintandextended |nbiot | 180| 202.85622| 2021.412|
|
||||
|
||||
|
|
@ -1,36 +0,0 @@
|
|||
|
||||
\begin{table*}
|
||||
\centering
|
||||
\caption{Simulation results using the shutdown on received strategy. Comparison between our previous results\cite{prev} are in color. Green indicates improvements, red shows regressions and blue indicates no change.}
|
||||
\begin{tabular}{crlllllll}
|
||||
\toprule
|
||||
\multirow{2}{*}{Uptime} & \multirow{2}{*}{Scenario} & \multirow{2}{*}{$\# Succ_p$} & \multicolumn{2}{c}{Energy Consumption (J)} & \multicolumn{2}{c}{$eOvhd(p)$ (\%)} & \multicolumn{2}{c}{$eff(p)$ (J)}\\
|
||||
\cmidrule(lr){4-5}\cmidrule(lr){6-7}\cmidrule(lr){8-9}
|
||||
&&&Sender & Receiver&Sender & Receiver&Sender & Receiver\\
|
||||
\midrule
|
||||
\multicolumn{9}{c}{LoRa}\\
|
||||
\midrule
|
||||
\multirow{4}{*}{60}&baseline&\makebox[0.5cm]{\hfill 0}~{\color{blue!60}\textbf{=}}&\makebox[0.8cm]{\hfill 764.49}~{\color{red!60}\textbf{+147.12}}&\makebox[0.8cm]{\hfill 578.68}~{\color{green!60}\textbf{-2.45}}&\makebox[0.7cm]{\hfill 0}~{\color{blue!60}\textbf{=}}&\makebox[0.7cm]{\hfill 0}~{\color{blue!60}\textbf{=}}&\makebox[0.65cm]{\hfill --}&\makebox[0.65cm]{\hfill --}\\
|
||||
&extended&\makebox[0.5cm]{\hfill 22.89}~{\color{green!60}\textbf{+16.87}}&\makebox[0.8cm]{\hfill 2115.26}~{\color{red!60}\textbf{+1110.9}}&\makebox[0.8cm]{\hfill 593.32}~{\color{green!60}\textbf{-18.74}}&\makebox[0.7cm]{\hfill +176.69}~{\color{red!60}\textbf{+114.01}}&\makebox[0.7cm]{\hfill +2.53}~{\color{green!60}\textbf{-2.79}}&\makebox[0.65cm]{\hfill 92.43}~{\color{green!60}\textbf{-74.41}}&\makebox[0.65cm]{\hfill 25.93}~{\color{green!60}\textbf{-75.74}}\\
|
||||
&hint&\makebox[0.5cm]{\hfill 0}~{\color{blue!60}\textbf{=}}&\makebox[0.8cm]{\hfill 788.4}~{\color{red!60}\textbf{+159.66}}&\makebox[0.8cm]{\hfill 704.39}~{\color{red!60}\textbf{+118.32}}&\makebox[0.7cm]{\hfill +3.13}~{\color{red!60}\textbf{+1.29}}&\makebox[0.7cm]{\hfill +21.72}~{\color{red!60}\textbf{+20.87}}&\makebox[0.65cm]{\hfill --}&\makebox[0.65cm]{\hfill --}\\
|
||||
&hintandextended&\makebox[0.5cm]{\hfill 23.42}~{\color{green!60}\textbf{+16.88}}&\makebox[0.8cm]{\hfill 2134.2}~{\color{red!60}\textbf{+1098.44}}&\makebox[0.8cm]{\hfill 608.27}~{\color{green!60}\textbf{-11.35}}&\makebox[0.7cm]{\hfill +179.17}~{\color{red!60}\textbf{+111.4}}&\makebox[0.7cm]{\hfill +5.11}~{\color{green!60}\textbf{-1.51}}&\makebox[0.65cm]{\hfill 91.11}~{\color{green!60}\textbf{-67.14}}&\makebox[0.65cm]{\hfill 25.97}~{\color{green!60}\textbf{-68.7}}\\
|
||||
\midrule
|
||||
\multirow{4}{*}{180}&baseline&\makebox[0.5cm]{\hfill 6.36}~{\color{green!60}\textbf{+4.18}}&\makebox[0.8cm]{\hfill 2412.24}~{\color{red!60}\textbf{+379.54}}&\makebox[0.8cm]{\hfill 1738.06}~{\color{green!60}\textbf{-26.95}}&\makebox[0.7cm]{\hfill 0}~{\color{blue!60}\textbf{=}}&\makebox[0.7cm]{\hfill 0}~{\color{blue!60}\textbf{=}}&\makebox[0.65cm]{\hfill 379.58}~{\color{green!60}\textbf{-552.85}}&\makebox[0.65cm]{\hfill 273.49}~{\color{green!60}\textbf{-536.14}}\\
|
||||
&extended&\makebox[0.5cm]{\hfill 46.8}~{\color{green!60}\textbf{+35.94}}&\makebox[0.8cm]{\hfill 4214.6}~{\color{red!60}\textbf{+2013.01}}&\makebox[0.8cm]{\hfill 1749.29}~{\color{green!60}\textbf{-17.71}}&\makebox[0.7cm]{\hfill +74.72}~{\color{red!60}\textbf{+66.41}}&\makebox[0.7cm]{\hfill +0.65}~{\color{red!60}\textbf{+0.53}}&\makebox[0.65cm]{\hfill 90.06}~{\color{green!60}\textbf{-112.76}}&\makebox[0.65cm]{\hfill 37.38}~{\color{green!60}\textbf{-125.4}}\\
|
||||
&hint&\makebox[0.5cm]{\hfill 22.78}~{\color{green!60}\textbf{+11.61}}&\makebox[0.8cm]{\hfill 2418.8}~{\color{red!60}\textbf{+287.12}}&\makebox[0.8cm]{\hfill 3156.56}~{\color{red!60}\textbf{+1082.4}}&\makebox[0.7cm]{\hfill +0.27}~{\color{green!60}\textbf{-4.6}}&\makebox[0.7cm]{\hfill +81.61}~{\color{red!60}\textbf{+64.1}}&\makebox[0.65cm]{\hfill 106.16}~{\color{green!60}\textbf{-84.6}}&\makebox[0.65cm]{\hfill 138.54}~{\color{green!60}\textbf{-47.07}}\\
|
||||
&hintandextended&\makebox[0.5cm]{\hfill 47.96}~{\color{green!60}\textbf{+36.07}}&\makebox[0.8cm]{\hfill 4297.84}~{\color{red!60}\textbf{+2038.75}}&\makebox[0.8cm]{\hfill 2954.54}~{\color{red!60}\textbf{+1054.84}}&\makebox[0.7cm]{\hfill +78.17}~{\color{red!60}\textbf{+67.03}}&\makebox[0.7cm]{\hfill +69.99}~{\color{red!60}\textbf{+62.36}}&\makebox[0.65cm]{\hfill 89.61}~{\color{green!60}\textbf{-100.39}}&\makebox[0.65cm]{\hfill 61.6}~{\color{green!60}\textbf{-98.17}}\\
|
||||
\midrule
|
||||
\multicolumn{9}{c}{NbIoT}\\
|
||||
\midrule
|
||||
\multirow{4}{*}{60}&baseline&\makebox[0.5cm]{\hfill 11.51}~{\color{green!60}\textbf{+9.06}}&\makebox[0.8cm]{\hfill 1309.61}~{\color{red!60}\textbf{+594.82}}&\makebox[0.8cm]{\hfill 586.8}~{\color{green!60}\textbf{-6.72}}&\makebox[0.7cm]{\hfill 0}~{\color{blue!60}\textbf{=}}&\makebox[0.7cm]{\hfill 0}~{\color{blue!60}\textbf{=}}&\makebox[0.65cm]{\hfill 113.83}~{\color{green!60}\textbf{-178.52}}&\makebox[0.65cm]{\hfill 51}~{\color{green!60}\textbf{-191.74}}\\
|
||||
&extended&\makebox[0.5cm]{\hfill 38.19}~{\color{green!60}\textbf{+31.81}}&\makebox[0.8cm]{\hfill 1723.51}~{\color{red!60}\textbf{+962.68}}&\makebox[0.8cm]{\hfill 587.42}~{\color{green!60}\textbf{-3.86}}&\makebox[0.7cm]{\hfill +31.61}~{\color{red!60}\textbf{+25.16}}&\makebox[0.7cm]{\hfill +0.11}~{\color{red!60}\textbf{+0.48}}&\makebox[0.65cm]{\hfill 45.14}~{\color{green!60}\textbf{-74.12}}&\makebox[0.65cm]{\hfill 15.38}~{\color{green!60}\textbf{-77.29}}\\
|
||||
&hint&\makebox[0.5cm]{\hfill 22.78}~{\color{green!60}\textbf{+17.98}}&\makebox[0.8cm]{\hfill 1500.26}~{\color{red!60}\textbf{+728.4}}&\makebox[0.8cm]{\hfill 1086.98}~{\color{red!60}\textbf{+472.17}}&\makebox[0.7cm]{\hfill +14.56}~{\color{red!60}\textbf{+6.57}}&\makebox[0.7cm]{\hfill +85.24}~{\color{red!60}\textbf{+81.65}}&\makebox[0.65cm]{\hfill 65.86}~{\color{green!60}\textbf{-94.78}}&\makebox[0.65cm]{\hfill 47.72}~{\color{green!60}\textbf{-80.24}}\\
|
||||
&hintandextended&\makebox[0.5cm]{\hfill 47.65}~{\color{green!60}\textbf{+40.06}}&\makebox[0.8cm]{\hfill 2006.18}~{\color{red!60}\textbf{+1215.33}}&\makebox[0.8cm]{\hfill 1007.15}~{\color{red!60}\textbf{+396.96}}&\makebox[0.7cm]{\hfill +53.19}~{\color{red!60}\textbf{+42.55}}&\makebox[0.7cm]{\hfill +71.64}~{\color{red!60}\textbf{+68.83}}&\makebox[0.65cm]{\hfill 42.1}~{\color{green!60}\textbf{-62.09}}&\makebox[0.65cm]{\hfill 21.14}~{\color{green!60}\textbf{-59.26}}\\
|
||||
\midrule
|
||||
\multirow{4}{*}{180}&baseline&\makebox[0.5cm]{\hfill 71.2}~{\color{green!60}\textbf{+60.84}}&\makebox[0.8cm]{\hfill 3974.87}~{\color{red!60}\textbf{+1940.21}}&\makebox[0.8cm]{\hfill 1763.54}~{\color{green!60}\textbf{-1.57}}&\makebox[0.7cm]{\hfill 0}~{\color{blue!60}\textbf{=}}&\makebox[0.7cm]{\hfill 0}~{\color{blue!60}\textbf{=}}&\makebox[0.65cm]{\hfill 55.82}~{\color{green!60}\textbf{-140.48}}&\makebox[0.65cm]{\hfill 24.77}~{\color{green!60}\textbf{-145.53}}\\
|
||||
&extended&\makebox[0.5cm]{\hfill 84.7}~{\color{green!60}\textbf{+73.59}}&\makebox[0.8cm]{\hfill 4045.23}~{\color{red!60}\textbf{+2019.02}}&\makebox[0.8cm]{\hfill 1751.24}~{\color{green!60}\textbf{-1.59}}&\makebox[0.7cm]{\hfill +1.77}~{\color{red!60}\textbf{+2.19}}&\makebox[0.7cm]{\hfill -0.7}~{\color{blue!60}\textbf{=}}&\makebox[0.65cm]{\hfill 47.76}~{\color{green!60}\textbf{-134.54}}&\makebox[0.65cm]{\hfill 20.67}~{\color{green!60}\textbf{-137.02}}\\
|
||||
&hint&\makebox[0.5cm]{\hfill 95.26}~{\color{green!60}\textbf{+83.42}}&\makebox[0.8cm]{\hfill 4520.49}~{\color{red!60}\textbf{+2466.7}}&\makebox[0.8cm]{\hfill 2682.63}~{\color{red!60}\textbf{+614.38}}&\makebox[0.7cm]{\hfill +13.73}~{\color{red!60}\textbf{+12.79}}&\makebox[0.7cm]{\hfill +52.12}~{\color{red!60}\textbf{+34.94}}&\makebox[0.65cm]{\hfill 47.45}~{\color{green!60}\textbf{-125.93}}&\makebox[0.65cm]{\hfill 28.16}~{\color{green!60}\textbf{-146.45}}\\
|
||||
&hintandextended&\makebox[0.5cm]{\hfill 99}~{\color{green!60}\textbf{+87.1}}&\makebox[0.8cm]{\hfill 4459.94}~{\color{red!60}\textbf{+2417.39}}&\makebox[0.8cm]{\hfill 2498.02}~{\color{red!60}\textbf{+458.3}}&\makebox[0.7cm]{\hfill +12.2}~{\color{red!60}\textbf{+11.82}}&\makebox[0.7cm]{\hfill +41.65}~{\color{red!60}\textbf{+26.09}}&\makebox[0.65cm]{\hfill 45.05}~{\color{green!60}\textbf{-126.52}}&\makebox[0.65cm]{\hfill 25.23}~{\color{green!60}\textbf{-146.1}}\\
|
||||
\bottomrule
|
||||
\end{tabular}
|
||||
\end{table*}
|
Loading…
Add table
Add a link
Reference in a new issue