diffLoadLevel9_Overall <- loadLevel9_Marginal$OverallEnergy - loadLevel9_Overall$OverallEnergy
diffLoadLevel10_Overall <- loadLevel10_Marginal$OverallEnergy - loadLevel10_Overall$OverallEnergy
diffLoadLevel_Overall = list(diffLoadLevel0_Overall,diffLoadLevel1_Overall,diffLoadLevel2_Overall,
diffLoadLevel3_Overall,diffLoadLevel4_Overall,diffLoadLevel5_Overall,
diffLoadLevel6_Overall,diffLoadLevel7_Overall,diffLoadLevel8_Overall,
diffLoadLevel9_Overall,diffLoadLevel10_Overall)
#Calculate the relative difference - for Overall Energy
reldiffLoadLevel0_Overall <- loadLevel0_Marginal$OverallEnergy / loadLevel0_Overall$OverallEnergy
reldiffLoadLevel1_Overall <- loadLevel1_Marginal$OverallEnergy / loadLevel1_Overall$OverallEnergy
reldiffLoadLevel2_Overall <- loadLevel2_Marginal$OverallEnergy / loadLevel2_Overall$OverallEnergy
reldiffLoadLevel3_Overall <- loadLevel3_Marginal$OverallEnergy / loadLevel3_Overall$OverallEnergy
reldiffLoadLevel4_Overall <- loadLevel4_Marginal$OverallEnergy / loadLevel4_Overall$OverallEnergy
reldiffLoadLevel5_Overall <- loadLevel5_Marginal$OverallEnergy / loadLevel5_Overall$OverallEnergy
reldiffLoadLevel6_Overall <- loadLevel6_Marginal$OverallEnergy / loadLevel6_Overall$OverallEnergy
reldiffLoadLevel7_Overall <- loadLevel7_Marginal$OverallEnergy / loadLevel7_Overall$OverallEnergy
reldiffLoadLevel8_Overall <- loadLevel8_Marginal$OverallEnergy / loadLevel8_Overall$OverallEnergy
reldiffLoadLevel9_Overall <- loadLevel9_Marginal$OverallEnergy / loadLevel9_Overall$OverallEnergy
reldiffLoadLevel10_Overall <- loadLevel10_Marginal$OverallEnergy / loadLevel10_Overall$OverallEnergy
reldiffLoadLevel_Overall = list(reldiffLoadLevel0_Overall,reldiffLoadLevel1_Overall,reldiffLoadLevel2_Overall,
reldiffLoadLevel3_Overall,reldiffLoadLevel4_Overall,reldiffLoadLevel5_Overall,
reldiffLoadLevel6_Overall,reldiffLoadLevel7_Overall,reldiffLoadLevel8_Overall,
reldiffLoadLevel9_Overall,reldiffLoadLevel10_Overall)
#Calculate the relative difference - for Marginal Energy
reldiffLoadLevel0_Marginal <- loadLevel0_Overall$MarginalEnergy / loadLevel0_Marginal$MarginalEnergy
reldiffLoadLevel1_Marginal <- loadLevel1_Overall$MarginalEnergy / loadLevel1_Marginal$MarginalEnergy
reldiffLoadLevel2_Marginal <- loadLevel2_Overall$MarginalEnergy / loadLevel2_Marginal$MarginalEnergy
reldiffLoadLevel3_Marginal <- loadLevel3_Overall$MarginalEnergy / loadLevel3_Marginal$MarginalEnergy
reldiffLoadLevel4_Marginal <- loadLevel4_Overall$MarginalEnergy / loadLevel4_Marginal$MarginalEnergy
reldiffLoadLevel5_Marginal <- loadLevel5_Overall$MarginalEnergy / loadLevel5_Marginal$MarginalEnergy
reldiffLoadLevel6_Marginal <- loadLevel6_Overall$MarginalEnergy / loadLevel6_Marginal$MarginalEnergy
reldiffLoadLevel7_Marginal <- loadLevel7_Overall$MarginalEnergy / loadLevel7_Marginal$MarginalEnergy
reldiffLoadLevel8_Marginal <- loadLevel8_Overall$MarginalEnergy / loadLevel8_Marginal$MarginalEnergy
reldiffLoadLevel9_Marginal <- loadLevel9_Overall$MarginalEnergy / loadLevel9_Marginal$MarginalEnergy
reldiffLoadLevel10_Marginal <- loadLevel10_Overall$MarginalEnergy / loadLevel10_Marginal$MarginalEnergy
reldiffLoadLevel_Marginal = list(reldiffLoadLevel0_Marginal,reldiffLoadLevel1_Marginal,reldiffLoadLevel2_Marginal,
reldiffLoadLevel3_Marginal,reldiffLoadLevel4_Marginal,reldiffLoadLevel5_Marginal,
reldiffLoadLevel6_Marginal,reldiffLoadLevel7_Marginal,reldiffLoadLevel8_Marginal,
reldiffLoadLevel9_Marginal,reldiffLoadLevel10_Marginal)
#Calculating how many are same, different and infeasible, also storing the data about the difference
same=rep(0,11)
different=rep(0,11)
infeasible=rep(0,11)
datadiff=vector()
datareldiff=vector()
datareldiff_m=vector()
datadiffloc=vector()
for (levelNb in seq(1,11)){
difference=vector()
reldifference=vector()
reldifference_m=vector()
for(diff in diffLoadLevel_Overall[[levelNb]]){
if (is.na(diff)){infeasible[levelNb]=infeasible[levelNb]+1}
else if (diff==0){same[levelNb]=same[levelNb]+1}
else if (diff>0){different[levelNb]=different[levelNb]+1
difference=append(difference,diff)}
}
for(diff in reldiffLoadLevel_Overall[[levelNb]]){
if (is.na(diff)){}
else if (diff>1){reldifference=append(reldifference,diff)}
}
datadiffloc=append(datadiffloc,rep((levelNb-1)*10,length(difference)))
datadiff=append(datadiff,difference)
datareldiff=append(datareldiff,reldifference)
for(diff in reldiffLoadLevel_Marginal[[levelNb]]){
if (is.na(diff)){}
else if (diff>1){reldifference_m=append(reldifference_m,diff)}
}
datareldiff_m=append(datareldiff_m,reldifference_m)
}
##Create the dataframe for plotting the difference
LoadLevel= rep(seq(0,100,10),3)
Outcome=c(rep("Same",11),rep("Different",11),rep("Infeasible",11))
NbPlacements=c(same,different,infeasible)
nbDifferentPlacements =data.frame(LoadLevel,Outcome,NbPlacements)
### Plot - Nb of different placement
ggplot(data=nbDifferentPlacements, aes(x=LoadLevel, y=NbPlacements, fill=Outcome)) +
geom_bar(stat="identity", position = position_stack())+
theme_minimal()+
ylab("# obtained placements")+
xlab("Average load level in %")+
labs(fill = "Overall and Marginal placements are")+
scale_fill_manual(values=c("#A95AA1","#F5793A","#85C0F9"))+
theme(legend.position = "top",axis.title.x = element_text(size = 24),
axis.text.x = element_text(size = 24),
axis.title.y = element_text(size = 24),
axis.text.y = element_text(size = 24),
legend.text=element_text(size = 24),
legend.title=element_text(size = 24))
##Create the dataframe for statistics about the difference - OVERALL ENERGY
statisticsPlacement=data.frame(datadiffloc,datadiff,datareldiff)
#Get numbers for the text
quantile(statisticsPlacement$datareldiff,0.10)
quantile(statisticsPlacement$datareldiff,0.90)
###Plot - Statistics about the relative difference, violin plot
ggplot(data=statisticsPlacement, aes(x=factor(datadiffloc), y=datareldiff)) +
geom_violin()+
theme_minimal()+
ylab("Relative difference in overall energy (J)")+
xlab("Average load level in %")+
theme(legend.position = "top",axis.title.x = element_text(size = 18),
axis.text.x = element_text(size = 18),
axis.title.y = element_text(size = 18),
axis.text.y = element_text(size = 18),
legend.text=element_text(size = 18),
legend.title=element_text(size = 18))
##Create the dataframe for statistics about the difference - MARGINAL ENERGY
statisticsPlacement_m=data.frame(datadiffloc,datareldiff_m)
#Get numbers for the text
quantile(statisticsPlacement_m$datareldiff,0.10)
quantile(statisticsPlacement_m$datareldiff,0.90)
###Plot - Statistics about the relative difference, violin plot
ggplot(data=statisticsPlacement_m, aes(x=factor(datadiffloc), y=datareldiff_m)) +
geom_violin()+
theme_minimal()+
ylab("Relative difference in marginal energy (J)")+
xlab("Average load level in %")+
theme(legend.position = "top",axis.title.x = element_text(size = 18),
axis.text.x = element_text(size = 18),
axis.title.y = element_text(size = 18),
axis.text.y = element_text(size = 18),
legend.text=element_text(size = 18),
legend.title=element_text(size = 18))
####End
#Average included device utilization data graph
####Begin
### Getting the data - different placements ONLY
result_data_csv <- read.csv(file="./6FunctionInstances/resultsParsed_UtilizationDifferent_40rep_DeviceOnlyVar_6replicas_Std10_RequestDevice4.csv", header=TRUE, sep=",")
#Adding the load level column
result_data_csv$LoadLevel <- result_data_csv$Scenario*10
#Create a dataframe with only the device utilization information
utilization=data.frame(result_data_csv$Device0,result_data_csv$Device1,result_data_csv$Device2,result_data_csv$Device3,
result_data_csv$Device4,result_data_csv$Device5,result_data_csv$Device6,result_data_csv$Device7,
result_data_csv$Device8,result_data_csv$Device9,result_data_csv$Device10)
#Calculating the mean utilization for each data line
meanUt=rowMeans(utilization,na.rm=TRUE)
#Create data frame for plotting
mean_data_utilization= data.frame(result_data_csv$LoadLevel,result_data_csv$Alternative,meanUt)
###Plot - Statistics about the utilization, violin plot
ggplot(data=mean_data_utilization, aes(x=factor(result_data_csv$LoadLevel), y=meanUt, fill=result_data_csv$Alternative)) +
geom_violin()+
theme_minimal()+
ylab("Mean device utilization when placements are different (%)")+
xlab("Average load level in %")+
labs(fill = "Optimization objective")+
scale_fill_manual(values=c("#F0E442","#0072B2"))+
theme(legend.position = "top",axis.title.x = element_text(size = 18),
axis.text.x = element_text(size = 18),
axis.title.y = element_text(size = 18),
axis.text.y = element_text(size = 18),
legend.text=element_text(size = 18),
legend.title=element_text(size = 18))
####End
#Completion Time graph for different placements
####Begin
## Getting the data - different placements ONLY
result_data_csv_ut_DifferentOnly <- read.csv(file="./6FunctionInstances/resultsParsed_UtilizationDifferent_40rep_DeviceOnlyVar_6replicas_Std10_RequestDevice4.csv", header=TRUE, sep=",")
## Getting the data - all placements
result_data_csv_ev_All <- read.csv(file="./6FunctionInstances/resultsParsed_40rep_DeviceOnlyVar_6replicas_Std10_RequestDevice4.csv", header=TRUE, sep=",")
result_data_csv_ev_All$LoadLevel <- result_data_csv_ev_All$Scenario*10
##Adding a column for the combination Repetition_Scenario to be able to filter
result_data_csv_ut_DifferentOnly$id <- paste(result_data_csv_ut_DifferentOnly$Repetition,result_data_csv_ut_DifferentOnly$Scenario,sep = "_")
result_data_csv_ev_All$id <- paste(result_data_csv_ev_All$Repetition,result_data_csv_ev_All$Scenario,sep = "_")
##Filter the all data from the combination Repetition/Scenario/Alternative? to get only the info when placements are different
library(dplyr)
result_data_csv_ev_DifferentOnly = result_data_csv_ev_All %>% filter(id %in% result_data_csv_ut_DifferentOnly$id)
#Boxplot
ggplot(data=result_data_csv_ev_DifferentOnly, aes(x=factor(LoadLevel), y=CompletionTime,
fill=Alternative)) +
geom_boxplot()+
theme_minimal()+
ylab("Request completion time when placements are different (ms)")+
xlab("Average load level in %")+
labs(fill = "Optimization objective")+
ylim(0,100)+
scale_fill_manual(values=c("#F0E442","#0072B2"))+
theme(legend.position = "top",axis.title.x = element_text(size = 18),
axis.text.x = element_text(size = 18),
axis.title.y = element_text(size = 18),
axis.text.y = element_text(size = 18),
legend.text=element_text(size = 18),
legend.title=element_text(size = 18))
####End
## FULL CO-LOCATION STUDY
## NORMALLY DISTRIBUTED LOAD - STD 10 (6 function instances/replicas)
####Begin
### Getting the data
result_data_csv <- read.csv(file="./FullColocation/resultsParsed_40rep_DeviceOnlyVar_6replicas_Std10_RequestDevice0.csv", header=TRUE, sep=",")
#Adding the load level column
result_data_csv$LoadLevel <- result_data_csv$Scenario*10
###Filter per loadLevel
loadLevel0_Overall <- result_data_csv[which(result_data_csv$LoadLevel == 0 & result_data_csv$Alternative=="Overall"),]
loadLevel0_Marginal <- result_data_csv[which(result_data_csv$LoadLevel == 0 & result_data_csv$Alternative=="Marginal"),]
loadLevel1_Overall <- result_data_csv[which(result_data_csv$LoadLevel == 10 & result_data_csv$Alternative=="Overall"),]
loadLevel1_Marginal <- result_data_csv[which(result_data_csv$LoadLevel == 10 & result_data_csv$Alternative=="Marginal"),]
loadLevel2_Overall <- result_data_csv[which(result_data_csv$LoadLevel == 20 & result_data_csv$Alternative=="Overall"),]
loadLevel2_Marginal <- result_data_csv[which(result_data_csv$LoadLevel == 20 & result_data_csv$Alternative=="Marginal"),]
loadLevel3_Overall <- result_data_csv[which(result_data_csv$LoadLevel == 30 & result_data_csv$Alternative=="Overall"),]
loadLevel3_Marginal <- result_data_csv[which(result_data_csv$LoadLevel == 30 & result_data_csv$Alternative=="Marginal"),]
loadLevel4_Overall <- result_data_csv[which(result_data_csv$LoadLevel == 40 & result_data_csv$Alternative=="Overall"),]
loadLevel4_Marginal <- result_data_csv[which(result_data_csv$LoadLevel == 40 & result_data_csv$Alternative=="Marginal"),]
loadLevel5_Overall <- result_data_csv[which(result_data_csv$LoadLevel == 50 & result_data_csv$Alternative=="Overall"),]
loadLevel5_Marginal <- result_data_csv[which(result_data_csv$LoadLevel == 50 & result_data_csv$Alternative=="Marginal"),]
loadLevel6_Overall <- result_data_csv[which(result_data_csv$LoadLevel == 60 & result_data_csv$Alternative=="Overall"),]
loadLevel6_Marginal <- result_data_csv[which(result_data_csv$LoadLevel == 60 & result_data_csv$Alternative=="Marginal"),]
loadLevel7_Overall <- result_data_csv[which(result_data_csv$LoadLevel == 70 & result_data_csv$Alternative=="Overall"),]
loadLevel7_Marginal <- result_data_csv[which(result_data_csv$LoadLevel == 70 & result_data_csv$Alternative=="Marginal"),]
loadLevel8_Overall <- result_data_csv[which(result_data_csv$LoadLevel == 80 & result_data_csv$Alternative=="Overall"),]
loadLevel8_Marginal <- result_data_csv[which(result_data_csv$LoadLevel == 80 & result_data_csv$Alternative=="Marginal"),]
loadLevel9_Overall <- result_data_csv[which(result_data_csv$LoadLevel == 90 & result_data_csv$Alternative=="Overall"),]
loadLevel9_Marginal <- result_data_csv[which(result_data_csv$LoadLevel == 90 & result_data_csv$Alternative=="Marginal"),]
loadLevel10_Overall <- result_data_csv[which(result_data_csv$LoadLevel == 100 & result_data_csv$Alternative=="Overall"),]
loadLevel10_Marginal <- result_data_csv[which(result_data_csv$LoadLevel == 100 & result_data_csv$Alternative=="Marginal"),]
#Calculating how many are same, different and infeasible, also storing the data about the difference
same=rep(0,11)
different=rep(0,11)
infeasible=rep(0,11)
datadiff=vector()
datareldiff=vector()
datareldiff_m=vector()
datadiffloc=vector()
for (levelNb in seq(1,11)){
difference=vector()
reldifference=vector()
reldifference_m=vector()
for(diff in diffLoadLevel_Overall[[levelNb]]){
if (is.na(diff)){infeasible[levelNb]=infeasible[levelNb]+1}
else if (diff==0){same[levelNb]=same[levelNb]+1}
else if (diff>0){different[levelNb]=different[levelNb]+1
difference=append(difference,diff)}
}
for(diff in reldiffLoadLevel_Overall[[levelNb]]){
if (is.na(diff)){}
else if (diff>1){reldifference=append(reldifference,diff)}
}
datadiffloc=append(datadiffloc,rep((levelNb-1)*10,length(difference)))
datadiff=append(datadiff,difference)
datareldiff=append(datareldiff,reldifference)
for(diff in reldiffLoadLevel_Marginal[[levelNb]]){
if (is.na(diff)){}
else if (diff>1){reldifference_m=append(reldifference_m,diff)}
}
datareldiff_m=append(datareldiff_m,reldifference_m)
}
##Create the dataframe for plotting the difference
LoadLevel= rep(seq(0,100,10),3)
Outcome=c(rep("Same",11),rep("Different",11),rep("Infeasible",11))
NbPlacements=c(same,different,infeasible)
nbDifferentPlacements =data.frame(LoadLevel,Outcome,NbPlacements)
### Plot - Nb of different placement
ggplot(data=nbDifferentPlacements, aes(x=LoadLevel, y=NbPlacements, fill=Outcome)) +
geom_bar(stat="identity", position = position_stack())+
theme_minimal()+
ylab("# obtained placements")+
xlab("Average load level in %")+
labs(fill = "Overall and Marginal placements are")+
scale_fill_manual(values=c("#A95AA1","#F5793A","#85C0F9"))+
theme(legend.position = "top",axis.title.x = element_text(size = 20),
axis.text.x = element_text(size = 20),
axis.title.y = element_text(size = 20),
axis.text.y = element_text(size = 20),
legend.text=element_text(size = 20),
legend.title=element_text(size = 20))
####End
## RANDOM BEGINNING DEVICE STUDIES
### FIXED LOAD - RANDOM BEGINNING DEVICE
####Begin
### Getting the data
result_data_csv <- read.csv(file="./RandomBeginningDevice/Fixed/resultsParsed_40rep_DeviceOnlyVar_2replicas_Uniform_RequestDeviceRandom.csv", header=TRUE, sep=",")
#Adding the load level column
result_data_csv$LoadLevel <- result_data_csv$Scenario*10
###Filter per loadLevel
loadLevel0_Overall <- result_data_csv[which(result_data_csv$LoadLevel == 0 & result_data_csv$Alternative=="Overall"),]
loadLevel0_Marginal <- result_data_csv[which(result_data_csv$LoadLevel == 0 & result_data_csv$Alternative=="Marginal"),]
loadLevel1_Overall <- result_data_csv[which(result_data_csv$LoadLevel == 10 & result_data_csv$Alternative=="Overall"),]
loadLevel1_Marginal <- result_data_csv[which(result_data_csv$LoadLevel == 10 & result_data_csv$Alternative=="Marginal"),]
loadLevel2_Overall <- result_data_csv[which(result_data_csv$LoadLevel == 20 & result_data_csv$Alternative=="Overall"),]
loadLevel2_Marginal <- result_data_csv[which(result_data_csv$LoadLevel == 20 & result_data_csv$Alternative=="Marginal"),]
loadLevel3_Overall <- result_data_csv[which(result_data_csv$LoadLevel == 30 & result_data_csv$Alternative=="Overall"),]
loadLevel3_Marginal <- result_data_csv[which(result_data_csv$LoadLevel == 30 & result_data_csv$Alternative=="Marginal"),]
loadLevel4_Overall <- result_data_csv[which(result_data_csv$LoadLevel == 40 & result_data_csv$Alternative=="Overall"),]
loadLevel4_Marginal <- result_data_csv[which(result_data_csv$LoadLevel == 40 & result_data_csv$Alternative=="Marginal"),]
loadLevel5_Overall <- result_data_csv[which(result_data_csv$LoadLevel == 50 & result_data_csv$Alternative=="Overall"),]
loadLevel5_Marginal <- result_data_csv[which(result_data_csv$LoadLevel == 50 & result_data_csv$Alternative=="Marginal"),]
loadLevel6_Overall <- result_data_csv[which(result_data_csv$LoadLevel == 60 & result_data_csv$Alternative=="Overall"),]
loadLevel6_Marginal <- result_data_csv[which(result_data_csv$LoadLevel == 60 & result_data_csv$Alternative=="Marginal"),]
loadLevel7_Overall <- result_data_csv[which(result_data_csv$LoadLevel == 70 & result_data_csv$Alternative=="Overall"),]
loadLevel7_Marginal <- result_data_csv[which(result_data_csv$LoadLevel == 70 & result_data_csv$Alternative=="Marginal"),]
loadLevel8_Overall <- result_data_csv[which(result_data_csv$LoadLevel == 80 & result_data_csv$Alternative=="Overall"),]
loadLevel8_Marginal <- result_data_csv[which(result_data_csv$LoadLevel == 80 & result_data_csv$Alternative=="Marginal"),]
loadLevel9_Overall <- result_data_csv[which(result_data_csv$LoadLevel == 90 & result_data_csv$Alternative=="Overall"),]
loadLevel9_Marginal <- result_data_csv[which(result_data_csv$LoadLevel == 90 & result_data_csv$Alternative=="Marginal"),]
loadLevel10_Overall <- result_data_csv[which(result_data_csv$LoadLevel == 100 & result_data_csv$Alternative=="Overall"),]
loadLevel10_Marginal <- result_data_csv[which(result_data_csv$LoadLevel == 100 & result_data_csv$Alternative=="Marginal"),]
##Working on visualizing the difference
#Calculate the difference - for Overall Energy
diffLoadLevel0_Overall <- loadLevel0_Marginal$OverallEnergy - loadLevel0_Overall$OverallEnergy
diffLoadLevel1_Overall <- loadLevel1_Marginal$OverallEnergy - loadLevel1_Overall$OverallEnergy
diffLoadLevel2_Overall <- loadLevel2_Marginal$OverallEnergy - loadLevel2_Overall$OverallEnergy
diffLoadLevel3_Overall <- loadLevel3_Marginal$OverallEnergy - loadLevel3_Overall$OverallEnergy
diffLoadLevel4_Overall <- loadLevel4_Marginal$OverallEnergy - loadLevel4_Overall$OverallEnergy
diffLoadLevel5_Overall <- loadLevel5_Marginal$OverallEnergy - loadLevel5_Overall$OverallEnergy
diffLoadLevel6_Overall <- loadLevel6_Marginal$OverallEnergy - loadLevel6_Overall$OverallEnergy
diffLoadLevel7_Overall <- loadLevel7_Marginal$OverallEnergy - loadLevel7_Overall$OverallEnergy
diffLoadLevel8_Overall <- loadLevel8_Marginal$OverallEnergy - loadLevel8_Overall$OverallEnergy
diffLoadLevel9_Overall <- loadLevel9_Marginal$OverallEnergy - loadLevel9_Overall$OverallEnergy
diffLoadLevel10_Overall <- loadLevel10_Marginal$OverallEnergy - loadLevel10_Overall$OverallEnergy
diffLoadLevel_Overall = list(diffLoadLevel0_Overall,diffLoadLevel1_Overall,diffLoadLevel2_Overall,
diffLoadLevel3_Overall,diffLoadLevel4_Overall,diffLoadLevel5_Overall,
diffLoadLevel6_Overall,diffLoadLevel7_Overall,diffLoadLevel8_Overall,
diffLoadLevel9_Overall,diffLoadLevel10_Overall)
#Calculating how many are same, different and infeasible
same=rep(0,11)
different=rep(0,11)
infeasible=rep(0,11)
for (levelNb in seq(1,11)){
print(levelNb)
print(diffLoadLevel_Overall[levelNb])
for(diff in diffLoadLevel_Overall[[levelNb]]){
print(diff)
if (is.na(diff)){infeasible[levelNb]=infeasible[levelNb]+1}
else if (diff==0){same[levelNb]=same[levelNb]+1}
else if (diff>0){different[levelNb]=different[levelNb]+1}
}
}
##Create the dataframe for plotting the difference
LoadLevel= rep(seq(0,100,10),3)
Outcome=c(rep("Same",11),rep("Different",11),rep("Infeasible",11))
NbPlacements=c(same,different,infeasible)
nbDifferentPlacements =data.frame(LoadLevel,Outcome,NbPlacements)
### Plot - Nb of different placement
ggplot(data=nbDifferentPlacements, aes(x=LoadLevel, y=NbPlacements, fill=Outcome)) +
geom_bar(stat="identity", position = position_stack())+
theme_minimal()+
ylab("# obtained placements")+
xlab("Average load level in %")+
labs(fill = "Overall and Marginal placements are")+
scale_fill_manual(values=c("#A95AA1","#F5793A","#85C0F9"))+
theme(legend.position = "top",axis.title.x = element_text(size = 24),
axis.text.x = element_text(size = 24),
axis.title.y = element_text(size = 24),
axis.text.y = element_text(size = 24),
legend.text=element_text(size = 24),
legend.title=element_text(size = 24))
####End
### NORMALLY DISTRIBUTED LOAD (2 function instances/replicas) Std 10 - RANDOM BEGINNING DEVICE
#Graphs for the categorization of placements and the relative difference in overall/marginal energy
####Begin
### Getting the data
result_data_csv <- read.csv(file="./RandomBeginningDevice/Std10/resultsParsed_40rep_DeviceOnlyVar_2replicas_Std10_RequestDeviceRandom.csv", header=TRUE, sep=",")
#Adding the load level column
result_data_csv$LoadLevel <- result_data_csv$Scenario*10
###Filter per loadLevel
loadLevel0_Overall <- result_data_csv[which(result_data_csv$LoadLevel == 0 & result_data_csv$Alternative=="Overall"),]
loadLevel0_Marginal <- result_data_csv[which(result_data_csv$LoadLevel == 0 & result_data_csv$Alternative=="Marginal"),]
loadLevel1_Overall <- result_data_csv[which(result_data_csv$LoadLevel == 10 & result_data_csv$Alternative=="Overall"),]
loadLevel1_Marginal <- result_data_csv[which(result_data_csv$LoadLevel == 10 & result_data_csv$Alternative=="Marginal"),]
loadLevel2_Overall <- result_data_csv[which(result_data_csv$LoadLevel == 20 & result_data_csv$Alternative=="Overall"),]
loadLevel2_Marginal <- result_data_csv[which(result_data_csv$LoadLevel == 20 & result_data_csv$Alternative=="Marginal"),]
loadLevel3_Overall <- result_data_csv[which(result_data_csv$LoadLevel == 30 & result_data_csv$Alternative=="Overall"),]
loadLevel3_Marginal <- result_data_csv[which(result_data_csv$LoadLevel == 30 & result_data_csv$Alternative=="Marginal"),]
loadLevel4_Overall <- result_data_csv[which(result_data_csv$LoadLevel == 40 & result_data_csv$Alternative=="Overall"),]
loadLevel4_Marginal <- result_data_csv[which(result_data_csv$LoadLevel == 40 & result_data_csv$Alternative=="Marginal"),]
loadLevel5_Overall <- result_data_csv[which(result_data_csv$LoadLevel == 50 & result_data_csv$Alternative=="Overall"),]
loadLevel5_Marginal <- result_data_csv[which(result_data_csv$LoadLevel == 50 & result_data_csv$Alternative=="Marginal"),]
loadLevel6_Overall <- result_data_csv[which(result_data_csv$LoadLevel == 60 & result_data_csv$Alternative=="Overall"),]
loadLevel6_Marginal <- result_data_csv[which(result_data_csv$LoadLevel == 60 & result_data_csv$Alternative=="Marginal"),]
loadLevel7_Overall <- result_data_csv[which(result_data_csv$LoadLevel == 70 & result_data_csv$Alternative=="Overall"),]
loadLevel7_Marginal <- result_data_csv[which(result_data_csv$LoadLevel == 70 & result_data_csv$Alternative=="Marginal"),]
loadLevel8_Overall <- result_data_csv[which(result_data_csv$LoadLevel == 80 & result_data_csv$Alternative=="Overall"),]
loadLevel8_Marginal <- result_data_csv[which(result_data_csv$LoadLevel == 80 & result_data_csv$Alternative=="Marginal"),]
loadLevel9_Overall <- result_data_csv[which(result_data_csv$LoadLevel == 90 & result_data_csv$Alternative=="Overall"),]
loadLevel9_Marginal <- result_data_csv[which(result_data_csv$LoadLevel == 90 & result_data_csv$Alternative=="Marginal"),]
loadLevel10_Overall <- result_data_csv[which(result_data_csv$LoadLevel == 100 & result_data_csv$Alternative=="Overall"),]
loadLevel10_Marginal <- result_data_csv[which(result_data_csv$LoadLevel == 100 & result_data_csv$Alternative=="Marginal"),]
##Working on visualizing the difference
#Calculate the difference - for Overall Energy
diffLoadLevel0_Overall <- loadLevel0_Marginal$OverallEnergy - loadLevel0_Overall$OverallEnergy
diffLoadLevel1_Overall <- loadLevel1_Marginal$OverallEnergy - loadLevel1_Overall$OverallEnergy
diffLoadLevel2_Overall <- loadLevel2_Marginal$OverallEnergy - loadLevel2_Overall$OverallEnergy
diffLoadLevel3_Overall <- loadLevel3_Marginal$OverallEnergy - loadLevel3_Overall$OverallEnergy
diffLoadLevel4_Overall <- loadLevel4_Marginal$OverallEnergy - loadLevel4_Overall$OverallEnergy
diffLoadLevel5_Overall <- loadLevel5_Marginal$OverallEnergy - loadLevel5_Overall$OverallEnergy
diffLoadLevel6_Overall <- loadLevel6_Marginal$OverallEnergy - loadLevel6_Overall$OverallEnergy
diffLoadLevel7_Overall <- loadLevel7_Marginal$OverallEnergy - loadLevel7_Overall$OverallEnergy
diffLoadLevel8_Overall <- loadLevel8_Marginal$OverallEnergy - loadLevel8_Overall$OverallEnergy
diffLoadLevel9_Overall <- loadLevel9_Marginal$OverallEnergy - loadLevel9_Overall$OverallEnergy
diffLoadLevel10_Overall <- loadLevel10_Marginal$OverallEnergy - loadLevel10_Overall$OverallEnergy
diffLoadLevel_Overall = list(diffLoadLevel0_Overall,diffLoadLevel1_Overall,diffLoadLevel2_Overall,
diffLoadLevel3_Overall,diffLoadLevel4_Overall,diffLoadLevel5_Overall,
diffLoadLevel6_Overall,diffLoadLevel7_Overall,diffLoadLevel8_Overall,
diffLoadLevel9_Overall,diffLoadLevel10_Overall)
#Calculate the relative difference - for Overall Energy
reldiffLoadLevel0_Overall <- loadLevel0_Marginal$OverallEnergy / loadLevel0_Overall$OverallEnergy
reldiffLoadLevel1_Overall <- loadLevel1_Marginal$OverallEnergy / loadLevel1_Overall$OverallEnergy
reldiffLoadLevel2_Overall <- loadLevel2_Marginal$OverallEnergy / loadLevel2_Overall$OverallEnergy
reldiffLoadLevel3_Overall <- loadLevel3_Marginal$OverallEnergy / loadLevel3_Overall$OverallEnergy
reldiffLoadLevel4_Overall <- loadLevel4_Marginal$OverallEnergy / loadLevel4_Overall$OverallEnergy
reldiffLoadLevel5_Overall <- loadLevel5_Marginal$OverallEnergy / loadLevel5_Overall$OverallEnergy
reldiffLoadLevel6_Overall <- loadLevel6_Marginal$OverallEnergy / loadLevel6_Overall$OverallEnergy
reldiffLoadLevel7_Overall <- loadLevel7_Marginal$OverallEnergy / loadLevel7_Overall$OverallEnergy
reldiffLoadLevel8_Overall <- loadLevel8_Marginal$OverallEnergy / loadLevel8_Overall$OverallEnergy
reldiffLoadLevel9_Overall <- loadLevel9_Marginal$OverallEnergy / loadLevel9_Overall$OverallEnergy
reldiffLoadLevel10_Overall <- loadLevel10_Marginal$OverallEnergy / loadLevel10_Overall$OverallEnergy
reldiffLoadLevel_Overall = list(reldiffLoadLevel0_Overall,reldiffLoadLevel1_Overall,reldiffLoadLevel2_Overall,
reldiffLoadLevel3_Overall,reldiffLoadLevel4_Overall,reldiffLoadLevel5_Overall,
reldiffLoadLevel6_Overall,reldiffLoadLevel7_Overall,reldiffLoadLevel8_Overall,
reldiffLoadLevel9_Overall,reldiffLoadLevel10_Overall)
#Calculate the relative difference - for Marginal Energy
reldiffLoadLevel0_Marginal <- loadLevel0_Overall$MarginalEnergy / loadLevel0_Marginal$MarginalEnergy
reldiffLoadLevel1_Marginal <- loadLevel1_Overall$MarginalEnergy / loadLevel1_Marginal$MarginalEnergy
reldiffLoadLevel2_Marginal <- loadLevel2_Overall$MarginalEnergy / loadLevel2_Marginal$MarginalEnergy
reldiffLoadLevel3_Marginal <- loadLevel3_Overall$MarginalEnergy / loadLevel3_Marginal$MarginalEnergy
reldiffLoadLevel4_Marginal <- loadLevel4_Overall$MarginalEnergy / loadLevel4_Marginal$MarginalEnergy
reldiffLoadLevel5_Marginal <- loadLevel5_Overall$MarginalEnergy / loadLevel5_Marginal$MarginalEnergy
reldiffLoadLevel6_Marginal <- loadLevel6_Overall$MarginalEnergy / loadLevel6_Marginal$MarginalEnergy
reldiffLoadLevel7_Marginal <- loadLevel7_Overall$MarginalEnergy / loadLevel7_Marginal$MarginalEnergy
reldiffLoadLevel8_Marginal <- loadLevel8_Overall$MarginalEnergy / loadLevel8_Marginal$MarginalEnergy
reldiffLoadLevel9_Marginal <- loadLevel9_Overall$MarginalEnergy / loadLevel9_Marginal$MarginalEnergy
reldiffLoadLevel10_Marginal <- loadLevel10_Overall$MarginalEnergy / loadLevel10_Marginal$MarginalEnergy
reldiffLoadLevel_Marginal = list(reldiffLoadLevel0_Marginal,reldiffLoadLevel1_Marginal,reldiffLoadLevel2_Marginal,
reldiffLoadLevel3_Marginal,reldiffLoadLevel4_Marginal,reldiffLoadLevel5_Marginal,
reldiffLoadLevel6_Marginal,reldiffLoadLevel7_Marginal,reldiffLoadLevel8_Marginal,
reldiffLoadLevel9_Marginal,reldiffLoadLevel10_Marginal)
#Calculating how many are same, different and infeasible, also storing the data about the difference
same=rep(0,11)
different=rep(0,11)
infeasible=rep(0,11)
datadiff=vector()
datareldiff=vector()
datareldiff_m=vector()
datadiffloc=vector()
for (levelNb in seq(1,11)){
difference=vector()
reldifference=vector()
reldifference_m=vector()
for(diff in diffLoadLevel_Overall[[levelNb]]){
if (is.na(diff)){infeasible[levelNb]=infeasible[levelNb]+1}
else if (diff==0){same[levelNb]=same[levelNb]+1}
else if (diff>0){different[levelNb]=different[levelNb]+1
difference=append(difference,diff)}
}
for(diff in reldiffLoadLevel_Overall[[levelNb]]){
if (is.na(diff)){}
else if (diff>1){reldifference=append(reldifference,diff)}
}
datadiffloc=append(datadiffloc,rep((levelNb-1)*10,length(difference)))
datadiff=append(datadiff,difference)
datareldiff=append(datareldiff,reldifference)
for(diff in reldiffLoadLevel_Marginal[[levelNb]]){
if (is.na(diff)){}
else if (diff>1){reldifference_m=append(reldifference_m,diff)}
}
datareldiff_m=append(datareldiff_m,reldifference_m)
}
##Create the dataframe for plotting the difference
LoadLevel= rep(seq(0,100,10),3)
Outcome=c(rep("Same",11),rep("Different",11),rep("Infeasible",11))
NbPlacements=c(same,different,infeasible)
nbDifferentPlacements =data.frame(LoadLevel,Outcome,NbPlacements)
### Plot - Nb of different placement
ggplot(data=nbDifferentPlacements, aes(x=LoadLevel, y=NbPlacements, fill=Outcome)) +
geom_bar(stat="identity", position = position_stack())+
theme_minimal()+
ylab("# obtained placements")+
xlab("Average load level in %")+
labs(fill = "Overall and Marginal placements are")+
scale_fill_manual(values=c("#A95AA1","#F5793A","#85C0F9"))+
theme(legend.position = "top",axis.title.x = element_text(size = 24),
axis.text.x = element_text(size = 24),
axis.title.y = element_text(size = 24),
axis.text.y = element_text(size = 24),
legend.text=element_text(size = 24),
legend.title=element_text(size = 24))
##Create the dataframe for statistics about the difference - OVERALL ENERGY
statisticsPlacement=data.frame(datadiffloc,datadiff,datareldiff)
#Get numbers for the text
quantile(statisticsPlacement$datareldiff,0.10)
quantile(statisticsPlacement$datareldiff,0.90)
###Plot - Statistics about the relative difference, violin plot
ggplot(data=statisticsPlacement, aes(x=factor(datadiffloc), y=datareldiff)) +
geom_violin()+
theme_minimal()+
ylab("Relative difference in overall energy (J)")+
xlab("Average load level in %")+
theme(legend.position = "top",axis.title.x = element_text(size = 18),
axis.text.x = element_text(size = 18),
axis.title.y = element_text(size = 18),
axis.text.y = element_text(size = 18),
legend.text=element_text(size = 18),
legend.title=element_text(size = 18))
##Create the dataframe for statistics about the difference - MARGINAL ENERGY
statisticsPlacement_m=data.frame(datadiffloc,datareldiff_m)
#Get numbers for the text
quantile(statisticsPlacement_m$datareldiff,0.10)
quantile(statisticsPlacement_m$datareldiff,0.90)
###Plot - Statistics about the relative difference, violin plot
ggplot(data=statisticsPlacement_m, aes(x=factor(datadiffloc), y=datareldiff_m)) +
geom_violin()+
theme_minimal()+
ylab("Relative difference in marginal energy (J)")+
xlab("Average load level in %")+
theme(legend.position = "top",axis.title.x = element_text(size = 18),
axis.text.x = element_text(size = 18),
axis.title.y = element_text(size = 18),
axis.text.y = element_text(size = 18),
legend.text=element_text(size = 18),
legend.title=element_text(size = 18))
####End
#Average included device utilization data graph
####Begin
### Getting the data - different placements ONLY
result_data_csv <- read.csv(file="./RandomBeginningDevice/Std10/resultsParsed_UtilizationDifferent_40rep_DeviceOnlyVar_2replicas_Std10_RequestDeviceRandom.csv", header=TRUE, sep=",")