lpSolve space problem in R 2.4.1 on Windows XP

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

lpSolve space problem in R 2.4.1 on Windows XP

Talbot Katz
Hi.

I am trying to use the linear optimizer from package lpSolve in R 2.4.1 on
Windows XP (Version 5.1).  The problem I am trying to solve has 2843
variables (2841 integer, 2 continuous) and 8524 constraints, and I have 2 Gb
of memory.  After I load the input data into R, I have at most 1.5 Gb of
memory available.  If I start the lp with significantly less memory
available (say 1 Gb), I get an error message from R:

"Error: cannot allocate vector of size 189459 Kb"

If I close all my other windows and try to maximize the available memory to
the full 1.5 Gb, I can watch the memory get filled up until only about 400
Mb is left, at which point I get a Windows error message:

"R for Windows GUI front-end has encountered a problem and needs to close.  
We are sorry for the inconvenience."

This behavior persists even when I relax the integer constraints, and
eliminate the 2841 constraints that restrict the integer variables to values
<= 1, so I'm just running a standard lp with 2843 variables and 5683
constraints.

I have been able to get the full MIP formulation to work correctly on some
very small problems (~10 variables and 25 constraints).

Here is the code for a working example:

>library(lpSolve)
>(v1=rev(1:8))
[1] 8 7 6 5 4 3 2 1
>(csv1=cumsum(as.numeric(v1)))
[1]  8 15 21 26 30 33 35 36
>(lencsv1=length(csv1))
[1] 8
>(Nm1=lencsv1-1)
[1] 7
>(Np1=lencsv1+1)
[1] 9
>ngp=3
>f.obj=c(1,1,rep(0,Nm1))
>f.int=3:Np1
>bin.con=cbind(rep(0,Nm1),rep(0,Nm1),diag(Nm1))
>bin.dir=rep("<=",Nm1)
>bin.rhs=rep(1,Nm1)
>gp.con=c(0,0,rep(1,Nm1))
>gp.dir="<="
>(gp.rhs=ngp-1)
[1] 2
>ub.con=cbind(rep(-1,rep(Nm1)),rep(0,Nm1),!upper.tri(matrix(nrow=Nm1,ncol=Nm1)))
>ub.dir=rep("<=",Nm1)
>(ub.rhs=csv1[1:Nm1]*ngp/csv1[lencsv1])
[1] 0.6666667 1.2500000 1.7500000 2.1666667 2.5000000 2.7500000 2.9166667
>lb.con=cbind(rep(0,Nm1),rep(1,rep(Nm1)),!upper.tri(matrix(nrow=Nm1,ncol=Nm1)))
>lb.dir=rep(">=",Nm1)
>lb.rhs=ub.rhs
>f.con=rbind(bin.con,gp.con,ub.con,lb.con)
>f.dir=c(bin.dir,gp.dir,ub.dir,lb.dir)
>f.rhs=c(bin.rhs,gp.rhs,ub.rhs,lb.rhs)
>lglp=lp("min",f.obj,f.con,f.dir,f.rhs,int.vec=f.int)
>lglp$objval
[1] 0.9166667
>lglp$solution
[1] 0.0000000 0.9166667 0.0000000 1.0000000 0.0000000 1.0000000 0.0000000
[8] 0.0000000 0.0000000
>

What this is doing is taking the points of v1 and dividing them into
contiguous groups (the variable ngp is the number of groups) such that the
sums of the v1 values are as close as possible to equal within the three
groups.  So, for v1 = c(8,7,6,5,4,3,2,1), the groups c(8,7), c(6,5),
c(4,3,2,1), with sums 15,11,10 is the best such split, and the solution
vector shows that the splitting occurs after the second and fourth elements.


Anyway, I am wondering...  Are 3000 variables and 8500 constraints usually
too much for lpSolve to handle in 1.5 Gb of memory?  Is there a possible bug
(in R or in Windows) that leads to the Windows error when the memory falls
below 400 Mb?  Is there a problem with my formulation that makes it unstable
even after the integer constraints are removed?

Thanks!


--  TMK  --
212-460-5430 home
917-656-5351 cell

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
Reply | Threaded
Open this post in threaded view
|

Re: lpSolve space problem in R 2.4.1 on Windows XP

Uwe Ligges
If R is closed that way (i.e. crashes), it is a bug by definition:
either in R or (more probable) in the package. Can you please contact
the package maintainer to sort things out.

Thanks,
Uwe Ligges





Talbot Katz wrote:

> Hi.
>
> I am trying to use the linear optimizer from package lpSolve in R 2.4.1 on
> Windows XP (Version 5.1).  The problem I am trying to solve has 2843
> variables (2841 integer, 2 continuous) and 8524 constraints, and I have 2 Gb
> of memory.  After I load the input data into R, I have at most 1.5 Gb of
> memory available.  If I start the lp with significantly less memory
> available (say 1 Gb), I get an error message from R:
>
> "Error: cannot allocate vector of size 189459 Kb"
>
> If I close all my other windows and try to maximize the available memory to
> the full 1.5 Gb, I can watch the memory get filled up until only about 400
> Mb is left, at which point I get a Windows error message:
>
> "R for Windows GUI front-end has encountered a problem and needs to close.  
> We are sorry for the inconvenience."
>
> This behavior persists even when I relax the integer constraints, and
> eliminate the 2841 constraints that restrict the integer variables to values
> <= 1, so I'm just running a standard lp with 2843 variables and 5683
> constraints.
>
> I have been able to get the full MIP formulation to work correctly on some
> very small problems (~10 variables and 25 constraints).
>
> Here is the code for a working example:
>
>> library(lpSolve)
>> (v1=rev(1:8))
> [1] 8 7 6 5 4 3 2 1
>> (csv1=cumsum(as.numeric(v1)))
> [1]  8 15 21 26 30 33 35 36
>> (lencsv1=length(csv1))
> [1] 8
>> (Nm1=lencsv1-1)
> [1] 7
>> (Np1=lencsv1+1)
> [1] 9
>> ngp=3
>> f.obj=c(1,1,rep(0,Nm1))
>> f.int=3:Np1
>> bin.con=cbind(rep(0,Nm1),rep(0,Nm1),diag(Nm1))
>> bin.dir=rep("<=",Nm1)
>> bin.rhs=rep(1,Nm1)
>> gp.con=c(0,0,rep(1,Nm1))
>> gp.dir="<="
>> (gp.rhs=ngp-1)
> [1] 2
>> ub.con=cbind(rep(-1,rep(Nm1)),rep(0,Nm1),!upper.tri(matrix(nrow=Nm1,ncol=Nm1)))
>> ub.dir=rep("<=",Nm1)
>> (ub.rhs=csv1[1:Nm1]*ngp/csv1[lencsv1])
> [1] 0.6666667 1.2500000 1.7500000 2.1666667 2.5000000 2.7500000 2.9166667
>> lb.con=cbind(rep(0,Nm1),rep(1,rep(Nm1)),!upper.tri(matrix(nrow=Nm1,ncol=Nm1)))
>> lb.dir=rep(">=",Nm1)
>> lb.rhs=ub.rhs
>> f.con=rbind(bin.con,gp.con,ub.con,lb.con)
>> f.dir=c(bin.dir,gp.dir,ub.dir,lb.dir)
>> f.rhs=c(bin.rhs,gp.rhs,ub.rhs,lb.rhs)
>> lglp=lp("min",f.obj,f.con,f.dir,f.rhs,int.vec=f.int)
>> lglp$objval
> [1] 0.9166667
>> lglp$solution
> [1] 0.0000000 0.9166667 0.0000000 1.0000000 0.0000000 1.0000000 0.0000000
> [8] 0.0000000 0.0000000
>
> What this is doing is taking the points of v1 and dividing them into
> contiguous groups (the variable ngp is the number of groups) such that the
> sums of the v1 values are as close as possible to equal within the three
> groups.  So, for v1 = c(8,7,6,5,4,3,2,1), the groups c(8,7), c(6,5),
> c(4,3,2,1), with sums 15,11,10 is the best such split, and the solution
> vector shows that the splitting occurs after the second and fourth elements.
>
>
> Anyway, I am wondering...  Are 3000 variables and 8500 constraints usually
> too much for lpSolve to handle in 1.5 Gb of memory?  Is there a possible bug
> (in R or in Windows) that leads to the Windows error when the memory falls
> below 400 Mb?  Is there a problem with my formulation that makes it unstable
> even after the integer constraints are removed?
>
> Thanks!
>
>
> --  TMK  --
> 212-460-5430 home
> 917-656-5351 cell
>
> ______________________________________________
> [hidden email] mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
Reply | Threaded
Open this post in threaded view
|

Re: lpSolve space problem in R 2.4.1 on Windows XP

Talbot Katz
Hello Sam Buttrey.

Uwe Ligges from the r-help list asked me to forward this message to the
maintainer of the lpSolve package, because R 2.4.1 is crashing when I run
lp.  I saw your name listed in the lpSolve help file.  If you need more
detail, please let me know.  Thanks!

--  TMK  --
212-460-5430 home
917-656-5351 cell



>From: Uwe Ligges <[hidden email]>
>To: Talbot Katz <[hidden email]>
>CC: [hidden email]
>Subject: Re: [R] lpSolve space problem in R 2.4.1 on Windows XP
>Date: Fri, 09 Mar 2007 17:51:30 +0100
>
>If R is closed that way (i.e. crashes), it is a bug by definition: either
>in R or (more probable) in the package. Can you please contact the package
>maintainer to sort things out.
>
>Thanks,
>Uwe Ligges
>
>
>
>
>
>Talbot Katz wrote:
>>Hi.
>>
>>I am trying to use the linear optimizer from package lpSolve in R 2.4.1 on
>>Windows XP (Version 5.1).  The problem I am trying to solve has 2843
>>variables (2841 integer, 2 continuous) and 8524 constraints, and I have 2
>>Gb of memory.  After I load the input data into R, I have at most 1.5 Gb
>>of memory available.  If I start the lp with significantly less memory
>>available (say 1 Gb), I get an error message from R:
>>
>>"Error: cannot allocate vector of size 189459 Kb"
>>
>>If I close all my other windows and try to maximize the available memory
>>to the full 1.5 Gb, I can watch the memory get filled up until only about
>>400 Mb is left, at which point I get a Windows error message:
>>
>>"R for Windows GUI front-end has encountered a problem and needs to close.
>>  We are sorry for the inconvenience."
>>
>>This behavior persists even when I relax the integer constraints, and
>>eliminate the 2841 constraints that restrict the integer variables to
>>values <= 1, so I'm just running a standard lp with 2843 variables and
>>5683 constraints.
>>
>>I have been able to get the full MIP formulation to work correctly on some
>>very small problems (~10 variables and 25 constraints).
>>
>>Here is the code for a working example:
>>
>>>library(lpSolve)
>>>(v1=rev(1:8))
>>[1] 8 7 6 5 4 3 2 1
>>>(csv1=cumsum(as.numeric(v1)))
>>[1]  8 15 21 26 30 33 35 36
>>>(lencsv1=length(csv1))
>>[1] 8
>>>(Nm1=lencsv1-1)
>>[1] 7
>>>(Np1=lencsv1+1)
>>[1] 9
>>>ngp=3
>>>f.obj=c(1,1,rep(0,Nm1))
>>>f.int=3:Np1
>>>bin.con=cbind(rep(0,Nm1),rep(0,Nm1),diag(Nm1))
>>>bin.dir=rep("<=",Nm1)
>>>bin.rhs=rep(1,Nm1)
>>>gp.con=c(0,0,rep(1,Nm1))
>>>gp.dir="<="
>>>(gp.rhs=ngp-1)
>>[1] 2
>>>ub.con=cbind(rep(-1,rep(Nm1)),rep(0,Nm1),!upper.tri(matrix(nrow=Nm1,ncol=Nm1)))
>>>ub.dir=rep("<=",Nm1)
>>>(ub.rhs=csv1[1:Nm1]*ngp/csv1[lencsv1])
>>[1] 0.6666667 1.2500000 1.7500000 2.1666667 2.5000000 2.7500000 2.9166667
>>>lb.con=cbind(rep(0,Nm1),rep(1,rep(Nm1)),!upper.tri(matrix(nrow=Nm1,ncol=Nm1)))
>>>lb.dir=rep(">=",Nm1)
>>>lb.rhs=ub.rhs
>>>f.con=rbind(bin.con,gp.con,ub.con,lb.con)
>>>f.dir=c(bin.dir,gp.dir,ub.dir,lb.dir)
>>>f.rhs=c(bin.rhs,gp.rhs,ub.rhs,lb.rhs)
>>>lglp=lp("min",f.obj,f.con,f.dir,f.rhs,int.vec=f.int)
>>>lglp$objval
>>[1] 0.9166667
>>>lglp$solution
>>[1] 0.0000000 0.9166667 0.0000000 1.0000000 0.0000000 1.0000000 0.0000000
>>[8] 0.0000000 0.0000000
>>
>>What this is doing is taking the points of v1 and dividing them into
>>contiguous groups (the variable ngp is the number of groups) such that the
>>sums of the v1 values are as close as possible to equal within the three
>>groups.  So, for v1 = c(8,7,6,5,4,3,2,1), the groups c(8,7), c(6,5),
>>c(4,3,2,1), with sums 15,11,10 is the best such split, and the solution
>>vector shows that the splitting occurs after the second and fourth
>>elements.
>>
>>
>>Anyway, I am wondering...  Are 3000 variables and 8500 constraints usually
>>too much for lpSolve to handle in 1.5 Gb of memory?  Is there a possible
>>bug (in R or in Windows) that leads to the Windows error when the memory
>>falls below 400 Mb?  Is there a problem with my formulation that makes it
>>unstable even after the integer constraints are removed?
>>
>>Thanks!
>>
>>
>>--  TMK  --
>>212-460-5430 home
>>917-656-5351 cell
>>
>>______________________________________________
>>[hidden email] mailing list
>>https://stat.ethz.ch/mailman/listinfo/r-help
>>PLEASE do read the posting guide
>>http://www.R-project.org/posting-guide.html
>>and provide commented, minimal, self-contained, reproducible code.

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.