de.lmu.ifi.dbs.elki.data.synthetic.bymodel
Class GeneratorMain

java.lang.Object
  extended by de.lmu.ifi.dbs.elki.data.synthetic.bymodel.GeneratorMain

public class GeneratorMain
extends Object

Generate a data set according to a given model. Key idea of this generator is to re-generate points if they are more likely to belong to a different cluster than the one they were generated for. The benefit is that we should end up with a data set that follows closely the model that we specified. The drawbacks are that on one hand, specifications might be unsatisfiable. For this a retry count is kept and an UnableToComplyException is thrown when the maximum number of retries is exceeded. On the other hand, the model might not be exactly as specified. When the generator reports an "Density correction factor estimation" that differs from 1.0 this is an indication that the result is not exact. On the third hand, rejecting points introduces effects where one generator can influence others, so random generator results will not be stable with respect to the addition of new dimensions and similar if there are any rejects involved. So this generator is not entirely optimal for generating data sets for scalability tests on the number of dimensions, although if clusters overlap little enough (so that no rejects happen) the results should be as expected.


Field Summary
private  LinkedList<GeneratorInterface> generators
          List of clusters to generate
private  boolean testAgainstModel
          Controls whether points are tested against the model during generation
 
Constructor Summary
GeneratorMain()
           
 
Method Summary
 void addCluster(GeneratorInterface c)
          Add a cluster to the cluster list.
 void generate()
          Main loop to generate data set.
 MultipleObjectsBundle getBundle()
          Get the objects bundle
 List<GeneratorInterface> getGenerators()
          Access the generators.
 boolean isTestAgainstModel()
          Return value of the testAgainstModel flag
 void setTestAgainstModel(boolean testAgainstModel)
          Set the value of the testAgainstModel flag
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

generators

private LinkedList<GeneratorInterface> generators
List of clusters to generate


testAgainstModel

private boolean testAgainstModel
Controls whether points are tested against the model during generation

Constructor Detail

GeneratorMain

public GeneratorMain()
Method Detail

addCluster

public void addCluster(GeneratorInterface c)
Add a cluster to the cluster list.

Parameters:
c - cluster to add

generate

public void generate()
              throws UnableToComplyException
Main loop to generate data set.

Throws:
UnableToComplyException - when model not satisfiable or no clusters specified.

isTestAgainstModel

public boolean isTestAgainstModel()
Return value of the testAgainstModel flag

Returns:
value of testAgainstModel

setTestAgainstModel

public void setTestAgainstModel(boolean testAgainstModel)
Set the value of the testAgainstModel flag

Parameters:
testAgainstModel - New value

getGenerators

public List<GeneratorInterface> getGenerators()
Access the generators.

Returns:
generators

getBundle

public MultipleObjectsBundle getBundle()
Get the objects bundle

Returns:
Bundle

Release 0.4.0 (2011-09-20_1324)