[R] constrOptim with method = "L-BFGS-B"

From: lhaba <georgeshabre_at_gmail.com>
Date: Tue, 17 Jun 2008 08:50:51 -0700 (PDT)

Hi,
i need to minimize a quadratic function with boundary condidtions and one equality condition.
In order to do that i converted the equality constraint into 2 inequality
constaints and passed everything cia constrOptim, as the manual said: everything included in the ... will be passed to Optim that will pass it back to fn in case it does not need it.

My code is the following:

mat <- array( c(0.0001088799073581,	0.0000136029502036,	0.0000060430384243,
0.0000847097879033,	0.0000115053365822,	0.0000216245975292,
0.0000483253391811,	0.0000787580901352,	0.0000186474817658,
0.0000312260571354,	0.0000217594093734,	0.0000536298150897,
0.0000166202592455,	0.0000451975061637,	-0.0000120364862228,
0.0000497117714376,
0.0000136029502036,	0.0001537319301276,	0.0000226518408080,
0.0000591480002102,	0.0000797128619950,	0.0000091332643423,
0.0000693354260457,	0.0000825217915015,	0.0000229122227269,
0.0000297662414650,	0.0000334443258658,	0.0000273254534933,
0.0000202062301763,	0.0000026260702295,	0.0000558975248740,
0.0000953647537111,
0.0000060430384243,	0.0000226518408080,	0.0005971325756834,

-0.0000762583321100, -0.0000246005202071, -0.0000300982253054,
0.0000299178429478, 0.0000135672602503, 0.0001735431064391,
-0.0000133347388414, 0.0001387582890571, 0.0000964898243724,
-0.0000149571346672, 0.0000104437939143, 0.0001246900353191,
-0.0000171884354549,
0.0000847097879033, 0.0000591480002102, -0.0000762583321100, 0.0004968467836203, 0.0002303499425964, 0.0000992731601466, 0.0002685466918035, 0.0002580180069951, 0.0000725833959653, 0.0000525639940758, 0.0001785049461665, 0.0001781339191317, 0.0000597631329497, 0.0000201160486244, 0.0002582267884874, 0.0002473268250781, 0.0000115053365822, 0.0000797128619950, -0.0000246005202071, 0.0002303499425964, 0.0002945009393242, -0.0000426583313588, 0.0002067711081561, 0.0002695894499975, 0.0001312519434236,
-0.0000079156628396, 0.0001423655606105, 0.0000044733483182,
0.0000303832556655, 0.0000577624190434, 0.0001193435284164, 0.0002422477575812, 0.0000216245975292, 0.0000091332643423, -0.0000300982253054, 0.0000992731601466, -0.0000426583313588, 0.0001641146317929, 0.0000311621614693, -0.0000147821020927, -0.0000767394607354, 0.0000619936562782, -0.0000306228761064, 0.0001495752154579, 0.0000389317919640, -0.0000714551280935, -0.0000564616194935, 0.0000384367900903, 0.0000483253391811, 0.0000693354260457, 0.0000299178429478, 0.0002685466918035, 0.0002067711081561, 0.0000311621614693, 0.0003176493360736, 0.0002575792630182, 0.0001371966488704, 0.0000436833885846, 0.0001442516276721, 0.0001075447728937, 0.0000371155448252, 0.0000475873370276, 0.0002162409964174, 0.0002870514043081, 0.0000787580901352, 0.0000825217915015, 0.0000135672602503, 0.0002580180069951, 0.0002695894499975, -0.0000147821020927, 0.0002575792630182, 0.0006217963583393, 0.0002368375072233, 0.0000078625467985, 0.0002054774387807, -0.0000066572248626, 0.0000485854317294, 0.0002802199677114, 0.0001676465030622, 0.0003028775764026, 0.0000186474817658, 0.0000229122227269, 0.0001735431064391, 0.0000725833959653, 0.0001312519434236, -0.0000767394607354, 0.0001371966488704, 0.0002368375072233, 0.0004475645060339,
-0.0000030389778729, 0.0001706183643212, -0.0000017789896670,
0.0000722657436668, 0.0001664088523103, 0.0001220193496918, 0.0001641280878243, 0.0000312260571354, 0.0000297662414650, -0.0000133347388414, 0.0000525639940758, -0.0000079156628396, 0.0000619936562782, 0.0000436833885846, 0.0000078625467985, -0.0000030389778729, 0.0000822356406019, -0.0000226786278360, 0.0000752056105897, 0.0000399801889185, -0.0000441549693477, 0.0000047887593401, 0.0000352165734549, 0.0000217594093734, 0.0000334443258658, 0.0001387582890571, 0.0001785049461665, 0.0001423655606105, -0.0000306228761064, 0.0001442516276721, 0.0002054774387807, 0.0001706183643212,
-0.0000226786278360, 0.0004304869804941, 0.0001566983136020,
0.0000332770114864, 0.0000012432094922, 0.0002491186667930, 0.0001285479414542, 0.0000536298150897, 0.0000273254534933, 0.0000964898243724, 0.0001781339191317, 0.0000044733483182, 0.0001495752154579, 0.0001075447728937, -0.0000066572248626, -0.0000017789896670, 0.0000752056105897, 0.0001566983136020, 0.0005292416268831, 0.0000893358436932, -0.0001009559617338, 0.0000888461032129, 0.0000714719761291, 0.0000166202592455, 0.0000202062301763, -0.0000149571346672, 0.0000597631329497, 0.0000303832556655, 0.0000389317919640, 0.0000371155448252, 0.0000485854317294, 0.0000722657436668, 0.0000399801889185, 0.0000332770114864, 0.0000893358436932, 0.0001844874143317, 0.0000549019705905, -0.0000117658984941, 0.0000394986211508, 0.0000451975061637, 0.0000026260702295, 0.0000104437939143, 0.0000201160486244, 0.0000577624190434, -0.0000714551280935, 0.0000475873370276, 0.0002802199677114, 0.0001664088523103,
-0.0000441549693477, 0.0000012432094922, -0.0001009559617338,
0.0000549019705905, 0.0006686123611712, -0.0001115788528761, 0.0000151312169512,
-0.0000120364862228, 0.0000558975248740, 0.0001246900353191,
0.0002582267884874, 0.0001193435284164, -0.0000564616194935, 0.0002162409964174, 0.0001676465030622, 0.0001220193496918, 0.0000047887593401, 0.0002491186667930, 0.0000888461032129,
-0.0000117658984941, -0.0001115788528761, 0.0014937840813054,
0.0001299625832782, 0.0000497117714376, 0.0000953647537111, -0.0000171884354549, 0.0002473268250781, 0.0002422477575812, 0.0000384367900903, 0.0002870514043081, 0.0003028775764026, 0.0001641280878243, 0.0000352165734549, 0.0001285479414542, 0.0000714719761291, 0.0000394986211508, 0.0000151312169512, 0.0001299625832782,
0.0004355778955394), c(16,16))

covar <- function(x) return (t(x) %*%mat %*% (x)) covargr <- function(x) return ( 2*mat %*% (x))

upper1 = c(1, 0, 0, 0,  0, 0, 0,0 ,0 , 0, 0, 0, 0, 0, 0, 0)
lower1 = c(1, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25,

-0.25, -0.25, -0.25, -0.25, -0.25, -0.25)
lower[1] = 1
init = upper1- 1/15.0
init[1] = 1

 optim( init, covar, covargr, method = "L-BFGS-B", lower = lower1, upper = upper1)
u1 <- c(0, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 0,
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1)
u2<- array(u1, c(16, 2))
u2[,2] <- -u2[,2]

u1<- t(u1)
c1<- array(c(-1, -1),c(2,1))
 constrOptim (init, covar, covargr, t(u2), c1, mu = 1e-054, method = "L-BFGS-B", lower = lower1, upper = upper1, outer.iterations = 100, outer.eps = 1e-05)

The problem I face is an error message telling me that the method "L-BFGS-B" needs finite values of fn...
while everything works well in the optim case without the inequalities.

Does anybody have any clue about what might have gone wrong?

THank you for your help

Georges

--

View this message in context: http://www.nabble.com/constrOptim-with-method-%3D-%22L-BFGS-B%22-tp17916460p17916460.html Sent from the R help mailing list archive at Nabble.com.



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. Received on Tue 17 Jun 2008 - 16:33:19 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Thu 19 Jun 2008 - 16:30:43 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.

list of date sections of archive