Something went wrong on our end
-
Brutzman, Don authoredBrutzman, Don authored
ArrivalProcess.java 2.64 KiB
package SimkitOpenDis7Examples;
import simkit.SimEntityBase;
import simkit.random.RandomVariate;
/**
* One of the simplest non-trivial Event Graph models. A series of Arrival
* events is scheduled based on an inter arrival time random variate. The state
* variable, simply counts the number of these arrivals.
*
* @author abuss@nps.edu
*/
public class ArrivalProcess extends SimEntityBase {
/**
* Generates interarrival times
*/
private RandomVariate interarrivalTimeGenerator;
/**
* State variable that counts the number of Arrival events
*/
protected int numberArrivals;
/**
* Instantiate an ArrivalProcess with the given interarrivalTimeGenerator
*
* @param interarrivalTimeGenerator Given RandomVariate for interarrival
* times
*/
public ArrivalProcess(RandomVariate interarrivalTimeGenerator) {
this.setInterarrivalTimeGenerator(interarrivalTimeGenerator);
}
/**
* If the ArrivalProcess is instantiated using the zero-argument
* constructor, be sure the set the interarrivalTimeGenerator with an
* explicit call to its setter method.
*/
public ArrivalProcess() {
}
/**
* Initialize numberArrivals to 0
*/
public void reset() {
super.reset();
numberArrivals = 0;
}
/**
* Schedule the first Arrival event with delay generated by
* interarrivalTimeGenerator
*/
public void doRun() {
firePropertyChange("numberArrivals", getNumberArrivals());
waitDelay("Arrival", interarrivalTimeGenerator);
}
/**
* Increment numberArrivals<br>
* Schedule next Arrival event with delay generated by
* interarrivalTimeGenerator
*/
public void doArrival() {
int oldNumberArrivals = getNumberArrivals();
numberArrivals += 1;
firePropertyChange("numberArrivals", oldNumberArrivals, getNumberArrivals());
waitDelay("Arrival", interarrivalTimeGenerator);
}
/**
* accessor method to get a state variable
* @return the interarrivalTimeGenerator
*/
public RandomVariate getInterarrivalTimeGenerator() {
return interarrivalTimeGenerator;
}
/**
* accessor method to set a state variable
* @param interarrivalTimeGenerator the interarrivalTimeGenerator to set
*/
public void setInterarrivalTimeGenerator(RandomVariate interarrivalTimeGenerator) {
this.interarrivalTimeGenerator = interarrivalTimeGenerator;
}
/**
* accessor method to get a state variable
* @return the numberArrivals
*/
public int getNumberArrivals() {
return numberArrivals;
}
}