Chương 6: Lập lịch trình sản xuất
6.2. PHƯƠNG PHÁP PHÂN CÔNG CÔNG VIỆC CHO CÁC MÁY
Trong trường hợp ta có:
- N công việc. N máy
- Các máy đều có tính năng thay thế lẫn nhau. Do đó
- Mỗi công việc chỉ cần bố trí trên 1 máy Một máy chỉ phụ trách một công việc
- Chi phí các máy làm các công việc là khác nhau và khối lượng các công việc khác nhau và đơn giá 1 ca máy của các máy cũng không giống nhau.
Ta cần bố trí mỗi công việc trên mỗi máy sao cho tổng chi phí thực hiện tất cả các công việc trên tất cả các máy là nhỏ nhất.
Mục này giải quyết bài toán nói trên. Đây là một loại bài toán của Quy hoạch tuyến tính có tên gọi là bài toán chọn. Có thể áp dụng bài toán này khi cần phân công công việc cho các máy, phân chia các hợp đồng cho từng bộ phận, phân công người bán hàng ở các cửa hàng ...
Thuật toán giải được trình bày qua ví dụ sau:
Ví dụ: Có 3 công việc R-34, S-66, T-50 và có 3 máy A, B, C. Chi phí có công việc thực hiện trên các máy cho như bảng sau. Tìm phương án bố trí các công việc trên các máy sao cho tổng chi phí là nhỏ nhất.
Giải
Bước 1. Chọn trong mỗi hàng 1 số min, lấy các số 1, hàng trừ đi số min đó.
Bước 2. Chọn trong mỗi cột 1 số min, lấy các số trong cột trừ đi số min đó.
Bước 3. Chọn hàng nào có 1 số 0, khoanh tròn số 0 đó, kẻ đường thẳng xuyên suốt cột.
Chọn cột nào có 1 số 0 khoanh tròn số 0 đó, kẻ đường thẳng xuyên suốt hàng.
Nếu số số 0 khoanh tròn = Số đáp án cần tìm thì bài toán đã giải xong.
2. Nếu số số 0 khoanh tròn chưa bằng số đáp án cần tìm ta phải thực hiện tiếp bước 4.
Trong ví dụ này sau khi thực hiện bước 3 ta mới có 2 số 0 khoanh tròn chưa bằng số đáp án cần tìm do đó ta phải làm bước 4.
Bước 4. Ta tạo thêm số 0 bằng cách:
Chọn trong các số không nằm trên các đường thẳng 1 số min lấy các số không nằm trên các đường thẳng trừ đi số min đó.
Lấy số min đó cộng vào các số nằm trên giao điểm của các đường thẳng. Sau đó ta lại bố trí công việc như đã trình bày ở bước 3 cứ tiếp tục như vậy cho đến khi nào số 0 khoanh tròn bằng số đáp án cần tìm thì bài toán với giải xong.
Các công việc sẽ được bố trí vào các ô có số 0 khoanh tròn. Như vậy chúng ta sẽ có tổng thời gian thực hiện hoặc tổng chi phí thực hiện các công việc là tối thiểu.
Trong ví dụ này sau khi thực hiện bước 4 ta bố trí các công việc như đã trình bày ở bước 3.
Công việc R-34 sẽ bố trí vào máy C với chi phí: 6 USD Công việc S-66 sẽ bố trí vào máy B với chi phí: 10 USD Công việc T-50 sẽ bố trí vào máy A với chi phí: 9 USD
Tổng chi phí thực hiện các công việc: 6 + 10 + 9 = 25 USD là tối thiểu.
Bài toán phân công công việc trên các máy đã nêu lên được đặt ra với mục tiêu giảm tối thiểu tổng chi phí hoặc giảm tối thiểu tổng thời gian thực hiện các công việc.
Nếu cùng bài toán phân công công việc trên các máy được đặt ra với 2 mục tiêu:
1. Tổng chi phí hoặc tống thời gian thực hiện các công viên là tối thiểu.
2. 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 đã định nào đó, thay vào số hạng loại bỏ một dấu chéo rồi giải bình thường theo trình tự như đã trình bày ở trên. Ta xét ví dụ sau đây để cụ thể hóa cho trường hợp nói trên.
Ví dụ: Tại một phân xưởng có 4 công việc A, B, C, D có thể bố trí trên các máy I, II, IV với thời gian thực hiện các công việc được cho theo bảng sau:
a) Hãy bố trí các công việc vào các máy sao cho tổng thời gian thực hiện chúng là tối thiểu.
b) Hãy bố trí các công việc vào các máy sao cho tổng thời gian thực hiện chúng là tối thiểu và thời gian thực hiện các công việc không vượt quá 110 giờ.
Giải
a) Nếu chỉ nhằm 1 mục tiêu là tổng thời gian thực hiện các công việc tối thiểu, theo trình tự nêu trên ta bố trí như sau:
Công việc A vào máy III: 110 giờ Công việc B vào máy :; 40 giờ Công việc C vào máy IV: 45 giờ Công việc D vào máy II: 30 giờ
Tổng thời gian thực hiện các công việc tối thiểu là: 225 giờ.
b) Nếu bài toán nhằm đạt 2 mục tiêu tổng thời gian thực hiện các công việc là tối thiểu và các công việc không thực hiện với thời gian bằng và vượt quá 110 giờ, ta sẽ tiến hành như sau:
- Bước 1: Loại bỏ các số hạng > 110 giờ, thay vào vị trí đó 1 dấu chéo X
Bước 2: Chọn trong mỗi hàng 1 số min lấy các số trong hàng | trừ số min đó
Bước 3: Chọn trong mỗi cột 1 số min, lấy các số trong cột trừ số min đó
Bước 4: Bố trí công việc vào các ô số 0 duy nhất của hàng và số 0 duy nhất của cột.
Bước 5: Số số 0 được khoanh tròn chưa bằng số đáp án cần tìm do đó ta chọn trong các số không nằm trên các đường thẳng 1 số min lấy các số không nằm trên đường thẳng trừ đi số min đó, lấy số min cộng vào các số nằm trên giao điểm của các đường thẳng.
Bước 6: Bố trí các công việc vào các ô có số 0 duy nhất của hàng và duy nhất của cột. Bước 7: Số số 0 được khoanh tròn chưa bằng số đáp án cần tìm nên ta phải tạo thêm số 0 như đã làm ở bước 5, rồi tiếp tục như bước 6 ta có số số 0 khoanh tròn đã bằng số đáp án cần tìm và bài toán đã giải xong.
Ta có kết quả như sau:
Công việc A bố trí vào máy II: 100 giờ Công việc B bố trí vào máy I: 40 giờ Công việc C bố trí vào máy IV: 45 giờ Công việc D bố trí vào máy III: 50 giờ
Tổng thời gian thực hiện các công việc là 235 giờ và tất cả các công việc đều thực hiện với số giờ < 110 giờ.