Report Content
Content Description
Executive Summary
The project will utilize an approach for large scale variables in Linear Programming to analyse the rationing of the capital investments from a big company. The capital rationing takes place whenever the total cash outlays for all projects that meet some acceptable standard exceed the constraint on total capital investment.
For this example the company is faced with the set of eight investments projects shown in table X, requiring the outlay of funds in each of the next two years. Furthermore suppose that the company has decided to limit the total capital expenditure to U$40M and U$20M in each of the next two years, respectively. The problem is to select the combination of investments that provides the largest possible return( NPV ) without violating either of the two constraints on total capital expenditures.
The general maximization formula for this problem is:
\(\beta_1Proj_1+\beta_2Proj_2+\beta_3Proj_3+beta_4Proj_4+\beta_5Proj_5+\beta_6Proj_6+\beta_7Proj_7+\beta_8Proj_8 = Max\),
Conclusions
Due to the amount of variables of this problem was utilized the lpSolveAPI R package, the results showed that to obtain the maximum return ( NPV ) without violating either of the two constraints on total capital expenditures, we should limit the funds for the projects 1,3,4,6, partially for 5 and 7 and hold projects 2 and 8, doing that we are going to obtain NPV = U$63M
see the final equation
1 x Proj_1+0 x Proj_2+1 x Proj_3+1 x Proj_4+0.066 x Proj_5+1 x Proj_6+0.166 x Proj_7+0 x Proj_8$ = U$ 63M
Data Analysis
library(lpSolveAPI)
library(knitr)
Capital <- read.csv("C:/Users/Sergio Simioni/Desktop/Capital.csv", sep=";")
kable(Capital, align="c")
| Project | Investiment_Year_1 | Investiment_Year_2 | NPV |
|---|---|---|---|
| 1 | 12 | 3 | 14 |
| 2 | 54 | 7 | 17 |
| 3 | 6 | 6 | 17 |
| 4 | 6 | 2 | 15 |
| 5 | 30 | 35 | 40 |
| 6 | 6 | 6 | 12 |
| 7 | 48 | 4 | 14 |
| 8 | 36 | 3 | 10 |
| Limited | 40 | 20 | Max |
model<- make.lp(0,8)
name.lp(model, "Capital Rationing")
lp.control(model, sense="max")
## $anti.degen
## [1] "fixedvars" "stalling"
##
## $basis.crash
## [1] "none"
##
## $bb.depthlimit
## [1] -50
##
## $bb.floorfirst
## [1] "automatic"
##
## $bb.rule
## [1] "pseudononint" "greedy" "dynamic" "rcostfixing"
##
## $break.at.first
## [1] FALSE
##
## $break.at.value
## [1] 1e+30
##
## $epsilon
## epsb epsd epsel epsint epsperturb epspivot
## 1e-10 1e-09 1e-12 1e-07 1e-05 2e-07
##
## $improve
## [1] "dualfeas" "thetagap"
##
## $infinite
## [1] 1e+30
##
## $maxpivot
## [1] 250
##
## $mip.gap
## absolute relative
## 1e-11 1e-11
##
## $negrange
## [1] -1e+06
##
## $obj.in.basis
## [1] TRUE
##
## $pivoting
## [1] "devex" "adaptive"
##
## $presolve
## [1] "none"
##
## $scalelimit
## [1] 5
##
## $scaling
## [1] "geometric" "equilibrate" "integers"
##
## $sense
## [1] "maximize"
##
## $simplextype
## NULL
##
## $timeout
## [1] 0
##
## $verbose
## [1] "neutral"
set.objfn(model, c(14,17,17,15,40,12,14,10))
set.bounds( model, lower = c(0,0,0,0,0,0,0,0), upper = c(1,1,1,1,1,1,1,1 ))
set.type(model, c(1,2,3,4,5,6,7,8), type=c("real"))
coef1<- c(12,54,6,6,30,6,48,36)
add.constraint(model, coef1, "<=", 40)
coef2<- c(3,7,6,2,35,6,4,3)
add.constraint(model, coef2, "<=", 20)
print(model)
## Model name: Capital Rationing
## C1 C2 C3 C4 C5 C6 C7 C8
## Maximize 14 17 17 15 40 12 14 10
## R1 12 54 6 6 30 6 48 36 <= 40
## R2 3 7 6 2 35 6 4 3 <= 20
## Kind Std Std Std Std Std Std Std Std
## Type Real Real Real Real Real Real Real Real
## Upper 1 1 1 1 1 1 1 1
## Lower 0 0 0 0 0 0 0 0
solve(model)
## [1] 0
get.objective(model)
## [1] 63
get.variables(model)
## [1] 1.00000000 0.00000000 1.00000000 1.00000000 0.06666667 1.00000000
## [7] 0.16666667 0.00000000
get.constraints(model)
## [1] 40 20
solution<- as.data.frame(get.primal.solution(model))
names(solution) <- c(" Results")
rownames(solution)<- c("Maximized Result", "Constraint1","Constraint2", "Proj1","Proj2","Proj3",
"Proj4","Proj5","Proj6","Proj7","Proj8")
kable(solution, format = "markdown", digits = 4, align = "c")
| Results | |
|---|---|
| Maximized Result | 63.0000 |
| Constraint1 | 40.0000 |
| Constraint2 | 20.0000 |
| Proj1 | 1.0000 |
| Proj2 | 0.0000 |
| Proj3 | 1.0000 |
| Proj4 | 1.0000 |
| Proj5 | 0.0667 |
| Proj6 | 1.0000 |
| Proj7 | 0.1667 |
| Proj8 | 0.0000 |
source: http://www.swlearning.com/economics/mcguigan/mcguigan9e/web_chapter_b.pd