Last active
October 31, 2015 02:58
-
-
Save mvw/3af6dac627a87f93ea52 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # lp-alloc4.R | |
| # | |
| # Allocate 3 employes to 4 departments | |
| # Using flexible quota. | |
| # Using minimum total quota per department. | |
| # | |
| # usage: | |
| # source('lp-alloc4.R') | |
| # help: | |
| # http://lpsolve.r-forge.r-project.org/ | |
| # ?make.lp | |
| # ls("package:lpSolveAPI") | |
| # installation: | |
| # install.packages("lpSolveAPI") | |
| library(lpSolveAPI) | |
| #lprec <- make.lp(0,30, "full") | |
| lprec <- make.lp(0,42,"full") | |
| lp.control(lprec,sense="max") | |
| # objective function "R" | |
| R = c( | |
| 0,0,0,0,0, 0,0,0,0,0, | |
| 0,0,0,0,0, 0,0,0,0,0, | |
| 0,0,0,0,0, 0,0,0,0,0, | |
| 550, 1000, 300, 1200, | |
| 900, 1250, 200, 900, | |
| 1000, 1250, 325, 450 | |
| ) | |
| set.objfn(lprec,R) | |
| # A | |
| add.constraint(lprec, | |
| c( | |
| 1,1,1,1,1, 1,1,1,1,1, | |
| 0,0,0,0,0, 0,0,0,0,0, | |
| 0,0,0,0,0, 0,0,0,0,0, | |
| 0,0,0,0, | |
| 0,0,0,0, | |
| 0,0,0,0 | |
| ), | |
| "=", 1) | |
| add.constraint(lprec, | |
| c( | |
| 0,0,0,0,0, 0,0,0,0,0, | |
| 1,1,1,1,1, 1,1,1,1,1, | |
| 0,0,0,0,0, 0,0,0,0,0, | |
| 0,0,0,0, | |
| 0,0,0,0, | |
| 0,0,0,0 | |
| ), | |
| "=", 1) | |
| add.constraint(lprec, | |
| c( | |
| 0,0,0,0,0, 0,0,0,0,0, | |
| 0,0,0,0,0, 0,0,0,0,0, | |
| 1,1,1,1,1, 1,1,1,1,1, | |
| 0,0,0,0, | |
| 0,0,0,0, | |
| 0,0,0,0 | |
| ), | |
| "=", 1) | |
| # B | |
| add.constraint(lprec, | |
| c( | |
| 1, 0, 0, 0, | |
| 1, 1, 1, | |
| 0, 0, | |
| 0, | |
| 1, 0, 0, 0, | |
| 1, 1, 1, | |
| 0, 0, | |
| 0, | |
| 1, 0, 0, 0, | |
| 1, 1, 1, | |
| 0, 0, | |
| 0, | |
| 0,0,0,0, | |
| 0,0,0,0, | |
| 0,0,0,0 | |
| ), | |
| ">=", 1) | |
| add.constraint(lprec, | |
| c( | |
| 0, 1, 0, 0, | |
| 1, 0, 0, | |
| 1, 1, | |
| 0, | |
| 0, 1, 0, 0, | |
| 1, 0, 0, | |
| 1, 1, | |
| 0, | |
| 0, 1, 0, 0, | |
| 1, 0, 0, | |
| 1, 1, | |
| 0, | |
| 0,0,0,0, | |
| 0,0,0,0, | |
| 0,0,0,0 | |
| ), | |
| ">=", 1) | |
| add.constraint(lprec, | |
| c( | |
| 0, 0, 1, 0, | |
| 0, 1, 0, | |
| 1, 0, | |
| 1, | |
| 0, 0, 1, 0, | |
| 0, 1, 0, | |
| 1, 0, | |
| 1, | |
| 0, 0, 1, 0, | |
| 0, 1, 0, | |
| 1, 0, | |
| 1, | |
| 0,0,0,0, | |
| 0,0,0,0, | |
| 0,0,0,0 | |
| ), | |
| ">=", 1) | |
| add.constraint(lprec, | |
| c( | |
| 0, 0, 0, 1, | |
| 0, 0, 1, | |
| 0, 1, | |
| 1, | |
| 0, 0, 0, 1, | |
| 0, 0, 1, | |
| 0, 1, | |
| 1, | |
| 0, 0, 0, 1, | |
| 0, 0, 1, | |
| 0, 1, | |
| 1, | |
| 0,0,0,0, | |
| 0,0,0,0, | |
| 0,0,0,0 | |
| ), | |
| ">=", 1) | |
| # C | |
| add.constraint(lprec, | |
| c( | |
| 0, 0, 0, 0, | |
| 0, 0, 0, | |
| 0, 0, | |
| 0, | |
| 0, 0, 0, 0, | |
| 0, 0, 0, | |
| 0, 0, | |
| 0, | |
| 0, 0, 0, 0, | |
| 0, 0, 0, | |
| 0, 0, | |
| 0, | |
| 1,1,1,1, | |
| 0,0,0,0, | |
| 0,0,0,0 | |
| ), | |
| "<=", 1) | |
| add.constraint(lprec, | |
| c( | |
| 0, 0, 0, 0, | |
| 0, 0, 0, | |
| 0, 0, | |
| 0, | |
| 0, 0, 0, 0, | |
| 0, 0, 0, | |
| 0, 0, | |
| 0, | |
| 0, 0, 0, 0, | |
| 0, 0, 0, | |
| 0, 0, | |
| 0, | |
| 0,0,0,0, | |
| 1,1,1,1, | |
| 0,0,0,0 | |
| ), | |
| "<=", 1) | |
| add.constraint(lprec, | |
| c( | |
| 0, 0, 0, 0, | |
| 0, 0, 0, | |
| 0, 0, | |
| 0, | |
| 0, 0, 0, 0, | |
| 0, 0, 0, | |
| 0, 0, | |
| 0, | |
| 0, 0, 0, 0, | |
| 0, 0, 0, | |
| 0, 0, | |
| 0, | |
| 0,0,0,0, | |
| 0,0,0,0, | |
| 1,1,1,1 | |
| ), | |
| "<=", 1) | |
| # D1 | |
| add.constraint(lprec, | |
| c( | |
| 1, 0, 0, 0, | |
| 1, 1, 1, | |
| 0, 0, | |
| 0, | |
| 0, 0, 0, 0, | |
| 0, 0, 0, | |
| 0, 0, | |
| 0, | |
| 0, 0, 0, 0, | |
| 0, 0, 0, | |
| 0, 0, | |
| 0, | |
| -1,0,0,0, | |
| 0,0,0,0, | |
| 0,0,0,0 | |
| ), | |
| ">=", 0) | |
| add.constraint(lprec, | |
| c( | |
| 0, 1, 0, 0, | |
| 1, 0, 0, | |
| 1, 1, | |
| 0, | |
| 0, 0, 0, 0, | |
| 0, 0, 0, | |
| 0, 0, | |
| 0, | |
| 0, 0, 0, 0, | |
| 0, 0, 0, | |
| 0, 0, | |
| 0, | |
| 0,-1,0,0, | |
| 0,0,0,0, | |
| 0,0,0,0 | |
| ), | |
| ">=", 0) | |
| add.constraint(lprec, | |
| c( | |
| 0, 0, 1, 0, | |
| 0, 1, 0, | |
| 1, 0, | |
| 1, | |
| 0, 0, 0, 0, | |
| 0, 0, 0, | |
| 0, 0, | |
| 0, | |
| 0, 0, 0, 0, | |
| 0, 0, 0, | |
| 0, 0, | |
| 0, | |
| 0,0,-1,0, | |
| 0,0,0,0, | |
| 0,0,0,0 | |
| ), | |
| ">=", 0) | |
| add.constraint(lprec, | |
| c( | |
| 0, 0, 0, 1, | |
| 0, 0, 1, | |
| 0, 1, | |
| 1, | |
| 0, 0, 0, 0, | |
| 0, 0, 0, | |
| 0, 0, | |
| 0, | |
| 0, 0, 0, 0, | |
| 0, 0, 0, | |
| 0, 0, | |
| 0, | |
| 0,0,0,-1, | |
| 0,0,0,0, | |
| 0,0,0,0 | |
| ), | |
| ">=", 0) | |
| # D2 | |
| add.constraint(lprec, | |
| c( | |
| 0, 0, 0, 0, | |
| 0, 0, 0, | |
| 0, 0, | |
| 0, | |
| 1, 0, 0, 0, | |
| 1, 1, 1, | |
| 0, 0, | |
| 0, | |
| 0, 0, 0, 0, | |
| 0, 0, 0, | |
| 0, 0, | |
| 0, | |
| 0,0,0,0, | |
| -1,0,0,0, | |
| 0,0,0,0 | |
| ), | |
| ">=", 0) | |
| add.constraint(lprec, | |
| c( | |
| 0, 0, 0, 0, | |
| 0, 0, 0, | |
| 0, 0, | |
| 0, | |
| 0, 1, 0, 0, | |
| 1, 0, 0, | |
| 1, 1, | |
| 0, | |
| 0, 0, 0, 0, | |
| 0, 0, 0, | |
| 0, 0, | |
| 0, | |
| 0,0,0,0, | |
| 0,-1,0,0, | |
| 0,0,0,0 | |
| ), | |
| ">=", 0) | |
| add.constraint(lprec, | |
| c( | |
| 0, 0, 0, 0, | |
| 0, 0, 0, | |
| 0, 0, | |
| 0, | |
| 0, 0, 1, 0, | |
| 0, 1, 0, | |
| 1, 0, | |
| 1, | |
| 0, 0, 0, 0, | |
| 0, 0, 0, | |
| 0, 0, | |
| 0, | |
| 0,0,0,0, | |
| 0,0,-1,0, | |
| 0,0,0,0 | |
| ), | |
| ">=", 0) | |
| add.constraint(lprec, | |
| c( | |
| 0, 0, 0, 0, | |
| 0, 0, 0, | |
| 0, 0, | |
| 0, | |
| 0, 0, 0, 1, | |
| 0, 0, 1, | |
| 0, 1, | |
| 1, | |
| 0, 0, 0, 0, | |
| 0, 0, 0, | |
| 0, 0, | |
| 0, | |
| 0,0,0,0, | |
| 0,0,0,-1, | |
| 0,0,0,0 | |
| ), | |
| ">=", 0) | |
| # D3 | |
| add.constraint(lprec, | |
| c( | |
| 0, 0, 0, 0, | |
| 0, 0, 0, | |
| 0, 0, | |
| 0, | |
| 0, 0, 0, 0, | |
| 0, 0, 0, | |
| 0, 0, | |
| 0, | |
| 1, 0, 0, 0, | |
| 1, 1, 1, | |
| 0, 0, | |
| 0, | |
| 0,0,0,0, | |
| 0,0,0,0, | |
| -1,0,0,0 | |
| ), | |
| ">=", 0) | |
| add.constraint(lprec, | |
| c( | |
| 0, 0, 0, 0, | |
| 0, 0, 0, | |
| 0, 0, | |
| 0, | |
| 0, 0, 0, 0, | |
| 0, 0, 0, | |
| 0, 0, | |
| 0, | |
| 0, 1, 0, 0, | |
| 1, 0, 0, | |
| 1, 1, | |
| 0, | |
| 0,0,0,0, | |
| 0,0,0,0, | |
| 0,-1,0,0 | |
| ), | |
| ">=", 0) | |
| add.constraint(lprec, | |
| c( | |
| 0, 0, 0, 0, | |
| 0, 0, 0, | |
| 0, 0, | |
| 0, | |
| 0, 0, 0, 0, | |
| 0, 0, 0, | |
| 0, 0, | |
| 0, | |
| 0, 0, 1, 0, | |
| 0, 1, 0, | |
| 1, 0, | |
| 1, | |
| 0,0,0,0, | |
| 0,0,0,0, | |
| 0,0,-1,0 | |
| ), | |
| ">=", 0) | |
| add.constraint(lprec, | |
| c( | |
| 0, 0, 0, 0, | |
| 0, 0, 0, | |
| 0, 0, | |
| 0, | |
| 0, 0, 0, 0, | |
| 0, 0, 0, | |
| 0, 0, | |
| 0, | |
| 0, 0, 0, 1, | |
| 0, 0, 1, | |
| 0, 1, | |
| 1, | |
| 0,0,0,0, | |
| 0,0,0,0, | |
| 0,0,0,-1 | |
| ), | |
| ">=", 0) | |
| # E | |
| qmax = 0.75 | |
| add.constraint(lprec, | |
| c( | |
| 0, 0, 0, 0, | |
| 0, 0, 0, | |
| 0, 0, | |
| 0, | |
| 0, 0, 0, 0, | |
| 0, 0, 0, | |
| 0, 0, | |
| 0, | |
| 0, 0, 0, 0, | |
| 0, 0, 0, | |
| 0, 0, | |
| 0, | |
| 1,0,0,0, | |
| 1,0,0,0, | |
| 1,0,0,0 | |
| ), | |
| ">=", qmax) | |
| add.constraint(lprec, | |
| c( | |
| 0, 0, 0, 0, | |
| 0, 0, 0, | |
| 0, 0, | |
| 0, | |
| 0, 0, 0, 0, | |
| 0, 0, 0, | |
| 0, 0, | |
| 0, | |
| 0, 0, 0, 0, | |
| 0, 0, 0, | |
| 0, 0, | |
| 0, | |
| 0,1,0,0, | |
| 0,1,0,0, | |
| 0,1,0,0 | |
| ), | |
| ">=", qmax) | |
| add.constraint(lprec, | |
| c( | |
| 0, 0, 0, 0, | |
| 0, 0, 0, | |
| 0, 0, | |
| 0, | |
| 0, 0, 0, 0, | |
| 0, 0, 0, | |
| 0, 0, | |
| 0, | |
| 0, 0, 0, 0, | |
| 0, 0, 0, | |
| 0, 0, | |
| 0, | |
| 0,0,1,0, | |
| 0,0,1,0, | |
| 0,0,1,0 | |
| ), | |
| ">=", qmax) | |
| add.constraint(lprec, | |
| c( | |
| 0, 0, 0, 0, | |
| 0, 0, 0, | |
| 0, 0, | |
| 0, | |
| 0, 0, 0, 0, | |
| 0, 0, 0, | |
| 0, 0, | |
| 0, | |
| 0, 0, 0, 0, | |
| 0, 0, 0, | |
| 0, 0, | |
| 0, | |
| 0,0,0,1, | |
| 0,0,0,1, | |
| 0,0,0,1 | |
| ), | |
| ">=", qmax) | |
| RowNames <- | |
| c( | |
| "A1", "A2", "A3", | |
| "B1", "B2", "B3", "B4", | |
| "C1", "C2", "C3", | |
| "D1A", "D1B", "D1C", "D1D", | |
| "D2A", "D2B", "D2C", "D2D", | |
| "D3A", "D3B", "D3C", "D3D", | |
| "EA", "EB", "EC", "ED" | |
| ) | |
| ColNames <- | |
| c( | |
| "X1A", "X1B", "X1C", "X1D", | |
| "X1AB", "X1AC", "X1AD", | |
| "X1BC", "X1BD", | |
| "X1CD", | |
| "X2A", "X2B", "X2C", "X2D", | |
| "X2AB", "X2AC", "X2AD", | |
| "X2BC", "X2BD", | |
| "X2CD", | |
| "X3A", "X3B", "X3C", "X3D", | |
| "X3AB", "X3AC", "X3AD", | |
| "X3BC", "X3BD", | |
| "X3CD", | |
| "Q1A", "Q1B", "Q1C", "Q1D", | |
| "Q2A", "Q2B", "Q2C", "Q2D", | |
| "Q3A", "Q3B", "Q3C", "Q3D" | |
| ) | |
| dimnames(lprec) <- list(RowNames, ColNames) | |
| set.type(lprec, | |
| c( | |
| 1,2,3,4,5,6,7,8,9,10, | |
| 11,12,13,14,15,16,17,18,19,20, | |
| 21,22,23,24,25,26,27,28,29,30 | |
| ), | |
| "binary" | |
| ) | |
| set.type(lprec, | |
| c( | |
| 31,32,33,34, | |
| 35,36,37,38, | |
| 39,40,41,42 | |
| ), | |
| "real" | |
| ) | |
| print("saving model as model4.txt ..") | |
| write.lp(lprec, "model4.txt") | |
| solve(lprec) | |
| print("Objective Function:") | |
| print(R) | |
| print("Objective:") | |
| print(get.objective(lprec)) | |
| print(ColNames) | |
| print(get.variables(lprec)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment