Lập lịch trình sản xuất phải đảm bảo cho các công việc được thực hiện mộtcách hiệu quả, với các yêu cầu: - Đáp ứng thời gian giao hàng cho khách hàng - Giảm thiểu việc trễ hạn - Giảm thi
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
BÀI THU HOẠCH THUẬT TOÁN
Trang 2
MỤC LỤC
Trang 3Lời mở đầu trang 4Vấn đề lập lịch trình sản xuất trang 5
I Đặt vấn đề trang 5
II Xây dựng giải pháp trang 6
1 Mô hình hóa vấn đề trang 61.1 Vấn đề thực tế và vấn đề cần giải quyết trang 61.2 Xây dựng mô hình trang 8
2 Thiết kế thuật giải trang 11II.1 Lựa chọn phương pháp trang 11II.2 Ý tưởng cho thuật giải trang 12II.3 Mô tả cụ thể trang 18II.4 Thuật giải trang 19
3 Chứng minh tính hiệu quả trang 27
4 Kiểm chứng thực nghiệm trang 27
5 Những tồn tại và hướng cải tiến trang 29III Kết luận trang 30Tài liệu tham khảo trang 31
Trang 4LỜI MỞ ĐẦU
Trong cuộc sống, con người luôn gặp phải những vấn đề, những khó khăn, nhữngvướng mắc cần phải giải quyết Đôi khi những vấn đề ấy khá đơn giản và có thể giảiquyết một cách dễ dàng Nhưng vẫn tồn tại những vấn đề vô cùng phức tạp, muốn giảiquyết được con người phải bỏ ra rất nhiều công sức và nguồn lực Với sự tiến bộ khoahọc, kỹ thuật đặc biệt là trong khoa học máy tính, đã mang lại cho con người rất nhiềucông cụ, ứng dụng hữu ích Những công cụ ấy giúp con người giải quyết được rất nhiềuvấn đề từ đơn giản đến phức tạp, từ nhỏ đến lớn
Tuy nhiên, vẫn còn nhiều vấn đề vô cùng phức tạp từ cuộc sống đang thách thứccác nhà khoa học máy tính tìm tòi, nghiên cứu các phương pháp mới, thuật toán mới,thuật giải mới, để giải quyết chúng
Trang 5VẤN ĐỀ LẬP LỊCH TRÌNH SẢN XUẤT
I Đặt vấn đề
Tại một công ty sản xuất hàng may mặc, có nhiều phân xưởng sản xuất vàmỗi phân xưởng đảm nhiệm một vai trò nhất định trong quá trình sản xuất rathành phẩm Trong đó có thể chia ra hai bộ phận chính:
- Cắt: từ bảng thiết kế một mặt hàng và nguyên vật liệu sẳn có, các công
nhân sẽ cắt nguyên vật liệu ra thành những phần khác nhau của mặthàng, tạo ra những bán thành phẩm chờ thực hiện tiếp ở bước tiếp theo
- Ráp: từ những bán thành phẩm (bộ phận đã được cắt), các công nhân
may chúng lại với nhau để được một thành phẩm hoàn chỉnh chờ kiểmnghiệm và giao cho khách hàng
Ngoài ra còn những bộ phận khác như: thu mua nguyên vật liệu, kiểm trachất lượng thành phẩm, tính toán giá thành thành phẩm, kinh doanh,…
Vấn đề được đặt ra ở đây là làm sao tối ưu quá trình sản xuất, giảm thiểuchi phí, tăng năng suất sản xuất để kinh doanh đạt hiệu quả và thu được lợinhuận cao
Đòi hỏi nhà quản trị, điều hành phải biết sắp xếp lịch trình sản xuất mộtcách khoa học, hợp lý và chặt chẽ
Lập lịch trình sản xuất phải đảm bảo cho các công việc được thực hiện mộtcách hiệu quả, với các yêu cầu:
- Đáp ứng thời gian giao hàng cho khách hàng
- Giảm thiểu việc trễ hạn
- Giảm thiểu thời gian rỗi của các phân xưởng
- Giảm thiểu nguyên vật liệu tồn kho dở dang, chỉ thu mua nguyên vật
liệu khi cần, và không xảy ra tình trạng thiếu nguyên vật liệu
- Tăng cường năng suất lao động của công nhân hoặc máy móc
- Giảm thiểu thời gian hoàn thành một đơn hàng
Cần phải có một hệ thống lập lịch trình sản xuất nhằm mục tiêu điều hành
và nâng cao hiệu quả sản xuất, cũng như có phương án tối ưu cho việc thumua nguyên vật liệu, lập kế hoạch giao hàng cho khách hàng
Trang 6II Xây dựng giải pháp
1 Mô hình hóa vấn đề
1.1 Vấn đề thực tế và vấn đề cần giải quyết
a Khảo xác và thu thập dữ liệu, thông tin và tri thức
- Lấy thông tin các phân xưởng sản xuất và chức năng của các
phân xưởng đó (cắt hay ráp)
- Lấy thông tin năng suất làm việc của mỗi phân xưởng, mỗi ngày
làm ra được bao nhiêu thành phẩm, bán thành phẩm,… kể cảthông tin số lượng thành phẩm lỗi, không sử dụng được,…
- Lấy thông tin các đơn hàng (số lượng mặt hàng, thời gian giao
hàng,…)
- Lấy thông tin các ca làm việc chính thức và tăng ca, thời gian
tăng ca tối đa
b Chọn lọc, chuẩn hóa, xác định cơ sở cho dữ liệu, thông tin và tri thức
- Phân xưởng: loại phân xưởng, năng suất sản xuất
- Đơn hàng: số lượng mặt hàng, hạn giao hàng
c Phạm vi, giới hạn
- Lập ra lịch trình sản xuất, tối ưu vấn đề phân bổ thời gian làm
việc cho các phân xưởng, đáp ứng tiến độ giao hàng
- Có thể chậm trễ tiến độ giao hàng nhưng phải tối ưu nhất (thời
gian chậm trễ là thấp nhất)
- Đề xuất được phương án tăng ca trong giới hạn cho phép để đẩy
nhanh tiến độ khi cần thiết
- Chỉ lập lịch sản xuất, tăng ca, không lập lịch thu mua nguyên vật
liệu, lịch giao hàng, lịch kiểm tra thành phẩm,…
d Giả thiết của vấn đề
- Thời gian sản xuất một mặt hàng là như nhau
- Năng suất sản xuất của một phân xưởng là cố định
Trang 7- Bỏ qua các thành phẩm lỗi, xem như đã tính toán vào năng suất
cố định cho mỗi phân xưởng, được tính theo công thức:
Năng suất = số lượng sản xuất thực tế - số lượng lỗi
- Thời gian giao hàng được tính ra trước (ngày thứ bao nhiêu kể từ
lúc bắt đầu lịch trình), được tính theo công thức:
Thời gian giao = ngày dự kiến giao – ngày bắt đầu lịch trình
- Ngày bắt đầu lịch trình luôn là ngày thứ hai của tuần
- Số đơn hàng là cố định từ lúc bắt đầu đến lúc kết thúc lịch trình
- Một tuần làm việc 6 ngày, mỗi ngày làm 8 giờ ứng với 100%
năng suất làm việc, được chia làm 2 ca (sáng và chiều) mỗi ca là50% năng suất
- Thời gian tối thiếu giao bán thành phẩm sau khi cắt là 1 ca
e Mục tiêu của vấn đề
Đề xuất một hoặc một vài lịch trình sản xuất đáp ứng mục tiêu tối ưuquá trình sản xuất, đúng tiến độ giao hàng
f Các ràng buộc
- Để hoàn thành sản phẩm phải trải qua hai công đoạn là cắt và ráp.
Công đoạn cắt phải được thực hiện trước, sau đó mới thực hiệncông đoạn ráp Ví dụ: sản xuất 100 thành phẩm cần phải cắt 100bán thành phẩm sau đó ráp 100 bán thành phẩm đó lại
- Nếu có tăng ca thì tại mỗi phân xưởng, mỗi ngày tăng ca không
quá 2 giờ (25% năng xuất làm việc) và một tuần không quá 4 lầntăng ca
- Tất cả các phân xưởng điều phải làm việc, nếu có trống thì không
được vượt quá 4 giờ/ngày (1 ca)
- Tổng dòng thời gian hoàn thành tất cả đơn hàng là nhỏ nhất có
Trang 8Tổng thời gian tăng ca = sum(thời gian tăng ca của tất cả
phân xưởng)
- Tổng thời gian trống là thấp nhất có thể
Thời gian trống (trên mỗi ca, chỉ tính trên ca chính) = (năng
suất – số lượng phân công) / 4 (giờ)
Tổng thời gian trống = sum(thời gian trống) (giờ)
- Tổng thời gian trễ hạn giao hàng trên từng đơn hàng là thấp nhất
có thểNếu ngày hoàn thành đơn hàng > hạn giao hàng
Thời gian trễ hạn = ngày hoàn thành đơn hàng – hạn giao
hàng (ngày)
Nếu ngày hoàn thành đơn hàng <= hạn giao hàng
Thời gian trễ hạn = 0 (ngày)
Tổng thời gian trễ hạn = sum(thời gian trễ hạn trên từng đơn
hàng) (ngày)
1.2 Xây dựng mô hình
a Mô hình cho dữ liệu, thông tin và tri thức: Được mô hình hóa
dưới dạng các đối tượng
- Phân xưởng: Mã phân xưởng, Loại phân xưởng, Năng suất
Mã phân xưởng: duy nhất cho một phân xưởng
Loại phân xưởng: phân theo chức năng của phân xưởng, đượcquy định: 0 phân xưởng cắt; 1 phân xưởng ráp
- Đơn hàng: Mã đơn hàng, Số lượng, Hạn giao hàng
Mã đơn hàng: mã đơn hàng duy nhất cho mỗi đơn hàng
Số lượng: số lượng hàng hóa đã đặt
Hạn giao hàng: thời hạn hàng hóa phải giao đủ số lượng
Trang 9b Mô hình cho giả thiết
- Input: danh sách phân xưởng, danh sách đơn hàng
Bảng 1.2.1: Mô hình danh sách phân xưởng
Mã phân xưởng Loại phân xưởng Năng suất
c Mô hình cho mục tiêu
- Lịch trình: Ngày, Phân xưởng, Ca, Đơn hàng, Số lượng
Ngày: ngày làm việc bắt đầu từ ngày bắt đầu lịch trình, ngàybắt đầu lịch trình là ngày 1
Phân xưởng: mã phân xưởng được phân công
Ca: 1, 2 hoặc 3 (Ca 1: buổi sáng, Ca 2: buổi chiều, Ca 3: tăngca)
Đơn hàng: mã đơn hàng sẽ sản xuất trong 1 ca của một phânxưởng
Số lượng: số lượng sẽ sản xuất trong 1 ca của 1 phân xưởng
Bảng 1.2.3: Mô hình lịch trình sản xuất
Trang 10d Mô hình cho điều kiện và các ràng buộc
- Thiết lập một danh sách tạm để kiểm tra các điều kiện ràng buộc
cho mỗi phân xưởng trong 1 ngày, bằng cách gán số lượng tối đa
có thể sản xuất của phân xưởng đó – năng suất tối đa:
Năng suất tối đa: Mã phân xưởng, Số lượng ca chính (ca 1,
ca 2), Số lượng tăng ca
Bảng 1.2.4: Mô hình danh sách năng suất tối đa Phân xưởng Số lượng
Ca 1
Số lượng
Ca 2
Số lượng tăng ca
- Thiết lập danh sách số lần tăng ca cho mỗi phân xưởng để kiểm
tra số lần tăng ca tối đa trong tuần, 1 tuần được xác định trongkhung 7 ngày kể từ ngày bắt đầu lịch trình được tính bằng côngthức:
Tuần thứ = ngày / 7 (chia lấy phần nguyên)
Bảng 1.2.5: Mô hình danh sách số lần tăng ca trong tuần
Phân xưởng Số lần tăng ca còn lại
Trang 11PX4 4Khi có tăng ca cho 1 phân xưởng thì giảm số lần tăng ca cònlại xuống một, nếu không còn lần tăng ca nào thì không chophép tăng ca trong tuần đó, của phân xưởng đó.
Sau khi kết thúc một tuần thì số lần tăng ca còn lại được trả về
số lần tăng ca tối đa
2 Thiết kế thuật giải
2.1 Lựa chọn phương pháp
- Quy trình sản xuất gồm hai công đoạn là cắt và ráp, trong đó ráp
phải thực hiện khi công đoạn cắt đã hoàn thành Có thể thấy côngđoạn cắt phải kế thừa từ kết quả đã hoàn thành từ công đoạn cắt
Vì thế ta có thể tách hai công đoạn ra riêng biệt để xử lý
- Trước tiên là hoàn thành lịch trình cho công đoạn cắt sao cho
thỏa các điều kiện, ràng buộc
- Sau đó dựa vào kết quả đã đạt được ở công đoạn cắt phân lịch
trình cho công đoạn ráp
- Tổng thời gian sản xuất sẽ là thời gian kết thúc công đoạn ráp
cuối cùng trong lịch trình Và thời gian giao hàng cho mỗi đơnhàng là thời gian hoàn thành công đoạn ráp cuối cùng cho mặthàng cuối cùng của một đơn hàng
- Có nhiều phương pháp có thể sử dụng để giải quyết vấn đề lập
lịch này Từ vét cạn đến các phương pháp heuristic Có mộtphương pháp khá đơn giản để giải quyết vấn đề này là dựa vàonguyên lý xếp thứ tự
- Ta có thể chọn phương pháp xếp thứ tự để giải quyết lịch trình
cho tất cả phân xưởng cắt Sau khi có được kết quả, ta sử dụngkết quả đó để sắp xếp lịch trình cho các phân xưởng ráp
2.2 Ý tưởng cho thuật giải
- Từ dữ liệu đầu vào ta lọc lấy những phân xưởng cắt (có loại phân xưởng là “0”) Hình thành một lịch trình theo các nguyên tắc sắp
xếp thứ tự:
Trang 12 Đặt hàng trước làm trước (First come, first served - FCFS)
Giao hàng trước làm trước (Earliest Due Date - EDD)
Thời gian thực hiện ngắn nhất (số lượng ít nhất) làm trước
(Shortest Processing Time - SPT)
Thời gian dài nhất (số lượng nhiều nhất) làm trước (Longest
Processing Time - LPT)
- Ví dụ một dữ liệu đơn giản gồm 1 phân xưởng cắt, 1 phân xưởng
ráp năng suất cả hai phân xưởng bằng nhau là 200 sản phẩm mỗingày (mỗi ca 100 sản phẩm), công ty làm việc cả 7 ngày trongtuần và các đơn hàng như bảng sau:
- Sắp xếp theo nguyên tắc: thực hiện theo thứ tự các đơn hàng
- Theo thứ tự này ta lần lượt thực hiện các đơn hàng: 1, 2, 3, 4,
5, 6
- Kết quả sắp sếp như sau:
Bảng 2.2.2: Kết quả sắp xếp FCFS Đơn hàng Số ca
Trang 13(ca) Thời hạn(ngày) Hoàn thành(ngày thứ) Số ngày trễ(ngày)
- Sắp xếp theo nguyên tắc: đơn hàng nào ít sẽ ưu tiên làm trước
- Theo thứ tự này ta lần lượt thực hiện các đơn hàng: 3, 2, 5, 1,
4, 6
- Kết quả sắp xếp như sau:
Bảng 2.2.4: Kết quả sắp xếp SPT Đơn hàng Số ca
Trang 14- Theo thứ tự này ta lần lượt thực hiện các đơn hàng: 6, 4, 1, 5,
2, 3
- Kết quả sắp xếp như sau:
Bảng 2.2.5: Kết quả sắp xếp LPT Đơn hàng Số ca
(ca) Thời hạn(ngày) Hoàn thành(ngày thứ) Số ngày trễ(ngày)
- Từ 4 kết quả sắp xếp ta so sánh các chỉ số tổng dòng thời gian và
tổng thời gian trễ hạn để tìm ra phương án tối ưu nhất cho thuậtgiải
Bảng 2.2.6: Bảng so sánh mức độ tối ưu Loại sắp xếp Tổng dòng thời gian Tổng thời gian trễ
- Ta dễ dàng nhận thấy kết quả sắp xếp theo LPT là không khả thi
vì tổng dòng thời gian và tổng thời gian trễ hạn rất cao
- Nếu sắp xếp theo FCFS thì cũng chưa được tối ưu vì tổng thời
gian trễ hạn và tổng dòng thời gian vẫn còn cao hơn 2 thứ tự cònlại
- Sắp xếp theo EDD có tổng thời gian trễ là thấp nhất
- Sắp xếp theo SPT có tổng dòng thời gian là thấp nhất
- Tuy nhiên nếu xét cả hai chi số bằng cách tổng lại thì EDD tối ưu
hơn: EDD (86+8=94), SPT (80+15=95)
- Mặc khác mục tiêu đảm bảo thời hạn giao hàng cho khách hàng
được đặt lên hàng đầu
Trang 15- Do đó phương pháp sắp xếp tối ưu nhất ta chọn là sắp xếp theo
EDD (Earliest Due Date) – đơn hàng nào có hạn giao sớm hơnthực hiện trước
- Bên trên là trường hợp chỉ có một phân xưởng Nếu phân cho
nhiều phân xưởng thì ta lần lượt phân từng đơn hàng cho từngphân xưởng, trên từng ca Nếu đơn hàng đã hết số lượng mà vẫncòn phân xưởng chưa được phân thì ta lấy đơn hàng tiếp theo đểphân Nếu phân hết cho các phân xưởng mà số lượng trong đơnhàng vẫn còn thì ta tiếp tục phân cho ngày hôm sau
- Cũng với ví dụ trên nhưng giả sử ta có hai phân xưởng có cùng
năng suất sản xuất là 100 sản phẩm mỗi ca,sử dụng phương phápsắp xếp EDD, ta có bảng lịch trình như sau:
Bảng 2.2.6: Bảng lịch trình sản xuất cho 2 phân xưởng cắt
- Sau khi có kết quả lịch trình cho các phân xưởng cắt, ta dựa vào
đó để phân cho các phân xưởng ráp, lịch trình của phân xưởngráp sẽ bắt đầu chậm hơn các phân xưởng cắt ít nhất 1 ca làm việc
Trang 16- Kết quả phân cho 2 phân xưởng ráp có năng suất sản xuất mỗi ca
100 sản phẩm theo ví dụ trên và có lịch trình như bảng 2.2.6 như
- Kết quả theo thời hạn giao hàng như sau:
Bảng 2.2.8: Bảng kết quả thời hạn giao hàng
Trang 17- Phân công lịch trình cho các phân xưởng cắt bằng cách phân số
lượng của từng đơn hàng theo thứ tự đã sắp xếp và các phânxưởng theo năng suất sản xuất trên từng ca, hết ca 1 đến ca 2cũng tương tự như vậy, và hết ca 2 thì sang ca 1 ngày tiếp theo,…đến khi nào hết đơn hàng thì thôi
- Phân công lịch trình cho các phân xưởng rắp bằng cách lấy tổng
số lượng bán thành phẩm được tạo ra ở ca trước đó của các phânxưởng ráp theo từng đơn hàng và phân cho các phân xưởng ráptheo nguyên tắc tương tự như các phân xưởng cắt, nếu hết sốlượng bán thành phẩm thì thực hiện lại việc phân lịch trình cho catiếp theo, nếu số lượng bán thành phẩm vẫn còn thì dồn vào catiếp theo để phân và ưu tiên phân những bán thành phẩm cònthừa từ ca trước đó trước
- Thực hiện tăng ca: khi phân lịch trình ta tính toán trước thời gian
thực hiện bằng cách chia tổng số sản phẩm của đơn hàng cho tổng năng suất sản xuất trên ngày của tất cả các phân xưởng
Trang 18thuộc loại đang xử lý Nếu kết quả nhận được (số ngày) trong hạngiao hàng thì không cần tăng ca Nếu kết quả nhận được vượt quáhạn giao hàng thì cho tăng ca theo các điều kiện và ràng buộc đãđưa ra.
- Tập hợp dữ liệu lịch trình và xuất kết quả.
2.4 Thuật giải
a Bằng mã giả
DSPX: danh sách phân xưởngDSDH: danh sách đơn hàngInput: DSPX, DSDH
Output: LTSX (lịch trình sản xuất cho tất cả các phân xưởng)
Bước 1:
Sắp xếp thứ tự DSDH theo nguyên tắc EDD;
Tách DSPX thành:
DSPX1 (chứa các phân xưởng cắt, loại phân xưởng = “0”);
DSPX2 (chứa các phân xưởng ráp, loại phân xưởng = “1”);Khởi tạo DSNS (danh sách năng xuất) ghi nhận năng suất tối đacủa tất cả các phân xưởng ở ca chính và tăng ca;
Khởi tạo DSTC (danh sách tăng ca) gán giá trị ở thuộc tính số lần tăng ca còn lại là 4;
Trang 19Thực hiệnNếu số lượng của DHXL / TNX > hạn giao của DHXL –NXL
Thì TC = true; Kết thúcLặp khi số lượng của DHXL > 0Thực hiện
Tăng NXL lên 1;
Khôi phục là DSNS trở về ban đầu
Nếu NXL % 7 = 0 (chủ nhật) thì tăng NXL lên
1Kết thúcKết thúc
Trang 20Ngược lạiThêm LTSX (NXL, CaXL, DSPX1 thứ i, số lượng củaDHXL);
Giảm năng xuất ca CaXL của PXXL xuống số lượngcủa DHXL
Số lượng DHXL = 0;
Kết thúcKết thúc lặpKết thúc lặp
DSPC = LTSX1 theo NXL và CaXL, nhóm theo DSDH;
Lặp khi DSPC khác rỗngThực hiện
Lấy 1 chi tiết (PC) trong DSPC;
Lặp khi số lượng của PC > 0Thực hiện
Nếu số lượng của PC > năng suất DSPX2 thứ iThì
Thêm LTSX(NXL, CaXL, DH của PC, năng suấtcủa DSPX2 thứ i);
Số lượng PC = Số lượng PC - năng suất củaDSPX2 thứ i;
Tăng i lên 1;
Nếu i > số phần tử trong DSPX2