Simulation Software and Simulation in Java. Simulation languages & software Simulation Model...

21
Simulation Software and Simulation in Java
  • date post

    21-Dec-2015
  • Category

    Documents

  • view

    253
  • download

    6

Transcript of Simulation Software and Simulation in Java. Simulation languages & software Simulation Model...

Page 1: Simulation Software and Simulation in Java. Simulation languages & software Simulation Model Development General Purpose Languages Simulation Programming.

Simulation Software andSimulation in Java

Page 2: Simulation Software and Simulation in Java. Simulation languages & software Simulation Model Development General Purpose Languages Simulation Programming.

Simulation languages & software

Simulation Model Development

General Purpose Languages

Simulation Programming Languages

C,C++, Fortran,

Java

Examples:

SIMAN, GPSS, SLAM

Examples:

Simulation Environments

Examples:

ARENA ,AUTOMOD

Page 3: Simulation Software and Simulation in Java. Simulation languages & software Simulation Model Development General Purpose Languages Simulation Programming.

Simulation languages & software

• General Features– Orientation (general vs. manufacturing)

– Modeling approaches (event-scheduling based, activity-scanning based, process-interaction based)

– Input mode (batch mode, interactive mode, etc)

– On-line help

– Debugger

– Type of simulation (discrete vs. continuous)

– Integrated data-base

Page 4: Simulation Software and Simulation in Java. Simulation languages & software Simulation Model Development General Purpose Languages Simulation Programming.

Simulation languages & software

• Statistical capability– Number of random number generators

– Standard distribution functions

– Empirical distribution functions

– User defined random number streams

– Warm-up period, steady state analysis

– Multiple replications, batching

Page 5: Simulation Software and Simulation in Java. Simulation languages & software Simulation Model Development General Purpose Languages Simulation Programming.

Simulation languages & software

• Output – Standard reports

– Intermediate reports

– Quality of graphics

• Material handling– Conveyors

– Forklifts

– AGVs, robots

– AS/RS

Page 6: Simulation Software and Simulation in Java. Simulation languages & software Simulation Model Development General Purpose Languages Simulation Programming.

Simulation languages & software

• Animation – 2 or 3 dimensional

– Multiple screen layout

– Zoom

– Speed up/down

– Playback

– Elements (programming, graphics, menu, etc)

Page 7: Simulation Software and Simulation in Java. Simulation languages & software Simulation Model Development General Purpose Languages Simulation Programming.

Simulation languages & software

• Customer support– Training

– Free technical support

– Documentation (manuals, etc)

Page 8: Simulation Software and Simulation in Java. Simulation languages & software Simulation Model Development General Purpose Languages Simulation Programming.

Selection of Simulation Software

1. Do not focus on a single issue, such as ease of use. Consider the accuracy and level of detail obtainable, ease of learning, vendor support, and suitability to your applications

2. Execution speed is important. Speed affects development time.

3. Beware of the advertising claims and demonstrations.

4. Ask the vendor to solve a small version of your problem

Page 9: Simulation Software and Simulation in Java. Simulation languages & software Simulation Model Development General Purpose Languages Simulation Programming.

Selection of Simulation Software

5. Beware of “checklists” with “yes” and “no” as entries. Implementation and capability are what is important

6. Capability to link it with code written in general-purpose languages is good, but you should not be required to do it for basic modeling.

7. Although it is nice to be able to build the models with a GUI without actually writing to code, the software should give you the capability to write code when you need something that is not built-in.

Page 10: Simulation Software and Simulation in Java. Simulation languages & software Simulation Model Development General Purpose Languages Simulation Programming.

Overall Structure of an Event-Scheduling Simulation Program

Page 11: Simulation Software and Simulation in Java. Simulation languages & software Simulation Model Development General Purpose Languages Simulation Programming.

Overall Structure of Java Simulation of a Single-Server Queue

Page 12: Simulation Software and Simulation in Java. Simulation languages & software Simulation Model Development General Purpose Languages Simulation Programming.

Java Main Programclass Sim {

// Class Sim variablespublic static double Clock, MeanInterArrivalTime, MeanServiceTime, SIGMA,

LastEventTime, TotalBusy, MaxQueueLength, SumResponseTime;public static long NumberOfCustomers, QueueLength, NumberInService, TotalCustomers, NumberOfDepartures, LongService;

public final static int arrival = 1;public final static int departure = 2;

public static EventList FutureEventList;public static Queue Customers;public static Random stream;

Page 13: Simulation Software and Simulation in Java. Simulation languages & software Simulation Model Development General Purpose Languages Simulation Programming.

Java Main Program

public static void main(String argv[]) {

MeanInterArrivalTime = 4.5; MeanServiceTime = 3.2; SIGMA = 0.6; TotalCustomers = 1000; long seed = 1234567;

stream = new Random(seed); // initialize rng stream FutureEventList = new EventList(); Customers = new Queue(); Initialization();

Page 14: Simulation Software and Simulation in Java. Simulation languages & software Simulation Model Development General Purpose Languages Simulation Programming.

Java Main Program

// Loop until first "TotalCustomers" have departed while(NumberOfDepartures < TotalCustomers ) { Event evt = (Event)FutureEventList.getMin(); // get

imminent event FutureEventList.dequeue(); // be rid of it Clock = evt.get_time(); // advance

simulation time if( evt.get_type() == arrival ) ProcessArrival(evt); else ProcessDeparture(evt); } ReportGeneration(); }

Page 15: Simulation Software and Simulation in Java. Simulation languages & software Simulation Model Development General Purpose Languages Simulation Programming.

Initialization Method // seed the event list with TotalCustomers arrivals public static void Initialization() { Clock = 0.0; QueueLength = 0; NumberInService = 0; LastEventTime = 0.0; TotalBusy = 0 ; MaxQueueLength = 0; SumResponseTime = 0; NumberOfDepartures = 0; LongService = 0;

// create first arrival event Event evt = new Event(arrival, exponential( stream,

MeanInterArrivalTime)); FutureEventList.enqueue( evt ); }

Page 16: Simulation Software and Simulation in Java. Simulation languages & software Simulation Model Development General Purpose Languages Simulation Programming.

Arrival Event Methodpublic static void ProcessArrival(Event evt) { Customers.enqueue(evt); QueueLength++; // if the server is idle, fetch the event, do statistics // and put into service if( NumberInService == 0) ScheduleDeparture(); else TotalBusy += (Clock - LastEventTime); // server is busy

// adjust max queue length statistics if (MaxQueueLength < QueueLength) MaxQueueLength = QueueLength;

// schedule the next arrival Event next_arrival = new Event(arrival, Clock+exponential(stream,

MeanInterArrivalTime)); FutureEventList.enqueue( next_arrival ); LastEventTime = Clock; }

Page 17: Simulation Software and Simulation in Java. Simulation languages & software Simulation Model Development General Purpose Languages Simulation Programming.

Schedule Departure Method

public static void ScheduleDeparture() { double ServiceTime; // get the job at the head of the queue while (( ServiceTime = normal(stream, MeanServiceTime,

SIGMA)) < 0 ); Event depart = new

Event(departure,Clock+ServiceTime); FutureEventList.enqueue( depart ); NumberInService = 1; QueueLength--; }

Page 18: Simulation Software and Simulation in Java. Simulation languages & software Simulation Model Development General Purpose Languages Simulation Programming.

Departure Event Methodpublic static void ProcessDeparture(Event e) { // get the customer description Event finished = (Event) Customers.dequeue(); // if there are customers in the queue then schedule // the departure of the next one if( QueueLength > 0 ) ScheduleDeparture(); else NumberInService = 0; // measure the response time and add to the sum double response = (Clock - finished.get_time()); SumResponseTime += response; if( response > 4.0 ) LongService++; // record long service TotalBusy += (Clock - LastEventTime ); NumberOfDepartures++; LastEventTime = Clock; }

Page 19: Simulation Software and Simulation in Java. Simulation languages & software Simulation Model Development General Purpose Languages Simulation Programming.

Report Generation Methodpublic static void ReportGeneration() {double RHO = TotalBusy/Clock;double AVGR = SumResponseTime/TotalCustomers;double PC4 = ((double)LongService)/TotalCustomers;

System.out.println( "SINGLE SERVER QUEUE SIMULATION - GROCERY STORE CHECKOUT COUNTER ");

System.out.println( "\tMEAN INTERARRIVAL TIME " + MeanInterArrivalTime );

System.out.println( "\tMEAN SERVICE TIME " + MeanServiceTime );

System.out.println( "\tSTANDARD DEVIATION OF SERVICE TIMES " + SIGMA );

System.out.println( "\tNUMBER OF CUSTOMERS SERVED " + TotalCustomers );

Page 20: Simulation Software and Simulation in Java. Simulation languages & software Simulation Model Development General Purpose Languages Simulation Programming.

Report Generation Method

System.out.println(); System.out.println( "\tSERVER UTILIZATION " +

RHO );System.out.println( "\tMAXIMUM LINE LENGTH "

+ MaxQueueLength );System.out.println( "\tAVERAGE RESPONSE TIME "

+ AVGR + " MINUTES" );System.out.println( "\tPROPORTION WHO SPEND FOUR "); System.out.println( "\t MINUTES OR MORE IN SYSTEM

" + PC4 );System.out.println( "\tSIMULATION RUNLENGTH "

+ Clock + " MINUTES" );System.out.println( "\tNUMBER OF DEPARTURES

" + TotalCustomers );}

Page 21: Simulation Software and Simulation in Java. Simulation languages & software Simulation Model Development General Purpose Languages Simulation Programming.

Random Variate Generatorspublic static double exponential(Random rng, double mean) { return -mean*Math.log( rng.nextDouble() );}public static double SaveNormal;public static int NumNormals = 0;public static final double PI = 3.1415927 ;public static double normal(Random rng, double mean, double sigma) { double ReturnNormal; // should we generate two normals? if(NumNormals == 0 ) { double r1 = rng.nextDouble(); double r2 = rng.nextDouble(); ReturnNormal = Math.sqrt( 2*Math.log(r1))*Math.cos(2*PI*r2); SaveNormal = Math.sqrt(-2*Math.log(r1))*Math.sin(2*PI*r2); NumNormals = 1; }

else { NumNormals = 0; ReturnNormal = SaveNormal; } return ReturnNormal*sigma + mean ; }}