FORCES
FORtran lib for Comp. Env. Sys.
|
Shuffled Complex Evolution optimization algorithm. More...
Functions/Subroutines | |
real(dp) function, dimension(size(pini, 1)), public | sce (eval, functn, pini, prange, mymaxn, mymaxit, mykstop, mypcento, mypeps, myseed, myngs, mynpg, mynps, mynspl, mymings, myiniflg, myprint, mymask, myalpha, mybeta, tmp_file, popul_file, popul_file_append, parallel, restart, restart_file, bestf, neval, history) |
Shuffled Complex Evolution (SCE) algorithm for global optimization. | |
subroutine | parstt (x, bound, peps, mask, xnstd, gnrng, ipcnvg) |
subroutine | comp (ngs2, npg, a, af, b, bf) |
subroutine | sort_matrix (rb, ra) |
subroutine | chkcst (x, bl, bu, mask, ibound) |
subroutine | getpnt (idist, bl, bu, std, xi, mask, save_state, x) |
subroutine | cce (s, sf, bl, bu, maskpara, xnstd, icall, maxn, maxit, save_state_gauss, functn, eval, alpha, beta, history, idot ifdef mpi |
Shuffled Complex Evolution optimization algorithm.
Optimization algorithm using Shuffled Complex Evolution strategy. Original version 2.1 of Qingyun Duan (1992) rewritten in Fortran 90.
COPYING
and COPYING.LESSER
provided with this software. The complete GNU license text can also be found at http://www.gnu.org/licenses/.
|
private |
Definition at line 1830 of file mo_sce.F90.
|
private |
Definition at line 1735 of file mo_sce.F90.
|
private |
Definition at line 1647 of file mo_sce.F90.
|
private |
Definition at line 1776 of file mo_sce.F90.
|
private |
Definition at line 1579 of file mo_sce.F90.
real(dp) function, dimension(size(pini, 1)), public mo_sce::sce | ( | procedure(eval_interface), intent(in), pointer | eval, |
procedure(objective_interface), intent(in), pointer | functn, | ||
real(dp), dimension(:), intent(in) | pini, | ||
real(dp), dimension(:, :), intent(in) | prange, | ||
integer(i8), intent(in), optional | mymaxn, | ||
logical, intent(in), optional | mymaxit, | ||
integer(i4), intent(in), optional | mykstop, | ||
real(dp), intent(in), optional | mypcento, | ||
real(dp), intent(in), optional | mypeps, | ||
integer(i8), intent(in), optional | myseed, | ||
integer(i4), intent(in), optional | myngs, | ||
integer(i4), intent(in), optional | mynpg, | ||
integer(i4), intent(in), optional | mynps, | ||
integer(i4), intent(in), optional | mynspl, | ||
integer(i4), intent(in), optional | mymings, | ||
integer(i4), intent(in), optional | myiniflg, | ||
integer(i4), intent(in), optional | myprint, | ||
logical, dimension(size(pini, 1)), intent(in), optional | mymask, | ||
real(dp), intent(in), optional | myalpha, | ||
real(dp), intent(in), optional | mybeta, | ||
character(len = *), intent(in), optional | tmp_file, | ||
character(len = *), intent(in), optional | popul_file, | ||
logical, intent(in), optional | popul_file_append, | ||
logical, intent(in), optional | parallel, | ||
logical, intent(in), optional | restart, | ||
character(len = *), intent(in), optional | restart_file, | ||
real(dp), intent(out), optional | bestf, | ||
integer(i8), intent(out), optional | neval, | ||
real(dp), dimension(:), intent(out), optional, allocatable | history | ||
) |
Shuffled Complex Evolution (SCE) algorithm for global optimization.
Shuffled Complex Evolution method for global optimization – version 2.1
by Qingyun Duan
Department of Hydrology & Water Resources
University of Arizona, Tucson, AZ 85721
(602) 621-9360, email: duan@.nosp@m.hwr..nosp@m.arizo.nosp@m.na.e.nosp@m.du
Written by Qingyun Duan, Oct 1990.
Revised by Qingyun Duan, Aug 1991.
Revised by Qingyun Duan, Apr 1992.
Re-written by Juliane Mai, Feb 2013.
Statement by Qingyun Duan:
This general purpose global optimization program is developed at the Department of Hydrology & Water Resources of the University of Arizona. Further information regarding the SCE-UA method can be obtained from Dr. Q. Duan, Dr. S. Sorooshian or Dr. V.K. Gupta at the address and phone number listed above. We request all users of this program make proper reference to the paper entitled 'Effective and Efficient Global Optimization for Conceptual Rainfall-runoff Models' by Duan, Q., S. Sorooshian, and V.K. Gupta, Water Resources Research, Vol 28(4), pp.1015-1031, 1992.
The function to be minimized is the first argument of DDS and must be defined as
Example
-> see also example in test directory
Literature
[in] | real(dp) :: functn(p) | Function on which to search the optimum |
[in] | real(dp) :: pini(:) | inital value of decision variables |
[in] | real(dp) :: prange(size(pini),2) | Min/max range of decision variables |
[in] | integer(i8), optional :: mymaxn | max no. of trials allowed before optimization is terminated DEFAULT: 1000_i8 |
[in] | logical, optional :: mymaxit | maximization (.true.) or minimization (.false.) of function DEFAULT: false |
[in] | integer(i4), optional :: mykstop | number of shuffling loops in which the criterion value must change by given percentage before optimiz. is terminated DEFAULT: 10_i4 |
[in] | real(dp), optional :: mypcento | percentage by which the criterion value must change in given number of shuffling loops DEFAULT: 0.0001_dp |
[in] | real(dp), optional :: mypeps | optimization is terminated if volume of complex has converged to given percentage of feasible space DEFAULT: 0.001_dp |
[in] | integer(i8), optional :: myseed | initial random seed DEFAULT: get_timeseed |
[in] | integer(i4), optional :: myngs | number of complexes in the initial population DEFAULT: 2_i4 |
[in] | integer(i4), optional :: mynpg | number of points in each complex DEFAULT: 2*n+1 |
[in] | integer(i4), optional :: mynps | number of points in a sub-complex DEFAULT: n+1 |
[in] | integer(i4), optional :: mynspl | number of evolution steps allowed for each complex before complex shuffling DEFAULT: 2*n+1 |
[in] | integer(i4), optional :: mymings | minimum number of complexes required, if the number of complexes is allowed to reduce as the optimization proceeds DEFAULT: ngs = number of complexes in initial population |
[in] | integer(i4), optional :: myiniflg | flag on whether to include the initial point in population 0, not included 1, included (DEFAULT) |
[in] | integer(i4), optional :: myprint | flag for controlling print-out after each shuffling loop 0, print information on the best point of the population 1, print information on every point of the population 2, no printing (DEFAULT) 3, same as 0 but print progress '.' on every function call 4, same as 1 but print progress '.' on every function call |
[in] | logical, optional :: mymask(size(pini)) | parameter included in optimization (true) or discarded (false) DEFAULT: .true. |
[in] | real(dp), optional :: myalpha | parameter for reflection of points in complex DEFAULT: 0.8_dp |
[in] | real(dp), optional :: mybeta | parameter for contraction of points in complex DEFAULT: 0.45_dp |
[in] | character(len=*), optional :: tmp_file | if given: write results after each evolution loop to temporal output file of that name # of headlines: 7 format: '# nloop icall ngs1 bestf worstf ... ... gnrng (bestx(j),j=1,nn)' |
[in] | character(len=*), optional :: popul_file | if given: write whole population to file of that name # of headlines: 1 format: #_evolution_loop, xf(i), (x(i,j),j=1,nn) total number of lines written <= neval <= mymaxn |
[in] | logical, optional :: popul_file_append | if true, append to existing population file (default: false) |
[in] | logical, optional :: parallel | sce runs in parallel (true) or not (false) parallel sce should only be used if model/ objective is not parallel DEFAULT: .false. |
[in] | logical, optional :: restart | if .true.: restart former sce run from restart_file |
[in] | character(len=*), optional :: restart_file | file name for read/write of restart file (default: mo_sce.restart) |
[out] | real(dp), optional :: bestf | the best value of the function. |
[out] | integer(i8), optional :: neval | number of function evaluations needed. |
[out] | real(dp), optional, allocatable :: history(:) | the history of best function values, history(neval)=bestf |
Definition at line 212 of file mo_sce.F90.
References mo_string_utils::compress(), mo_kind::dp, mo_kind::i4, mo_kind::i8, and mo_xor4096::n_save_state.
|
private |
Definition at line 1703 of file mo_sce.F90.