I am writing my first shiny application where the user enters numeric inputs as vectors, and the output should be the value of the objective function and the values of the final variables. I'm new in shiny and I'm not sure if I have the inputs and function created correctly. Below is the application code:
library(shiny)
library(shinythemes)
library(lpSolveAPI)
ui <- fluidPage(theme = shinytheme("united"),
navbarPage(" Optimization",
tabPanel("Linear programming",
sidebarLayout(
sidebarPanel(
h3('Please enter initial values'),
textInput('obj', 'Objective function values (comma separated)', "1,2"),
textInput('con', 'ohran vector (comma separated)', "0,1,2,1"),
numericInput('nrow', 'number of rows - constraints', "2"),
textInput('dir', 'Direction - constraints (comma separated)', ">=,<="),
textInput('rhs', 'Right-hand sides - constraint (comma separated)', "2,8"),
submitButton('Submit')
),
mainPanel(
h4('The value of the objective function:'),
verbatimTextOutput("value_obj"),
h4('values of variables: '),
verbatimTextOutput("value_var")
)
)
)
)
)
server <- function(input, output, session) {
output$value_obj<-renderPrint({
f.obj <- as.numeric(unlist(strsplit(input$obj,",")))
f.con <- as.matrix(as.numeric(unlist(strsplit(input$con,","))),nrow=input$nrow, byrow = TRUE )
f.dir <- as.array(unlist(strsplit(input$dir,",")))
f.rhs <- as.numeric(unlist(strsplit(input$rhs,",")))
hodnota_obj = lp("max", f.obj, f.con, f.dir, f.rhs)$objval
cat("The value of the objective function:\n")
print(value_obj)
}
)
output$value_var<-renderPrint({
f.obj <- as.numeric(unlist(strsplit(input$obj,",")))
f.con <- as.matrix(as.numeric(unlist(strsplit(input$con,","))),nrow=input$nrow, byrow = TRUE )
f.dir <- as.array(unlist(strsplit(input$dir,",")))
f.rhs <- as.numeric(unlist(strsplit(input$rhs,",")))
hodnota_obj = lp("max", f.obj, f.con, f.dir, f.rhs)$solution
cat("The value of the varieaables :\n")
print(value_var)
}
)
}
# Run the application
shinyApp(ui = ui, server = server)
The lp
function is from lpSolve
which is not loaded. In addition, there are some issue in the print
statements where it is called print(value_var)
or print(value_obj)
which is not correct because those objects are not created. The output$value_var
and output$value_obj
are the output object names created based on the hodnota_obj
object
library(shiny)
library(shinythemes)
library(lpSolveAPI)
library(lpSolve)
ui <- fluidPage(theme = shinytheme("united"),
navbarPage(" Optimization",
tabPanel("Linear programming",
sidebarLayout(
sidebarPanel(
h3('Please enter initial values'),
textInput('obj', 'Objective function values (comma separated)', "1,2"),
textInput('con', 'ohran vector (comma separated)', "0,1,2,1"),
numericInput('nrow', 'number of rows - constraints', "2"),
textInput('dir', 'Direction - constraints (comma separated)', ">=,<="),
textInput('rhs', 'Right-hand sides - constraint (comma separated)', "2,8"),
submitButton('Submit')
),
mainPanel(
h4('The value of the objective function:'),
verbatimTextOutput("value_obj"),
h4('values of variables: '),
verbatimTextOutput("value_var")
)
)
)
)
)
server <- function(input, output, session) {
output$value_obj<-renderPrint({
f.obj <- as.numeric(unlist(strsplit(input$obj,",")))
f.con <- as.matrix(as.numeric(unlist(strsplit(input$con,","))),nrow=input$nrow, byrow = TRUE )
f.dir <- as.array(unlist(strsplit(input$dir,",")))
f.rhs <- as.numeric(unlist(strsplit(input$rhs,",")))
hodnota_obj = lp("max", f.obj, f.con, f.dir, f.rhs)$objval
cat("The value of the objective function:\n")
hodnota_obj
}
)
output$value_var<-renderPrint({
f.obj <- as.numeric(unlist(strsplit(input$obj,",")))
f.con <- as.matrix(as.numeric(unlist(strsplit(input$con,","))),nrow=input$nrow, byrow = TRUE )
f.dir <- as.array(unlist(strsplit(input$dir,",")))
f.rhs <- as.numeric(unlist(strsplit(input$rhs,",")))
hodnota_obj = lp("max", f.obj, f.con, f.dir, f.rhs)$solution
cat("The value of the varieaables :\n")
hodnota_obj
}
)
}
# Run the application
shinyApp(ui = ui, server = server)
-output