PDA

View Full Version : điều khiển thang máy



clockhome
25-02-2004, 21:30
bài toán: một lầu n tầng và có hai thang máy cùng hoạt động nhưng chỉ có một bảng điều khiển lên xuống ở mỗi tầng chung cho hai thang máy. Viết chương trình để điều khiển hoạt động hai thang máy sao cho nó hoạt động hiệu quả.

Bạn nào có cach giải quyêt bài toán này xin chỉ giúp mình. Nếu đã từng làm rồi thì có thể cho mình xin source đề tham khảo

mù_chữ_Java
26-02-2004, 14:53
Viết chương trình chạy thang máy thì liên quan tới nhiều chiện hơi rắc rối. Tui viết lâu rùi nhưng không còn giữ được source code vì một lần máy crash.
Cách viết thì có nhiều cách cao siêu hơn vầy nhiều, nhưng tui cố gắng trình bày sơ lược cách của tui như thế này:
chương trình của bạn phải gồm tối thiểu các class sau:
- Elevator class: chứa đựng thông tin của mỗi elevator, chẳng hạn như currentFloor, direction (có thể gán 1 = UP, -1 = DOWN, 0 = NO_MOVING) ... Mỗi Elevator còn phải có một array destination gồm n phần tử để chứa một mảng thông tin về những floor mà Elevator này cần phải dừng lại…
- ButtonSet class: chứa 2 Button, mỗi Button có: biến boolean isPressed, để coi thử nó được bấm hay không. ButtonSet còn phải chứa thông tin của floor, tức là cái ButtonSet này nằm ở floor nào…
- Một class (cho tên gì cũng được) để xử lý các thông tin:
+ Đầu tiên, initialize cả hai thang máy ở vị trí tầng 1 (hoặc tầng 0 nếu như bạn muốn tầng 0 là tầng dưới cùng), và initialize tất cả n giá trị của array destination bằng NO (không đi đến đích nào)
+Nếu cả hai thang máy đứng yên: nếu nhận được lệnh bấm từ một tầng i nào đó thì chọn một trong hai cái thang máy, gán giá trị destination[i] = YES, xong rồi khởi động thang máy chạy.
+ Khi thang máy chạy, nếu như tới tầng nào có YES thì phải có hàm để làm ngừng thang máy, gán destination[i] = NO, xong rồi coi trong destination array thử còn cái nào YES không để đi tiếp.
+ Nếu như thang máy đang chạy, thí dụ theo hướng đi lên, mà nhận được lệnh nút bấm phía trên và đi lên, thì lệnh này sẽ được thêm vào destination array của thang máy này (gán cho YES). Nếu đang đi lên mà nhận được nút bấm ở tầng thấp hơn thì không thêm vào mà thêm vào thang máy kia.
+ rất nhiều trường hợp khác nữa, mà chắc bạn học kiến trúc dữ liệu thì mí cái zụ này là củ khoai đối với bạn gùi... Cố gắng ngồi xuống mà nghĩ ra tất cả những trường hợp có thể, rồi đặt case cho phù hợp...
+ Bạn có thể xài một cái queue để thu nhận mí cái action của nút thang máy, khi nào nhận được lệnh nút bấm thì push(), khi nào thang máy tới được đích thì pop()

- Một số class khác nữa để xử lý đầu ra, vào như input, output, interface, driver vân vân…


Good luck & happy hacking.

new_seawave
22-03-2004, 02:46
Ban doc trong "Java-How to program 4nd edition" nha. Tu trang dau tien da de cap den cach viet mot chuong trinh dieu khien cai elevator roi do.

HLQ2504
27-03-2008, 15:43
mình cũng gặp vấn đề này. dang tìm lời giải đây!

lampfiev
04-04-2009, 16:08
mình down dc một tài liệu của anh huy hà .
rất có ích cho việc điều khiển thang máy
đây là link cua file đó :
http://www.ebook.edu.vn/?page=1.1&view=10998