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? --Nathan [[alternative HTML version deleted]]
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 at 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.mes at cbs.dk Priv: PDalgd at gmail.com
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 hwborchers at 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.girondot at u-psud.fr Web: http://www.ese.u-psud.fr/epc/conservation/Marc.html Skype: girondot
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) = 1Hi. 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.