//******************** USER SIMULATION ROUTINES *************************** function Initialization() // Model initialization { // System parameters: runlength = parent.frames[0].expduration;// length of the experiment report = parent.frames[0].document.control.CI10.checked; // whether to generate report repstat = parent.frames[0].document.control.CI11.checked; // whether to show status // Initializing servers: for (var i = 1; i <= numofservs; i++) { if (!servers[i].initialize()) { // includes scheduling first services return false; }; }; return true; }; //......................................................................... function finish_run() { // Whether to finish simulatiom run (must be supplied) return (time>runlength); }; //......................................................................... function Results() { // Shows global results tlost = 0; // lost customers totinit = 0; // total initial number for (var i = 1; i <= numofservs; i++) { tlost += servers[i].lostcust; totinit += servers[i].initcusts; }; document.netform.R0.value = time; document.netform.R1.value = totinit; document.netform.R2.value = tlost; }; //......................................................................... function Writereport() { // Results to window (after Results !) if ((resw==null) || (resw.closed)) { resw = window.open("","rw","scrollbars,menubar,resizable,outerWidth=650,outerHeight=500"); }; var d = resw.document; d.open(); d.writeln("
"); d.writeln("
Server # " + ii + "
");
if (s.interval.disttype == "User") {
d.writeln("User defined service duration:
"); var y = " # x p(x) F(x)"); }; if (s.interval.disttype == "Exp") { d.writeln("Exponential service duration, Mean=" + s.interval.par1 + "
===================================
"; var st = ""; for (var i = 0; i <= s.interval.size; i++) { var l = " " + i; l += spaces(4-l.length) + s.interval.xv[i]; st = "" + s.interval.px[i]; l += spaces(14-l.length) + st.slice(0,12); st = "" + s.interval.fx[i]; l += spaces(28-l.length) + st.slice(0,12) + "
"; y += l; }; d.writeln(y+"
"); var y = " # x p(x) F(x)"); d.writeln("Number of channels : " + s.channels + "
===================================
"; var st = ""; for (var i = 0; i <= s.output.size; i++) { var l = " " + i; l += spaces(4-l.length) + s.output.xv[i]; st = "" + s.output.px[i]; l += spaces(14-l.length) + st.slice(0,12); st = "" + s.output.fx[i]; l += spaces(28-l.length) + st.slice(0,12) + "
"; y += l; }; d.writeln(y+"
Number of arrivals : " + s.arrivals + "
");
d.writeln("Number of not waiting arrivals : " + s.nowait + " (" +
Math.round(10000*s.nowait/s.arrivals)/100 + "%)
");
d.writeln("Number of lost customers : " + s.lostcust + " (" +
Math.round(10000*s.lostcust/s.arrivals)/100 + "%)
");
d.writeln("Number of services : " + s.numofcser + "
");
d.writeln("Average service duration : " + s.servicetime.average() + "
");
d.writeln("Minimum service duration : " + s.servicetime.min + "
");
d.writeln("Maximum service duration : " + s.servicetime.max + "
");
d.writeln("Average waiting time : " + s.waitingtime.average() + "
");
d.writeln("Waiting time standard deviation : " + s.waitingtime.stdDev() + "
");
d.writeln("Average non zero waiting time : " + s.waitingtime.sum/s.swtimecnz + "
");
d.writeln("Maximum waiting time : " + s.waitingtime.max + "
");
d.writeln("Average time in server : " + s.systemtime.average() + "
");
d.writeln("Time in server standard deviation : " + s.systemtime.stdDev() + "
");
d.writeln("Minimum time in server : " + s.systemtime.min + "
");
d.writeln("Maximum time in server : " + s.systemtime.max + "
");
d.writeln("Average queue length : " + s.queue.average() + "
");
d.writeln("Queue length standard deviation : " + s.queue.stdDev() + "
");
d.writeln("Maximum queue length : " + s.queue.maxqlength + "
");
d.writeln("Utilization of server(s) : " + s.busyservers.average()/s.channels + "
");
var x = s.queue.average() + s.busyservers.average();
d.writeln("Average system size : " + x + "
"); }; d.writeln("