mxOption "Cold Start"

6 replies [Last post]
carey's picture
Offline
Joined: 10/19/2009

reran some old scripts that used to run fine, but under 1.1 the statement
mxOption(thisOMxModel, "Cold Start", "")
now gives the error
"argument 'key' has a value 'Cold Start' that cannot be found in getOption('mxOptions')"

has that been deprecated?

greg

mspiegel's picture
Offline
Joined: 07/31/2009
Hi Greg, The previous

Hi Greg,

The previous behavior of mxOption() was to take any unrecognized keys and pass them back to the optimizer. The new behavior of mxOption() restricts the keys to a finite set, to reduce the probability of silent errors being introduced through typographical mistakes. We discussed this issue at the developers meeting, and we decided it would be no problem to add "Cold Start" to the list of allowable options. For that matter, if there are any other NPSOL options that you would like to use, and are not currently on the list, let us know.

We have a small request before we add "Cold Start" to the options list. Can you verify that including the "Cold Start" option changes the behavior of model optimization? As a default OpenMx specifies neither "Cold Start" nor "Warm Start" to the optimizer. We think that NPSOL is selecting "Cold Start" when no option is selected. The current mxOption interface does not have a mechanism for specifying the free parameter values necessary for "Warm Start". So we think NPSOL is always "Cold Start" under OpenMx, are we wrong? You can use a 1.0.x OpenMx binary release if you need an older version for testing: http://openmx.psyc.virginia.edu/packages/bin/macosx/universal/contrib/2.12/

Michael

neale's picture
Offline
Joined: 07/31/2009
Warm start options

I think cold start is the only way OpenMx works. We could enable warm start by giving it a previously computed Hessian - one it had just computed in a previous mxrun with the same data. This would be ok for models without constraints, but i dont think that we preserve the info in the fitted model object of the augmented covariance matrix when there are constraints. That could be fixed.

One might even optionally use for warm starting the explicitly calculatedHessian, rather than the constrained to be positive definite approximation computed by NPSOL. I guess NPSOL would recompute if we gave it a non-positive definite matrix, but it might just choke.

carey's picture
Offline
Joined: 10/19/2009
mikes, the problem i had was

mikes,

the problem i had was using a number of warm starts in a simulation because parameter values and constraints should not change much from one sim to the next. since the simulations were in a loop, i initialized it with a cold start because i was unsure at the time how an mxOption worked.

consider:
mxOption("whatever", "")
mxRun(myModel1)
mxRun(myModel2)

does the "whatever" option hold in mxRun(myModel2)? i assumed so given the documentation of mxOption(reset=TRUE).

if the answer is "no", then cold start is not required but--depending on how openmx initializes quantities before the call to NPSOL--warm start would be useful. if the answer is "yes" then both cold start and warm start should be implemented.

best,
greg

mspiegel's picture
Offline
Joined: 07/31/2009
I have two orthogonal

I have two orthogonal comments:

1) In the following scenario, the "whatever" option will hold in mxRun(myModel2):

myModel1 <- mxOption(inputModel, "whatever", "")
myModel2 <- someTransformation(myModel1)
mxRun(myModel1)
mxRun(myModel2)

In the following scenario, the "whatever" option will not hold in mxRun(myModel2);
myModel1 <- mxOption(inputModel, "whatever", "")
myModel2 <- someTransformation(inputModel)
mxRun(myModel1)
mxRun(myModel2)

You can use model@options to inspect the list of options that have been set.

2) Reading the NPSOL manual, it appears that "Warm Start" expects the istate, clamda, and R options to be set. The manual states that istate is not strictly necessary, if NPSOL has already executed. The manual is silent on whether clamda or R are necessary. Does using "Warm Start" improve the runtime when running a model under OpenMx?

carey's picture
Offline
Joined: 10/19/2009
thanks, mike your (1)

thanks, mike

your (1) clarifies things, but it does put a burden on the user. you folks might consider a slot in @output that specifies the options that are in effect.

on (2), i really do not know. many years ago when i've run NPSOL from the version in the NAG library, warm start did indeed improve runtime. when i used the option in OpenMx, i assumed things were set up appropriately. for the life of me, i cannot recall what i did to clambda and R in the warm start when i was using NAG.

have a great weekend,
greg

carey's picture
Offline
Joined: 10/19/2009
duh (*blush*) shudda known

duh (*blush*) shudda known that @options is a slot in MxModel. please ignore (1) above.