public class NHPoissonProcessVariate extends BasicSimEntity implements RandomVariate
This implementation uses the inverse-integral transform. The user must supply a Method that is the inverse of the expectation function (Λ). See Law and Kelton: Simulation Modeling and Analysis 2nd Edition, pp 509-510 or 3rd edition pp486-487.
Modifier and Type | Field and Description |
---|---|
private java.lang.Object[] |
arg
Holds the argument for the inverse expectation function.
|
private java.lang.reflect.Method |
inverseIntegratedRate
A Method to provide the inverse of the expectation function.
|
protected double |
lastGeneratedTime
The last actual arrival time.
|
protected double |
lastUnitRatePoisson
The last unit rate arrival time.
|
private java.lang.Object |
rateInvoker
The instance of an Object that contains the inverse expectation function.
|
private RandomNumber |
rng
The instance of the supporting RandomNumber.
|
protected double |
startTime
The time to start the process.
|
eventList, property
DEFAULT_ENTITY_NAME, DEFAULT_EVENT_NAME, DEFAULT_PRIORITY, EVENT_METHOD_PREFIX, NL
Constructor and Description |
---|
NHPoissonProcessVariate()
Creates new NHPoissonProcessVariate, the parameters must be set prior to use.
|
Modifier and Type | Method and Description |
---|---|
double |
generate()
Generate a random variate having this class's distribution.
|
java.lang.reflect.Method |
getInverseIntegratedRate() |
double |
getLastGeneratedTime() |
double |
getLastUnitRatePoisson() |
java.lang.Object[] |
getParameters()
Returns a 3 element array containing the Method for the inverse function,
the Object in which the inverse function exists, and the start time.
|
RandomNumber |
getRandomNumber()
Gets the instance of the underlying RandomNumber.
|
java.lang.Object |
getRateInvoker() |
double |
getStartTime() |
void |
handleSimEvent(SimEvent event)
Typically an Event is handled (as opposed to processed, as in SimEventListener)
by actually executing a method.
|
void |
processSimEvent(SimEvent event)
Process the given SimEvent.
|
void |
reset()
Resets this BasicSimEntity by canceling all of its pending SimEvents.
|
void |
setInverseIntegratedRate(java.lang.reflect.Method inverseIntegratedRate) |
void |
setParameters(java.lang.Object... params)
Sets the Lambda-inverse Method and the starting time.
|
void |
setRandomNumber(RandomNumber rng)
Sets the supporting RandomNumber object
|
void |
setRateInvoker(java.lang.Object rateInvoker) |
java.lang.String |
stateString() |
java.lang.String |
toString()
Returns a String containing the name of this variate, the name of the
inverse Method, information about the Object on which the inverse Method is
invoked, and the start time.
|
addPropertyChangeListener, addPropertyChangeListener, attemptSchedule, clearAddedProperty, compareTo, fireIndexedPropertyChange, fireIndexedPropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getAddedProperties, getEventList, getEventListID, getName, getPriority, getPropertiesString, getProperty, getProperty, getPropertyChangeListeners, getSerial, interrupt, interrupt, interruptAll, interruptAll, interruptAll, interruptAllWithArgs, interruptAllWithArgs, isClearAddedPropertiesOnReset, isJustDefinedProperties, isPersistant, isReRunnable, isVerbose, parametersMatch, removePropertyChangeListener, removePropertyChangeListener, resetNextSerial, setClearAddedPropertiesOnReset, setEventList, setEventListID, setJustDefinedProperties, setName, setPersistant, setPriority, setProperty, setVerbose, waitDelay, waitDelay, waitDelay, waitDelay
addSimEventListener, getSimEventListeners, notifyListeners, removeSimEventListener
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
addSimEventListener, getSimEventListeners, notifyListeners, removeSimEventListener
protected double startTime
private RandomNumber rng
private java.lang.reflect.Method inverseIntegratedRate
private java.lang.Object rateInvoker
protected double lastUnitRatePoisson
protected double lastGeneratedTime
private java.lang.Object[] arg
public NHPoissonProcessVariate()
public void reset()
BasicSimEntity
reset
in interface ReRunnable
reset
in class BasicSimEntity
public double generate()
generate
in interface RandomVariate
public java.lang.Object[] getParameters()
getParameters
in interface RandomVariate
public RandomNumber getRandomNumber()
getRandomNumber
in interface RandomVariate
public void setParameters(java.lang.Object... params)
setParameters
in interface RandomVariate
params
- A 3 element array containing the Method to evaluate the
inverse expectation function (Lambda inverse), the Object in which
Lambda inverse resides, and the start time.java.lang.IllegalArgumentException
- If the array does not contain exactly
3 elements.public void setRandomNumber(RandomNumber rng)
setRandomNumber
in interface RandomVariate
rng
- The RandomNumber instance supporting the generating algorithmpublic void setInverseIntegratedRate(java.lang.reflect.Method inverseIntegratedRate)
inverseIntegratedRate
- the Λ-1 Method.public java.lang.reflect.Method getInverseIntegratedRate()
public void setRateInvoker(java.lang.Object rateInvoker)
rateInvoker
- the instance of the Object on which to invoke
the Λ-1 Method.public java.lang.Object getRateInvoker()
public double getStartTime()
public java.lang.String toString()
toString
in class BasicSimEntity
public java.lang.String stateString()
public void handleSimEvent(SimEvent event)
SimEventScheduler
handleSimEvent
in interface SimEventScheduler
handleSimEvent
in class BasicSimEntity
event
- The SimEvent to be handled.public void processSimEvent(SimEvent event)
BasicSimEntity
processSimEvent
in interface SimEventListener
processSimEvent
in class BasicSimEntity
event
- The SimEvent to process.public double getLastUnitRatePoisson()
public double getLastGeneratedTime()