5
#ifndef OPENCV_ML_INL_HPP
6
#define OPENCV_ML_INL_HPP
8
namespace
cv
{
namespace
ml {
11
template<
class
SimulatedAnnealingSolverSystem>
12
int
simulatedAnnealingSolver(SimulatedAnnealingSolverSystem& solverSystem,
13
double
initialTemperature,
double
finalTemperature,
double
coolingRatio,
14
size_t
iterationsPerStep,
15
CV_OUT
double* lastTemperature,
20
CV_Assert(initialTemperature > finalTemperature);
23
double
Ti = initialTemperature;
24
double
previousEnergy = solverSystem.energy();
26
while
(Ti > finalTemperature)
28
for
(
size_t
i = 0; i < iterationsPerStep; i++)
30
solverSystem.changeState();
31
double
newEnergy = solverSystem.energy();
32
if
(newEnergy < previousEnergy)
34
previousEnergy = newEnergy;
39
double
r = rngEnergy.
uniform(0.0, 1.0);
40
if
(r <
std::exp(-(newEnergy - previousEnergy) / Ti))
42
previousEnergy = newEnergy;
47
solverSystem.reverseState();
54
*lastTemperature = Ti;
Random Number Generator
Definition:
core.hpp:2783
int uniform(int a, int b)
returns uniformly distributed integer random number from [a,b) range
CV_EXPORTS_W void exp(InputArray src, OutputArray dst)
Calculates the exponent of every array element.
#define CV_Assert(expr)
Checks a condition at runtime and throws exception if it fails
Definition:
base.hpp:342
"black box" representation of the file storage associated with a file on disk.
Definition:
aruco.hpp:75