diff --git a/src/rbfmodels/trainRBF_ARX.jl b/src/rbfmodels/trainRBF_ARX.jl index f1eda12f4b043647b07b1b5af4002cbfabecbbc6..9021c1d3be3c3454f8bee359337bc98621b34d56 100644 --- a/src/rbfmodels/trainRBF_ARX.jl +++ b/src/rbfmodels/trainRBF_ARX.jl @@ -25,7 +25,7 @@ The number of centers is equal to `nc` if Kmeans is used to get initial centers, `n_state` is equal to the state dimension, possibly reduced to `inputpca` if so desired.\n The number of nonlinear parameters is `n_centers × n_state`\n The number of linear parameters is `outputnet ? n_state × (n_centers+1) × (na)+1) : (na)×(n_centers+1)+1)`""" -function trainRBF_ARX(y, A, state, nc; liniters=3,nonliniters=50, normalized=false, initialcenters="equidistant", inputpca=false, outputnet = true, cuckoosearch = false, cuckooiter=100) +function trainRBF_ARX(y, A, state, nc; liniters=3,nonliniters=50, normalized=false, initialcenters="equidistant", inputpca=false, outputnet = true, cuckoosearch = false, cuckooiter=100, timeout=60) n_points = length(y) na = isa(A,Matrix) ? size(A,2) : 1 @@ -93,7 +93,7 @@ function trainRBF_ARX(y, A, state, nc; liniters=3,nonliniters=50, normalized=fal tolG = 1e-7, tolX = 1e-10, show_trace=true, - timeout = 60, + timeout = timeout, n_state = n_state) X0 = deepcopy(res.minimum) DEBUG && assert(X0 == res.minimum) @@ -122,7 +122,7 @@ function trainRBF_ARX(y, A, state, nc; liniters=3,nonliniters=50, normalized=fal pa=0.25, Tol=1.0e-5, max_iter = i < liniters-1 ? cuckooiter : 2cuckooiter, - timeout = 120) + timeout = 2timeout) debug("cuckoo_search done") X0 = deepcopy(bestnest) @ddshow rms(f(X0)) @@ -155,7 +155,7 @@ end -function trainRBF(y, state, nc; liniters=3,nonliniters=50, normalized=false, initialcenters="equidistant", inputpca=false, cuckoosearch = false, cuckooiter=100) +function trainRBF(y, state, nc; liniters=3,nonliniters=50, normalized=false, initialcenters="equidistant", inputpca=false, cuckoosearch = false, cuckooiter=100, timeout=60) n_points = length(y) function predictionerror(z) znl = RbfNonlinearParameters(z,n_state,n_centers) @@ -195,7 +195,7 @@ function trainRBF(y, state, nc; liniters=3,nonliniters=50, normalized=false, ini @ddshow sum(!isfinite(Ψ)) w = fitlinear(Ψ,y); debug("fitlinear") - newplot(w,"o"); title("Linear parameters") +# newplot(w,"o"); title("Linear parameters") @ddshow sum(!isfinite(Zl)) prediction = Ψ*w error = y - prediction @@ -221,7 +221,7 @@ function trainRBF(y, state, nc; liniters=3,nonliniters=50, normalized=false, ini tolG = 1e-7, tolX = 1e-10, show_trace=true, - timeout = 60, + timeout = timeout, n_state = n_state) X0 = deepcopy(res.minimum) DEBUG && assert(X0 == res.minimum) @@ -248,7 +248,7 @@ function trainRBF(y, state, nc; liniters=3,nonliniters=50, normalized=false, ini pa=0.25, Tol=1.0e-5, max_iter = i < liniters-1 ? cuckooiter : 2cuckooiter, - timeout = 120) + timeout = 2timeout) debug("cuckoo_search done") X0 = deepcopy(bestnest) @ddshow rms(f(X0)) @@ -320,7 +320,7 @@ function getcentersEq(state::VecOrMat, nc::Integer) end # add bandwidth parameters γ, give all centers the same bandwidth with Δc as a (hopefully) good initial guess # display(Z) - Z[:,n_state+1:end] = ones(1*repmat(4./(Δc.^2)',nc,1)) # Spread the initial guess to all centers + Z[:,n_state+1:end] = 1*repmat(4./(Δc.^2)',nc,1) # Spread the initial guess to all centers assert(all(Z[:,n_state+1:end].> 0)) debug("Z done") n_centers::Int64 = nc^n_state # new number of centers wich considers gridding of 1D centers