The framework is meant to work without including Path components, which would be the case when transfer between components is effectively instantaneous, as would be the case when simulating an information or logical system rather than a physical system of some kind. We can see here that the system works the same way without them, although none of the queues back up as far because a lot of transit time has been removed from the model.
Visualizations are much more difficult to follow without Path connections and the animated movement of entities. However, once we know that the components and transfer mechanisms work as we expect, we can use them with some confidence.
Here’s the new configuration code.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
//schedule for seven hours of arrivals in half-hour blocks var arrivalSchedule = [0,0,1,5,6,6,7,8,5,4,3,1,0,0]; var entryDistribution = [[1.0],[1.0],[1.0],[1.0],[1.0],[1.0],[1.0],[1.0],[1.0],[1.0],[1.0],[1.0],[1.0],[1.0]]; var arrival1 = new ArrivalsComponent(30.0,arrivalSchedule,entryDistribution); arrival1.defineDataGroup(90,2,80,"#00FFFF","#FF0000","#FFFF00"); var routingTable = [1.0]; var entry1 = new EntryComponent(2.0,routingTable); entry1.defineDataGroup(90,105,80,"#00FFFF","#FF0000","#FFFF00"); entry1.setRoutingMethod(3); //1 single connection, 2 distribution logic, 3 model logic arrival1.assignNextComponent(entry1); var queue0 = new QueueComponent(2.0,6.0); queue0.defineDataGroup(90,193,80,"#00FFFF","#FF0000","#FFFF00"); queue0.setRoutingMethod(2); //1 single connection, 2 distribution logic, 3 model logic entry1.assignNextComponent(queue0); queue0.assignPreviousComponent(entry1); var queue1 = new QueueComponent(2.0,3.0,3); queue1.defineDataGroup(5,329,80,"#00FFFF","#FF0000","#FFFF00"); queue1.setRoutingMethod(1); //1 single connection, 2 distribution logic, 3 model logic queue1.setExclusive(true); queue0.assignNextComponent(queue1); queue1.assignPreviousComponent(queue0); var queue2 = new QueueComponent(2.0,3.0,3); queue2.defineDataGroup(175,329,80,"#00FFFF","#FF0000","#FFFF00"); queue2.setRoutingMethod(1); //1 single connection, 2 distribution logic, 3 model logic queue2.setExclusive(true); queue0.assignNextComponent(queue2); queue2.assignPreviousComponent(queue0); var process1 = new ProcessComponent(2.0,10.0); process1.defineDataGroup(5,465,80,"#00FFFF","#FF0000","#FFFF00"); process1.setExclusive(true); process1.setRoutingMethod(1); //1 single connection, 2 distribution logic, 3 model logic queue1.assignNextComponent(process1); process1.assignPreviousComponent(queue1); var process2 = new ProcessComponent(2.0,10.0); process2.defineDataGroup(175,465,80,"#00FFFF","#FF0000","#FFFF00"); process2.setExclusive(true); process2.setRoutingMethod(1); //1 single connection, 2 distribution logic, 3 model logic queue2.assignNextComponent(process2); process2.assignPreviousComponent(queue2); var exit1 = new ExitComponent(2.0); exit1.defineDataGroup(90,564,80,"#00FFFF","#FF0000","#FFFF00"); process1.assignNextComponent(exit1); exit1.assignPreviousComponent(process1); process2.assignNextComponent(exit1); exit1.assignPreviousComponent(process2); |