Skip to content
Snippets Groups Projects
evaluationCurvesAndAnalysis.R 124 KiB
Newer Older
  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/6fi/resultsParsed_UtilizationDifferent_40rep_DeviceOnlyVar_6replicas_Std10_RequestDeviceRandom.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="./RandomBeginningDevice/6fi/resultsParsed_UtilizationDifferent_40rep_DeviceOnlyVar_6replicas_Std10_RequestDeviceRandom.csv", header=TRUE, sep=",")
## Getting the data - all placements
result_data_csv_ev_All <- read.csv(file="./RandomBeginningDevice/6fi/resultsParsed_40rep_DeviceOnlyVar_6replicas_Std10_RequestDeviceRandom.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))