Rcgmin.RdAttempts to minimize an unconstrained or bounds (box) and mask constrained function
of many parameters by a nonlinear conjugate gradients method using the Dai / Yuan
update and restart. Based on Nash (1979) Algorithm 22 for its main structure,
which is method "CG" of the optim() function that has rarely performed well.
Bounds (or box) constraints and masks (equality constraints) can be imposed on
parameters. This code is entirely in R to allow users to explore and understand
the method.
Rcgmin is a wrapper that calls Rcgminu for unconstrained
problems, else Rcgminb. The direct call of the subsidiary routines
is discouraged.
A numeric vector of starting estimates.
A function that returns the value of the objective at the
supplied set of parameters par using auxiliary data in ....
The first argument of fn must be par.
A function that returns the gradient of the objective at the
supplied set of parameters par using auxiliary data in ...
as a numeric vector.
The first argument of gr must be par.
A vector of lower bounds on the parameters.
A vector of upper bounds on the parameters.
An indicator vector, having 1 for each parameter that is "free" or unconstrained, and 0 for any parameter that is fixed or MASKED for the duration of the optimization.
An optional list of control settings.
Further arguments to be passed to fn.
Function fn must return a numeric value.
gr must be provided, either as a user-supplied function, or as the quoted name
of one of the gradient approximation routines provided in this package. Choices are
routines grfwd, grback, grcentral or grnd. The last
of these calls the grad() function from package numDeriv. These
are called by putting the name of the (numerical) gradient function in
quotation marks, e.g.,
gr="grcentral"
to use the central difference numerical approximation. (This is the recommended choice in the absence of other considerations.)
Note that all but the grnd routine use a stepsize parameter that
can be redefined in a special environment optsp in variable deps.
The default is optsp$deps = 1e-06.
However, redefining this is discouraged unless you understand what
you are doing.
The control argument is a list.
A limit on the number of iterations (default 500). Note that this is
used to compute a quantity maxfeval<-round(sqrt(n+1)*maxit) where n is the
number of parameters to be minimized.
Set 0 (default) for no output, >0 for trace output (larger values imply more output).
Tolerance used to calculate numerical gradients. Default is 1.0E-7. See
source code for Rcgmin for details of application.
dowarn= TRUE if we want warnings generated by optimx. Default is TRUE.
tolTolerance used in testing the size of the square of the gradient.
Default is 0 on input, which uses a value of tolgr = npar*npar*.Machine$double.eps
in testing if crossprod(g) <= tolgr * (abs(fmin) + reltest). If the user supplies
a value for tol that is non-zero, then that value is used for tolgr.
reltest=100 is only alterable by changing the code. fmin is the current best value found for the function minimum value.
Note that the scale of the gradient means that tests for a small gradient can easily be mismatched to a given problem. The defaults in Rcgmin are a "best guess".
checkgrad= TRUE if we want gradient function checked against numerical approximations. Default is FALSE.
checkbounds= TRUE if we want bounds verified. Default is TRUE.
As of 2011-11-21 the following controls have been REMOVED
There is now a choice of numerical gradient routines. See argument
gr.
To maximize user_function, supply a function that computes (-1)*user_function.
An alternative is to call Rcgmin via the package optimx, where the MAXIMIZE field
of the OPCON structure in package optfntools is used.
A list with components:
The best set of parameters found.
The value of the objective at the best set of parameters found.
A two-element integer vector giving the number of calls to 'fn' and 'gr' respectively. This excludes those calls needed to compute the Hessian, if requested, and any calls to 'fn' to compute a finite-difference approximation to the gradient.
An integer code. '0' indicates successful convergence. '1' indicates that the function evaluation count 'maxfeval' was reached. '2' indicates initial point is infeasible.
A character string giving any additional information returned by the optimizer, or 'NULL'.
Returned index describing the status of bounds and masks at the proposed solution. Parameters for which bdmsk are 1 are unconstrained or "free", those with bdmsk 0 are masked i.e., fixed. For historical reasons, we indicate a parameter is at a lower bound using -3 or upper bound using -1.
Dai, Y. H. and Y. Yuan (2001). An efficient hybrid conjugate gradient method for unconstrained optimization. Annals of Operations Research 103 (1-4), 33–47.
Nash JC (1979). Compact Numerical Methods for Computers: Linear Algebra and Function Minimisation. Adam Hilger, Bristol. Second Edition, 1990, Bristol: Institute of Physics Publications.
Nash, J. C. and M. Walker-Smith (1987). Nonlinear Parameter Estimation: An Integrated System in BASIC. New York: Marcel Dekker. See https://www.nashinfo.com/nlpe.htm for a downloadable version of this plus some extras.
#####################
require(numDeriv)
#> Loading required package: numDeriv
## Rosenbrock Banana function
fr <- function(x) {
x1 <- x[1]
x2 <- x[2]
100 * (x2 - x1 * x1)^2 + (1 - x1)^2
}
grr <- function(x) { ## Gradient of 'fr'
x1 <- x[1]
x2 <- x[2]
c(-400 * x1 * (x2 - x1 * x1) - 2 * (1 - x1),
200 * (x2 - x1 * x1))
}
grn<-function(x){
gg<-grad(fr, x)
}
ansrosenbrock0 <- Rcgmin(fn=fr,gr=grn, par=c(1,2))
print(ansrosenbrock0) # use print to allow copy to separate file that
#> $par
#> [1] 0.9999999 0.9999999
#>
#> $value
#> [1] 2.769504e-15
#>
#> $counts
#> [1] 68 30
#>
#> $convergence
#> [1] 0
#>
#> $message
#> [1] "Rcgmin seems to have converged"
#>
# can be called using source()
#####################
# Simple bounds and masks test
bt.f<-function(x){
sum(x*x)
}
bt.g<-function(x){
gg<-2.0*x
}
n<-10
xx<-rep(0,n)
lower<-rep(0,n)
upper<-lower # to get arrays set
bdmsk<-rep(1,n)
bdmsk[(trunc(n/2)+1)]<-0
for (i in 1:n) {
lower[i]<-1.0*(i-1)*(n-1)/n
upper[i]<-1.0*i*(n+1)/n
}
xx<-0.5*(lower+upper)
ansbt<-Rcgmin(xx, bt.f, bt.g, lower, upper, bdmsk, control=list(trace=1))
#> admissible = TRUE
#> maskadded = FALSE
#> parchanged = FALSE
#> Rcgmin -- J C Nash 2009 - bounds constraint version of new CG
#> an R implementation of Alg 22 with Yuan/Dai modification
#> Rcgminb: maxfeval set to 10000
#> Initial function value= 337.525
#> Initial fn= 337.525
#> 1 0 1 337.525 last decrease= NA
#> 3 1 2 251.455 last decrease= 86.06996
#> Yuan/Dai cycle reset
#> 3 2 1 251.455 last decrease= NA
#> 5 3 2 249.2466 last decrease= 2.208412
#> Yuan/Dai cycle reset
#> 5 4 1 249.2466 last decrease= NA
#> 7 5 2 247.4157 last decrease= 1.830923
#> Yuan/Dai cycle reset
#> 7 6 1 247.4157 last decrease= NA
#> 9 7 2 245.9974 last decrease= 1.41828
#> Yuan/Dai cycle reset
#> 9 8 1 245.9974 last decrease= NA
#> 11 9 2 243.7158 last decrease= 2.281617
#> Yuan/Dai cycle reset
#> 11 10 1 243.7158 last decrease= NA
#> 13 11 2 242.6786 last decrease= 1.037168
#> Yuan/Dai cycle reset
#> 13 12 1 242.6786 last decrease= NA
#> 15 13 2 241.9403 last decrease= 0.7383196
#> Yuan/Dai cycle reset
#> 15 14 1 241.9403 last decrease= NA
#> 17 15 2 241.5045 last decrease= 0.4358326
#> Yuan/Dai cycle reset
#> 17 16 1 241.5045 last decrease= NA
#> 19 17 2 241.4025 last decrease= 0.1019875
#> Very small gradient -- gradsqr = 0
#> Rcgmin seems to have converged
print(ansbt)
#> $par
#> [1] 0.00 0.90 1.80 2.70 3.60 5.55 5.40 6.30 7.20 8.10
#>
#> $value
#> [1] 241.4025
#>
#> $counts
#> [1] 19 18
#>
#> $convergence
#> [1] 0
#>
#> $message
#> [1] "Rcgmin seems to have converged"
#>
#> $bdmsk
#> [1] 1 -3 -3 -3 -3 0 -3 -3 -3 -3
#>
#####################
genrose.f<- function(x, gs=NULL){ # objective function
## One generalization of the Rosenbrock banana valley function (n parameters)
n <- length(x)
if(is.null(gs)) { gs=100.0 }
fval<-1.0 + sum (gs*(x[1:(n-1)]^2 - x[2:n])^2 + (x[2:n] - 1)^2)
return(fval)
}
genrose.g <- function(x, gs=NULL){
# vectorized gradient for genrose.f
# Ravi Varadhan 2009-04-03
n <- length(x)
if(is.null(gs)) { gs=100.0 }
gg <- as.vector(rep(0, n))
tn <- 2:n
tn1 <- tn - 1
z1 <- x[tn] - x[tn1]^2
z2 <- 1 - x[tn]
gg[tn] <- 2 * (gs * z1 - z2)
gg[tn1] <- gg[tn1] - 4 * gs * x[tn1] * z1
gg
}
# analytic gradient test
xx<-rep(pi,10)
lower<-NULL
upper<-NULL
bdmsk<-NULL
genrosea<-Rcgmin(xx,genrose.f, genrose.g, gs=10)
genrosen<-optimr(xx, genrose.f, "grfwd", method="Rcgmin", gs=10)
genrosenn<-try(Rcgmin(xx,genrose.f, gs=10)) # use local numerical gradient
#> Error in Rcgmin(xx, genrose.f, gs = 10) :
#> Rcgmin must have gradient function provided. Call via optimr() to use approximations.
cat("genrosea uses analytic gradient\n")
#> genrosea uses analytic gradient
print(genrosea)
#> $par
#> [1] 1 1 1 1 1 1 1 1 1 1
#>
#> $value
#> [1] 1
#>
#> $counts
#> [1] 87 39
#>
#> $convergence
#> [1] 0
#>
#> $message
#> [1] "Rcgmin seems to have converged"
#>
cat("genrosen uses default gradient approximation\n")
#> genrosen uses default gradient approximation
print(genrosen)
#> $par
#> [1] 0.9999998 0.9999998 1.0000000 1.0000000 0.9999995 0.9999985 0.9999972
#> [8] 0.9999947 0.9999898 0.9999804
#> attr(,"status")
#> [1] " " " " " " " " " " " " " " " " " " " "
#>
#> $value
#> [1] 1
#> attr(,"fname")
#> [1] "(no_name)"
#> attr(,"method")
#> [1] "Rcgmin"
#> attr(,"ptype")
#> [1] "U"
#>
#> $counts
#> [1] 90 39
#>
#> $convergence
#> [1] 0
#>
#> $message
#> [1] NA
#>
#> $scounts
#> [1] 90 39 0
#>
#> attr(,"maximize")
#> [1] FALSE
cat("timings B vs U\n")
#> timings B vs U
lo<-rep(-100,10)
up<-rep(100,10)
bdmsk<-rep(1,10)
tb<-system.time(ab<-Rcgminb(xx,genrose.f, genrose.g, lower=lo, upper=up, bdmsk=bdmsk))[1]
#> Rcgminb: maxfeval set to 10000
tu<-system.time(au<-Rcgminu(xx,genrose.f, genrose.g))[1]
cat("times U=",tu," B=",tb,"\n")
#> times U= 0.002 B= 0.004
cat("solution Rcgminu\n")
#> solution Rcgminu
print(au)
#> $par
#> [1] 1 1 1 1 1 1 1 1 1 1
#>
#> $value
#> [1] 1
#>
#> $counts
#> [1] 146 69
#>
#> $convergence
#> [1] 0
#>
#> $message
#> [1] "Rcgmin seems to have converged"
#>
cat("solution Rcgminb\n")
#> solution Rcgminb
print(ab)
#> $par
#> [1] 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000
#> [8] 1.0000000 1.0000000 0.9999999
#>
#> $value
#> [1] 1
#>
#> $counts
#> [1] 120 58
#>
#> $convergence
#> [1] 0
#>
#> $message
#> [1] "Rcgmin seems to have converged"
#>
#> $bdmsk
#> [1] 1 1 1 1 1 1 1 1 1 1
#>
cat("diff fu-fb=",au$value-ab$value,"\n")
#> diff fu-fb= -1.110223e-14
cat("max abs parameter diff = ", max(abs(au$par-ab$par)),"\n")
#> max abs parameter diff = 8.590758e-08
maxfn<-function(x) {
n<-length(x)
ss<-seq(1,n)
f<-10-(crossprod(x-ss))^2
f<-as.numeric(f)
return(f)
}
gmaxfn<-function(x) {
gg<-grad(maxfn, x)
}
negmaxfn<-function(x) {
f<-(-1)*maxfn(x)
return(f)
}
cat("test that maximize=TRUE works correctly\n")
#> test that maximize=TRUE works correctly
n<-6
xx<-rep(1,n)
ansmax<-Rcgmin(xx,maxfn, gmaxfn, control=list(maximize=TRUE,trace=1))
#> Warning: Rcgmin no longer supports maximize 111121 -- see documentation
print(ansmax)
#> [[1]]
#> [1] 1 1 1 1 1 1
#>
#> [[2]]
#> [1] NA
#>
#> [[3]]
#> [1] 0 0
#>
#> [[4]]
#> [1] 9999
#>
#> [[5]]
#> [1] "Rcgmin no longer supports maximize 111121"
#>
cat("using the negmax function should give same parameters\n")
#> using the negmax function should give same parameters
ansnegmaxn<-optimr(xx,negmaxfn, "grfwd", method="Rcgmin", control=list(trace=1))
#> parchanged = FALSE
#> Parameter scaling:[1] 1 1 1 1 1 1
#> Using numerical approximation ' grfwd ' to gradient in optimr()
#> Rcgminu -- J C Nash 2009 - unconstrained version CG min
#> an R implementation of Alg 22 with Yuan/Dai modification
#> Initial function value= 3015
#> Initial fn= 3015
#> 1 0 1 3015 last decrease= NA
#> ***6 1 2 -9.572994 last decrease= 3024.573
#> Yuan/Dai cycle reset
#> 6 2 1 -9.572994 last decrease= NA
#> 8 3 2 -9.917497 last decrease= 0.344503
#> Yuan/Dai cycle reset
#> 8 4 1 -9.917497 last decrease= NA
#> 10 5 2 -9.988393 last decrease= 0.07089675
#> Yuan/Dai cycle reset
#> 10 6 1 -9.988393 last decrease= NA
#> 12 7 2 -9.998355 last decrease= 0.009962049
#> Yuan/Dai cycle reset
#> 12 8 1 -9.998355 last decrease= NA
#> 14 9 2 -9.999767 last decrease= 0.001411631
#> Yuan/Dai cycle reset
#> 14 10 1 -9.999767 last decrease= NA
#> 16 11 2 -9.99996 last decrease= 0.000192525
#> Yuan/Dai cycle reset
#> 16 12 1 -9.99996 last decrease= NA
#> 18 13 2 -9.999992 last decrease= 3.285756e-05
#> Yuan/Dai cycle reset
#> 18 14 1 -9.999992 last decrease= NA
#> 20 15 2 -9.999999 last decrease= 6.110352e-06
#> Yuan/Dai cycle reset
#> 20 16 1 -9.999999 last decrease= NA
#> 22 17 2 -10 last decrease= 1.171299e-06
#> Yuan/Dai cycle reset
#> 22 18 1 -10 last decrease= NA
#> 24 19 2 -10 last decrease= 2.24885e-07
#> Yuan/Dai cycle reset
#> 24 20 1 -10 last decrease= NA
#> 26 21 2 -10 last decrease= 4.162082e-08
#> Yuan/Dai cycle reset
#> 26 22 1 -10 last decrease= NA
#> 28 23 2 -10 last decrease= 1.256772e-11
#> Yuan/Dai cycle reset
#> 28 24 1 -10 last decrease= NA
#> 30 25 2 -10 last decrease= 1.251443e-11
#> Yuan/Dai cycle reset
#> 30 26 1 -10 last decrease= NA
#> 32 27 2 -10 last decrease= 1.245581e-11
#> Yuan/Dai cycle reset
#> 32 28 1 -10 last decrease= NA
#> 34 29 2 -10 last decrease= 1.239719e-11
#> Yuan/Dai cycle reset
#> 34 30 1 -10 last decrease= NA
#> 36 31 2 -10 last decrease= 1.234035e-11
#> Yuan/Dai cycle reset
#> 36 32 1 -10 last decrease= NA
#> 38 33 2 -10 last decrease= 1.228528e-11
#> Yuan/Dai cycle reset
#> 38 34 1 -10 last decrease= NA
#> 40 35 2 -10 last decrease= 1.223022e-11
#> Yuan/Dai cycle reset
#> 40 36 1 -10 last decrease= NA
#> 42 37 2 -10 last decrease= 1.217515e-11
#> Yuan/Dai cycle reset
#> 42 38 1 -10 last decrease= NA
#> 44 39 2 -10 last decrease= 1.211653e-11
#> Yuan/Dai cycle reset
#> 44 40 1 -10 last decrease= NA
#> 46 41 2 -10 last decrease= 1.206502e-11
#> Yuan/Dai cycle reset
#> 46 42 1 -10 last decrease= NA
#> 48 43 2 -10 last decrease= 1.200995e-11
#> Yuan/Dai cycle reset
#> 48 44 1 -10 last decrease= NA
#> 50 45 2 -10 last decrease= 1.195311e-11
#> Yuan/Dai cycle reset
#> 50 46 1 -10 last decrease= NA
#> 52 47 2 -10 last decrease= 1.189981e-11
#> Yuan/Dai cycle reset
#> 52 48 1 -10 last decrease= NA
#> 54 49 2 -10 last decrease= 1.184297e-11
#> Yuan/Dai cycle reset
#> 54 50 1 -10 last decrease= NA
#> 56 51 2 -10 last decrease= 1.178968e-11
#> Yuan/Dai cycle reset
#> 56 52 1 -10 last decrease= NA
#> 58 53 2 -10 last decrease= 1.173817e-11
#> Yuan/Dai cycle reset
#> 58 54 1 -10 last decrease= NA
#> 60 55 2 -10 last decrease= 1.168488e-11
#> Yuan/Dai cycle reset
#> 60 56 1 -10 last decrease= NA
#> 62 57 2 -10 last decrease= 1.163336e-11
#> Yuan/Dai cycle reset
#> 62 58 1 -10 last decrease= NA
#> 64 59 2 -10 last decrease= 1.158185e-11
#> Yuan/Dai cycle reset
#> 64 60 1 -10 last decrease= NA
#> 66 61 2 -10 last decrease= 1.152856e-11
#> Yuan/Dai cycle reset
#> 66 62 1 -10 last decrease= NA
#> 68 63 2 -10 last decrease= 1.148237e-11
#> Yuan/Dai cycle reset
#> 68 64 1 -10 last decrease= NA
#> 70 65 2 -10 last decrease= 1.142553e-11
#> Yuan/Dai cycle reset
#> 70 66 1 -10 last decrease= NA
#> 72 67 2 -10 last decrease= 1.137579e-11
#> Yuan/Dai cycle reset
#> 72 68 1 -10 last decrease= NA
#> 74 69 2 -10 last decrease= 1.13225e-11
#> Yuan/Dai cycle reset
#> 74 70 1 -10 last decrease= NA
#> 76 71 2 -10 last decrease= 1.127809e-11
#> Yuan/Dai cycle reset
#> 76 72 1 -10 last decrease= NA
#> 78 73 2 -10 last decrease= 1.122835e-11
#> Yuan/Dai cycle reset
#> 78 74 1 -10 last decrease= NA
#> 80 75 2 -10 last decrease= 1.117861e-11
#> Yuan/Dai cycle reset
#> 80 76 1 -10 last decrease= NA
#> 82 77 2 -10 last decrease= 1.112355e-11
#> Yuan/Dai cycle reset
#> 82 78 1 -10 last decrease= NA
#> 84 79 2 -10 last decrease= 1.107914e-11
#> Yuan/Dai cycle reset
#> 84 80 1 -10 last decrease= NA
#> 86 81 2 -10 last decrease= 1.10294e-11
#> Yuan/Dai cycle reset
#> 86 82 1 -10 last decrease= NA
#> 88 83 2 -10 last decrease= 1.098321e-11
#> Yuan/Dai cycle reset
#> 88 84 1 -10 last decrease= NA
#> 90 85 2 -10 last decrease= 1.09317e-11
#> Yuan/Dai cycle reset
#> 90 86 1 -10 last decrease= NA
#> 92 87 2 -10 last decrease= 1.088551e-11
#> Yuan/Dai cycle reset
#> 92 88 1 -10 last decrease= NA
#> 94 89 2 -10 last decrease= 1.083578e-11
#> Yuan/Dai cycle reset
#> 94 90 1 -10 last decrease= NA
#> 96 91 2 -10 last decrease= 1.078782e-11
#> Yuan/Dai cycle reset
#> 96 92 1 -10 last decrease= NA
#> 98 93 2 -10 last decrease= 1.074163e-11
#> Yuan/Dai cycle reset
#> 98 94 1 -10 last decrease= NA
#> 100 95 2 -10 last decrease= 1.0699e-11
#> Yuan/Dai cycle reset
#> 100 96 1 -10 last decrease= NA
#> 102 97 2 -10 last decrease= 1.064926e-11
#> Yuan/Dai cycle reset
#> 102 98 1 -10 last decrease= NA
#> 104 99 2 -10 last decrease= 1.059952e-11
#> Yuan/Dai cycle reset
#> 104 100 1 -10 last decrease= NA
#> 106 101 2 -10 last decrease= 1.055511e-11
#> Yuan/Dai cycle reset
#> 106 102 1 -10 last decrease= NA
#> 108 103 2 -10 last decrease= 1.051248e-11
#> Yuan/Dai cycle reset
#> 108 104 1 -10 last decrease= NA
#> 110 105 2 -10 last decrease= 1.046452e-11
#> Yuan/Dai cycle reset
#> 110 106 1 -10 last decrease= NA
#> 112 107 2 -10 last decrease= 1.041833e-11
#> Yuan/Dai cycle reset
#> 112 108 1 -10 last decrease= NA
#> 114 109 2 -10 last decrease= 1.037392e-11
#> Yuan/Dai cycle reset
#> 114 110 1 -10 last decrease= NA
#> 116 111 2 -10 last decrease= 1.033129e-11
#> Yuan/Dai cycle reset
#> 116 112 1 -10 last decrease= NA
#> 118 113 2 -10 last decrease= 1.028866e-11
#> Yuan/Dai cycle reset
#> 118 114 1 -10 last decrease= NA
#> 120 115 2 -10 last decrease= 1.02407e-11
#> Yuan/Dai cycle reset
#> 120 116 1 -10 last decrease= NA
#> 122 117 2 -10 last decrease= 1.019806e-11
#> Yuan/Dai cycle reset
#> 122 118 1 -10 last decrease= NA
#> 124 119 2 -10 last decrease= 1.015366e-11
#> Yuan/Dai cycle reset
#> 124 120 1 -10 last decrease= NA
#> 126 121 2 -10 last decrease= 1.011102e-11
#> Yuan/Dai cycle reset
#> 126 122 1 -10 last decrease= NA
#> 128 123 2 -10 last decrease= 1.006839e-11
#> Yuan/Dai cycle reset
#> 128 124 1 -10 last decrease= NA
#> 130 125 2 -10 last decrease= 1.002398e-11
#> Yuan/Dai cycle reset
#> 130 126 1 -10 last decrease= NA
#> 132 127 2 -10 last decrease= 9.981349e-12
#> Yuan/Dai cycle reset
#> 132 128 1 -10 last decrease= NA
#> 134 129 2 -10 last decrease= 9.93694e-12
#> Yuan/Dai cycle reset
#> 134 130 1 -10 last decrease= NA
#> 136 131 2 -10 last decrease= 9.894308e-12
#> Yuan/Dai cycle reset
#> 136 132 1 -10 last decrease= NA
#> 138 133 2 -10 last decrease= 9.853451e-12
#> Yuan/Dai cycle reset
#> 138 134 1 -10 last decrease= NA
#> 140 135 2 -10 last decrease= 9.812595e-12
#> Yuan/Dai cycle reset
#> 140 136 1 -10 last decrease= NA
#> 142 137 2 -10 last decrease= 9.771739e-12
#> Yuan/Dai cycle reset
#> 142 138 1 -10 last decrease= NA
#> 144 139 2 -10 last decrease= 9.72733e-12
#> Yuan/Dai cycle reset
#> 144 140 1 -10 last decrease= NA
#> 146 141 2 -10 last decrease= 9.690027e-12
#> Yuan/Dai cycle reset
#> 146 142 1 -10 last decrease= NA
#> 148 143 2 -10 last decrease= 9.645618e-12
#> Yuan/Dai cycle reset
#> 148 144 1 -10 last decrease= NA
#> 150 145 2 -10 last decrease= 9.610091e-12
#> Yuan/Dai cycle reset
#> 150 146 1 -10 last decrease= NA
#> 152 147 2 -10 last decrease= 9.565682e-12
#> Yuan/Dai cycle reset
#> 152 148 1 -10 last decrease= NA
#> 154 149 2 -10 last decrease= 9.526602e-12
#> Yuan/Dai cycle reset
#> 154 150 1 -10 last decrease= NA
#> 156 151 2 -10 last decrease= 9.485746e-12
#> Yuan/Dai cycle reset
#> 156 152 1 -10 last decrease= NA
#> 158 153 2 -10 last decrease= 9.446666e-12
#> Yuan/Dai cycle reset
#> 158 154 1 -10 last decrease= NA
#> 160 155 2 -10 last decrease= 9.405809e-12
#> Yuan/Dai cycle reset
#> 160 156 1 -10 last decrease= NA
#> 162 157 2 -10 last decrease= 9.372059e-12
#> Yuan/Dai cycle reset
#> 162 158 1 -10 last decrease= NA
#> 164 159 2 -10 last decrease= 9.32765e-12
#> Yuan/Dai cycle reset
#> 164 160 1 -10 last decrease= NA
#> 166 161 2 -10 last decrease= 9.290346e-12
#> Yuan/Dai cycle reset
#> 166 162 1 -10 last decrease= NA
#> 168 163 2 -10 last decrease= 9.251266e-12
#> Yuan/Dai cycle reset
#> 168 164 1 -10 last decrease= NA
#> 170 165 2 -10 last decrease= 9.213963e-12
#> Yuan/Dai cycle reset
#> 170 166 1 -10 last decrease= NA
#> 172 167 2 -10 last decrease= 9.173107e-12
#> Yuan/Dai cycle reset
#> 172 168 1 -10 last decrease= NA
#> 174 169 2 -10 last decrease= 9.135803e-12
#> Yuan/Dai cycle reset
#> 174 170 1 -10 last decrease= NA
#> 176 171 2 -10 last decrease= 9.100276e-12
#> Yuan/Dai cycle reset
#> 176 172 1 -10 last decrease= NA
#> 178 173 2 -10 last decrease= 9.062973e-12
#> Yuan/Dai cycle reset
#> 178 174 1 -10 last decrease= NA
#> 180 175 2 -10 last decrease= 9.029222e-12
#> Yuan/Dai cycle reset
#> 180 176 1 -10 last decrease= NA
#> 182 177 2 -10 last decrease= 8.984813e-12
#> Yuan/Dai cycle reset
#> 182 178 1 -10 last decrease= NA
#> 184 179 2 -10 last decrease= 8.949286e-12
#> Yuan/Dai cycle reset
#> 184 180 1 -10 last decrease= NA
#> 186 181 2 -10 last decrease= 8.917311e-12
#> Yuan/Dai cycle reset
#> 186 182 1 -10 last decrease= NA
#> 188 183 2 -10 last decrease= 8.876455e-12
#> Yuan/Dai cycle reset
#> 188 184 1 -10 last decrease= NA
#> 190 185 2 -10 last decrease= 8.839152e-12
#> Yuan/Dai cycle reset
#> 190 186 1 -10 last decrease= NA
#> 192 187 2 -10 last decrease= 8.805401e-12
#> Yuan/Dai cycle reset
#> 192 188 1 -10 last decrease= NA
#> 194 189 2 -10 last decrease= 8.769874e-12
#> Yuan/Dai cycle reset
#> 194 190 1 -10 last decrease= NA
#> 196 191 2 -10 last decrease= 8.730794e-12
#> Yuan/Dai cycle reset
#> 196 192 1 -10 last decrease= NA
#> 198 193 2 -10 last decrease= 8.697043e-12
#> Yuan/Dai cycle reset
#> 198 194 1 -10 last decrease= NA
#> 200 195 2 -10 last decrease= 8.665069e-12
#> Yuan/Dai cycle reset
#> 200 196 1 -10 last decrease= NA
#> 202 197 2 -10 last decrease= 8.625989e-12
#> Yuan/Dai cycle reset
#> 202 198 1 -10 last decrease= NA
#> 204 199 2 -10 last decrease= 8.592238e-12
#> Yuan/Dai cycle reset
#> 204 200 1 -10 last decrease= NA
#> 206 201 2 -10 last decrease= 8.556711e-12
#> Yuan/Dai cycle reset
#> 206 202 1 -10 last decrease= NA
#> 208 203 2 -10 last decrease= 8.521184e-12
#> Yuan/Dai cycle reset
#> 208 204 1 -10 last decrease= NA
#> 210 205 2 -10 last decrease= 8.490986e-12
#> Yuan/Dai cycle reset
#> 210 206 1 -10 last decrease= NA
#> 212 207 2 -10 last decrease= 8.455459e-12
#> Yuan/Dai cycle reset
#> 212 208 1 -10 last decrease= NA
#> 214 209 2 -10 last decrease= 8.419931e-12
#> Yuan/Dai cycle reset
#> 214 210 1 -10 last decrease= NA
#> 216 211 2 -10 last decrease= 8.389733e-12
#> Yuan/Dai cycle reset
#> 216 212 1 -10 last decrease= NA
#> 218 213 2 -10 last decrease= 8.350654e-12
#> Yuan/Dai cycle reset
#> 218 214 1 -10 last decrease= NA
#> 220 215 2 -10 last decrease= 8.318679e-12
#> Yuan/Dai cycle reset
#> 220 216 1 -10 last decrease= NA
#> 222 217 2 -10 last decrease= 8.283152e-12
#> Yuan/Dai cycle reset
#> 222 218 1 -10 last decrease= NA
#> 224 219 2 -10 last decrease= 8.25473e-12
#> Yuan/Dai cycle reset
#> 224 220 1 -10 last decrease= NA
#> 226 221 2 -10 last decrease= 8.217427e-12
#> Yuan/Dai cycle reset
#> 226 222 1 -10 last decrease= NA
#> 228 223 2 -10 last decrease= 8.189005e-12
#> Yuan/Dai cycle reset
#> 228 224 1 -10 last decrease= NA
#> 230 225 2 -10 last decrease= 8.153478e-12
#> Yuan/Dai cycle reset
#> 230 226 1 -10 last decrease= NA
#> 232 227 2 -10 last decrease= 8.12328e-12
#> Yuan/Dai cycle reset
#> 232 228 1 -10 last decrease= NA
#> 234 229 2 -10 last decrease= 8.091305e-12
#> Yuan/Dai cycle reset
#> 234 230 1 -10 last decrease= NA
#> 236 231 2 -10 last decrease= 8.059331e-12
#> Yuan/Dai cycle reset
#> 236 232 1 -10 last decrease= NA
#> 238 233 2 -10 last decrease= 8.023804e-12
#> Yuan/Dai cycle reset
#> 238 234 1 -10 last decrease= NA
#> 240 235 2 -10 last decrease= 7.991829e-12
#> Yuan/Dai cycle reset
#> 240 236 1 -10 last decrease= NA
#> 242 237 2 -10 last decrease= 7.963408e-12
#> Yuan/Dai cycle reset
#> 242 238 1 -10 last decrease= NA
#> 244 239 2 -10 last decrease= 7.929657e-12
#> Yuan/Dai cycle reset
#> 244 240 1 -10 last decrease= NA
#> 246 241 2 -10 last decrease= 7.897683e-12
#> Yuan/Dai cycle reset
#> 246 242 1 -10 last decrease= NA
#> 248 243 2 -10 last decrease= 7.869261e-12
#> Yuan/Dai cycle reset
#> 248 244 1 -10 last decrease= NA
#> 250 245 2 -10 last decrease= 7.839063e-12
#> Yuan/Dai cycle reset
#> 250 246 1 -10 last decrease= NA
#> 252 247 2 -10 last decrease= 7.805312e-12
#> Yuan/Dai cycle reset
#> 252 248 1 -10 last decrease= NA
#> 254 249 2 -10 last decrease= 7.775114e-12
#> Yuan/Dai cycle reset
#> 254 250 1 -10 last decrease= NA
#> 256 251 2 -10 last decrease= 7.746692e-12
#> Yuan/Dai cycle reset
#> 256 252 1 -10 last decrease= NA
#> 258 253 2 -10 last decrease= 7.716494e-12
#> Yuan/Dai cycle reset
#> 258 254 1 -10 last decrease= NA
#> 260 255 2 -10 last decrease= 7.68452e-12
#> Yuan/Dai cycle reset
#> 260 256 1 -10 last decrease= NA
#> 262 257 2 -10 last decrease= 7.657874e-12
#> Yuan/Dai cycle reset
#> 262 258 1 -10 last decrease= NA
#> 264 259 2 -10 last decrease= 7.624124e-12
#> Yuan/Dai cycle reset
#> 264 260 1 -10 last decrease= NA
#> 266 261 2 -10 last decrease= 7.593925e-12
#> Yuan/Dai cycle reset
#> 266 262 1 -10 last decrease= NA
#> 268 263 2 -10 last decrease= 7.569056e-12
#> Yuan/Dai cycle reset
#> 268 264 1 -10 last decrease= NA
#> 270 265 2 -10 last decrease= 7.538858e-12
#> Yuan/Dai cycle reset
#> 270 266 1 -10 last decrease= NA
#> 272 267 2 -10 last decrease= 7.506884e-12
#> Yuan/Dai cycle reset
#> 272 268 1 -10 last decrease= NA
#> 274 269 2 -10 last decrease= 7.480239e-12
#> Yuan/Dai cycle reset
#> 274 270 1 -10 last decrease= NA
#> 276 271 2 -10 last decrease= 7.450041e-12
#> Yuan/Dai cycle reset
#> 276 272 1 -10 last decrease= NA
#> 278 273 2 -10 last decrease= 7.423395e-12
#> Yuan/Dai cycle reset
#> 278 274 1 -10 last decrease= NA
#> 280 275 2 -10 last decrease= 7.389644e-12
#> Yuan/Dai cycle reset
#> 280 276 1 -10 last decrease= NA
#> 282 277 2 -10 last decrease= 7.364775e-12
#> Yuan/Dai cycle reset
#> 282 278 1 -10 last decrease= NA
#> 284 279 2 -10 last decrease= 7.336354e-12
#> Yuan/Dai cycle reset
#> 284 280 1 -10 last decrease= NA
#> 286 281 2 -10 last decrease= 7.306156e-12
#> Yuan/Dai cycle reset
#> 286 282 1 -10 last decrease= NA
#> 288 283 2 -10 last decrease= 7.27951e-12
#> Yuan/Dai cycle reset
#> 288 284 1 -10 last decrease= NA
#> 290 285 2 -10 last decrease= 7.249312e-12
#> Yuan/Dai cycle reset
#> 290 286 1 -10 last decrease= NA
#> 292 287 2 -10 last decrease= 7.22622e-12
#> Yuan/Dai cycle reset
#> 292 288 1 -10 last decrease= NA
#> 294 289 2 -10 last decrease= 7.196022e-12
#> Yuan/Dai cycle reset
#> 294 290 1 -10 last decrease= NA
#> 296 291 2 -10 last decrease= 7.169376e-12
#> Yuan/Dai cycle reset
#> 296 292 1 -10 last decrease= NA
#> 298 293 2 -10 last decrease= 7.142731e-12
#> Yuan/Dai cycle reset
#> 298 294 1 -10 last decrease= NA
#> 300 295 2 -10 last decrease= 7.112533e-12
#> Yuan/Dai cycle reset
#> 300 296 1 -10 last decrease= NA
#> 302 297 2 -10 last decrease= 7.08944e-12
#> Yuan/Dai cycle reset
#> 302 298 1 -10 last decrease= NA
#> 304 299 2 -10 last decrease= 7.062795e-12
#> Yuan/Dai cycle reset
#> 304 300 1 -10 last decrease= NA
#> 306 301 2 -10 last decrease= 7.034373e-12
#> Yuan/Dai cycle reset
#> 306 302 1 -10 last decrease= NA
#> 308 303 2 -10 last decrease= 7.005951e-12
#> Yuan/Dai cycle reset
#> 308 304 1 -10 last decrease= NA
#> 310 305 2 -10 last decrease= 6.979306e-12
#> Yuan/Dai cycle reset
#> 310 306 1 -10 last decrease= NA
#> 312 307 2 -10 last decrease= 6.954437e-12
#> Yuan/Dai cycle reset
#> 312 308 1 -10 last decrease= NA
#> 314 309 2 -10 last decrease= 6.929568e-12
#> Yuan/Dai cycle reset
#> 314 310 1 -10 last decrease= NA
#> 316 311 2 -10 last decrease= 6.902923e-12
#> Yuan/Dai cycle reset
#> 316 312 1 -10 last decrease= NA
#> 318 313 2 -10 last decrease= 6.876277e-12
#> Yuan/Dai cycle reset
#> 318 314 1 -10 last decrease= NA
#> 320 315 2 -10 last decrease= 6.853185e-12
#> Yuan/Dai cycle reset
#> 320 316 1 -10 last decrease= NA
#> 322 317 2 -10 last decrease= 6.82121e-12
#> Yuan/Dai cycle reset
#> 322 318 1 -10 last decrease= NA
#> 324 319 2 -10 last decrease= 6.796341e-12
#> Yuan/Dai cycle reset
#> 324 320 1 -10 last decrease= NA
#> 326 321 2 -10 last decrease= 6.775025e-12
#> Yuan/Dai cycle reset
#> 326 322 1 -10 last decrease= NA
#> 328 323 2 -10 last decrease= 6.74838e-12
#> Yuan/Dai cycle reset
#> 328 324 1 -10 last decrease= NA
#> 330 325 2 -10 last decrease= 6.721734e-12
#> Yuan/Dai cycle reset
#> 330 326 1 -10 last decrease= NA
#> 332 327 2 -10 last decrease= 6.693313e-12
#> Yuan/Dai cycle reset
#> 332 328 1 -10 last decrease= NA
#> 334 329 2 -10 last decrease= 6.675549e-12
#> Yuan/Dai cycle reset
#> 334 330 1 -10 last decrease= NA
#> 336 331 2 -10 last decrease= 6.647127e-12
#> Yuan/Dai cycle reset
#> 336 332 1 -10 last decrease= NA
#> 338 333 2 -10 last decrease= 6.624035e-12
#> Yuan/Dai cycle reset
#> 338 334 1 -10 last decrease= NA
#> 340 335 2 -10 last decrease= 6.595613e-12
#> Yuan/Dai cycle reset
#> 340 336 1 -10 last decrease= NA
#> 342 337 2 -10 last decrease= 6.576073e-12
#> Yuan/Dai cycle reset
#> 342 338 1 -10 last decrease= NA
#> 344 339 2 -10 last decrease= 6.549428e-12
#> Yuan/Dai cycle reset
#> 344 340 1 -10 last decrease= NA
#> 346 341 2 -10 last decrease= 6.522782e-12
#> Yuan/Dai cycle reset
#> 346 342 1 -10 last decrease= NA
#> 348 343 2 -10 last decrease= 6.503242e-12
#> Yuan/Dai cycle reset
#> 348 344 1 -10 last decrease= NA
#> 350 345 2 -10 last decrease= 6.474821e-12
#> Yuan/Dai cycle reset
#> 350 346 1 -10 last decrease= NA
#> 352 347 2 -10 last decrease= 6.455281e-12
#> Yuan/Dai cycle reset
#> 352 348 1 -10 last decrease= NA
#> 354 349 2 -10 last decrease= 6.432188e-12
#> Yuan/Dai cycle reset
#> 354 350 1 -10 last decrease= NA
#> 356 351 2 -10 last decrease= 6.403766e-12
#> Yuan/Dai cycle reset
#> 356 352 1 -10 last decrease= NA
#> 358 353 2 -10 last decrease= 6.38245e-12
#> Yuan/Dai cycle reset
#> 358 354 1 -10 last decrease= NA
#> 360 355 2 -10 last decrease= 6.355805e-12
#> Yuan/Dai cycle reset
#> 360 356 1 -10 last decrease= NA
#> 362 357 2 -10 last decrease= 6.338041e-12
#> Yuan/Dai cycle reset
#> 362 358 1 -10 last decrease= NA
#> 364 359 2 -10 last decrease= 6.311396e-12
#> Yuan/Dai cycle reset
#> 364 360 1 -10 last decrease= NA
#> 366 361 2 -10 last decrease= 6.29008e-12
#> Yuan/Dai cycle reset
#> 366 362 1 -10 last decrease= NA
#> 368 363 2 -10 last decrease= 6.263434e-12
#> Yuan/Dai cycle reset
#> 368 364 1 -10 last decrease= NA
#> 370 365 2 -10 last decrease= 6.245671e-12
#> Yuan/Dai cycle reset
#> 370 366 1 -10 last decrease= NA
#> 372 367 2 -10 last decrease= 6.220802e-12
#> Yuan/Dai cycle reset
#> 372 368 1 -10 last decrease= NA
#> 374 369 2 -10 last decrease= 6.195933e-12
#> Yuan/Dai cycle reset
#> 374 370 1 -10 last decrease= NA
#> 376 371 2 -10 last decrease= 6.178169e-12
#> Yuan/Dai cycle reset
#> 376 372 1 -10 last decrease= NA
#> 378 373 2 -10 last decrease= 6.151524e-12
#> Yuan/Dai cycle reset
#> 378 374 1 -10 last decrease= NA
#> 380 375 2 -10 last decrease= 6.128431e-12
#> Yuan/Dai cycle reset
#> 380 376 1 -10 last decrease= NA
#> 382 377 2 -10 last decrease= 6.110668e-12
#> Yuan/Dai cycle reset
#> 382 378 1 -10 last decrease= NA
#> 384 379 2 -10 last decrease= 6.087575e-12
#> Yuan/Dai cycle reset
#> 384 380 1 -10 last decrease= NA
#> 386 381 2 -10 last decrease= 6.062706e-12
#> Yuan/Dai cycle reset
#> 386 382 1 -10 last decrease= NA
#> 388 383 2 -10 last decrease= 6.043166e-12
#> Yuan/Dai cycle reset
#> 388 384 1 -10 last decrease= NA
#> 390 385 2 -10 last decrease= 6.020073e-12
#> Yuan/Dai cycle reset
#> 390 386 1 -10 last decrease= NA
#> 392 387 2 -10 last decrease= 6.00231e-12
#> Yuan/Dai cycle reset
#> 392 388 1 -10 last decrease= NA
#> 394 389 2 -10 last decrease= 5.979217e-12
#> Yuan/Dai cycle reset
#> 394 390 1 -10 last decrease= NA
#> 396 391 2 -10 last decrease= 5.956124e-12
#> Yuan/Dai cycle reset
#> 396 392 1 -10 last decrease= NA
#> 398 393 2 -10 last decrease= 5.933032e-12
#> Yuan/Dai cycle reset
#> 398 394 1 -10 last decrease= NA
#> 400 395 2 -10 last decrease= 5.915268e-12
#> Yuan/Dai cycle reset
#> 400 396 1 -10 last decrease= NA
#> 402 397 2 -10 last decrease= 5.892176e-12
#> Yuan/Dai cycle reset
#> 402 398 1 -10 last decrease= NA
#> 404 399 2 -10 last decrease= 5.870859e-12
#> Yuan/Dai cycle reset
#> 404 400 1 -10 last decrease= NA
#> 406 401 2 -10 last decrease= 5.853096e-12
#> Yuan/Dai cycle reset
#> 406 402 1 -10 last decrease= NA
#> 408 403 2 -10 last decrease= 5.82645e-12
#> Yuan/Dai cycle reset
#> 408 404 1 -10 last decrease= NA
#> 410 405 2 -10 last decrease= 5.81224e-12
#> Yuan/Dai cycle reset
#> 410 406 1 -10 last decrease= NA
#> 412 407 2 -10 last decrease= 5.787371e-12
#> Yuan/Dai cycle reset
#> 412 408 1 -10 last decrease= NA
#> 414 409 2 -10 last decrease= 5.769607e-12
#> Yuan/Dai cycle reset
#> 414 410 1 -10 last decrease= NA
#> 416 411 2 -10 last decrease= 5.748291e-12
#> Yuan/Dai cycle reset
#> 416 412 1 -10 last decrease= NA
#> 418 413 2 -10 last decrease= 5.725198e-12
#> Yuan/Dai cycle reset
#> 418 414 1 -10 last decrease= NA
#> 420 415 2 -10 last decrease= 5.709211e-12
#> Yuan/Dai cycle reset
#> 420 416 1 -10 last decrease= NA
#> 422 417 2 -10 last decrease= 5.684342e-12
#> Yuan/Dai cycle reset
#> 422 418 1 -10 last decrease= NA
#> 424 419 2 -10 last decrease= 5.666578e-12
#> Yuan/Dai cycle reset
#> 424 420 1 -10 last decrease= NA
#> 426 421 2 -10 last decrease= 5.645262e-12
#> Yuan/Dai cycle reset
#> 426 422 1 -10 last decrease= NA
#> 428 423 2 -10 last decrease= 5.629275e-12
#> Yuan/Dai cycle reset
#> 428 424 1 -10 last decrease= NA
#> 430 425 2 -10 last decrease= 5.606182e-12
#> Yuan/Dai cycle reset
#> 430 426 1 -10 last decrease= NA
#> 432 427 2 -10 last decrease= 5.586642e-12
#> Yuan/Dai cycle reset
#> 432 428 1 -10 last decrease= NA
#> 434 429 2 -10 last decrease= 5.568879e-12
#> Yuan/Dai cycle reset
#> 434 430 1 -10 last decrease= NA
#> 436 431 2 -10 last decrease= 5.549339e-12
#> Yuan/Dai cycle reset
#> 436 432 1 -10 last decrease= NA
#> 438 433 2 -10 last decrease= 5.526246e-12
#> Yuan/Dai cycle reset
#> 438 434 1 -10 last decrease= NA
#> 440 435 2 -10 last decrease= 5.510259e-12
#> Yuan/Dai cycle reset
#> 440 436 1 -10 last decrease= NA
#> 442 437 2 -10 last decrease= 5.488943e-12
#> Yuan/Dai cycle reset
#> 442 438 1 -10 last decrease= NA
#> 444 439 2 -10 last decrease= 5.472955e-12
#> Yuan/Dai cycle reset
#> 444 440 1 -10 last decrease= NA
#> 446 441 2 -10 last decrease= 5.451639e-12
#> Yuan/Dai cycle reset
#> 446 442 1 -10 last decrease= NA
#> 448 443 2 -10 last decrease= 5.430323e-12
#> Yuan/Dai cycle reset
#> 448 444 1 -10 last decrease= NA
#> 450 445 2 -10 last decrease= 5.414336e-12
#> Yuan/Dai cycle reset
#> 450 446 1 -10 last decrease= NA
#> 452 447 2 -10 last decrease= 5.398348e-12
#> Yuan/Dai cycle reset
#> 452 448 1 -10 last decrease= NA
#> 454 449 2 -10 last decrease= 5.377032e-12
#> Yuan/Dai cycle reset
#> 454 450 1 -10 last decrease= NA
#> 456 451 2 -10 last decrease= 5.355716e-12
#> Yuan/Dai cycle reset
#> 456 452 1 -10 last decrease= NA
#> 458 453 2 -10 last decrease= 5.341505e-12
#> Yuan/Dai cycle reset
#> 458 454 1 -10 last decrease= NA
#> 460 455 2 -10 last decrease= 5.320189e-12
#> Yuan/Dai cycle reset
#> 460 456 1 -10 last decrease= NA
#> 462 457 2 -10 last decrease= 5.302425e-12
#> Yuan/Dai cycle reset
#> 462 458 1 -10 last decrease= NA
#> 464 459 2 -10 last decrease= 5.284662e-12
#> Yuan/Dai cycle reset
#> 464 460 1 -10 last decrease= NA
#> 466 461 2 -10 last decrease= 5.266898e-12
#> Yuan/Dai cycle reset
#> 466 462 1 -10 last decrease= NA
#> 468 463 2 -10 last decrease= 5.250911e-12
#> Yuan/Dai cycle reset
#> 468 464 1 -10 last decrease= NA
#> 470 465 2 -10 last decrease= 5.229595e-12
#> Yuan/Dai cycle reset
#> 470 466 1 -10 last decrease= NA
#> 472 467 2 -10 last decrease= 5.211831e-12
#> Yuan/Dai cycle reset
#> 472 468 1 -10 last decrease= NA
#> 474 469 2 -10 last decrease= 5.190515e-12
#> Yuan/Dai cycle reset
#> 474 470 1 -10 last decrease= NA
#> 476 471 2 -10 last decrease= 5.17808e-12
#> Yuan/Dai cycle reset
#> 476 472 1 -10 last decrease= NA
#> 478 473 2 -10 last decrease= 5.15854e-12
#> Yuan/Dai cycle reset
#> 478 474 1 -10 last decrease= NA
#> 480 475 2 -10 last decrease= 5.139e-12
#> Yuan/Dai cycle reset
#> 480 476 1 -10 last decrease= NA
#> 482 477 2 -10 last decrease= 5.121237e-12
#> Yuan/Dai cycle reset
#> 482 478 1 -10 last decrease= NA
#> 484 479 2 -10 last decrease= 5.107026e-12
#> Yuan/Dai cycle reset
#> 484 480 1 -10 last decrease= NA
#> 486 481 2 -10 last decrease= 5.091039e-12
#> Yuan/Dai cycle reset
#> 486 482 1 -10 last decrease= NA
#> 488 483 2 -10 last decrease= 5.071499e-12
#> Yuan/Dai cycle reset
#> 488 484 1 -10 last decrease= NA
#> 490 485 2 -10 last decrease= 5.053735e-12
#> Yuan/Dai cycle reset
#> 490 486 1 -10 last decrease= NA
#> 492 487 2 -10 last decrease= 5.037748e-12
#> Yuan/Dai cycle reset
#> 492 488 1 -10 last decrease= NA
#> 494 489 2 -10 last decrease= 5.019984e-12
#> Yuan/Dai cycle reset
#> 494 490 1 -10 last decrease= NA
#> 496 491 2 -10 last decrease= 5.002221e-12
#> Yuan/Dai cycle reset
#> 496 492 1 -10 last decrease= NA
#> 498 493 2 -10 last decrease= 4.98801e-12
#> Yuan/Dai cycle reset
#> 498 494 1 -10 last decrease= NA
#> 500 495 2 -10 last decrease= 4.96847e-12
#> Yuan/Dai cycle reset
#> 500 496 1 -10 last decrease= NA
#> 502 497 2 -10 last decrease= 4.950707e-12
#> Yuan/Dai cycle reset
#> 502 498 1 -10 last decrease= NA
#> 504 499 2 -10 last decrease= 4.938272e-12
#> Yuan/Dai cycle reset
#> 504 500 1 -10 last decrease= NA
#> 506 501 2 -10 last decrease= 4.916956e-12
#> Yuan/Dai cycle reset
#> 506 502 1 -10 last decrease= NA
#> 508 503 2 -10 last decrease= 4.902745e-12
#> Yuan/Dai cycle reset
#> 508 504 1 -10 last decrease= NA
#> 510 505 2 -10 last decrease= 4.886758e-12
#> Yuan/Dai cycle reset
#> 510 506 1 -10 last decrease= NA
#> 512 507 2 -10 last decrease= 4.87077e-12
#> Yuan/Dai cycle reset
#> 512 508 1 -10 last decrease= NA
#> 514 509 2 -10 last decrease= 4.854783e-12
#> Yuan/Dai cycle reset
#> 514 510 1 -10 last decrease= NA
#> 516 511 2 -10 last decrease= 4.838796e-12
#> Yuan/Dai cycle reset
#> 516 512 1 -10 last decrease= NA
#> 518 513 2 -10 last decrease= 4.81748e-12
#> Yuan/Dai cycle reset
#> 518 514 1 -10 last decrease= NA
#> 520 515 2 -10 last decrease= 4.806822e-12
#> Yuan/Dai cycle reset
#> 520 516 1 -10 last decrease= NA
#> 522 517 2 -10 last decrease= 4.787282e-12
#> Yuan/Dai cycle reset
#> 522 518 1 -10 last decrease= NA
#> 524 519 2 -10 last decrease= 4.774847e-12
#> Yuan/Dai cycle reset
#> 524 520 1 -10 last decrease= NA
#> 526 521 2 -10 last decrease= 4.757084e-12
#> Yuan/Dai cycle reset
#> 526 522 1 -10 last decrease= NA
#> 528 523 2 -10 last decrease= 4.741096e-12
#> Yuan/Dai cycle reset
#> 528 524 1 -10 last decrease= NA
#> 530 525 2 -10 last decrease= 4.725109e-12
#> Yuan/Dai cycle reset
#> 530 526 1 -10 last decrease= NA
#> 532 527 2 -10 last decrease= 4.707346e-12
#> Yuan/Dai cycle reset
#> 532 528 1 -10 last decrease= NA
#> 534 529 2 -10 last decrease= 4.696687e-12
#> Yuan/Dai cycle reset
#> 534 530 1 -10 last decrease= NA
#> 536 531 2 -10 last decrease= 4.677148e-12
#> Yuan/Dai cycle reset
#> 536 532 1 -10 last decrease= NA
#> 538 533 2 -10 last decrease= 4.66116e-12
#> Yuan/Dai cycle reset
#> 538 534 1 -10 last decrease= NA
#> 540 535 2 -10 last decrease= 4.648726e-12
#> Yuan/Dai cycle reset
#> 540 536 1 -10 last decrease= NA
#> 542 537 2 -10 last decrease= 4.632739e-12
#> Yuan/Dai cycle reset
#> 542 538 1 -10 last decrease= NA
#> 544 539 2 -10 last decrease= 4.618528e-12
#> Yuan/Dai cycle reset
#> 544 540 1 -10 last decrease= NA
#> 546 541 2 -10 last decrease= 4.600764e-12
#> Yuan/Dai cycle reset
#> 546 542 1 -10 last decrease= NA
#> 548 543 2 -10 last decrease= 4.584777e-12
#> Yuan/Dai cycle reset
#> 548 544 1 -10 last decrease= NA
#> 550 545 2 -10 last decrease= 4.574119e-12
#> Yuan/Dai cycle reset
#> 550 546 1 -10 last decrease= NA
#> 552 547 2 -10 last decrease= 4.556355e-12
#> Yuan/Dai cycle reset
#> 552 548 1 -10 last decrease= NA
#> 554 549 2 -10 last decrease= 4.543921e-12
#> Yuan/Dai cycle reset
#> 554 550 1 -10 last decrease= NA
#> 556 551 2 -10 last decrease= 4.526157e-12
#> Yuan/Dai cycle reset
#> 556 552 1 -10 last decrease= NA
#> 558 553 2 -10 last decrease= 4.51017e-12
#> Yuan/Dai cycle reset
#> 558 554 1 -10 last decrease= NA
#> 560 555 2 -10 last decrease= 4.497736e-12
#> Yuan/Dai cycle reset
#> 560 556 1 -10 last decrease= NA
#> 562 557 2 -10 last decrease= 4.485301e-12
#> Yuan/Dai cycle reset
#> 562 558 1 -10 last decrease= NA
#> 564 559 2 -10 last decrease= 4.469314e-12
#> Yuan/Dai cycle reset
#> 564 560 1 -10 last decrease= NA
#> 566 561 2 -10 last decrease= 4.453327e-12
#> Yuan/Dai cycle reset
#> 566 562 1 -10 last decrease= NA
#> 568 563 2 -10 last decrease= 4.437339e-12
#> Yuan/Dai cycle reset
#> 568 564 1 -10 last decrease= NA
#> 570 565 2 -10 last decrease= 4.424905e-12
#> Yuan/Dai cycle reset
#> 570 566 1 -10 last decrease= NA
#> 572 567 2 -10 last decrease= 4.408918e-12
#> Yuan/Dai cycle reset
#> 572 568 1 -10 last decrease= NA
#> 574 569 2 -10 last decrease= 4.396483e-12
#> Yuan/Dai cycle reset
#> 574 570 1 -10 last decrease= NA
#> 576 571 2 -10 last decrease= 4.382272e-12
#> Yuan/Dai cycle reset
#> 576 572 1 -10 last decrease= NA
#> 578 573 2 -10 last decrease= 4.366285e-12
#> Yuan/Dai cycle reset
#> 578 574 1 -10 last decrease= NA
#> 580 575 2 -10 last decrease= 4.355627e-12
#> Yuan/Dai cycle reset
#> 580 576 1 -10 last decrease= NA
#> 582 577 2 -10 last decrease= 4.33964e-12
#> Yuan/Dai cycle reset
#> 582 578 1 -10 last decrease= NA
#> 584 579 2 -10 last decrease= 4.323653e-12
#> Yuan/Dai cycle reset
#> 584 580 1 -10 last decrease= NA
#> 586 581 2 -10 last decrease= 4.311218e-12
#> Yuan/Dai cycle reset
#> 586 582 1 -10 last decrease= NA
#> 588 583 2 -10 last decrease= 4.298784e-12
#> Yuan/Dai cycle reset
#> 588 584 1 -10 last decrease= NA
#> 590 585 2 -10 last decrease= 4.286349e-12
#> Yuan/Dai cycle reset
#> 590 586 1 -10 last decrease= NA
#> 592 587 2 -10 last decrease= 4.266809e-12
#> Yuan/Dai cycle reset
#> 592 588 1 -10 last decrease= NA
#> 594 589 2 -10 last decrease= 4.257927e-12
#> Yuan/Dai cycle reset
#> 594 590 1 -10 last decrease= NA
#> 596 591 2 -10 last decrease= 4.240164e-12
#> Yuan/Dai cycle reset
#> 596 592 1 -10 last decrease= NA
#> 598 593 2 -10 last decrease= 4.229506e-12
#> Yuan/Dai cycle reset
#> 598 594 1 -10 last decrease= NA
#> 600 595 2 -10 last decrease= 4.215295e-12
#> Yuan/Dai cycle reset
#> 600 596 1 -10 last decrease= NA
#> 602 597 2 -10 last decrease= 4.201084e-12
#> Yuan/Dai cycle reset
#> 602 598 1 -10 last decrease= NA
#> 604 599 2 -10 last decrease= 4.190426e-12
#> Yuan/Dai cycle reset
#> 604 600 1 -10 last decrease= NA
#> 606 601 2 -10 last decrease= 4.172662e-12
#> Yuan/Dai cycle reset
#> 606 602 1 -10 last decrease= NA
#> 608 603 2 -10 last decrease= 4.16378e-12
#> Yuan/Dai cycle reset
#> 608 604 1 -10 last decrease= NA
#> 610 605 2 -10 last decrease= 4.146017e-12
#> Yuan/Dai cycle reset
#> 610 606 1 -10 last decrease= NA
#> 612 607 2 -10 last decrease= 4.138911e-12
#> Yuan/Dai cycle reset
#> 612 608 1 -10 last decrease= NA
#> 614 609 2 -10 last decrease= 4.121148e-12
#> Yuan/Dai cycle reset
#> 614 610 1 -10 last decrease= NA
#> 616 611 2 -10 last decrease= 4.106937e-12
#> Yuan/Dai cycle reset
#> 616 612 1 -10 last decrease= NA
#> 618 613 2 -10 last decrease= 4.098055e-12
#> Yuan/Dai cycle reset
#> 618 614 1 -10 last decrease= NA
#> 620 615 2 -10 last decrease= 4.082068e-12
#> Yuan/Dai cycle reset
#> 620 616 1 -10 last decrease= NA
#> 622 617 2 -10 last decrease= 4.07141e-12
#> Yuan/Dai cycle reset
#> 622 618 1 -10 last decrease= NA
#> 624 619 2 -10 last decrease= 4.057199e-12
#> Yuan/Dai cycle reset
#> 624 620 1 -10 last decrease= NA
#> 626 621 2 -10 last decrease= 4.042988e-12
#> Yuan/Dai cycle reset
#> 626 622 1 -10 last decrease= NA
#> 628 623 2 -10 last decrease= 4.034106e-12
#> Yuan/Dai cycle reset
#> 628 624 1 -10 last decrease= NA
#> 630 625 2 -10 last decrease= 4.016343e-12
#> Yuan/Dai cycle reset
#> 630 626 1 -10 last decrease= NA
#> 632 627 2 -10 last decrease= 4.009237e-12
#> Yuan/Dai cycle reset
#> 632 628 1 -10 last decrease= NA
#> 634 629 2 -10 last decrease= 3.99325e-12
#> Yuan/Dai cycle reset
#> 634 630 1 -10 last decrease= NA
#> 636 631 2 -10 last decrease= 3.980816e-12
#> Yuan/Dai cycle reset
#> 636 632 1 -10 last decrease= NA
#> 638 633 2 -10 last decrease= 3.968381e-12
#> Yuan/Dai cycle reset
#> 638 634 1 -10 last decrease= NA
#> 640 635 2 -10 last decrease= 3.957723e-12
#> Yuan/Dai cycle reset
#> 640 636 1 -10 last decrease= NA
#> 642 637 2 -10 last decrease= 3.947065e-12
#> Yuan/Dai cycle reset
#> 642 638 1 -10 last decrease= NA
#> 644 639 2 -10 last decrease= 3.929301e-12
#> Yuan/Dai cycle reset
#> 644 640 1 -10 last decrease= NA
#> 646 641 2 -10 last decrease= 3.918643e-12
#> Yuan/Dai cycle reset
#> 646 642 1 -10 last decrease= NA
#> 648 643 2 -10 last decrease= 3.907985e-12
#> Yuan/Dai cycle reset
#> 648 644 1 -10 last decrease= NA
#> 650 645 2 -10 last decrease= 3.893774e-12
#> Yuan/Dai cycle reset
#> 650 646 1 -10 last decrease= NA
#> 652 647 2 -10 last decrease= 3.884892e-12
#> Yuan/Dai cycle reset
#> 652 648 1 -10 last decrease= NA
#> 654 649 2 -10 last decrease= 3.872458e-12
#> Yuan/Dai cycle reset
#> 654 650 1 -10 last decrease= NA
#> 656 651 2 -10 last decrease= 3.858247e-12
#> Yuan/Dai cycle reset
#> 656 652 1 -10 last decrease= NA
#> 658 653 2 -10 last decrease= 3.845813e-12
#> Yuan/Dai cycle reset
#> 658 654 1 -10 last decrease= NA
#> 660 655 2 -10 last decrease= 3.833378e-12
#> Yuan/Dai cycle reset
#> 660 656 1 -10 last decrease= NA
#> 662 657 2 -10 last decrease= 3.824496e-12
#> Yuan/Dai cycle reset
#> 662 658 1 -10 last decrease= NA
#> 664 659 2 -10 last decrease= 3.812062e-12
#> Yuan/Dai cycle reset
#> 664 660 1 -10 last decrease= NA
#> 666 661 2 -10 last decrease= 3.801404e-12
#> Yuan/Dai cycle reset
#> 666 662 1 -10 last decrease= NA
#> 668 663 2 -10 last decrease= 3.790745e-12
#> Yuan/Dai cycle reset
#> 668 664 1 -10 last decrease= NA
#> 670 665 2 -10 last decrease= 3.774758e-12
#> Yuan/Dai cycle reset
#> 670 666 1 -10 last decrease= NA
#> 672 667 2 -10 last decrease= 3.762324e-12
#> Yuan/Dai cycle reset
#> 672 668 1 -10 last decrease= NA
#> 674 669 2 -10 last decrease= 3.755218e-12
#> Yuan/Dai cycle reset
#> 674 670 1 -10 last decrease= NA
#> 676 671 2 -10 last decrease= 3.739231e-12
#> Yuan/Dai cycle reset
#> 676 672 1 -10 last decrease= NA
#> 678 673 2 -10 last decrease= 3.732126e-12
#> Yuan/Dai cycle reset
#> 678 674 1 -10 last decrease= NA
#> 680 675 2 -10 last decrease= 3.719691e-12
#> Yuan/Dai cycle reset
#> 680 676 1 -10 last decrease= NA
#> 682 677 2 -10 last decrease= 3.70548e-12
#> Yuan/Dai cycle reset
#> 682 678 1 -10 last decrease= NA
#> 684 679 2 -10 last decrease= 3.694822e-12
#> Yuan/Dai cycle reset
#> 684 680 1 -10 last decrease= NA
#> 686 681 2 -10 last decrease= 3.68594e-12
#> Yuan/Dai cycle reset
#> 686 682 1 -10 last decrease= NA
#> 688 683 2 -10 last decrease= 3.67173e-12
#> Yuan/Dai cycle reset
#> 688 684 1 -10 last decrease= NA
#> 690 685 2 -10 last decrease= 3.661071e-12
#> Yuan/Dai cycle reset
#> 690 686 1 -10 last decrease= NA
#> 692 687 2 -10 last decrease= 3.65219e-12
#> Yuan/Dai cycle reset
#> 692 688 1 -10 last decrease= NA
#> 694 689 2 -10 last decrease= 3.639755e-12
#> Yuan/Dai cycle reset
#> 694 690 1 -10 last decrease= NA
#> 696 691 2 -10 last decrease= 3.630873e-12
#> Yuan/Dai cycle reset
#> 696 692 1 -10 last decrease= NA
#> 698 693 2 -10 last decrease= 3.618439e-12
#> Yuan/Dai cycle reset
#> 698 694 1 -10 last decrease= NA
#> 700 695 2 -10 last decrease= 3.609557e-12
#> Yuan/Dai cycle reset
#> 700 696 1 -10 last decrease= NA
#> 702 697 2 -10 last decrease= 3.595346e-12
#> Yuan/Dai cycle reset
#> 702 698 1 -10 last decrease= NA
#> 704 699 2 -10 last decrease= 3.582912e-12
#> Yuan/Dai cycle reset
#> 704 700 1 -10 last decrease= NA
#> 706 701 2 -10 last decrease= 3.57403e-12
#> Yuan/Dai cycle reset
#> 706 702 1 -10 last decrease= NA
#> 708 703 2 -10 last decrease= 3.565148e-12
#> Yuan/Dai cycle reset
#> 708 704 1 -10 last decrease= NA
#> 710 705 2 -10 last decrease= 3.550937e-12
#> Yuan/Dai cycle reset
#> 710 706 1 -10 last decrease= NA
#> 712 707 2 -10 last decrease= 3.542056e-12
#> Yuan/Dai cycle reset
#> 712 708 1 -10 last decrease= NA
#> 714 709 2 -10 last decrease= 3.529621e-12
#> Yuan/Dai cycle reset
#> 714 710 1 -10 last decrease= NA
#> 716 711 2 -10 last decrease= 3.518963e-12
#> Yuan/Dai cycle reset
#> 716 712 1 -10 last decrease= NA
#> 718 713 2 -10 last decrease= 3.511857e-12
#> Yuan/Dai cycle reset
#> 718 714 1 -10 last decrease= NA
#> 720 715 2 -10 last decrease= 3.499423e-12
#> Yuan/Dai cycle reset
#> 720 716 1 -10 last decrease= NA
#> 722 717 2 -10 last decrease= 3.490541e-12
#> Yuan/Dai cycle reset
#> 722 718 1 -10 last decrease= NA
#> 724 719 2 -10 last decrease= 3.478107e-12
#> Yuan/Dai cycle reset
#> 724 720 1 -10 last decrease= NA
#> 726 721 2 -10 last decrease= 3.469225e-12
#> Yuan/Dai cycle reset
#> 726 722 1 -10 last decrease= NA
#> 728 723 2 -10 last decrease= 3.455014e-12
#> Yuan/Dai cycle reset
#> 728 724 1 -10 last decrease= NA
#> 730 725 2 -10 last decrease= 3.447909e-12
#> Yuan/Dai cycle reset
#> 730 726 1 -10 last decrease= NA
#> 732 727 2 -10 last decrease= 3.439027e-12
#> Yuan/Dai cycle reset
#> 732 728 1 -10 last decrease= NA
#> 734 729 2 -10 last decrease= 3.426592e-12
#> Yuan/Dai cycle reset
#> 734 730 1 -10 last decrease= NA
#> 736 731 2 -10 last decrease= 3.417711e-12
#> Yuan/Dai cycle reset
#> 736 732 1 -10 last decrease= NA
#> 738 733 2 -10 last decrease= 3.408829e-12
#> Yuan/Dai cycle reset
#> 738 734 1 -10 last decrease= NA
#> 740 735 2 -10 last decrease= 3.394618e-12
#> Yuan/Dai cycle reset
#> 740 736 1 -10 last decrease= NA
#> 742 737 2 -10 last decrease= 3.385736e-12
#> Yuan/Dai cycle reset
#> 742 738 1 -10 last decrease= NA
#> 744 739 2 -10 last decrease= 3.375078e-12
#> Yuan/Dai cycle reset
#> 744 740 1 -10 last decrease= NA
#> 746 741 2 -10 last decrease= 3.36442e-12
#> Yuan/Dai cycle reset
#> 746 742 1 -10 last decrease= NA
#> 748 743 2 -10 last decrease= 3.359091e-12
#> Yuan/Dai cycle reset
#> 748 744 1 -10 last decrease= NA
#> 750 745 2 -10 last decrease= 3.343104e-12
#> Yuan/Dai cycle reset
#> 750 746 1 -10 last decrease= NA
#> 752 747 2 -10 last decrease= 3.337775e-12
#> Yuan/Dai cycle reset
#> 752 748 1 -10 last decrease= NA
#> 754 749 2 -10 last decrease= 3.327116e-12
#> Yuan/Dai cycle reset
#> 754 750 1 -10 last decrease= NA
#> 756 751 2 -10 last decrease= 3.316458e-12
#> Yuan/Dai cycle reset
#> 756 752 1 -10 last decrease= NA
#> 758 753 2 -10 last decrease= 3.304024e-12
#> Yuan/Dai cycle reset
#> 758 754 1 -10 last decrease= NA
#> 760 755 2 -10 last decrease= 3.298695e-12
#> Yuan/Dai cycle reset
#> 760 756 1 -10 last decrease= NA
#> 762 757 2 -10 last decrease= 3.288037e-12
#> Yuan/Dai cycle reset
#> 762 758 1 -10 last decrease= NA
#> 764 759 2 -10 last decrease= 3.277378e-12
#> Yuan/Dai cycle reset
#> 764 760 1 -10 last decrease= NA
#> 766 761 2 -10 last decrease= 3.268497e-12
#> Yuan/Dai cycle reset
#> 766 762 1 -10 last decrease= NA
#> 768 763 2 -10 last decrease= 3.257838e-12
#> Yuan/Dai cycle reset
#> 768 764 1 -10 last decrease= NA
#> 770 765 2 -10 last decrease= 3.250733e-12
#> Yuan/Dai cycle reset
#> 770 766 1 -10 last decrease= NA
#> 772 767 2 -10 last decrease= 3.238299e-12
#> Yuan/Dai cycle reset
#> 772 768 1 -10 last decrease= NA
#> 774 769 2 -10 last decrease= 3.229417e-12
#> Yuan/Dai cycle reset
#> 774 770 1 -10 last decrease= NA
#> 776 771 2 -10 last decrease= 3.220535e-12
#> Yuan/Dai cycle reset
#> 776 772 1 -10 last decrease= NA
#> 778 773 2 -10 last decrease= 3.21343e-12
#> Yuan/Dai cycle reset
#> 778 774 1 -10 last decrease= NA
#> 780 775 2 -10 last decrease= 3.200995e-12
#> Yuan/Dai cycle reset
#> 780 776 1 -10 last decrease= NA
#> 782 777 2 -10 last decrease= 3.190337e-12
#> Yuan/Dai cycle reset
#> 782 778 1 -10 last decrease= NA
#> 784 779 2 -10 last decrease= 3.185008e-12
#> Yuan/Dai cycle reset
#> 784 780 1 -10 last decrease= NA
#> 786 781 2 -10 last decrease= 3.172573e-12
#> Yuan/Dai cycle reset
#> 786 782 1 -10 last decrease= NA
#> 788 783 2 -10 last decrease= 3.165468e-12
#> Yuan/Dai cycle reset
#> 788 784 1 -10 last decrease= NA
#> 790 785 2 -10 last decrease= 3.156586e-12
#> Yuan/Dai cycle reset
#> 790 786 1 -10 last decrease= NA
#> 792 787 2 -10 last decrease= 3.147704e-12
#> Yuan/Dai cycle reset
#> 792 788 1 -10 last decrease= NA
#> 794 789 2 -10 last decrease= 3.137046e-12
#> Yuan/Dai cycle reset
#> 794 790 1 -10 last decrease= NA
#> 796 791 2 -10 last decrease= 3.129941e-12
#> Yuan/Dai cycle reset
#> 796 792 1 -10 last decrease= NA
#> 798 793 2 -10 last decrease= 3.11573e-12
#> Yuan/Dai cycle reset
#> 798 794 1 -10 last decrease= NA
#> 800 795 2 -10 last decrease= 3.112177e-12
#> Yuan/Dai cycle reset
#> 800 796 1 -10 last decrease= NA
#> 802 797 2 -10 last decrease= 3.101519e-12
#> Yuan/Dai cycle reset
#> 802 798 1 -10 last decrease= NA
#> 804 799 2 -10 last decrease= 3.092637e-12
#> Yuan/Dai cycle reset
#> 804 800 1 -10 last decrease= NA
#> 806 801 2 -10 last decrease= 3.081979e-12
#> Yuan/Dai cycle reset
#> 806 802 1 -10 last decrease= NA
#> 808 803 2 -10 last decrease= 3.073097e-12
#> Yuan/Dai cycle reset
#> 808 804 1 -10 last decrease= NA
#> 810 805 2 -10 last decrease= 3.064216e-12
#> Yuan/Dai cycle reset
#> 810 806 1 -10 last decrease= NA
#> 812 807 2 -10 last decrease= 3.05711e-12
#> Yuan/Dai cycle reset
#> 812 808 1 -10 last decrease= NA
#> 814 809 2 -10 last decrease= 3.046452e-12
#> Yuan/Dai cycle reset
#> 814 810 1 -10 last decrease= NA
#> 816 811 2 -10 last decrease= 3.03757e-12
#> Yuan/Dai cycle reset
#> 816 812 1 -10 last decrease= NA
#> 818 813 2 -10 last decrease= 3.032241e-12
#> Yuan/Dai cycle reset
#> 818 814 1 -10 last decrease= NA
#> 820 815 2 -10 last decrease= 3.021583e-12
#> Yuan/Dai cycle reset
#> 820 816 1 -10 last decrease= NA
#> 822 817 2 -10 last decrease= 3.012701e-12
#> Yuan/Dai cycle reset
#> 822 818 1 -10 last decrease= NA
#> 824 819 2 -10 last decrease= 3.003819e-12
#> Yuan/Dai cycle reset
#> 824 820 1 -10 last decrease= NA
#> 826 821 2 -10 last decrease= 2.99849e-12
#> Yuan/Dai cycle reset
#> 826 822 1 -10 last decrease= NA
#> 828 823 2 -10 last decrease= 2.986056e-12
#> Yuan/Dai cycle reset
#> 828 824 1 -10 last decrease= NA
#> 830 825 2 -10 last decrease= 2.97895e-12
#> Yuan/Dai cycle reset
#> 830 826 1 -10 last decrease= NA
#> 832 827 2 -10 last decrease= 2.968292e-12
#> Yuan/Dai cycle reset
#> 832 828 1 -10 last decrease= NA
#> 834 829 2 -10 last decrease= 2.962963e-12
#> Yuan/Dai cycle reset
#> 834 830 1 -10 last decrease= NA
#> 836 831 2 -10 last decrease= 2.952305e-12
#> Yuan/Dai cycle reset
#> 836 832 1 -10 last decrease= NA
#> 838 833 2 -10 last decrease= 2.9452e-12
#> Yuan/Dai cycle reset
#> 838 834 1 -10 last decrease= NA
#> 840 835 2 -10 last decrease= 2.936318e-12
#> Yuan/Dai cycle reset
#> 840 836 1 -10 last decrease= NA
#> 842 837 2 -10 last decrease= 2.929212e-12
#> Yuan/Dai cycle reset
#> 842 838 1 -10 last decrease= NA
#> 844 839 2 -10 last decrease= 2.920331e-12
#> Yuan/Dai cycle reset
#> 844 840 1 -10 last decrease= NA
#> 846 841 2 -10 last decrease= 2.915002e-12
#> Yuan/Dai cycle reset
#> 846 842 1 -10 last decrease= NA
#> 848 843 2 -10 last decrease= 2.902567e-12
#> Yuan/Dai cycle reset
#> 848 844 1 -10 last decrease= NA
#> 850 845 2 -10 last decrease= 2.895462e-12
#> Yuan/Dai cycle reset
#> 850 846 1 -10 last decrease= NA
#> 852 847 2 -10 last decrease= 2.88658e-12
#> Yuan/Dai cycle reset
#> 852 848 1 -10 last decrease= NA
#> 854 849 2 -10 last decrease= 2.877698e-12
#> Yuan/Dai cycle reset
#> 854 850 1 -10 last decrease= NA
#> 856 851 2 -10 last decrease= 2.870593e-12
#> Yuan/Dai cycle reset
#> 856 852 1 -10 last decrease= NA
#> 858 853 2 -10 last decrease= 2.861711e-12
#> Yuan/Dai cycle reset
#> 858 854 1 -10 last decrease= NA
#> 860 855 2 -10 last decrease= 2.854605e-12
#> Yuan/Dai cycle reset
#> 860 856 1 -10 last decrease= NA
#> 862 857 2 -10 last decrease= 2.849276e-12
#> Yuan/Dai cycle reset
#> 862 858 1 -10 last decrease= NA
#> 864 859 2 -10 last decrease= 2.836842e-12
#> Yuan/Dai cycle reset
#> 864 860 1 -10 last decrease= NA
#> 866 861 2 -10 last decrease= 2.833289e-12
#> Yuan/Dai cycle reset
#> 866 862 1 -10 last decrease= NA
#> 868 863 2 -10 last decrease= 2.822631e-12
#> Yuan/Dai cycle reset
#> 868 864 1 -10 last decrease= NA
#> 870 865 2 -10 last decrease= 2.815526e-12
#> Yuan/Dai cycle reset
#> 870 866 1 -10 last decrease= NA
#> 872 867 2 -10 last decrease= 2.804867e-12
#> Yuan/Dai cycle reset
#> 872 868 1 -10 last decrease= NA
#> 874 869 2 -10 last decrease= 2.801315e-12
#> Yuan/Dai cycle reset
#> 874 870 1 -10 last decrease= NA
#> 876 871 2 -10 last decrease= 2.792433e-12
#> Yuan/Dai cycle reset
#> 876 872 1 -10 last decrease= NA
#> 878 873 2 -10 last decrease= 2.781775e-12
#> Yuan/Dai cycle reset
#> 878 874 1 -10 last decrease= NA
#> 880 875 2 -10 last decrease= 2.776446e-12
#> Yuan/Dai cycle reset
#> 880 876 1 -10 last decrease= NA
#> 882 877 2 -10 last decrease= 2.771117e-12
#> Yuan/Dai cycle reset
#> 882 878 1 -10 last decrease= NA
#> 884 879 2 -10 last decrease= 2.762235e-12
#> Yuan/Dai cycle reset
#> 884 880 1 -10 last decrease= NA
#> 886 881 2 -10 last decrease= 2.751577e-12
#> Yuan/Dai cycle reset
#> 886 882 1 -10 last decrease= NA
#> 888 883 2 -10 last decrease= 2.746248e-12
#> Yuan/Dai cycle reset
#> 888 884 1 -10 last decrease= NA
#> 890 885 2 -10 last decrease= 2.737366e-12
#> Yuan/Dai cycle reset
#> 890 886 1 -10 last decrease= NA
#> 892 887 2 -10 last decrease= 2.73026e-12
#> Yuan/Dai cycle reset
#> 892 888 1 -10 last decrease= NA
#> 894 889 2 -10 last decrease= 2.724931e-12
#> Yuan/Dai cycle reset
#> 894 890 1 -10 last decrease= NA
#> 896 891 2 -10 last decrease= 2.714273e-12
#> Yuan/Dai cycle reset
#> 896 892 1 -10 last decrease= NA
#> 898 893 2 -10 last decrease= 2.707168e-12
#> Yuan/Dai cycle reset
#> 898 894 1 -10 last decrease= NA
#> 900 895 2 -10 last decrease= 2.700062e-12
#> Yuan/Dai cycle reset
#> 900 896 1 -10 last decrease= NA
#> 902 897 2 -10 last decrease= 2.692957e-12
#> Yuan/Dai cycle reset
#> 902 898 1 -10 last decrease= NA
#> 904 899 2 -10 last decrease= 2.684075e-12
#> Yuan/Dai cycle reset
#> 904 900 1 -10 last decrease= NA
#> 906 901 2 -10 last decrease= 2.678746e-12
#> Yuan/Dai cycle reset
#> 906 902 1 -10 last decrease= NA
#> 908 903 2 -10 last decrease= 2.669864e-12
#> Yuan/Dai cycle reset
#> 908 904 1 -10 last decrease= NA
#> 910 905 2 -10 last decrease= 2.662759e-12
#> Yuan/Dai cycle reset
#> 910 906 1 -10 last decrease= NA
#> 912 907 2 -10 last decrease= 2.65743e-12
#> Yuan/Dai cycle reset
#> 912 908 1 -10 last decrease= NA
#> 914 909 2 -10 last decrease= 2.648548e-12
#> Yuan/Dai cycle reset
#> 914 910 1 -10 last decrease= NA
#> 916 911 2 -10 last decrease= 1.319833e-12
#> Yuan/Dai cycle reset
#> 916 912 1 -10 last decrease= NA
#> 918 913 2 -10 last decrease= 2.639666e-12
#> Very small gradient -- gradsqr = 8.77384207433427e-13
#> Rcgmin seems to have converged
print(ansnegmaxn)
#> $par
#> [1] 0.9999995 1.9991687 2.9983378 3.9975066 4.9966748 5.9958428
#> attr(,"status")
#> [1] " " " " " " " " " " " "
#>
#> $value
#> [1] -10
#> attr(,"fname")
#> [1] "(no_name)"
#> attr(,"method")
#> [1] "Rcgmin"
#> attr(,"ptype")
#> [1] "U"
#>
#> $counts
#> [1] 918 914
#>
#> $convergence
#> [1] 0
#>
#> $message
#> [1] NA
#>
#> $scounts
#> [1] 918 914 0
#>
#> attr(,"maximize")
#> [1] FALSE
##################### From Rvmmin.Rd
cat("test bounds and masks\n")
#> test bounds and masks
nn<-4
startx<-rep(pi,nn)
lo<-rep(2,nn)
up<-rep(10,nn)
grbds1<-Rcgmin(startx,genrose.f, gr=genrose.g,lower=lo,upper=up)
#> Rcgminb: maxfeval set to 10000
print(grbds1)
#> $par
#> [1] 2.000000 2.000000 3.181997 10.000000
#>
#> $value
#> [1] 556.2391
#>
#> $counts
#> [1] 34 24
#>
#> $convergence
#> [1] 0
#>
#> $message
#> [1] "Rcgmin seems to have converged"
#>
#> $bdmsk
#> [1] -3 -3 1 -1
#>
cat("test lower bound only\n")
#> test lower bound only
nn<-4
startx<-rep(pi,nn)
lo<-rep(2,nn)
grbds2<-Rcgmin(startx,genrose.f, gr=genrose.g,lower=lo)
#> Rcgminb: maxfeval set to 10000
print(grbds2)
#> $par
#> [1] 2.000000 2.000000 3.318724 10.914782
#>
#> $value
#> [1] 553.0761
#>
#> $counts
#> [1] 98 40
#>
#> $convergence
#> [1] 0
#>
#> $message
#> [1] "Rcgmin seems to have converged"
#>
#> $bdmsk
#> [1] -3 -3 1 1
#>
cat("test lower bound single value only\n")
#> test lower bound single value only
nn<-4
startx<-rep(pi,nn)
lo<-2
up<-rep(10,nn)
grbds3<-Rcgmin(startx,genrose.f, gr=genrose.g,lower=lo)
#> Rcgminb: maxfeval set to 10000
print(grbds3)
#> $par
#> [1] 2.000000 2.000000 3.318724 10.914782
#>
#> $value
#> [1] 553.0761
#>
#> $counts
#> [1] 98 40
#>
#> $convergence
#> [1] 0
#>
#> $message
#> [1] "Rcgmin seems to have converged"
#>
#> $bdmsk
#> [1] -3 -3 1 1
#>
cat("test upper bound only\n")
#> test upper bound only
nn<-4
startx<-rep(pi,nn)
lo<-rep(2,nn)
up<-rep(10,nn)
grbds4<-Rcgmin(startx,genrose.f, gr=genrose.g,upper=up)
#> Rcgminb: maxfeval set to 10000
print(grbds4)
#> $par
#> [1] 1 1 1 1
#>
#> $value
#> [1] 1
#>
#> $counts
#> [1] 92 43
#>
#> $convergence
#> [1] 0
#>
#> $message
#> [1] "Rcgmin seems to have converged"
#>
#> $bdmsk
#> [1] 1 1 1 1
#>
cat("test upper bound single value only\n")
#> test upper bound single value only
nn<-4
startx<-rep(pi,nn)
grbds5<-Rcgmin(startx,genrose.f, gr=genrose.g,upper=10)
#> Rcgminb: maxfeval set to 10000
print(grbds5)
#> $par
#> [1] 1 1 1 1
#>
#> $value
#> [1] 1
#>
#> $counts
#> [1] 92 43
#>
#> $convergence
#> [1] 0
#>
#> $message
#> [1] "Rcgmin seems to have converged"
#>
#> $bdmsk
#> [1] 1 1 1 1
#>
cat("test masks only\n")
#> test masks only
nn<-6
bd<-c(1,1,0,0,1,1)
startx<-rep(pi,nn)
grbds6<-Rcgmin(startx,genrose.f, gr=genrose.g,bdmsk=bd)
#> Rcgminb: maxfeval set to 10000
print(grbds6)
#> $par
#> [1] 1.331105 1.771839 3.141593 3.141593 5.890350 34.362593
#>
#> $value
#> [1] 7268.939
#>
#> $counts
#> [1] 157 64
#>
#> $convergence
#> [1] 0
#>
#> $message
#> [1] "Rcgmin seems to have converged"
#>
#> $bdmsk
#> [1] 1 1 0 0 1 1
#>
cat("test upper bound on first two elements only\n")
#> test upper bound on first two elements only
nn<-4
startx<-rep(pi,nn)
upper<-c(10,8, Inf, Inf)
grbds7<-Rcgmin(startx,genrose.f, gr=genrose.g,upper=upper)
#> Rcgminb: maxfeval set to 10000
print(grbds7)
#> $par
#> [1] 1 1 1 1
#>
#> $value
#> [1] 1
#>
#> $counts
#> [1] 91 43
#>
#> $convergence
#> [1] 0
#>
#> $message
#> [1] "Rcgmin seems to have converged"
#>
#> $bdmsk
#> [1] 1 1 1 1
#>
cat("test lower bound on first two elements only\n")
#> test lower bound on first two elements only
nn<-4
startx<-rep(0,nn)
lower<-c(0,1.1, -Inf, -Inf)
grbds8<-Rcgmin(startx,genrose.f,genrose.g,lower=lower, control=list(maxit=2000))
#> Warning: Parameter out of bounds has been moved to nearest bound
#> Rcgminb: maxfeval set to 10000
print(grbds8)
#> $par
#> [1] 0.000000 1.100000 1.197717 1.430224
#> attr(,"status")
#> [1] "L" "L" " " " "
#>
#> $value
#> [1] 122.2511
#>
#> $counts
#> [1] 57 23
#>
#> $convergence
#> [1] 0
#>
#> $message
#> [1] "Rcgmin seems to have converged"
#>
#> $bdmsk
#> [1] 1 -3 1 1
#>
cat("test n=1 problem using simple squares of parameter\n")
#> test n=1 problem using simple squares of parameter
sqtst<-function(xx) {
res<-sum((xx-2)*(xx-2))
}
gsqtst<-function(xx) {
gg<-2*(xx-2)
}
######### One dimension test
nn<-1
startx<-rep(0,nn)
onepar<-Rcgmin(startx,sqtst, gr=gsqtst,control=list(trace=1))
#> Rcgminu -- J C Nash 2009 - unconstrained version CG min
#> an R implementation of Alg 22 with Yuan/Dai modification
#> Initial function value= 4
#> Initial fn= 4
#> 1 0 1 4 last decrease= NA
#> *4 1 2 1.774937e-30 last decrease= 4
#> Very small gradient -- gradsqr = 7.09974814698911e-30
#> Rcgmin seems to have converged
print(onepar)
#> $par
#> [1] 2
#>
#> $value
#> [1] 1.774937e-30
#>
#> $counts
#> [1] 4 2
#>
#> $convergence
#> [1] 0
#>
#> $message
#> [1] "Rcgmin seems to have converged"
#>
cat("Suppress warnings\n")
#> Suppress warnings
oneparnw<-Rcgmin(startx,sqtst, gr=gsqtst,control=list(dowarn=FALSE,trace=1))
#> Rcgminu -- J C Nash 2009 - unconstrained version CG min
#> an R implementation of Alg 22 with Yuan/Dai modification
#> Initial function value= 4
#> Initial fn= 4
#> 1 0 1 4 last decrease= NA
#> *4 1 2 1.774937e-30 last decrease= 4
#> Very small gradient -- gradsqr = 7.09974814698911e-30
#> Rcgmin seems to have converged
print(oneparnw)
#> $par
#> [1] 2
#>
#> $value
#> [1] 1.774937e-30
#>
#> $counts
#> [1] 4 2
#>
#> $convergence
#> [1] 0
#>
#> $message
#> [1] "Rcgmin seems to have converged"
#>