[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