Thứ Sáu, 19 tháng 2, 2016

Sử dụng thuật toán Hungary để phân công lao động

Trong Quản trị sản xuất hay trong phân công công việc, bạn có biết phân công n công việc/máy cho n công nhân/nhân viên như thế nào cho hiệu quả không? (với điều kiện 1 người mỗi việc/máy).
Tôi sẽ giới thiệu và hướng dẫn cho các bạn một thuật toán để việc phân công công việc đạt hiệu quả tối ưu nhất.
Chúng ta sử dụng Thuật toán Hungary (không biết do đất nước Hungary hay nhà toán học Hungary nào đó xây dựng nên nhưng nó được sử dụng rất nhiều trong quản trị sản xuất) để giải quyết bài toán này.
Trong trường hợp này có thể xác định được phương án sắp xếp tối ưu giữa các phương án đó. Phương án tối ưu có thể là phương án có tổng thời gian thực hiện nhỏ nhất hoặc cung cấp sản phẩm, dịch vụ nhanh nhất, tuỳ thuộc vào mục tiêu cụ thể đặt ra trong khi sắp xếp.
Trong một số trường hợp mục tiêu đặt ra là tổng thời gian thực hiện của tất cả các đối tượng là ngắn nhất nhưng trong các trường hợp khác mục tiêu lại là giảm thời gian ứ đọng khi thực hiện các công việc. Để xác định được phương án tối ưu ta dùng thuật toán Hungary.
Thuật toán này được thực hiện theo trình tự sau:
Bước 1: Lập bảng phân việc và máy theo dữ liệu thực tế;
Bước 2: Tìm số nhỏ nhất trong từng hàng của bảng phân việc và trừ các số trong hàng cho số đó; Bước 3: Tìm số nhỏ nhất trong từng cột và trừ các số trong từng cột cho số đó;
Bước 4: Tìm cách kẻ các đường thẳng đi qua hàng hoặc cột có các số 0 sao cho số đường thẳng kẻ được ít nhất (tức là hàng, cột nào có 1 số 0 thì kẻ đường thẳng, hàng thì kẻ cột, cột thì kẻ hàng, số 0 nào bị gạch rồi thì không tính).
Thực hiện theo cách sau:
- Bắt đầu từ những hàng có 1 số 0, khoanh tròn số đó lại và kẻ một đường thẳng xuyên suốt cột;
- Tìm các cột có 1 số 0, khoanh tròn số đó lại rồi kẻ một đường xuyên suốt hàng.
Bước 5: Lặp lại bước 4 cho đến khi không còn có thể khoanh được nữa. Nếu số đường thẳng kẻ được ít nhất bằng số hàng (số cột) thì bài toán đã có lời giải tối ưu. Nếu số đường kẻ được nhỏ hơn số hàng (số cột) thì cần làm tiếp: Tìm số chưa bị gạch nhỏ nhất và lấy tất cả các số chưa bị gạch trừ đi số đó; các số bị gạch bởi 2 đường thẳng cộng với số đó; còn các số khác giữ nguyên.
Bước 6: Quay trở lại bước 4 và 5 cho đến khi tìm được lời giải tối ưu.
Sau đó, ma trận cuối cùng khoanh ở cột nào thì chọn người tương ứng làm việc đó
Ví dụ: Trong một tổ sản xuất có 4 công việc I, II, III, IV cần bố trí cho 4 công nhân A, B, C, D.
Chi phí thực hiện cho mỗi công việc của từng công nhân cho ở bảng sau.
Tìm phương án bố trí công việc sao cho tổng chi phí thực hiện các công việc là nhỏ nhất.

Yêu cầu: Tìm phương án bố trí công việc sao cho tổng chi phí thực hiện các công việc là nhỏ nhất.
Dùng thuật toán Hungary ta có cách giải như sau:
Bước 1: Như đầu bài đã cho

Như vây ta bố trí:
Nhân viên A thực hiện công việc 1 với thời gian là 18 phút;
Nhân viên B thực hiện công việc 2 với thời gian là 55 phút;
Nhân viên C thực hiện công việc 3 với thời gian là 8 phút;
Nhân viên D thực hiện công việc 4 với thời gian là 12 phút;
Tổng thời gian thực hiện công việc của cả 4 nhân viên là 93 phút.
Trong thực tế nhiều khi chúng ta gặp trường hợp phân giao công việc sao cho tổng lợi nhuận thu được tối đa. Để tìm được phương án phân giao tối ưu vẫn sử dụng phương pháp giải trên.
Tuy nhiên cần phải đổi dấu toàn bộ các số liệu trong bảng phân việc, sau đó vận dụng thuật toán Hungary giải bình thường.
Trong trường hợp bài toán phân công công việc được đặt ra với hai mục tiêu:
- Tổng chi phí hoặc thời gian thực hiện công việc là tối thiểu;
- Chi phí thực hiện từng công việc hoặc thời gian thực hiện từng công việc không được vượt quá 1 mức nào đó thì chúng ta chỉ cần loại bỏ các số hạng bằng hoặc vượt quá mức đã quy định bằng cách thay chúng bằng những dấu x, sau đó tiến hành giải bình thường.
Xem xét ví dụ trên, với yêu cầu tìm phương án bố trí công việc sao cho tổng chi phí thực hiện các công việc là nhỏ nhất và chi phí thực hiện cho mỗi công việc phải nhỏ hơn 55 phút.

Như vây ta bố trí: Nhân viên A thực hiện công việc 1 với thời gian là 18 phút;
Nhân viên B thực hiện công việc 4 với thời gian là 48 phút;
Nhân viên C thực hiện công việc 3 với thời gian là 8 phút;
Nhân viên D thực hiện công việc 2 với thời gian là 25 phút;
Tổng thời gian thực hiện công việc của cả 4 nhân viên là 99 phút.

Không có nhận xét nào:

Đăng nhận xét