– Khởi tạo – Hạ cánh – Cất cánh • Lớp Runway: – Chứa thành phần thể hiện hàng đợi của các máy bay đang đợi cất cánh hoặc hạ cánh.. • Lớp Random: – trạng thái ngẫu nhiên của việc cất cánh
Trang 1• Lớp Plane, các phương thức?
– Khởi tạo – Hạ cánh – Cất cánh
• Lớp Runway:
– Chứa thành phần thể hiện hàng đợi của các máy bay đang đợi cất cánh hoặc hạ cánh.
• Lớp Random:
– trạng thái ngẫu nhiên của việc cất cánh và hạ cánh của máy bay
Cài đặt
const int END_TIME = 30; // time to run simulation
const int QUEUE_LIMIT = 60; // size of Runway
queues
const double ARRIVAL_RATE = 0.5, DEPARTURE_RATE =
0.5;
intmain( ) // Airport simulation program
/* Pre: The user must supply the number of time intervals the
simulation is to run, the expected number of planes arriving,
the expected number of planes departing per time interval,
and the maximum allowed size for runway queues.
Post: The program performs a random simulation of the airport,
showing the status of the runway at each time interval, and
prints out a summary of airport operation at the conclusion.
Uses: Classes Runway, Plane, Random and functions run_idle,
initialize */
1 {
2 int flight_number = 0;
3 Random random;
4 Runway small_airport(queue_limit);
5 for ( int current_time = 0; current_time < END_TIME;
current_time++)
6 {
7. // loop over time intervals
8 int number_arrivals = random.poisson(ARRIVAL_RATE);
9. // current arrival requests
10 for ( int i = 0; i < number_arrivals; i++) {
11. Planecurrent_plane(flight_number++, current_time, arriving);
12 if (small_airport.can_land(current_plane) !=
success)
18 intnumber_departures =
random.poisson(DEPARTURE_RATE);
20 for(int j = 0; j < number_departures; j++) {
21 Planecurrent_plane(flight_number++, current_time,
departing);
22 if (small_airport.can_depart(current_plane) != success)
23 current_plane.refuse( );
25 Planemoving_plane;
26 switch (small_airport.activity(current_time, moving_plane)) {
27. // Let at most one Plane onto the Runway at current_time.
28 case land:
29 moving_plane.land(current_time);
31 case takeoff:
32 moving_plane.fly(current_time);
34 case idle:
35 run_idle(current_time);
36 }// end of switch
Class Runway
• Cần quản lý hai hàng đợi – Cất cánh và hạ cánh
• Ưu tiên máy bay đợi hạ cánh
• Yêu cầu thống kê:
– Số máy bay được xử lý – Thời gian đợi trung bình – Số máy bay bị từ chối
Trang 21 enum Runway_activity {idle, land, takeoff};
2 class Runway {
3 public:
4. Runway(int limit);
5. Error_code can_land(const Plane ¤t);
6. Error_code can_depart(const Plane ¤t);
7. Runway_activity activity(int time, Plane &moving);
8 void shut_down(int time) const;
9 private:
10. Queue landing;
11. Queue takeoff;
12 int queue_limit;
13 int num_land_requests; // number of planes asking to land
14. int num_takeoff_requests; // number of planes asking to take off
15. int num_landings; // number of planes that have landed
16. int num_takeoffs; // number of planes that have taken
off
17. int num_land_accepted; // number of planes queued to land
18. int num_takeoff_accepted; // number of planes queued to take
off
19. int num_land_refused; // number of landing planes refused
20. int num_takeoff_refused; // number of departing
planes refused
21 int land wait; // total time of planes waiting to land
Định nghĩa lớp Plane
1 enum Plane_status {null, arriving, departing};
2 class Plane {
3 public:
4 Plane( );
5 Plane(int flt, int time, Plane_status status);
6 void refuse( ) const;
7 void land(int time) const;
8 void fly(int time) const;
9 int started( ) const;
10.private:
11 int flt_num;
12 int clock_start;
13 Plane_status state;
14.};