File: UselessConstraint.R

package info (click to toggle)
r-cran-openmx 2.21.13%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 13,716 kB
  • sloc: cpp: 36,559; ansic: 13,821; fortran: 2,001; sh: 1,440; python: 350; perl: 21; makefile: 11
file content (54 lines) | stat: -rwxr-xr-x 2,052 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#
#   Copyright 2007-2020 by the individuals mentioned in the source code history
#
#   Licensed under the Apache License, Version 2.0 (the "License");
#   you may not use this file except in compliance with the License.
#   You may obtain a copy of the License at
#
#        http://www.apache.org/licenses/LICENSE-2.0
#
#   Unless required by applicable law or agreed to in writing, software
#   distributed under the License is distributed on an "AS IS" BASIS,
#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#   See the License for the specific language governing permissions and
#   limitations under the License.


# http://openmx.ssri.psu.edu/issue/2014/05/memory-leak-when-running-ram-model-constraint

library(OpenMx)

#mxOption(NULL, "Default optimizer", 'SLSQP')

data(demoOneFactor)
manifests <- names(demoOneFactor)
latents <- c("G")
factorModelPath <- mxModel(
	"OneFactorPath",
	type="RAM",
	manifestVars = manifests,
	latentVars = latents,
	mxPath(from=latents, to=manifests,
				 labels=paste("l",1:5,sep="")),
	mxPath(from=manifests, arrows=2),
	mxPath(from=latents, arrows=2,
				 free=FALSE, values=1.0),
	mxData(cov(demoOneFactor), type="cov",
				 numObs=500),
	mxAlgebra(S[6,6],name="GV"),
	mxConstraint(GV-1==0,name="pointless"),
	mxConstraint(GV>0,name="morePointless"))
#factorModelPath <- mxOption(factorModelPath,"Checkpoint Directory","C:/Work/OpenMx_dev/")
#factorModelPath <- mxOption(factorModelPath,"Checkpoint Units","evaluations")
#factorModelPath <- mxOption(factorModelPath,"Checkpoint Count",1)
factorModelPath <- mxOption(factorModelPath,"Calculate Hessian","No")
factorModelPath <- mxOption(factorModelPath,"Standard Errors","No")
factorFit <- mxRun(factorModelPath, silent = TRUE)

omxCheckEquals(factorFit$output$status$code, 0)

if (mxOption(NULL, "Default optimizer") != 'NPSOL') {
	# Any constraints that show up here by mistake will have a zero gradient.
	omxCheckTrue(all(factorFit$output$gradient != 0))
  omxCheckCloseEnough(sqrt(sum(factorFit$output$gradient^2)), 0, .08)
}