VTK  9.2.6
vtkAmoebaMinimizer.h
Go to the documentation of this file.
1/*=========================================================================
2
3 Program: Visualization Toolkit
4 Module: vtkAmoebaMinimizer.h
5
6 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7 All rights reserved.
8 See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9
10 This software is distributed WITHOUT ANY WARRANTY; without even
11 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12 PURPOSE. See the above copyright notice for more information.
13
14=========================================================================*/
32#ifndef vtkAmoebaMinimizer_h
33#define vtkAmoebaMinimizer_h
34
35#include "vtkCommonMathModule.h" // For export macro
36#include "vtkObject.h"
37
38class VTKCOMMONMATH_EXPORT vtkAmoebaMinimizer : public vtkObject
39{
40public:
43 void PrintSelf(ostream& os, vtkIndent indent) override;
44
54 void SetFunction(void (*f)(void*), void* arg);
55
59 void SetFunctionArgDelete(void (*f)(void*));
60
62
71 void SetParameterValue(const char* name, double value);
72 void SetParameterValue(int i, double value);
74
76
82 void SetParameterScale(const char* name, double scale);
83 double GetParameterScale(const char* name);
84 void SetParameterScale(int i, double scale);
85 double GetParameterScale(int i) { return this->ParameterScales[i]; }
87
89
95 double GetParameterValue(const char* name);
96 double GetParameterValue(int i) { return this->ParameterValues[i]; }
98
103 const char* GetParameterName(int i) { return this->ParameterNames[i]; }
104
108 int GetNumberOfParameters() { return this->NumberOfParameters; }
109
115
120 virtual void Minimize();
121
126 virtual int Iterate();
127
129
132 vtkSetMacro(FunctionValue, double);
133 double GetFunctionValue() { return this->FunctionValue; }
135
137
142 vtkSetClampMacro(ContractionRatio, double, 0.5, 1.0);
143 vtkGetMacro(ContractionRatio, double);
145
147
151 vtkSetClampMacro(ExpansionRatio, double, 1.0, 2.0);
152 vtkGetMacro(ExpansionRatio, double);
154
156
159 vtkSetMacro(Tolerance, double);
160 vtkGetMacro(Tolerance, double);
162
164
167 vtkSetMacro(ParameterTolerance, double);
168 vtkGetMacro(ParameterTolerance, double);
170
172
175 vtkSetMacro(MaxIterations, int);
176 vtkGetMacro(MaxIterations, int);
178
180
184 vtkGetMacro(Iterations, int);
186
188
191 vtkGetMacro(FunctionEvaluations, int);
193
199
200protected:
203
204 void (*Function)(void*);
205 void (*FunctionArgDelete)(void*);
207
213
216
217 double Tolerance;
222
223private:
224 // specific to amoeba simplex minimization
225
226 double** AmoebaVertices;
227 double* AmoebaValues;
228 double* AmoebaSum;
229 double AmoebaSize;
230 double AmoebaHighValue;
231 int AmoebaNStepsNoImprovement;
232
233 void InitializeAmoeba();
234 void GetAmoebaParameterValues();
235 void TerminateAmoeba();
236 double TryAmoeba(double sum[], int high, double fac);
237 int PerformAmoeba();
238 int CheckParameterTolerance();
239
240 vtkAmoebaMinimizer(const vtkAmoebaMinimizer&) = delete;
241 void operator=(const vtkAmoebaMinimizer&) = delete;
242};
243
244#endif
nonlinear optimization with a simplex
double GetParameterScale(const char *name)
Set the scale to use when modifying a parameter, i.e.
double GetParameterValue(int i)
Get the value of a parameter at the current stage of the minimization.
double GetParameterScale(int i)
Set the scale to use when modifying a parameter, i.e.
void SetFunctionArgDelete(void(*f)(void *))
Set a function to call when a void* argument is being discarded.
const char * GetParameterName(int i)
For completeness, an unchecked method to get the name for particular parameter (the result will be nu...
static vtkAmoebaMinimizer * New()
void SetParameterScale(const char *name, double scale)
Set the scale to use when modifying a parameter, i.e.
virtual void Minimize()
Iterate until the minimum is found to within the specified tolerance, or until the MaxIterations has ...
virtual int Iterate()
Perform one iteration of minimization.
void SetParameterValue(int i, double value)
Set the initial value for the specified parameter.
void SetParameterValue(const char *name, double value)
Set the initial value for the specified parameter.
int GetNumberOfParameters()
Get the number of parameters that have been set.
void EvaluateFunction()
Evaluate the function.
void Initialize()
Initialize the minimizer.
double GetParameterValue(const char *name)
Get the value of a parameter at the current stage of the minimization.
void SetFunction(void(*f)(void *), void *arg)
Specify the function to be minimized.
double GetFunctionValue()
Get the function value resulting from the minimization.
void SetParameterScale(int i, double scale)
Set the scale to use when modifying a parameter, i.e.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
~vtkAmoebaMinimizer() override
a simple class to control print indentation
Definition vtkIndent.h:40
abstract base class for most VTK objects
Definition vtkObject.h:63