root/trunk/DummyBusSchedule.java

Revision 3, 10.0 kB (checked in by dpaola2, 4 years ago)

old pathways project added

Line 
1 /*-**************************************************************************************
2  *                                                                              BusSchedule.java
3  *
4  * CLASS: Time                                                                                          Andres J. Tack
5  *                                                                                                                      March, 2005
6  *                                                                                                                      SIGSoft, ACM @ UIUC
7  *
8  *      The general idea of this is that the schedule can be:
9  *              a) Created on the fly
10  *              b) Loaded from and Saved to a file, then modified (maybe)
11  *
12  *      Per my original intent, the Map Editor will make use of methods which lend themselves
13  *      to a) and then save it to a file somehow resembling the name of the map.  The actual
14  *      applet will simply load a schedule and then use it.  This should allow enough of us
15  *      the necessary knowledge where we can all work on implementing it.  I have added as
16  *      many comments as I had the patience to add.
17  ****************************************************************************************/
18 import java.io.*;
19
20 //In the interest of compiling, I generate stupid schedules where each bus hop
21 // takes 1 cost time
22 public class DummyBusSchedule implements Serializable
23 {
24     int[] busNodeIds = new int[10];
25     int[] routeLength = new int[10];
26     int[][] busSchedules = new int[10][25];
27     int[] busWaits = new int[10];
28
29     public DummyBusSchedule()
30     {
31     }
32
33     public void CreateBusRoutes(Graph g)
34     {
35         System.out.println("Entering Create schedules");
36         //Create 21 Illini
37         BusNode ill21 = new BusNode(g.getUnusedNodeID(), this, "21 Quad", 22);
38         busNodeIds[0] = ill21.id;
39         busWaits[0] = 300;
40         BusEdge[] ill21Edges = new BusEdge[22];
41         routeLength[0] = 22;
42         g.addNode(ill21);
43
44         ill21Edges[0] = new BusEdge(ill21.id, 176);
45         ill21Edges[1] = new BusEdge(ill21.id, 121);
46         ill21Edges[2] = new BusEdge(ill21.id, 240);
47         ill21Edges[3] = new BusEdge(ill21.id, 280);
48         ill21Edges[4] = new BusEdge(ill21.id, 287);
49         ill21Edges[5] = new BusEdge(ill21.id, 289);
50         ill21Edges[6] = new BusEdge(ill21.id, 302);
51         ill21Edges[7] = new BusEdge(ill21.id, 389);
52         ill21Edges[8] = new BusEdge(ill21.id, 377);
53         ill21Edges[9] = new BusEdge(ill21.id, 159);
54         ill21Edges[10] = new BusEdge(ill21.id, 117);
55         ill21Edges[11] = new BusEdge(ill21.id, 451);
56         ill21Edges[12] = new BusEdge(ill21.id, 466);
57         ill21Edges[13] = new BusEdge(ill21.id, 465);
58         ill21Edges[14] = new BusEdge(ill21.id, 484);
59         ill21Edges[15] = new BusEdge(ill21.id, 499);
60         ill21Edges[16] = new BusEdge(ill21.id, 561);
61         ill21Edges[17] = new BusEdge(ill21.id, 538);
62         ill21Edges[18] = new BusEdge(ill21.id, 484);
63         ill21Edges[19] = new BusEdge(ill21.id, 471);
64         ill21Edges[20] = new BusEdge(ill21.id, 343);
65         ill21Edges[21] = new BusEdge(ill21.id, 172);
66         //main library
67         busSchedules[0][0] = 22;
68         busSchedules[0][1] = 16;
69         busSchedules[0][2] = 26;
70         busSchedules[0][3] = 16;
71         busSchedules[0][4] = 22;
72         //grainger
73         busSchedules[0][5] = 16;
74         busSchedules[0][6] = 17;
75         busSchedules[0][7] = 20;
76         //loomis
77         busSchedules[0][8] = 31;
78         busSchedules[0][9] = 25;
79         busSchedules[0][10] = 20;
80         busSchedules[0][11] = 20;
81         //nevada + goodwin
82         busSchedules[0][12] = 20;
83         busSchedules[0][13] = 15;
84         busSchedules[0][14] = 15;
85         busSchedules[0][15] = 30;
86         //at far
87         busSchedules[0][16] = 300;
88         busSchedules[0][17] = 15;
89         busSchedules[0][18] = 15;
90         busSchedules[0][19] = 20;
91         //at mumford
92         busSchedules[0][20] = 20;
93         //at main library
94         busSchedules[0][21] = 21;
95         for(int i = 0; i < 22; i++)
96         {
97             int otherId = ill21Edges[i].getOtherID(ill21.id);
98             ill21.BindPhyisicalNodeToIndex(otherId, i);
99             g.addEdge(ill21Edges[i]);
100         }
101
102
103
104         //Create 21 Illini
105         /*BusNode ill22 = new BusNode(g.getUnusedNodeID(), this, "22 Illini", 14);
106         busNodeIds[1] = ill22.id;
107         busWaits[1] = 10;
108         BusEdge[] ill22Edges = new BusEdge[14];
109         routeLength[1] = 14;
110         g.addNode(ill22);
111
112         ill22Edges[0] = new BusEdge(ill22.id, 176);
113         ill22Edges[1] = new BusEdge(ill22.id, 240);
114         ill22Edges[2] = new BusEdge(ill22.id, 149);
115         ill22Edges[3] = new BusEdge(ill22.id, 162);
116         ill22Edges[4] = new BusEdge(ill22.id, 376);
117         ill22Edges[5] = new BusEdge(ill22.id, );
118         ill22Edges[6] = new BusEdge(ill22.id, );
119         ill22Edges[7] = new BusEdge(ill22.id, );
120         ill22Edges[8] = new BusEdge(ill22.id, );
121         ill22Edges[9] = new BusEdge(ill22.id, );
122         ill22Edges[10] = new BusEdge(ill22.id, );
123         ill22Edges[11] = new BusEdge(ill22.id, );
124         ill22Edges[12] = new BusEdge(ill22.id, );
125         ill22Edges[13] = new BusEdge(ill22.id, );
126         busSchedules[1][0] = 0;
127         busSchedules[1][1] = 0;
128         busSchedules[1][2] = 0;
129         busSchedules[1][3] = 0;
130         busSchedules[1][4] = 0;
131         busSchedules[1][5] = 0;
132         busSchedules[1][6] = 0;
133         busSchedules[1][7] = 0;
134         busSchedules[1][8] = 0;
135         busSchedules[1][9] = 0;
136         busSchedules[1][10] = 0;
137         busSchedules[1][11] = 0;
138         busSchedules[1][12] = 0;
139         busSchedules[1][13] = 0;
140         for(int i = 0; i < 14; i++)
141         {
142             int otherId = ill22Edges[i].getOtherID(ill22.id);
143             ill22.BindPhyisicalNodeToIndex(i, otherId);
144             g.addEdge(ill22Edges[i]);
145         }*/
146
147
148
149         //Create 26 Pack
150         BusNode ill26 = new BusNode(g.getUnusedNodeID(), this, "26 Pack", 24);
151         busNodeIds[2] = ill26.id;
152         busWaits[2] = 300;
153         routeLength[2] = 24;
154         BusEdge[] ill26Edges = new BusEdge[24];
155         g.addNode(ill26);
156
157         ill26Edges[0] = new BusEdge(ill26.id, 177);
158         ill26Edges[1] = new BusEdge(ill26.id, 176);
159         ill26Edges[2] = new BusEdge(ill26.id, 121);
160         ill26Edges[3] = new BusEdge(ill26.id, 240);
161         ill26Edges[4] = new BusEdge(ill26.id, 280);
162         ill26Edges[5] = new BusEdge(ill26.id, 287);
163         ill26Edges[6] = new BusEdge(ill26.id, 289);
164         ill26Edges[7] = new BusEdge(ill26.id, 302);
165         ill26Edges[8] = new BusEdge(ill26.id, 389);
166         ill26Edges[9] = new BusEdge(ill26.id, 377);
167         ill26Edges[10] = new BusEdge(ill26.id, 417);
168         ill26Edges[11] = new BusEdge(ill26.id, 467);
169         ill26Edges[12] = new BusEdge(ill26.id, 468);
170         ill26Edges[13] = new BusEdge(ill26.id, 465);
171         ill26Edges[14] = new BusEdge(ill26.id, 188);
172         ill26Edges[15] = new BusEdge(ill26.id, 172);
173         ill26Edges[16] = new BusEdge(ill26.id, 76);
174         ill26Edges[17] = new BusEdge(ill26.id, 56);
175         ill26Edges[18] = new BusEdge(ill26.id, 40);
176         ill26Edges[19] = new BusEdge(ill26.id, 7);
177         ill26Edges[20] = new BusEdge(ill26.id, 269);
178         ill26Edges[21] = new BusEdge(ill26.id, 265);
179         ill26Edges[22] = new BusEdge(ill26.id, 214);
180         ill26Edges[23] = new BusEdge(ill26.id, 17);
181         //at wright + armory
182         busSchedules[2][0] = 30;
183         busSchedules[2][1] = 19;
184         busSchedules[2][2] = 30;
185         //at everett
186         busSchedules[2][3] = 20;
187         busSchedules[2][4] = 25;
188         //at grainger
189         busSchedules[2][5] = 15;
190         busSchedules[2][6] = 15;
191         busSchedules[2][7] = 30;
192         //at loomis
193         busSchedules[2][8] = 30;
194         busSchedules[2][9] = 20;
195         busSchedules[2][10] = 15;
196         //at goodwin + nevada
197         busSchedules[2][11] = 20;
198         busSchedules[2][12] = 20;
199         busSchedules[2][13] = 20;
200         //at main library gregory drive side
201         busSchedules[2][14] = 30;
202         busSchedules[2][15] = 15;
203         busSchedules[2][16] = 15;
204         busSchedules[2][17] = 15;
205         busSchedules[2][18] = 15;
206         busSchedules[2][19] = 15;
207         busSchedules[2][20] = 15;
208         busSchedules[2][21] = 15;
209         busSchedules[2][22] = 15;
210         //at illini orange
211         busSchedules[2][23] = 200;
212         for(int i = 0; i < 24; i++)
213         {
214             int otherId = ill26Edges[i].getOtherID(ill26.id);
215             ill26.BindPhyisicalNodeToIndex(otherId, i);
216             g.addEdge(ill26Edges[i]);
217         }
218     }
219
220     public int convertBusNodeIdToIndex(int busNodeId)
221     {
222         for(int i = 0; i < busNodeIds.length; i++)
223         {
224             if(busNodeIds[i] == busNodeId)
225             {
226                 return i;
227             }
228         }
229         return -1;
230
231     }
232         /**
233          *      eWaitTimeForRoute
234          *
235          *      This method will return a Cost object which represents the
236          *      expected wait time (an average) for a given route.
237          *
238          *      @param routeNumber The number of the bus route which we want
239          *              the expected wait time for.
240          *
241          *      @return
242          */
243         public Cost eWaitTimeForRoute(int busNodeId, int stopIndex, Cost c)
244         {
245             int routeIndex = convertBusNodeIdToIndex(busNodeId);
246             //HACK:
247             return new Cost((double)(busWaits[routeIndex] / 2));
248         }
249
250
251
252         /**
253          *      eTransTimeFor ( BusNode start,
254          *                                      BusNode end,
255          *                                      int routeNumber )
256          *
257          *      Returns the estimated time for transport by bus from
258          *      start to end via the given route.
259          *
260          *      If the route does not make this trip, the cost is -1.0
261          *
262          *      @param start A bus node at the beginning of the desired path
263          *      @param end A bus node at the end
264          *      @param routeNumber the ID number of the route which will be used for this
265          *
266          *      @return transCost
267          */
268         public Cost eTransTimeFor(int busNodeId, int startIndex, int endIndex, Cost c)
269         {
270             int routeIndex = convertBusNodeIdToIndex(busNodeId);
271             int totalCost = 0;
272             for(int i = startIndex; i!=endIndex; i++)
273             {
274                 if(i == routeLength[routeIndex])
275                     i = 0;
276                 if(i == endIndex)
277                     break;
278                 totalCost+=busSchedules[routeIndex][i];
279             }
280             return new Cost((double)(totalCost));
281         }
282 }
Note: See TracBrowser for help on using the browser.