package org.lucci.madhoc.simulation;
import java.sql.Date;
import org.lucci.config.TypedConfiguration;
import sun.security.action.GetLongAction;
public class Simulation implements Configurable
{
private int numberOfThreads = -1;
private String name = new Date(System.currentTimeMillis()).toLocaleString();
private int iteration = 0;
private double resolution = 4;
private double iterationFrequency = -1;
private long startDate;
long iterationCountStartDate = System.currentTimeMillis();
int iterationCounter = 0;
private org.lucci.madhoc.simulation.random.RandomNumberGenerator randomNumberGenerator;
private TypedConfiguration configuration;
public double getResolution()
{
return resolution;
}
public void setResolution(double step)
{
this.resolution = step;
}
public double getIterationFrequency()
{
return iterationFrequency;
}
protected void setIterationFrequency(double f)
{
this.iterationFrequency = f;
}
public int getIteration()
{
return iteration;
}
protected void setIteration(int i)
{
this.iteration = i;
}
public double getSimulatedTime()
{
return getIteration() * getResolution();
}
public double getAcceleration()
{
return iterationFrequency / getResolution();
}
public String getName()
{
return name;
}
public void setName(String string)
{
name = string;
}
public String toString()
{
return getName();
}
public void configure() throws Throwable
{
setName(getConfiguration().getString("simulation_name"));
randomNumberGenerator = new org.lucci.madhoc.simulation.random.RandomNumberGenerator();
randomNumberGenerator.setSimulation(this);
randomNumberGenerator.configure();
setResolution(getConfiguration().getDouble("simulation_resolution"));
this.numberOfThreads = getConfiguration().getInteger("number_of_threads");
}
public org.lucci.madhoc.simulation.random.RandomNumberGenerator getRandomNumberGenerator()
{
return randomNumberGenerator;
}
public TypedConfiguration getConfiguration()
{
return configuration;
}
public void setConfiguration(TypedConfiguration configuration)
{
if (configuration == null)
throw new IllegalArgumentException("null configuration");
this.configuration = configuration;
}
public long getStartDate()
{
return startDate;
}
public void setStartDate(long startDate)
{
this.startDate = startDate;
}
public int getNumberOfThreads()
{
if (this.numberOfThreads > 0)
{
return this.numberOfThreads;
}
else
{
return Runtime.getRuntime().availableProcessors();
}
}
}