-
Mauricio Zambrano-Bigiarini authoredMauricio Zambrano-Bigiarini authored
NEWS 12.92 KiB
NEWS/ChangeLog for hydroPSO
--------------------------
0.1-59 (under-development & not working yet)
o 'hydroPSO' : -) towards SPSO 2011 capable, which includes:
* new default value for swarm size (npart=40),
* new equation for updating the velocity ( V[t+1] = w*V + Gr -x + r*alea_sphere(Gr, ||Gr-x||) ),
* new initialization of the velocity ( Vini = U(lower-Xini, upper-Xini) )
* optional normalisation of parameter values
-) new 'normalise' parameter for the 'control' variable, in order to improve the performance when the search space is not
a hypercube
-) argument 'method' now allows the following 2 new values: 'spso2007' and 'spso2011', which set the values of the PSO
engine to the ones of the SPSO 2007 and SPSO 2011, respectively.
-) argument 'method'. The old (default) value 'pso' was replaced by the new (default) value 'spso2011'
-) argument 'Vini.type' now allows the following 2 new values: 'random2011' and 'lhs2011', which set the initial velocity
values for the particles to random values according to the equation specified in the SPSO 2011, with a uniform distribution
or with a Latin-hypercube sampling, respectively.
-) argument 'Vini.type'. The old values 'random' and 'lhs' were replaced by 'random2007' and 'lhs2007', in order to make
clear that it follows the equation described in SPSO 2007.
-) argument 'Vini.type', when missing its value depends on the value of the 'method' argument:
method == 'spso2007' => Vini.type='random2007'
method != 'spso2007' => Vini.type='random2011'
-) argument 'npart', when missing its value depends on the value of the 'method' argument:
method == 'spso2007' => npart=10+2*[sqrt(n)]
method != 'spso2007' => npart=40
-) argument 'boundary.wall' now allows the following new values: 'absorbing2011', which set 'boundary.wall' to the absorbing condition
specified in the SPSO 2011
-) argument 'boundary.wall'. The old value 'absorbing' was replaced by 'absorbing2007', in order to make clear that is follows
the equation described in SPSO 2007.
-) argument 'boundary.wall', when missing its value depends on the value of the 'method' argument:
method == 'spso2007' => boundary.wall='absorbing2007'
method != 'spso2007' => boundary.wall='absorbing2011'
-) in the documentation, default values are now mentioned for each argument of 'control'.
-) the 'PSO_logfile.txt' now contains information about: 'best.update', 'random.update', 'Xini.type', 'Vini.type'.
In addition, information about 'IW.type' and 'IW.exp' is now written only when 'length(IW.w) > 1'
-) fixed velocity equation for 'boundary.wall="reflecting"' :
ver <= 0.1-58 -> ver >= 0.1-59
v[t+1] : v[t] -> -v[t] (when x[t+1] > x_max | x[t+1] < x_min )
-) changed velocity equation for 'boundary.wall="damping"' :
ver <= 0.1-58 -> ver >= 0.1-59
v[t+1] : v[t] -> -v[t] (when x[t+1] > x_max | x[t+1] < x_min )
o Running 'hydroPSO' >= 0.1-59 with default settings will produce DIFFERENT RESULTS from those obtained with 'hydroPSO' <= 0.1-58, due to the
following changes in default values:
ver <= 0.1-58 -> ver >= 0.1-59
-) npart : 10+2*[sqrt(n)] -> 40
-) Vini.type : 'lhs2007' -> 'random2011'
-) boundary.wall: 'reflecting' -> 'absorbing2011'
-) TVc1.type : 'non-linear' -> 'linear' (no effect, because 'use.TVc1=FALSE' by default)
-) TVc2.type : 'non-linear' -> 'linear' (no effect, because 'use.TVc2=FALSE' by default)
-) TVlambda.type: 'non-linear' -> 'linear' (no effect, because 'use.TVlambda=FALSE' by default)
-) boundary.wall: 'reflecting' in hydroPSO ver <= 0.1-58 is not longer equivalent to 'reflecting' in
hydroPSO ver >= 0.1-58
o 'test_functions': -) new benchmark functions:
'schwefel' : Schwefel function
'ssphere' : shifted Sphere (CEC 2005),
'srosenbrock' : shifted Rosenbrock (CEC 2005),
'srastrigin' : shifted Rastrigin (CEC 2005),
'sgriewank' : shifted Griewank (CEC 2005),
'sackley' : shifted Ackley (CEC 2005),
'sschwefel1_2': shifted Schwefel's Problem 1.2 (CEC 2005)
o 'plot_out' : -) argument 'MinMax' is not required any more
-) argument 'sim' may also be 'integer' (before it had to be 'numeric' != 'integer')
0.1-58 14-Sep-2012
o 'hydroPSO' : -) 'random.update' is now ONLY used when 'best.update="async". In hydroPSO 0.1-57 'random.update' was set to TRUE
by default, independent of the 'best.update="sync" value.
-) argument values are now effectively checked for: 'MinMax', 'Xini.type', 'Vini.type', 'best.update', 'boundary.wall',
'topology', 'IW.type', 'TVc1.type', 'TVc2.type', 'TVlambda.type'.
-) more and better examples
o 'test_functions': -) name of the "rastrigrin" function was changed to its correct name of "rastrigin", and modified in all the examples.
The old (and wrong) name 'rastrigrin' is kept only for backwards compatibility.
-) The definition of the 'schafferF6' function was corrected (changed) from:
0.5 + ( ( sin( sqrt( sum( x^2 ) ) ) )^2 - 0.5) / ( ( 1 + 0.01*sum(x^2) )^2 )
to:
0.5 + ( ( sin( sqrt( sum( x^2 ) ) ) )^2 - 0.5) / ( ( 1 + 0.001*sum(x^2) )^2 )
0.1-57 29-Jun-2012
o 'hydroPSO' : -) added '...' parameter. It is only used when 'fn' is different from "hydromod". This is only done for 'optim' compatibility.
-) fixed small bug related to improper PSO evolution when 'best.update'=="async" (NOT the default option !)
AND (topology!="gbest" | method!="pso")
-) new 'random.update' parameter for the 'control' variable, in order to allow random update of personal/global best
-) default value of the inertia weight 'IW' was changed from (linearly decreasing) IW.w= c(1.2, 0.4) to 'IW.w=1/(2*log(2))'
-) default value for the time-varying c1 was changed from (non-linearly decreasing) 'TVc1.rng= c(2.2, 1.8)' to
'TVc1.rng= c(1.28, 1.05)'. However, by default 'use.TVc1= FALSE' still.
-) default value for the time-varying c2 was changed from (non-linearly increasing) 'TVc1.rng= c(1.8, 2.2)' to
'TVc2.rng= c(1.05, 1.28)'. However, by default 'use.TVc2= FALSE' still.
-) default value for the time-varying lambda was changed from (non-linearly decreasing) 'TVlambda.rng= c(0.9, 0.1)' to
'TVlambda.rng= c(1, 0.25)'. However, by default 'use.TVlambda= FALSE' still.
-) default value for the exponent of the time-varying lambda was changed from 'TVlambda.exp= 1.7' to 'TVlambda.exp= 1'.
However, by default 'use.TVlambda= FALSE' still.
-) source code was tidy up
o 'plot_out' : -) Fixed error that appeared when the 'plot_out' function was called from an R script running directly on the OS console
(not within the R editor), with the following error message:
"Error in plot2(x = sim, y = obs, plot.type = "single", main = paste("Daily", :
could not find function "hasArg"
Calls: plot_results -> plot_out -> ggof -> plot2"
o 'plot_results': -) Same as immediately above (because 'plot_results' internally calls 'plot_out')
0.1-56 14-Jun-2012
o 'hydroPSO' : -) much less memory consumption for large values of 'maxit' and/or 'npart' (thanks to Paul Smith for reporting it !)
The files 'BestParamPerIter.txt', 'PbestPerIter.txt', 'LocalBestPerIter.txt', 'Velocities.txt' are now written at the end of
each iteration, and not at the end of the main algorithm (so the corresponding local variables were removed)
-) the convergence of the algorithm controlled by 'reltol' is now defined by : abs(reltol) <= abs(best.pbest[iter] - best.pbest[iter-1]),
instead of reltol <= [ gbest(iter) / ( gbest(iter-1) +reltol ) ]
-) 'PbestPerIter.txt' output file: now it has an additional first column labelled "Iter", with the iteration number
-) 'LocalBestPartPerIter.txt' output file: now it has an additional first column labelled "Iter", with the iteration number
-) 'BestParamPerIter.txt' output file: now it has an additional first column labelled "Iter", with the iteration number.
The column with the goodness-of-fit measure ('GoF') was changed from the last position to the second one
(just after the new 'Iter' column)
-) minor change: 'gbest.fit.prior' is now initialized in 'gbest.fit' instead of 'gbest.fit + 10*reltol'
o 'plot_results': -) 'drty.out' is now checked for existence before reading the results.
o Specific version numbers were added for the following suggested packages:
hydroGOF(>=0.3-3), hydroTSM(>= 0.3-0), zoo(>=1.7-2), xts(>=0.8-2)
0.1-55 11-May-2012
o 'hydromod' : -) 'sim' and 'obs' are now checked for time attributes when 'gof.Ini' and/or 'gof.Fin' is/are used
(thanks to M. Leh for reporting !)
o 'hydroPSO' : -) fixed bug originated when 'gof.Ini' and/or 'gof.Fin' was/were not given as parameters for .model.FUN.args.
(thanks to M. Leh for reporting !)
This bug originated the following error during the run of the model with the best parameter set:
"Error in as.Date.default(model.FUN.args[["gof.Ini"]]) : do not know how to convert 'model.FUN.args[["gof.Ini"]]' to class "Date" "
o 'plot_results' : the default value for 'ftype' was changed from "dm" to "o", to avoid problems with time series with a resolution
coarser than daily
o 'plot_out' : the default value for 'ftype' was changed from "dm" to "o", to avoid problems with time series with a resolution
coarser than daily
##############################################################
# Previous Releases: see old file 'ChangeLog' for details #
##############################################################
0.1-54 01-Apr-2012
0.1.53 23-Mar-2012
0.1.52 09-Mar-2012
0.1.51 24-Feb-2012
0.1.50 23-Feb-2012
0.1.49 13-Feb-2012
0.1.48 22-Jan-2012
0.1.47 16-Jan-2012
0.1.46 29-Nov-2011
0.1-45 11-Nov-2011
0.1-44 28-Oct-2011
0.1-43 17-Oct-2011
0.1-42 08-Oct-2011
0.1-41 05-Sep-2011
0.1-40 01-Sep-2011
24-Jun-2011
May-2011
Apr-2011
29-Dec-2010
23-Dec-2010
Dec-2010
Nov-2010
2009-Oct2010: hydroPSO hibernation :(
~Jul-2008: hydroPSO beginning...