mirror of
https://github.com/opencv/opencv.git
synced 2025-08-05 22:19:14 +08:00
Move SimulatedAnnealingSolver::Impl in cpp file. Fix some typos.
This commit is contained in:
parent
c5ed507737
commit
0a439570a0
@ -1920,7 +1920,7 @@ public:
|
||||
class CV_EXPORTS SimulatedAnnealingSolver : public Algorithm
|
||||
{
|
||||
public:
|
||||
SimulatedAnnealingSolver() { init(); };
|
||||
SimulatedAnnealingSolver() { init(); }
|
||||
~SimulatedAnnealingSolver();
|
||||
/** Give energy value for a state of system.*/
|
||||
virtual double energy() =0;
|
||||
@ -1947,31 +1947,14 @@ public:
|
||||
* @param ite number of iteration per temperature step ite \> 0
|
||||
*/
|
||||
void setIterPerStep(int ite);
|
||||
struct Impl;
|
||||
protected :
|
||||
|
||||
protected:
|
||||
void init();
|
||||
|
||||
private:
|
||||
struct Impl;
|
||||
Impl* impl;
|
||||
};
|
||||
struct SimulatedAnnealingSolver::Impl
|
||||
{
|
||||
RNG rEnergy;
|
||||
double coolingRatio;
|
||||
double initialT;
|
||||
double finalT;
|
||||
int iterPerStep;
|
||||
Impl()
|
||||
{
|
||||
initialT = 2;
|
||||
finalT = 0.1;
|
||||
coolingRatio = 0.95;
|
||||
iterPerStep = 100;
|
||||
refcount = 1;
|
||||
}
|
||||
int refcount;
|
||||
~Impl() { refcount--;CV_Assert(refcount==0); }
|
||||
};
|
||||
|
||||
|
||||
//! @} ml
|
||||
|
||||
}
|
||||
|
@ -42,6 +42,24 @@
|
||||
|
||||
namespace cv { namespace ml {
|
||||
|
||||
struct SimulatedAnnealingSolver::Impl
|
||||
{
|
||||
RNG rEnergy;
|
||||
double coolingRatio;
|
||||
double initialT;
|
||||
double finalT;
|
||||
int iterPerStep;
|
||||
Impl()
|
||||
{
|
||||
initialT = 2;
|
||||
finalT = 0.1;
|
||||
coolingRatio = 0.95;
|
||||
iterPerStep = 100;
|
||||
refcount = 1;
|
||||
}
|
||||
int refcount;
|
||||
~Impl() { refcount--;CV_Assert(refcount==0); }
|
||||
};
|
||||
|
||||
struct AnnParams
|
||||
{
|
||||
@ -135,24 +153,24 @@ void SimulatedAnnealingSolver::setInitialTemperature(double x)
|
||||
{
|
||||
CV_Assert(x>0);
|
||||
impl->initialT = x;
|
||||
};
|
||||
}
|
||||
|
||||
void SimulatedAnnealingSolver::setFinalTemperature(double x)
|
||||
{
|
||||
CV_Assert(x>0);
|
||||
impl->finalT = x;
|
||||
};
|
||||
}
|
||||
|
||||
double SimulatedAnnealingSolver::getFinalTemperature()
|
||||
{
|
||||
return impl->finalT;
|
||||
};
|
||||
}
|
||||
|
||||
void SimulatedAnnealingSolver::setCoolingRatio(double x)
|
||||
{
|
||||
CV_Assert(x>0 && x<1);
|
||||
impl->coolingRatio = x;
|
||||
};
|
||||
}
|
||||
|
||||
class SimulatedAnnealingANN_MLP : public ml::SimulatedAnnealingSolver
|
||||
{
|
||||
@ -169,19 +187,23 @@ public:
|
||||
SimulatedAnnealingANN_MLP(ml::ANN_MLP *x, Ptr<ml::TrainData> d) : nn(x), data(d)
|
||||
{
|
||||
initVarMap();
|
||||
};
|
||||
}
|
||||
|
||||
void changedState()
|
||||
{
|
||||
index = rIndex.uniform(0, nbVariables);
|
||||
double dv = rVar.uniform(-1.0, 1.0);
|
||||
varTmp = *adrVariables[index];
|
||||
*adrVariables[index] = dv;
|
||||
};
|
||||
}
|
||||
|
||||
void reverseChangedState()
|
||||
{
|
||||
*adrVariables[index] = varTmp;
|
||||
};
|
||||
}
|
||||
|
||||
double energy() { return nn->calcError(data, false, noArray()); }
|
||||
|
||||
protected:
|
||||
void initVarMap()
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user