|
|
@@ -56,24 +56,29 @@
|
|
56
|
56
|
let allStops = new Set([...destinations, ...requests[UP], ...requests[DOWN]]);
|
|
57
|
57
|
try {
|
|
58
|
58
|
floorNum = getClosestFloor(elevator.currentFloor(), allStops)
|
|
59
|
|
- console.log("> Sending elevator[" + elevatorIndex + "] to floor[" + floorNum + "]");
|
|
|
59
|
+ //console.log("> Sending elevator[" + elevatorIndex + "] to floor[" + floorNum + "]");
|
|
60
|
60
|
elevator.goToFloor(floorNum);
|
|
61
|
61
|
} catch (e) {
|
|
62
|
|
- console.log("> No closest floor. Sending elevator[" + elevatorIndex + "] to rest floor[" + restFloors[1] + "]");
|
|
|
62
|
+ //console.log("> No closest floor. Sending elevator[" + elevatorIndex + "] to rest floor[" + restFloors[1] + "]");
|
|
63
|
63
|
elevator.goToFloor(restFloors[1]);
|
|
64
|
64
|
}
|
|
65
|
65
|
} else {
|
|
66
|
|
- console.log("> Sending elevator[" + elevatorIndex + "] to rest floor[" + restFloors[1] + "]");
|
|
|
66
|
+ //console.log("> Sending elevator[" + elevatorIndex + "] to rest floor[" + restFloors[1] + "]");
|
|
67
|
67
|
elevator.goToFloor(restFloors[1]);
|
|
68
|
68
|
}
|
|
69
|
69
|
} else {
|
|
70
|
|
- floorNum = getClosestFloor(elevator.currentFloor(), destinations)
|
|
71
|
|
- console.log("> Sending elevator[" + elevatorIndex + "] to destination floor[" + floorNum + "]");
|
|
72
|
|
- elevator.goToFloor(floorNum);
|
|
|
70
|
+ try {
|
|
|
71
|
+ floorNum = getClosestFloor(elevator.currentFloor(), destinations)
|
|
|
72
|
+ console.log("> Sending elevator[" + elevatorIndex + "] to destination floor[" + floorNum + "]");
|
|
|
73
|
+ elevator.goToFloor(floorNum);
|
|
|
74
|
+ } catch (e) {
|
|
|
75
|
+ //console.log("> No closest floor. Sending elevator[" + elevatorIndex + "] to rest floor[" + restFloors[1] + "]");
|
|
|
76
|
+ elevator.goToFloor(restFloors[1]);
|
|
|
77
|
+ }
|
|
73
|
78
|
}
|
|
74
|
79
|
}
|
|
75
|
80
|
|
|
76
|
|
- function bringClosestElevator(floorNum) {
|
|
|
81
|
+ function getClosestElevator(floorNum) {
|
|
77
|
82
|
let closestElevator = 0;
|
|
78
|
83
|
let distance = floorCount;
|
|
79
|
84
|
let newDistance = distance;
|
|
|
@@ -87,7 +92,7 @@
|
|
87
|
92
|
});
|
|
88
|
93
|
|
|
89
|
94
|
//console.log("Closest is elevator[" + closestElevator + "]")
|
|
90
|
|
- elevators[closestElevator].goToFloor(floorNum);
|
|
|
95
|
+ return closestElevator;
|
|
91
|
96
|
}
|
|
92
|
97
|
|
|
93
|
98
|
function setDirection(elevator, direction){
|
|
|
@@ -114,12 +119,10 @@
|
|
114
|
119
|
floor.on("up_button_pressed", function() {
|
|
115
|
120
|
//console.log("> Up request on floor[" + floor.level + "]");
|
|
116
|
121
|
requests[UP].add(floor.level);
|
|
117
|
|
- //bringClosestElevator(floor.level);
|
|
118
|
122
|
});
|
|
119
|
123
|
floor.on("down_button_pressed", function() {
|
|
120
|
124
|
//console.log("> Down request on floor[" + floor.level + "]");
|
|
121
|
125
|
requests[DOWN].add(floor.level);
|
|
122
|
|
- //bringClosestElevator(floor.level);
|
|
123
|
126
|
});
|
|
124
|
127
|
});
|
|
125
|
128
|
|
|
|
@@ -129,32 +132,22 @@
|
|
129
|
132
|
|
|
130
|
133
|
elevators.forEach(function (elevator, elevatorIndex) {
|
|
131
|
134
|
|
|
132
|
|
- // Basic elevator info
|
|
|
135
|
+ // Elevator info and variables
|
|
|
136
|
+ let destinations = new Set();
|
|
133
|
137
|
const restFloors = [
|
|
134
|
138
|
elevatorIndex * Math.floor(floorCount / (elevatorCount + 1)),
|
|
135
|
139
|
(elevatorIndex + 1) * Math.floor(floorCount / (elevatorCount + 1)),
|
|
136
|
140
|
(elevatorIndex + 2) * Math.floor(floorCount / (elevatorCount + 1))
|
|
137
|
141
|
]
|
|
138
|
142
|
|
|
139
|
|
- //console.log("Rest floors for elevator[" + elevatorIndex + "]: " + restFloors[0] + ", " + restFloors[1] + ", and " + restFloors[2])
|
|
140
|
|
-
|
|
141
|
|
- elevator.on("floor_button_pressed", function(floorNum) {
|
|
142
|
|
- //console.log("> Pressed floor[" + floorNum + "] on elevator[" + elevatorIndex + "]");
|
|
143
|
|
- destinations.add(floorNum);
|
|
144
|
|
- });
|
|
145
|
|
-
|
|
146
|
|
- // Elevator variables
|
|
147
|
|
- let destinations = new Set();
|
|
148
|
|
-
|
|
149
|
143
|
// Start
|
|
150
|
|
- setDirection(elevator, IDLE); // Starts on the ground floor
|
|
151
|
|
- console.log("> Sending elevator[" + elevatorIndex + "] to floor[" + restFloors[0] + "]");
|
|
152
|
|
-
|
|
153
|
|
- elevator.goToFloor(restFloors[0]); // Closest rest floor
|
|
|
144
|
+ setDirection(elevator, UP); // Starts on the ground floor
|
|
|
145
|
+ console.log("> Elevator[" + elevatorIndex + "] rest floors are " + restFloors[0] + ", " + restFloors[1] + ", and " + restFloors[2] + ". Starting at " + restFloors[0] + ".")
|
|
|
146
|
+ elevator.goToFloor(restFloors[0]); // Nearest rest floor
|
|
154
|
147
|
|
|
155
|
148
|
// Idle
|
|
156
|
149
|
elevator.on("idle", function() {
|
|
157
|
|
- console.log("> Elevator[" + elevatorIndex + "] is idle")
|
|
|
150
|
+ //console.log("> Elevator[" + elevatorIndex + "] is idle")
|
|
158
|
151
|
setDirection(elevator, IDLE);
|
|
159
|
152
|
if (requests[UP].size == 0 && requests[DOWN].size == 0 && destinations.size == 0) {
|
|
160
|
153
|
elevator.goToFloor(restFloors[1]);
|
|
|
@@ -165,23 +158,23 @@
|
|
165
|
158
|
|
|
166
|
159
|
// Passing
|
|
167
|
160
|
elevator.on("passing_floor", function(floorNum, direction) {
|
|
168
|
|
- if (elevator.loadFactor() < 1) {
|
|
169
|
|
- if (requests[UP].has(floorNum) || requests[DOWN].has(floorNum) || destinations.has(floorNum)) {
|
|
170
|
|
- elevator.goToFloor(floorNum, true);
|
|
171
|
|
- }
|
|
172
|
|
- } else if (destinations.has(floorNum)) {
|
|
|
161
|
+ if (elevator.loadFactor() < 1 && (requests[UP].has(floorNum) || requests[DOWN].has(floorNum))) {
|
|
173
|
162
|
elevator.goToFloor(floorNum, true);
|
|
174
|
163
|
}
|
|
175
|
164
|
});
|
|
176
|
165
|
|
|
|
166
|
+ // Buttons
|
|
|
167
|
+ elevator.on("floor_button_pressed", function(floorNum) {
|
|
|
168
|
+ //console.log("> Pressed floor[" + floorNum + "] on elevator[" + elevatorIndex + "]");
|
|
|
169
|
+ destinations.add(floorNum);
|
|
|
170
|
+ });
|
|
|
171
|
+
|
|
177
|
172
|
// Stopped
|
|
178
|
173
|
elevator.on("stopped_at_floor", function(floorNum) {
|
|
179
|
174
|
//console.log("> elevator[" + elevatorIndex + "] stopped at floor[" + floorNum + "]");
|
|
180
|
175
|
destinations.delete(floorNum);
|
|
181
|
176
|
requests[UP].delete(floorNum);
|
|
182
|
177
|
requests[DOWN].delete(floorNum);
|
|
183
|
|
-
|
|
184
|
|
- sendToNext(elevators, elevatorIndex, destinations, requests, restFloors);
|
|
185
|
178
|
});
|
|
186
|
179
|
});
|
|
187
|
180
|
},
|