[R] Constrained Optimization

Ravi Varadhan RVaradhan at jhmi.edu
Wed Nov 4 23:57:01 CET 2009


Your initial value is indeed "infeasible", as the error message says.  Your
x[1] is 1.00004, which is not in the interval [0,1].

To incorporate both equalities and inequalities (linear or nonlinear), you
could try my function `constrOptim.nl'.  Contact me off the list if you are
interested.

Ravi.
----------------------------------------------------------------------------
-------

Ravi Varadhan, Ph.D.

Assistant Professor, The Center on Aging and Health

Division of Geriatric Medicine and Gerontology 

Johns Hopkins University

Ph: (410) 502-2619

Fax: (410) 614-9625

Email: rvaradhan at jhmi.edu

Webpage:
http://www.jhsph.edu/agingandhealth/People/Faculty_personal_pages/Varadhan.h
tml

 

----------------------------------------------------------------------------
--------


-----Original Message-----
From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On
Behalf Of s t
Sent: Wednesday, November 04, 2009 5:48 PM
To: r-help at r-project.org
Subject: [R] Constrained Optimization

Hi All,
I'm trying to do the following constrained optimization example.
Maximize x1*(1-x1) + x2*(1-x2) + x3*(1-x3) s.t. x1 + x2 + x3 = 1
x1 >= 0 and x1 <= 1
x2 >= 0 and x2 <= 1
x3 >= 0 and x3 <= 1
which are the constraints.
I'm expecting the answer x1=x2=x3 = 1/3.

I tried the "constrOptim" function in R and I'm running into some issues.
I first start off by setting my equalities to inequalities
x1+x2+x3 >= 1
x1+x2+x3 <= 1.001

However, I get a
"Error in constrOptim(c(1.00004, 0, 0), fr, grr, ui = t(A), ci = b) : 
  initial value not feasible
Execution halted" error.
The values 1.00004,0,0 are well within the constraints domain.

fr = function(x){
  x1 = x[1]
  x2 = x[2]
  x3 = x[3]
  x1*(1-x1) + x2*(1-x2) + x3*(1-x3)
}

grr = function(x){
  x1 = x[1]
  x2 = x[2]
  x3 = x[3]
  c(1-2*x1,1-2*x2,1-2*x3)
}

A =
matrix(c(1,1,1,-1,-1,-1,1,0,0,0,1,0,0,0,1,1,0,0,0,1,0,0,0,1),3,8,byrow=T)
b = c(1,-1.001,0,0,0,1,1,1)

y = constrOptim(c(1.00004,0,0),fr,grr,ui = t(A),ci = b)

Any help/pointers greatly appreciated.

Thanks








      
	[[alternative HTML version deleted]]




More information about the R-help mailing list