c. Sản xuất theo dự án: (Open shop)
3.3.2. Thuật toán lập kế hoạch đẩy:
Khái niệm lập kế hoạch đẩy hoặc lập kế hoạch chuyển tiếp có nghĩa là phân công công việc theo số lượng đặt hàng và thúc đẩy các sản phẩm từ ngày làm việc cụ thể về các trạm làm việc cụ thể, sản phẩm được chuyển từ công việc của trạm
đầu tiên đi qua các quá trình khác nhau cho đến khi máy trạm cuối cùng, nơi sản phẩm đã sẵn sàng để cung cấp khách hàng [15]. Hình 3.5 cho thấy một ví dụ về khái niệm đẩy của sản phẩm trong một dây chuyền của công ty sản xuất dược phẩm BV Pharma.
Hình 3.6. Mô hình lập lịch đẩy trong dây chuyền sản xuất
Dựa trên cơ sở phân công công việc theo thuật toán Job-shop ở trên, lập kế
hoạch đẩy sẽ tính toán thời gian cho các sản phẩm được xử lý một cách hợp lý để có thể sản xuất sản phẩm càng nhanh càng tốt từ máy trạm này đến máy trạm khác. Các bước triển khai thuật toán lập lịch trình đẩy như sau:
− Bước 1: Chuẩn bị nguyên liệu
− Bước 2: Bắt đầu công việc đầu tiên tại trạm làm việc đầu tiên: (j = 1, i = 1)
− Bước 3: Thiết lập máy trạm làm việc thứ hai: cài đặt máy (i = 2)
− Bước 4: Tiến hành công việc j = 1 máy trạm thứ hai (i = 2) Xử lý bắt đầu (Bắt đầu trên một ngày và thời gian cụ thể) Xử lý kết thúc (Đúng ngày hoặc quá ngày giao
hàng) Trạm làm việc 6: ( Đóng gói) Trạm làm việc 1: (Chuẩn bị) Trạm làm việc 2: ( Pha chế) Trạm làm việc 3: ( Dập viên) Trạm làm việc 4: ( Bao phim) Trạm làm việc 5: ( Ép gói hay vô
− Bước 5: Thiết lập máy trạm làm việc thứ ba: máy (i = 3)
− Bước 6: Tiến hành công việc j = 1 trạm làm việc thứ ba (i = 3)
− Bước 7: Thiết lập máy máy trạm thứ tư: cài đặt máy (i = 4)
− Bước 8: Tiếp tục công việc j = 1 ra máy trạm (i= 4)
− Bước 9: Thiết lập máy trạm làm việc thứ năm: cài đặt máy (i = 5)
− Bước 10: Tiếp tục công việc j = 1 tại trạm làm việc thứ năm (i = 5)
− Bước 11: Thiết lập máy máy trạm sáu: thiết lập máy (i = 6)
− Bước 12: Tiếp tục công việc j = 1 tại trạm làm việc sáu (i = 6) Một số ký hiệu trong giải thuật:
− i thể hiện cho các trung tâm hay máy trạm.
− j số công việc ở trung tâm hay máy trạm.
Giải thuật:
Start (i.j) = Thời điểm bắt đầu của số lượng công việc thứ j tại trạm làm việc thứ i
Stop (i,j)= Thời gian hoàn thành số lượng công việc thứ j tại trạm làm việc thứ i Process (i,j) = Thời gian xử lý số lượng công việc thứ j tại trạm làm việc thứ i Waiting (i) = Thời gian để chờ quá trình tại trạm làm việc thứ i
Setup (i) = Thiết lập thời gian tại trạm làm việc thứ i Thời gian bắt đầu:
Start (i, j) = (1, 1)
/* Ngày làm việc đầu tiên của tháng hoặc đầu vào bất kỳ ngày nào của kế
hoạch (Chỉ dành cho (i, j) =(1,1)): có nghĩa là công việc bắt đầu tại trạm 1 và công việc 1 */
Start (i, j) = Max [Stop (i, j-1) + Setup (i)]
/* Thời gian bắt đầu bằng thời gian dừng của công việc trước đây tại các máy trạm tương tự cộng với thời gian cài đặt máy trạm làm việc tiếp theo*/
Start( i , j ) =Max[Start (i-1,j)+ Setup(i) + Waiting(i)]
/* Thời gian bắt đầu bằng thời gian để bắt đầu tại máy trạm trước đó, nhưng cùng một công việc cộng với thời gian cài đặt các máy trạm làm việc hiện hành và thời gian trờ trạm làm việc. */
Hình 3.7. Mô hình xử lý n công việc trên m máy trạm theo thuật toán đẩy
Start( i , j ) =Max[Stop (i-1,j)+ Waiting – Process( i , j )]
/* Thời gian bắt đầu bằng thời gian dừng tại trạm làm việc trước đó, nhưng tương tự một công việc cộng với thời gian chờ các máy trạm trừ tổng thời gian quy trình cần thiết xử lý thành phẩm tại các máy trạm hiện tại. */ Thời gian dừng:
Stop( i , j ) =Start (i,j)+Process (i,j)
/* Thời gian dừng bằng thời gian bắt đầu của một sản phẩm cộng với thời gian quy trình xử lý công việc đó.*/
Cài đặt tại máy trạm 1 (chuẩn bị)
Bắt đầu công việc đầu tiên (j = 1) tại máy trạm đầu tiên (i = 1)
Tiếp theo là j = 2, j = 3, j = 4, j = 5, j = 6
Cài đặt tại máy trạm 2 (pha chế)
Bắt đầu công việc đầu tiên (j = 1) tại máy trạm 2 (i = 2)
Thời gian chờ cần thiết để vệ sinh máy Tiếp theo là j = 2, j = 3, j = 4, j = 5, j = 6
Cài đặt tại máy trạm 3 (dập viên)
Bắt đầu công việc đầu tiên (j = 1) tại máy trạm 3 (i = 3)
Thời gian chờ cần thiết để vệ sinh máy Tiếp theo là j = 2, j = 3, j = 4, j = 5, j = 6
Cài đặt tại máy trạm 4 (bao phim)
Bắt đầu công việc đầu tiên (j = 1) tại máy trạm 4 (i = 4)
Thời gian chờ cần thiết để vệ sinh máy Tiếp theo là j = 2, j = 3, j = 4, j = 5, j = 6
Cài đặt tại máy trạm 5 (ép gói hay vô chai) Bắt đầu công việc đầu tiên (j = 1) tại máy trạm 5 (i = 5)
Thời gian chờ cần thiết để vệ sinh máy Tiếp theo là j = 2, j = 3, j = 4, j = 5, j = 6
Cài đặt tại máy trạm 6 (đóng gói)
Bắt đầu công việc đầu tiên (j = 1) tại máy trạm 6 (i = 6)
Thời gian chờ cần thiết để vệ sinh máy Tiếp theo là j = 2, j = 3, j = 4, j = 5, j = 6 Bắt đầu
3.3.3. Thuật toán tối ưu hóa thuộc địa đàn kiến (Ant Colony Optimization):
Trên cơ sở đã tạo ra được một tiến trình mặc định của sự kết hợp giữa hai thuật toán Job-shop và thuật toán đẩy kế hoạch (push), sử dụng thuật toán ACO[19],[20] để tìm ra những tiến trình tối ưu nhất có thể thực hiện cho việc sản xuất.
Các bước để triển khai thuật toán như sau:
− Bước 1: Phân công tổng số các công việc được thực hiện (căn cứ vào sản phẩm, quy tắc nhị phân = n!)
− Bước 2: Tạo ra các cơ sở giải pháp có thể về số lượng của sản phẩm được sắp xếp
− Bước 3: Phân công các con kiến đi du lịch để tạo ra tất cả các giải pháp có thể
− Bước 4: Thu thập tất cả các kết quả của các con kiến được giao đi du lịch
− Bước 5: Đánh giá kết quả thu thập thông qua các tổng thời gian xử lý ngắn nhất (SPT - shortest processing time )
− Bước 6: Sắp xếp lại các giải pháp theo các ưu tiên và chọn các con đường tốt nhất trên các tiêu chí thiết lập đàn kiến
− Bước 7: Tập trung vào nhóm tốt nhất của giải pháp và nhận diện con
đường đi du lịch cuối cùng được sử dụng
− Bước 8: Giải pháp tốt nhất là xem xét các pheromone cao nhất, và nó là con đường ngắn nhất đi du lịch so với các tuyến đường khác.
Một số ký hiệu trong giải thuật:
− k = kiến
− t = thời gian di chuyển (thời gian xử lý)
− T = tuyến đường di chuyển (trình tự sản xuất) Giải thuật:
// Xác định các giải pháp có thể
Số lượng kiến có thểđược sử dụng = n! (Cơ sở số lượng sản phẩm) // Tìm kiếm các tuyến đường có thể tạo ra việc trình tự các sản phẩm Ngẫu nhiên trình tự ( Rnd Seq)
Nếu Rnd Seq <> Rnd Seq-1 thì tiến hành xử lý Tạo ra giải pháp và tuyến đường seq sản phẩm Ngược lại thiết lập lại Rnd Seq
//Tạo ra các giải pháp có thể
Đặt từng con kiến trên một chuỗi sản phẩm ngẫu nhiên (hoán vị);
for k := 1 to m { khởi tạo danh sách ứng cử viên k để nối các thành phố c gần nhất của k ;}
for t := 1 to t_max {
for k := 1 to số kiến {
until (con đường T (k, t) cho kiến k hoàn tất) {
Nếu có ít nhất một sản phẩm của tuyến đường ghé thăm thường xuyên trong danh sách ứng cử viên k thì
Chọn con đường tiếp theo trong số các ứng cử viên bằng cách áp dụng các quy tắc chuyển đổi xác suất;
Ngược lại chọn con đường tiếp theo như là tuyến đường được ghé thăm;
Thực hiện cập nhật con đường địa phương; }
Tùy chọn: cải thiện tại địa phương để di chuyển theo tuyến đường T (k, t); }
Nếu (tốt nhất của T (k, t) tốt hơn so với giải pháp hiện tại ) cập nhật giải pháp hiện tại T (k, t);
for mỗi cạnh các giải pháp hiện tại {
Áp dụng cập nhật đường mòn cho toàn bộ tổ kiến; }
Hình 3.8. Mô hình tối ưu hóa thuộc địa đàn kiến Bắt đầu Xác định tổng cộng sản phẩm để lập lịch (quy tắc nhị phân = n!) Sự hoán vị các giải pháp có thể có từ n sản phẩm Tạo ra tất cả các giải pháp có thể từ giai đoạn đầu của kết quả hoán vị Bố trí các giải pháp được tạo ra theo thời gian xử lý ngắn nhất quy luật (SPT) Lưu trữ dữ liệu trong cơ sở dữ liệu Sai Lựa chọn và đánh giá các nhóm tốt nhất của giải pháp Xác định giải pháp tốt nhất cuối cùng và triển khai vào hệ thống Kết thúc Đúng