Something went wrong on our end
-
Brutzman, Don authoredBrutzman, Don authored
RunSimpleServer.java 3.20 KiB
package SimkitOpenDis7Examples.run;
import SimkitOpenDis7Examples.ArrivalProcess;
import SimkitOpenDis7Examples.SimpleServer;
import simkit.Schedule;
import simkit.random.RandomVariate;
import simkit.random.RandomVariateFactory;
import simkit.stat.SimpleStatsTimeVarying;
import simkit.util.SimplePropertyDumper;
/**
* Run a simple server problem and compute statistical measurement of results.
* <h2>Output:</h2><pre>
* ArrivalProcess.1
* interarrivalTimeGenerator = Uniform (0.900, 2.200)
* SimpleServer.2
* serviceTimeGenerator = Gamma (1.700, 1.800)
* totalNumberServers = 2
* Simulation ended at time 100,000.000
*
* There have been 64,475 arrivals
* There have been 64,472 customers served
* Average number in queue 15.9655
* Average utilization 0.9819</pre>
*
* @author abuss@nps.edu
*/
public class RunSimpleServer
{
/** Default constructor */
public RunSimpleServer()
{
// default constructor
}
/**
* Run a simple program and compute statistical measurement of results.
* @param args the command line arguments
*/
public static void main(String args[]) {
String rvName = "Uniform";
double lower = 0.9;
double upper = 2.2;
RandomVariate interarrivalTimeGenerator = RandomVariateFactory.getInstance(rvName, lower, upper);
ArrivalProcess arrival = new ArrivalProcess(interarrivalTimeGenerator);
rvName = "Gamma";
double alpha = 1.7;
double beta = 1.8;
RandomVariate serviceTimeGenerator = RandomVariateFactory.getInstance(rvName, alpha, beta);
int numServ = 2;
SimpleServer server = new SimpleServer(numServ, serviceTimeGenerator);
arrival.addSimEventListener(server);
SimplePropertyDumper simplePropertyDumper = new SimplePropertyDumper();
// server.addPropertyChangeListener(simplePropertyDumper);
// arrival.addPropertyChangeListener(simplePropertyDumper);
SimpleStatsTimeVarying numberInQueueStat = new SimpleStatsTimeVarying("numberInQueue");
SimpleStatsTimeVarying numberAvailableServersStat = new SimpleStatsTimeVarying("numberAvailableServers");
server.addPropertyChangeListener(numberInQueueStat);
server.addPropertyChangeListener(numberAvailableServersStat);
System.out.println(arrival);
System.out.println(server);
// Schedule.setVerbose(true);
// Schedule.setSingleStep(false);
// double stopTime = 6.0;
double stopTime = 100000.0;
Schedule.stopAtTime(stopTime);
Schedule.reset();
numberInQueueStat.reset();
numberAvailableServersStat.reset();
Schedule.startSimulation();
System.out.printf("Simulation ended at time %,.3f%n", Schedule.getSimTime());
System.out.printf("%nThere have been %,d arrivals%n", arrival.getNumberArrivals());
System.out.printf("There have been %,d customers served%n", server.getNumberServed());
System.out.printf("Average number in queue\t%.4f%n", numberInQueueStat.getMean());
System.out.printf("Average utilization\t%.4f%n", 1.0 - numberAvailableServersStat.getMean() / server.getTotalNumberServers());
}
}