1math::probopt(n)               Tcl Math Library               math::probopt(n)
2
3
4
5______________________________________________________________________________
6

NAME

8       math::probopt - Probabilistic optimisation methods
9

SYNOPSIS

11       package require Tcl  8.6
12
13       package require TclOO
14
15       package require math::probopt  1
16
17       ::math::probopt::pso function bounds args
18
19       ::math::probopt::sce function bounds args
20
21       ::math::probopt::diffev function bounds args
22
23       ::math::probopt::lipoMax function bounds args
24
25       ::math::probopt::adaLipoMax function bounds args
26
27______________________________________________________________________________
28

DESCRIPTION

30       The  purpose of the math::probopt package is to provide various optimi‐
31       sation algorithms that are based on probabilistic techniques.  The  re‐
32       sults  of these algorithms may therefore vary from one run to the next.
33       The algorithms are all well-known and  well  described  and  proponents
34       generally claim they are efficient and reliable.
35
36       As most of these algorithms have one or more tunable parameters or even
37       variations, the interface to each accepts options to set these  parame‐
38       ters  or  the  select  the  variation. These take the form of key-value
39       pairs, for instance, -iterations 100.
40
41       This manual does not offer any recommendations with  regards  to  these
42       algorithms,  nor  does it provide much in the way of guidelines for the
43       parameters. For this we refer to online articles on the  algorithms  in
44       question.
45
46       A few notes, however:
47
48       •      With  the exception of LIPO, the algorithms are capable of deal‐
49              ing with irregular (non-smooth)  and  even  discontinuous  func‐
50              tions.
51
52       •      The  results  depend on the random number seeding and are likely
53              not to be very  accurate,  especially  if  the  function  varies
54              slowly in the vicinty of the optimum. They do give a good start‐
55              ing point for a deterministic algorithm.
56
57       The collection consists of the following algorithms:
58
59       •      PSO - particle swarm optimisation
60
61       •      SCE - shuffled complexes evolution
62
63       •      DE - differential evolution
64
65       •      LIPO - Lipschitz optimisation
66
67       The various procedures have a uniform interface:
68
69
70                 set result [::math::probopt::algorithm function bounds args]
71
72       The arguments have the following meaning:
73
74       •      The argument function is the name of the procedure  that  evalu‐
75              ates the function.  Its interface is:
76
77
78                  set value [function coords]
79
80
81              where  coords  is a list of coordinates at which to evaluate the
82              function. It is supposed to return the function value.
83
84       •      The argument bounds is a list of pairs of  minimum  and  maximum
85              for each coordinate.  This list implicitly determines the dimen‐
86              sion of the coordinate space in  which  the  optimum  is  to  be
87              sought,  for  instance  for a function like x**2 + (y-1)**4, you
88              may specify the bounds as {{-1 1} {-1 1}}, that  is,  two  pairs
89              for the two coordinates.
90
91       •      The  rest  (args)  consists  of  zero or more key-value pairs to
92              specify the options. Which options are supported by which  algo‐
93              rithm, is documented below.
94
95       The  result of the various optimisation procedures is a dictionary con‐
96       taining at least the following elements:
97
98optimum-coordinates is a list containing the coordinates of  the
99              optimum that was found.
100
101optimum-value is the function value at those coordinates.
102
103evaluations is the number of function evaluations.
104
105best-values  is  a  list  of successive best values, obtained as
106              part of the iterations.
107

DETAILS ON THE ALGORITHMS

109       The algorithms in the package are the following:
110
111       ::math::probopt::pso function bounds args
112              The "particle swarm optimisation" algorithm uses the  idea  that
113              the  candidate optimum points should swarm around the best point
114              found so far, with variations to allow for improvements.
115
116              It recognises the following options:
117
118-swarmsize number: Number of particles to  consider  (de‐
119                     fault: 50)
120
121-vweight     value:  Weight  for  the  current "velocity"
122                     (0-1, default: 0.5)
123
124-pweight    value: Weight for the  individual  particle's
125                     best position (0-1, default: 0.3)
126
127-gweight    value: Weight for the "best" overall position
128                     as per particle (0-1, default: 0.3)
129
130-type       local/global: Type of optimisation
131
132-neighbours number: Size of the  neighbourhood  (default:
133                     5, used if "local")
134
135-iterations number: Maximum number of iterations
136
137-tolerance  value: Absolute minimal improvement for mini‐
138                     mum value
139
140       ::math::probopt::sce function bounds args
141              The "shuffled complex evolution" algorithm is  an  extension  of
142              the Nelder-Mead algorithm that uses multiple complexes and reor‐
143              ganises these complexes to find the "global" optimum.
144
145              It recognises the following options:
146
147-complexes           number: Number of particles to  con‐
148                     sider (default: 2)
149
150-mincomplexes         number: Minimum number of complexes
151                     (default: 2; not currently used)
152
153-newpoints           number: Number of new points  to  be
154                     generated (default: 1)
155
156-shuffle              number:  Number of iterations after
157                     which to reshuffle the complexes (if set to  0,  the  de‐
158                     fault, a number will be calculated from the number of di‐
159                     mensions)
160
161-pointspercomplex    number: Number of points per complex
162                     (if  set  to  0, the default, a number will be calculated
163                     from the number of dimensions)
164
165-pointspersubcomplex number: Number of points per subcom‐
166                     plex  (used to select the best points in each complex; if
167                     set to 0, the default, a number will be  calculated  from
168                     the number of dimensions)
169
170-iterations          number: Maximum number of iterations
171                     (default: 100)
172
173-maxevaluations      number: Maximum number  of  function
174                     evaluations (when this number is reached the iteration is
175                     broken off. Default: 1000 million)
176
177-abstolerance        value: Absolute minimal  improvement
178                     for minimum value (default: 0.0)
179
180-reltolerance         value: Relative minimal improvement
181                     for minimum value (default: 0.001)
182
183       ::math::probopt::diffev function bounds args
184              The "differential evolution" algorithm uses a number of  initial
185              points  that are then updated using randomly selected points. It
186              is more or less akin to genetic algorithms. It is controlled  by
187              two  parameters,  factor  and lambda, where the first determines
188              the update via random points and the second the update with  the
189              best point found sofar.
190
191              It recognises the following options:
192
193-iterations          number: Maximum number of iterations
194                     (default: 100)
195
196-number              number: Number of point to work with
197                     (if set to 0, the default, it is calculated from the num‐
198                     ber of dimensions)
199
200-factor              value: Weight of  randomly  selected
201                     points in the updating (0-1, default: 0.6)
202
203-lambda               value:  Weight  of  the  best point
204                     found so far in the updating (0-1, default: 0.0)
205
206-crossover           value: Fraction of new points to  be
207                     considered for replacing the old ones (0-1, default: 0.5)
208
209-maxevaluations       number:  Maximum number of function
210                     evaluations (when this number is reached the iteration is
211                     broken off. Default: 1000 million)
212
213-abstolerance         value: Absolute minimal improvement
214                     for minimum value (default: 0.0)
215
216-reltolerance        value: Relative minimal  improvement
217                     for minimum value (default: 0.001)
218
219       ::math::probopt::lipoMax function bounds args
220              The  "Lipschitz  optimisation"  algorithm  uses  the "Lipschitz"
221              property of the given function to find a maximum  in  the  given
222              bounding  box.  There  are two variants, lipoMax assumes a fixed
223              estimate for the Lipschitz parameter.
224
225              It recognises the following options:
226
227-iterations          number: Number of iterations (equals
228                     the actual number of function evaluations, default: 100)
229
230-lipschitz           value: Estimate of the Lipschitz pa‐
231                     rameter (default: 10.0)
232
233       ::math::probopt::adaLipoMax function bounds args
234              The "adaptive Lipschitz optimisation" algorithm uses  the  "Lip‐
235              schitz"  property of the given function to find a maximum in the
236              given bounding box.  The  adaptive  variant  actually  uses  two
237              phases  to find a suitable estimate for the Lipschitz parameter.
238              This is controlled by the "Bernoulli" parameter.
239
240              When you specify a large number of iterations, the algorithm may
241              take  a very long time to complete as it is trying to improve on
242              the Lipschitz parameter and the chances of hitting a better  es‐
243              timate diminish fast.
244
245              It recognises the following options:
246
247-iterations          number: Number of iterations (equals
248                     the actual number of function evaluations, default: 100)
249
250-bernoulli           value: Parameter  for  random  deci‐
251                     sions (exploration versus exploitation, default: 0.1)
252

REFERENCES

254       The  various  algorithms  have  been described in on-line publications.
255       Here are a few:
256
257PSO: Maurice Clerc, Standard Particle Swarm Optimisation  (2012)
258              https://hal.archives-ouvertes.fr/file/index/docid/764996/file
259              name/SPSO_descriptions.pdf
260
261              Alternatively:  https://en.wikipedia.org/wiki/Particle_swarm_op
262              timization
263
264SCE:  Qingyuan Duan, Soroosh Sorooshian, Vijai K. Gupta, Optimal
265              use offo the SCE-UA global optimization method  for  calibrating
266              watershed models (1994), Journal of Hydrology 158, pp 265-284
267
268              https://www.researchgate.net/publication/223408756_Opti
269              mal_Use_of_the_SCE-UA_Global_Optimization_Method_for_Calibrat‐
270              ing_Watershed_Models
271
272DE:  Rainer  Storn and Kenneth Price, Differential Evolution - A
273              simple and efficient adaptivescheme for globaloptimization  over
274              continuous spaces (1996)
275
276              http://www1.icsi.berkeley.edu/~storn/TR-95-012.pdf
277
278LIPO:  Cedric  Malherbe and Nicolas Vayatis, Global optimization
279              of Lipschitz functions, (june 2017)
280
281              https://arxiv.org/pdf/1703.02628.pdf
282

KEYWORDS

284       mathematics, optimisation, probabilistic calculations
285

CATEGORY

287       Mathematics
288
289
290
291tcllib                                 1                      math::probopt(n)
Impressum