void sim(){ create("sim"); /* Initialize simulation. */ init(); /* For the duration of the simulation generate customers with exponential inter-arrival times with mean IATM. */ while(simtime() < 1000){ hold(exponential(IATM)); cust(); } wait(done); /* Print reports. */ printf("Server 1, expected average delay in queue of a customer: %f\n", table_mean(box_time_table(queue_box))); printf("Server 1, expected time-average number of customers in queue: %f\n", qtable_mean(box_number_qtable(queue_box))); printf("Server 1, expected utilization: %f\n\n", qtable_mean(box_number_qtable(service_box))); printf("Server 2, expected average delay in queue of a customer: %f\n", table_mean(box_time_table(queue_box2))); printf("Server 2, expected time-average number of customers in queue: %f\n", qtable_mean(box_number_qtable(queue_box2))); printf("Server 2, expected utilization: %f\n\n", qtable_mean(box_number_qtable(service_box2))); }
//============================================================================= //== Main program == //============================================================================= void sim(int argc, char *argv[]) { double lambda; // Mean arrival rate (cust/sec) double mu; // Mean service rate (cust/sec) double offered_load; // Create the simulation create("sim"); // Output usage if (argc != 2) { printf("Usage: 'offered_load' - offered_load between 0 and 1 \n"); return; } offered_load = atof(argv[1]); assert((offered_load > 0.0) && (offered_load < 1.0)); // CSIM initializations Server1 = facility("Server1"); Server2 = facility("Server2"); Server3 = facility("Server3"); Server4 = facility("Server4"); Server5 = facility("Server5"); Resp_table = table("Response time table"); // Parameter initializations mu = 1.0; lambda = offered_load * (double)5; // Output begin-of-simulation banner printf("*** BEGIN SIMULATION *** \n"); // Initiate generate function and hold for SIM_TIME generate(lambda, mu); hold(SIM_TIME); // Output results printf("============================================================= \n"); printf("== *** CSIM 5 x M/M/1 queueing system simulation *** == \n"); printf("============================================================= \n"); printf("= Lambda = %6.3f cust/sec \n", lambda); printf("= Mu (for each server) = %6.3f cust/sec \n", mu); printf("============================================================= \n"); printf("= Total CPU time = %6.3f sec \n", cputime()); printf("= Total sim time = %6.3f sec \n", clock); printf("= Total completions = %ld cust \n", (completions(Server1) + completions(Server2) + completions(Server3) + completions(Server4) + completions(Server5))); printf("=------------------------------------------------------------ \n"); printf("= >>> Simulation results - \n"); printf("=------------------------------------------------------------ \n"); printf("= Utilization 1 = %6.3f %% \n", 100.0 * util(Server1)); printf("= Mean num in system 1 = %6.3f cust \n", qlen(Server1)); printf("= Mean response time 1 = %6.3f sec \n", resp(Server1)); printf("= Mean service time 1 = %6.3f sec \n", serv(Server1)); printf("= Mean throughput 1 = %6.3f cust/sec \n", tput(Server1)); printf("=------------------------------------------------------------ \n"); printf("= Utilization 2 = %6.3f %% \n", 100.0 * util(Server2)); printf("= Mean num in system 2 = %6.3f cust \n", qlen(Server2)); printf("= Mean response time 2 = %6.3f sec \n", resp(Server2)); printf("= Mean service time 2 = %6.3f sec \n", serv(Server2)); printf("= Mean throughput 2 = %6.3f cust/sec \n", tput(Server2)); printf("=------------------------------------------------------------ \n"); printf("= Utilization 3 = %6.3f %% \n", 100.0 * util(Server3)); printf("= Mean num in system 3 = %6.3f cust \n", qlen(Server3)); printf("= Mean response time 3 = %6.3f sec \n", resp(Server3)); printf("= Mean service time 3 = %6.3f sec \n", serv(Server3)); printf("= Mean throughput 3 = %6.3f cust/sec \n", tput(Server3)); printf("=------------------------------------------------------------ \n"); printf("= Utilization 4 = %6.3f %% \n", 100.0 * util(Server4)); printf("= Mean num in system 4 = %6.3f cust \n", qlen(Server4)); printf("= Mean response time 4 = %6.3f sec \n", resp(Server4)); printf("= Mean service time 4 = %6.3f sec \n", serv(Server4)); printf("= Mean throughput 4 = %6.3f cust/sec \n", tput(Server4)); printf("=------------------------------------------------------------ \n"); printf("= Utilization 5 = %6.3f %% \n", 100.0 * util(Server5)); printf("= Mean num in system 5 = %6.3f cust \n", qlen(Server5)); printf("= Mean response time 5 = %6.3f sec \n", resp(Server5)); printf("= Mean service time 5 = %6.3f sec \n", serv(Server5)); printf("= Mean throughput 5 = %6.3f cust/sec \n", tput(Server5)); printf("=------------------------------------------------------------ \n"); printf("& Table mean for response time = %6.3f sec \n", table_mean(Resp_table)); printf("============================================================= \n"); // Output end-of-simulation banner printf("*** END SIMULATION *** \n"); getchar(); }