Re: [R] Optimization inconsistencies

2012-05-18 Thread Hans W Borchers
peter dalgaard pdalgd at gmail.com writes:
 
 On May 18, 2012, at 00:14 , Nathan Stephens wrote:
 
  I have a very simple maximization problem where I'm solving for the vector
  x:
  
  objective function:
  w'x = value to maximize
  
  box constraints (for all elements of w):
  low  x  high
  
  equality constraint:
  sum(x) = 1
  
  But I get inconsistent results depending on what starting values I. I've
  tried various packages but none seem to bee the very solver in Excel. Any
  recommendations on what packages or functions I should try?

Use the equality constraint to reduce the dimension of the problem by one.
Then formulate the inequality constraints and apply, e.g., constrOptim().
You can immediately write down and use the gradient, so method L-BFGS-B is
appropriate.

Because the problem is linear, there is only one maximum and no dependency
on starting values. 

If you had supplied some data and code (which packages did you try, and how?),
a more concrete answer would have been possible. My own test example worked
out of the box.

Hans Werner


 Sounds like a linear programming problem, so perhaps one of the packages 
 that are specialized for that? lpSolve looks like it should do it.
 
 (As a general matter: There's nothing simple about constrained maximization 
 problems, and generic optimizers aren't really geared towards dealing with 
 large sets of constraints.)
 
  
  --Nathan

__
R-help@r-project.org 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.


Re: [R] Optimization inconsistencies

2012-05-18 Thread Marc Girondot

Le 18/05/12 00:14, Nathan Stephens a écrit :

I have a very simple maximization problem where I'm solving for the vector
x:

objective function:
w'x = value to maximize

box constraints (for all elements of w):
low  x  high

equality constraint:
sum(x) = 1

But I get inconsistent results depending on what starting values I. I've
tried various packages but none seem to bee the very solver in Excel. Any
recommendations on what packages or functions I should try?


I had similar problem to solve (x were frequencies) and optimization 
stops before to reach the global maximum. As hwborch...@googlemail.com 
indicates, I fitted {x}-1 values because the last one is known by the 
equality constraint.

For the vector constraints, I used w - -Inf when x goes out of the limits.

Finally I used Bayesian mcmc to get the convergence and it works much 
better.


I don't know why in this case the optim does not converge.

Hope it hepls,

Marc

--
__
Marc Girondot, Pr

Laboratoire Ecologie, Systématique et Evolution
Equipe de Conservation des Populations et des Communautés
CNRS, AgroParisTech et Université Paris-Sud 11 , UMR 8079
Bâtiment 362
91405 Orsay Cedex, France

Tel:  33 1 (0)1.69.15.72.30   Fax: 33 1 (0)1.69.15.73.53
e-mail: marc.giron...@u-psud.fr
Web: http://www.ese.u-psud.fr/epc/conservation/Marc.html
Skype: girondot

__
R-help@r-project.org 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.


Re: [R] Optimization inconsistencies

2012-05-18 Thread peter dalgaard

On May 18, 2012, at 09:10 , Hans W Borchers wrote:

 peter dalgaard pdalgd at gmail.com writes:
 
 On May 18, 2012, at 00:14 , Nathan Stephens wrote:
 
 I have a very simple maximization problem where I'm solving for the vector
 x:
 
 objective function:
 w'x = value to maximize
 
 box constraints (for all elements of w):
 low  x  high
 
 equality constraint:
 sum(x) = 1
 
 But I get inconsistent results depending on what starting values I. I've
 tried various packages but none seem to bee the very solver in Excel. Any
 recommendations on what packages or functions I should try?
 
 Use the equality constraint to reduce the dimension of the problem by one.
 Then formulate the inequality constraints and apply, e.g., constrOptim().
 You can immediately write down and use the gradient, so method L-BFGS-B is
 appropriate.

I considered making a similar remark, then realized that lpSolve actually 
allows equality constraints, so why not just use the tool that is designed for 
the job?


 Because the problem is linear, there is only one maximum and no dependency
 on starting values. 

However, with a linear objective function, the Hessian is 0 and the maximum is 
attained at a corner point, which is likely to confuse algorithms that expect a 
locally quadratic function. 

 If you had supplied some data and code (which packages did you try, and how?),
 a more concrete answer would have been possible. My own test example worked
 out of the box.
 

Yes, also from the development perspective. We need to see more of these hard 
examples. 


 Hans Werner
 
 
 Sounds like a linear programming problem, so perhaps one of the packages 
 that are specialized for that? lpSolve looks like it should do it.
 
 (As a general matter: There's nothing simple about constrained maximization 
 problems, and generic optimizers aren't really geared towards dealing with 
 large sets of constraints.)
 
 
 --Nathan
 
 __
 R-help@r-project.org 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.

-- 
Peter Dalgaard, Professor,
Center for Statistics, Copenhagen Business School
Solbjerg Plads 3, 2000 Frederiksberg, Denmark
Phone: (+45)38153501
Email: pd@cbs.dk  Priv: pda...@gmail.com

__
R-help@r-project.org 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.


Re: [R] Optimization inconsistencies

2012-05-18 Thread Hans W Borchers
Marc Girondot marc_grt at yahoo.fr writes:
 
 Le 18/05/12 00:14, Nathan Stephens a écrit :
  I have a very simple maximization problem where I'm solving for the vector
  But I get inconsistent results depending on what starting values I. I've
  tried various packages but none seem to bee the very solver in Excel. Any
  recommendations on what packages or functions I should try?
  [...]

 I had similar problem to solve (x were frequencies) and optimization 
 stops before to reach the global maximum. As [...] indicate[d], I fitted
  {x}-1 values because the last one is known by the equality constraint.
 
 For the vector constraints, I used w - -Inf when x goes out of the limits.

Same as before:
Would you *please* post data and code, as the posting guide requests!

The variable that is left out still has some (linear) inequalities to fullfil. 
I didn't understand how you worked that out with optim() as it only allows to
include box constraints.

Hans Werner

 Finally I used Bayesian mcmc to get the convergence and it works much 
 better.
 
 I don't know why in this case the optim does not converge.
 
 Hope it hepls,
 
 Marc

__
R-help@r-project.org 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.


Re: [R] Optimization inconsistencies

2012-05-18 Thread Petr Savicky
On Thu, May 17, 2012 at 06:14:37PM -0400, Nathan Stephens wrote:
 I have a very simple maximization problem where I'm solving for the vector
 x:
 
 objective function:
 w'x = value to maximize
 
 box constraints (for all elements of w):
 low  x  high
 
 equality constraint:
 sum(x) = 1

Hi.

As Peter Dalgaard suggested, lpSolve may be used. If low may contain
negative values, then it is important to note that lpSolve assumes
all variables nonnegative. So, a transformation is needed, for example
x = low + y and solve for y. The following is one approach.

  library(lpSolve)
 
  n - 8
  w - 1:n
  low - rep(-1, times=n)
  high - rep(1, times=n)
 
  crit - w
  mat - rbind(diag(n), 1)
  rhs - c(high - low, 1 - sum(low))
  dir - c(rep(=, times=n), ==)
 
  out - lp(max, objective.in=crit, const.mat=mat, const.dir=dir, 
const.rhs=rhs)
  x - low + out$solution

  round(x, digits=15)

  [1] -1 -1 -1  0  1  1  1  1

Hope this helps.

Petr Savicky.

__
R-help@r-project.org 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.


Re: [R] Optimization inconsistencies

2012-05-17 Thread peter dalgaard

On May 18, 2012, at 00:14 , Nathan Stephens wrote:

 I have a very simple maximization problem where I'm solving for the vector
 x:
 
 objective function:
 w'x = value to maximize
 
 box constraints (for all elements of w):
 low  x  high
 
 equality constraint:
 sum(x) = 1
 
 But I get inconsistent results depending on what starting values I. I've
 tried various packages but none seem to bee the very solver in Excel. Any
 recommendations on what packages or functions I should try?

Sounds like a linear programming problem, so perhaps one of the packages that 
are specialized for that? lpSolve looks like it should do it.

(As a general matter: There's nothing simple about constrained maximization 
problems, and generic optimizers aren't really geared towards dealing with 
large sets of constraints.)

 
 --Nathan
 
   [[alternative HTML version deleted]]
 
 __
 R-help@r-project.org 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.

-- 
Peter Dalgaard, Professor,
Center for Statistics, Copenhagen Business School
Solbjerg Plads 3, 2000 Frederiksberg, Denmark
Phone: (+45)38153501
Email: pd@cbs.dk  Priv: pda...@gmail.com

__
R-help@r-project.org 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.