All pastes #384940 Raw Edit

Someone

public java v1 · immutable
·published 2007-03-07 13:47 UTC
rendered paste body
import desmoj.core.simulator.*;import desmoj.core.dist.*;import desmoj.core.advancedModellingFeatures.*;public class SimulationModel extends Model {    private static final int NUM_CUSTOMER_INIT = 4;  private static int SIM_DURATION = 1000; // 1000 takes ~20sec on a Pentium 1.8Ghz (for customers=4)  private static double SIM_TRACE_PERIOD = 10;  private static double SIM_DEBUG_PERIOD = 0;  private static boolean SHOW_PROGRESS_BAR = false;    private RealDistUniform routingProb;  private RealDistExponential cpuServiceTime;  private RealDistExponential disk1ServiceTime;  private RealDistExponential disk2ServiceTime;    Res cpu;  Res disk1;  Res disk2;  Res infiniteServer;    public SimulationModel(Model owner, String modelName, boolean showInReport, boolean showInTrace) {    super(owner, modelName, showInReport, showInTrace);  }    public String description() {    return "This is the Central Server model description,"+    "in a process oriented version with RES objects that HOLD."+    "This model is a central server model where customers(requests) will arrive and "+    "require the service of a CPU, which in turn requests service at one of."+    "two disks. The customer may then leave the system, or get serviced once "+    "more by the CPU. We use an InfiniteServer with no servicetime to get the "+    "Throughput of the system. Simulation time is in seconds";  }    public double getRoutingProb() {    return routingProb.sample();  }    public double getCPUServiceTime() {    return cpuServiceTime.sample();  }    public double getDisk1ServiceTime() {    return disk1ServiceTime.sample();  }    public double getDisk2ServiceTime() {    return disk2ServiceTime.sample();  }    public void doInitialSchedules() {    for (int i=0; i<NUM_CUSTOMER_INIT; i++) {   // # of customers in system at simulation start      Customer newCustomer = new Customer(this, "Customer", true);      newCustomer.activate(new SimTime(0.0));    }  }    public void init() {    routingProb = new RealDistUniform(this, "RoutingProbability", 0.0, 1.0, true, false);    routingProb.setNonNegative(true);        cpuServiceTime = new RealDistExponential(this,"CPUServiceTimeStream", 0.01, true, false);    cpuServiceTime.setNonNegative(true);        disk1ServiceTime = new RealDistExponential(this,"Disk1ServiceTimeStream", 0.0125, true, false);    disk1ServiceTime.setNonNegative(true);        disk2ServiceTime = new RealDistExponential(this,"Disk2ServiceTimeStream", 0.020, true, false);    disk2ServiceTime.setNonNegative(true);        cpu   = new Res(this, "CPU", 1, true, true);    disk1 = new Res(this, "Disk1", 1, true, true);    disk2 = new Res(this, "Disk2", 1, true, true);    infiniteServer = new Res(this, "InfiniteServer", 1, true, true);  }    public static void main(java.lang.String[] args) {    Experiment exp = new Experiment("centralserver_experiment");    SimulationModel simModel = new SimulationModel(null, "CentralServer Model", true, false);    simModel.connectToExperiment(exp);        exp.setShowProgressBar(SHOW_PROGRESS_BAR);    exp.tracePeriod(new SimTime(0.0),new SimTime(SIM_TRACE_PERIOD) );    exp.debugPeriod(new SimTime(0.0),new SimTime(SIM_DEBUG_PERIOD) );    exp.stop(new SimTime(SIM_DURATION));     exp.start();    exp.report();    exp.finish();  }}