[R] Optimization in R similar to MS Excel Solver

Berend Hasselman bhh at xs4all.nl
Tue Mar 12 07:30:26 CET 2013


On 11-03-2013, at 23:31, Pavel_K <kuk064 at vsb.cz> wrote:

> Dear all,
> I am trying to find the solution for the optimization problem focused on the
> finding minimum cost.
> I used the solution proposed by excel solver, but there is a restriction in
> the number of variables.
> 
> My data consists of 300 rows represent cities and 6 columns represent the
> centres. It constitutes a cost matrix, where the cost are distances between
> each city and each of six centres. 
> ..+ 1 column contains variables, represents number of firms.
> I want to calculate the minimum cost between cities and centres.  Each city
> can belong only to one of the centres.
> 
> A model example:
> costs: distance between municipalities and centres + plus number of firms in
> each municipality
> "Municipality"	"Centre1"	"Centre2"	"Centre3"	"Centre4"	"Centre5"	"Centre6"
> "Firms"				
> "Muni1"		            30	    20	            60	              40	            
> 66	             90	            15
> "Muni2"		            20	    30              	    60	              40	            
> 66	             90	            10
> "Muni3"		            25	    31	            60	              40	            
> 66	             90	              5
> "Muni4"		            27	    26	            60	              40	            
> 66	             90	             30
> 
> The outcome of excel functon Solver is:
> cost assigned
> "Municipality"	"Centre1"	"Centre2"	"Centre3"	"Centre4"	"Centre5"	"Centre6"
> "Solution"				
> "Muni1"		            0	            20	               0	                0	              
> 0	                0	            300
> "Muni2"		            20	     0              	       0	                0	              
> 0	                0	            200
> "Muni3"		            25	     0	                       0	                0	              
> 0	                0	            125
> "Muni4"		              0	    26	               0	                0	              
> 0	                0	            780
> 
> objective : 1405
> 
> I used package "lpSolve" but there is a problem with variables "firms":
> 
> s <- as.matrix(read.table("C:/R/OPTIMALIZATION/DATA.TXT", dec = ",",
> sep=";",header=TRUE))
> 
>      [2] [3] [4] [5] [6]
> [1] 30 20 60 40 66 90
> [2] 20 30 60 40 66 90
> [3] 25 31 60 40 66 90
> [4] 27 26 60 40 66 90
> 
> row.signs <- rep ("=", 4)
> row.rhs <- c(15,10,5,30)
> col.signs <- rep ("=", 6)
> col.rhs <- c(1,1,1,1,1,1)
> lp.transport (costs, "min", row.signs, row.rhs, col.signs, col.rhs,
> presolve=0, compute.sens=0)
> lp.transport (costs, "min", row.signs, row.rhs, col.signs, col.rhs,
> presolve=0, compute.sens=0)$solution
> 
> Outcome:
> Error in lp.transport(costs, "min", row.signs, row.rhs, col.signs, col.rhs, 
> : 
>  Error: We have 6 signs, but 7 columns
> 
> Does anyone know where could the problem ? 
> Does there exist any other possibility how to perform that analysis in R ?
> I am bit confused here about how can I treat with the variables "firms".


Please provide a reproducible example including the necessary library() statements.

In the call of lp.transport you are using a variable "costs" but where is it defined?
You read a file with read.table into a variable "s".
Use dput.

Berend

 


More information about the R-help mailing list