The function takes in the coefficients of the objective function, the constraints matrix, the right-hand side values for the constraints, the direction of the constraints, and the type of the LP problem (minimization or maximization). It then uses the lpSolveAPI package to create an LP problem, set the problem type, decision variable types, and constraints, and then solves the LP problem. The function returns a list containing the optimal solution and the objective function value, which can be accessed by the user. The function is then called with specific inputs and the optimal solution and objective function value are printed all seems correct but i have sm issues when it come to
here is my function :
solve_lp <- function(objective_coefs, constraints_matrix, constraints_rhs, constraints_dir, problem_type) {
# Load the lpSolveAPI package
library(lpSolveAPI)
# Set the number of rows (constraints) and columns (decision variables)
nrow <- nrow(constraints_matrix)
ncol <- ncol(constraints_matrix)
# Create an LP problem with nrow constraints and ncol decision variables
lprec <- make.lp(nrow = nrow, ncol = ncol)
# Set the type of problem to minimize or maximize the objective function based on the problem_type argument
lp.control(lprec, sense=problem_type)
# Set the type of decision variables to integer
set.type(lprec, 1:ncol, type=c("integer"))
# Set the objective function coefficients
set.objfn(lprec, objective_coefs)
# Add the constraints to the LP problem
for (i in 1:nrow) {
add.constraint(lprec, constraints_matrix[i, ], constraints_dir[i], constraints_rhs[i])
}
# Solve the LP problem
solve(lprec)
# If the problem has a feasible solution, get the decision variables values and the value of the objective function
solution <- get.variables(lprec)
obj_value <- get.objective(lprec)
# Return the optimal solution and objective function value
return(list(solution = solution, obj_value = obj_value))
}
objective_coefs <- c(15, 3, -6)
constraints_matrix <- matrix(c(1, 1, 1,
2, -1, -2,
2, 3, -5), nrow=3, byrow=TRUE)
constraints_rhs <- c(36, 8, 10)
constraints_dir <- c("<=", ">=", "=")
problem_type <- "min"
# Solve the LP problem using the solve_lp function
result <- solve_lp(objective_coefs = objective_coefs, constraints_matrix = constraints_matrix, constraints_rhs = constraints_rhs, constraints_dir = constraints_dir, problem_type= problem_type)
# Extract the optimal solution and objective function value
optimal_solution <- result$solution
obj_value <- result$obj_value
# Print the results
print(paste("Optimal solution:", optimal_solution))
print(paste("Objective function value:", obj_value))
min z = 15x1 + 3x2 − 6x3
S.C
x1 + x2 + x3 ≤ 36
2x1 − x2 − 2x3 ≥ 8
2x1 + 3x2 − 5x3 = 10
x1, x2, x3 ≥ 0
the result output turned for this program linear
"Optimal solution: 5" "Optimal solution: 0" "Optimal solution: 0"
i tested this program from a program that we did manually in class but we had different
output
7/14 0.5 0
my question is which solution is the right one
It would be easier to use lpSolve. res$solution gives the solution. res$status of 0 means it succeeded.
giving:
Note
We used these inputs: