Grafico 3d della funzione tramite il pacchetto Plotly

Importo funzione birra e librerie grafiche ggplot2 e plotly

source("birra.R")
library(ggplot2,warn.conflicts = FALSE)
library(plotly,warn.conflicts = FALSE)

Metodologia

Vengono definite due sequenze numeriche, x1 e x2, rispettivamente da 50 a 100 con un passo di 0.5 e da 10 a 20 con un passo di 0.1. Viene poi creato un’array multidimensionale chiamato f con tante righe quanti sono gli elementi di x1 e tante colonne quanti sono gli elementi di x2, riempito di zeri.

Successivamente, tramite un doppio loop for si fanno scorrere tutti i possibili valori di x1 e x2, e per ciascuna coppia di valori viene chiamata la funzione birra con gli input x1[i] e x2[j]. L’output della funzione, che rappresenta la funzione di Loss additiva, viene poi sommato e assegnato alla cella f[i,j].

x1=seq(50,100,by=0.5)
x2=seq(10,20,by=0.1)
f=matrix(0,length(x1),length(x2))

for (i in c(1:length(x1))){
  for (j in c(1:length(x2))){
    input_plot=c(x1[i],x2[j])
    output_plot=birra(input_plot)
    f[i,j]=output_plot[1]+output_plot[2]
  }
}

Grafico 3D

La funzione sembra essere soggetta a forte rumore, sì può notare una correlazione inversa con la quantità di malto (asse delle ascisse).

plot_ly(x=x1,y=x2,z=f) %>%add_surface()

Grafico 2D

Tramite contour plot, si vede chiaramente che c’è tutta una area di minimo della funzione. Da questa rappresentazione sembra essere preponderante la correlazione inversa tra funzione di Loss e quantità di Malto.

filled.contour(x1,x2,f,color.palette=topo.colors,
               xlab="Malto",ylab="Luppolo",
               main="Contour Plot funzione di Loss")