protected Instances splitCenter(Random random,
Instance center,
double variance,
Instances model) throws Exception {
m_NumSplits++;
AlgVector r = null;
Instances children = new Instances(model, 2);
if (m_DebugVectorsFile.exists() && m_DebugVectorsFile.isFile()) {
Instance nextVector = getNextDebugVectorsInstance(model);
PFD(D_RANDOMVECTOR, "Random Vector from File " + nextVector);
r = new AlgVector(nextVector);
}
else {
// random vector of length = variance
r = new AlgVector(model, random);
}
r.changeLength(Math.pow(variance, 0.5));
PFD(D_RANDOMVECTOR, "random vector *variance "+ r);
// add random vector to center
AlgVector c = new AlgVector(center);
AlgVector c2 = (AlgVector) c.clone();
c = c.add(r);
Instance newCenter = c.getAsInstance(model, random);
children.add(newCenter);
PFD(D_FOLLOWSPLIT, "first child "+ newCenter);
// substract random vector to center
c2 = c2.substract(r);
newCenter = c2.getAsInstance(model, random);
children.add(newCenter);
PFD(D_FOLLOWSPLIT, "second child "+ newCenter);
return children;
}