2 Copyright (C) 2008-2023 EDF R&D
4 This file is part of SALOME ADAO module.
6 This library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Lesser General Public
8 License as published by the Free Software Foundation; either
9 version 2.1 of the License, or (at your option) any later version.
11 This library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Lesser General Public License for more details.
16 You should have received a copy of the GNU Lesser General Public
17 License along with this library; if not, write to the Free Software
18 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
22 Author: Jean-Philippe Argaud, jean-philippe.argaud@edf.fr, EDF R&D
24 .. index:: single: ParticleSwarmOptimization
25 .. index:: single: Global optimization
26 .. _section_ref_algorithm_ParticleSwarmOptimization:
28 Calculation algorithm "*ParticleSwarmOptimization*"
29 ---------------------------------------------------
31 .. ------------------------------------ ..
32 .. include:: snippets/Header2Algo01.rst
34 This algorithm realizes an estimation of the state of a system by minimization
35 of a cost function :math:`J` by using an evolutionary strategy of particle
36 swarm. It is a method that does not use the derivatives of the cost function.
37 It is based on the evolution of a population (called a "swarm") of states (each
38 state is called a "particle" or an "insect"). It falls in the same category
40 :ref:`section_ref_algorithm_DerivativeFreeOptimization`, the
41 :ref:`section_ref_algorithm_DifferentialEvolution` or the
42 :ref:`section_ref_algorithm_TabuSearch`.
44 This is an optimization method allowing for global minimum search of a general
45 error function :math:`J` of type :math:`L^1`, :math:`L^2` or
46 :math:`L^{\infty}`, with or without weights, as described in the section for
47 :ref:`section_theory_optimization`. The default error function is the augmented
48 weighted least squares function, classically used in data assimilation.
50 .There exists various variants of this algorithm. The following stable and
51 robust formulations are proposed here:
56 pair: Variant ; CanonicalPSO
59 - "PSO" (Canonical PSO, see [ZambranoBigiarini13]_), canonical algorithm of particle swarm, robust and defining the reference for particle swarm algorithms,
60 - "OGCR" (Simple PSO with no bounds on insects or velocities), simplified algorithm of particle swarm, not recommanded because less robust, but sometimes a lot more efficient.
62 . ------------------------------------ ..
63 .. include:: snippets/Header2Algo02.rst
65 .. include:: snippets/Background.rst
67 .. include:: snippets/BackgroundError.rst
69 .. include:: snippets/Observation.rst
71 .. include:: snippets/ObservationError.rst
73 .. include:: snippets/ObservationOperator.rst
75 .. ------------------------------------ ..
76 .. include:: snippets/Header2Algo03AdOp.rst
78 .. include:: snippets/BoundsWithNone.rst
80 .. include:: snippets/BoxBounds.rst
82 .. include:: snippets/CognitiveAcceleration.rst
84 .. include:: snippets/InertiaWeight.rst
86 .. include:: snippets/InitializationPoint.rst
88 .. include:: snippets/MaximumNumberOfFunctionEvaluations.rst
90 .. include:: snippets/MaximumNumberOfIterations_50.rst
92 .. include:: snippets/NumberOfInsects.rst
94 .. include:: snippets/QualityCriterion.rst
96 .. include:: snippets/SetSeed.rst
98 .. include:: snippets/SocialAcceleration.rst
100 StoreSupplementaryCalculations
101 .. index:: single: StoreSupplementaryCalculations
103 *List of names*. This list indicates the names of the supplementary
104 variables, that can be available during or at the end of the algorithm, if
105 they are initially required by the user. Their avalability involves,
106 potentially, costly calculations or memory consumptions. The default is then
107 a void list, none of these variables being calculated and stored by default
108 (excepted the unconditionnal variables). The possible names are in the
109 following list (the detailed description of each named variable is given in
110 the following part of this specific algorithmic documentation, in the
111 sub-section "*Information and variables available at the end of the
118 "CurrentIterationNumber",
123 "SimulatedObservationAtBackground",
124 "SimulatedObservationAtCurrentState",
125 "SimulatedObservationAtOptimum",
129 ``{"StoreSupplementaryCalculations":["CurrentState", "Residu"]}``
131 .. include:: snippets/VelocityClampingFactor.rst
133 .. ------------------------------------ ..
134 .. include:: snippets/Header2Algo04.rst
136 .. include:: snippets/Analysis.rst
138 .. include:: snippets/CostFunctionJ.rst
140 .. include:: snippets/CostFunctionJb.rst
142 .. include:: snippets/CostFunctionJo.rst
144 .. ------------------------------------ ..
145 .. include:: snippets/Header2Algo05.rst
147 .. include:: snippets/Analysis.rst
149 .. include:: snippets/BMA.rst
151 .. include:: snippets/CostFunctionJ.rst
153 .. include:: snippets/CostFunctionJb.rst
155 .. include:: snippets/CostFunctionJo.rst
157 .. include:: snippets/CurrentIterationNumber.rst
159 .. include:: snippets/CurrentState.rst
161 .. include:: snippets/Innovation.rst
163 .. include:: snippets/OMA.rst
165 .. include:: snippets/OMB.rst
167 .. include:: snippets/SimulatedObservationAtBackground.rst
169 .. include:: snippets/SimulatedObservationAtCurrentState.rst
171 .. include:: snippets/SimulatedObservationAtOptimum.rst
173 .. ------------------------------------ ..
174 .. _section_ref_algorithm_ParticleSwarmOptimization_examples:
176 .. include:: snippets/Header2Algo06.rst
178 - :ref:`section_ref_algorithm_DerivativeFreeOptimization`
179 - :ref:`section_ref_algorithm_DifferentialEvolution`
180 - :ref:`section_ref_algorithm_TabuSearch`
182 .. ------------------------------------ ..
183 .. include:: snippets/Header2Algo07.rst
186 - [ZambranoBigiarini13]_