dây chuyền may theo công suất cho trước (GALB-1)
Mô hình bài toán
Bài toán cân bằng dây chuyền may khi cho trước công suất với mục tiêu thứ
nhất tối thiểu hóa số công nhân, mục tiêu thứ hai tối đa hiệu suất cân bằng, kí hiệu là
GALB-1 được mô hình hóa như sau:
* Dữ liệu đầu vào:
Quy trình công nghệ may sản phẩm được gọi là tập NCCN, kí hiệu là Tasks. Công suất dây chuyền P (sản phẩm/ ca) hoặcnhịp dây chuyền R (giây). Thời gian làm việc một ca Tlv (giây). Sai lệch giới hạn nhịp ∆R ∈ {5%R, 10%R, 15%R}. Trình tự công nghệ của NCCN. * Các điều kiện ràng buộc: ∀ 1 ≤ 𝑖 ≤ 𝑗 ≤ 𝑘: 𝑆𝑖 ∩ 𝑆𝑗 = ∅ (3.1) ∀ 1 ≤ 𝑗 ≤ 𝑘: 𝑇𝑗 = ∑𝑖∈𝑆𝑗 𝑡𝑖 (3.2) ∀ 1 ≤ 𝑗 ≤ 𝑘: 𝑇𝑗 ≤ 3(𝑅 + ∆𝑅) (3.3) nj= {12 3 𝑛ế𝑢 𝑇𝑗 ≤ 𝑅 + ∆𝑅 𝑛ế𝑢 𝑅 + ∆𝑅 < 𝑇𝑗 ≤ 2(𝑅 + ∆𝑅) 𝑛ế𝑢 2(𝑅 + ∆𝑅) < 𝑇𝑗 ≤ 3(𝑅 + ∆𝑅) (3.4) 𝑅𝑗 =𝑇𝑛𝑗 𝑗 (3.5) 𝑁 = ∑𝑘𝑗=1𝑛𝑗 (3.6) 𝐻 =𝑘′𝑘 . 100 (%) (3.7)
Trong đó: Si và Sj là NCSX thứi và j, tilà thời gian của NCCNi, Tj là thời gian của NCSX j, njlà số công nhân cần cho NCSX j, R là nhịp của dây chuyền, ΔR là sai lệch giới hạn nhịp, Rj là nhịp riêng của NCSX j, N là tổng số công nhân, H là hiệu suất cân bằng, k’ là số NCSX có nhịp riêng thuộc khoảng giới hạn nhịp dây chuyền,
k là tổng số NCSX.
Điều kiện 3.1 chỉ ra rằng không có NCCN nào thuộc đồng thời cả hai NCSXi
và j, điều kiện 3.2 xác định thời gian của NCSX thứj, điều kiện 3.3 cho thấy thời gian của NCSX không lớn hơn ba lần giới hạn trên của nhịp đểđảm bảo mỗi NCSX không có quá ba công nhân, điều kiện 3.4 đểxác định số công nhân của mỗi NCSX.
* Mục tiêu của bài toán:
Mục tiêu thứ nhất: Tối thiểu hóa số công nhân (minimize N).
75
* Dữ liệu đầu ra:
Kết quả phối hợp NCCN thành NCSX.
Các chỉ số cân bằng dây chuyền: Số công nhân N, hiệu suất cân bằng H tối ưu.
Thuật toán đề xuất
Đểđưa ra câu trả lời cho câu hỏi thuật toán nào phù hợp giải bài toán cân bằng chuyền GALB-1, luận án đã đề xuất giải bài toán theo ba phương pháp: Ứng dụng thuật toán Vét cạn, Luyện kim, kết hợp thuật toán Luyện kim và Tham lam. Chi tiết của từng thuật toán đề xuất được trình bày trong các phần sau.
a) Áp dụng thuật toán Vét cạn (Exhaustive Search) giải bài toán cân bằng dây chuyền may khi cho trước công suất GALB-1
Thuật toán Vét cạn (Ex) dùng để giải bài toán GALB-1 được thiết lập bằng cách
đệ quy. Giả thiết mỗi phương án phối hợp các NCCN thành NCSX là một Tập NCSX có dạng (NCSX1, NCSX2, … NCSXk), các bước thực hiện như sau:
Bước 1. Xét tất cả các NCCN mà NCSX1 có thể nhận được, thử cho NCSX1 nhận lần lượt các NCCN đó. Với lần thử tiến hành kiểm tra:
- Nếu NCSX1 thỏa mãn điều kiện ràng buộc thì chuyển NCSX1 vào Tập NCSX. - Nếu NCSX1 không thỏa mãn điều kiện ràng buộc của bài toán, tiến hành xét tiếp các NCCN còn lại để phối hợp với các NCCN đã có trong NCSX1, thử cho NCSX1 nhận lần lượt các NCCN đó. Với mỗi bước thử lại tiến hành kiểm tra điều kiện ràng buộc, nếu không tìm được NCCN nào thì chuyển NCSX1 vào Tập NCSX.
Với mỗi kết quảtìm được NCSX1 ta sẽ thực hiện:
Bước 2. Xét tất cả các NCCN mà NCSX2 có thể nhận được, thử cho NCSX2 nhận lần lượt các giá trị đó. Với mỗi NCCN thử cho NCSX2 tiến hành kiểm tra các điều kiện ràng buộc của bài toán như bước 1.
Giả sửxét đến NCCNi, quá trình thực hiện bằng cách đệ quy, mỗi trạng thái đệ
quy có dạng (i, j, wst, curSol), trong đó wst là NCSX hiện tại, i là NCCN thứ nhất trong NCSX hiện tại, j là NCCN cuối cùng được thêm vào NCSX hiện tại và curSol
là phương án phối hợp NCCN thành NCSX hiện tại đang được xây dựng.Ở mỗi trạng
thái đệ quy (i, j, wst, curSol), ta thực hiện các bước sau (quy ước là sau khi gọi đệ quy một trạng thái mới, ta phải đặt lại các giá trị wst và curSol về giá trị ban đầu như lúc chưa gọi đệ quy):
* Nếu i > M, tức là chỉ số i của NCCN lớn hơn tổng số NCCN của quy trình công nghệmay, khi đó curSol là một phương án phối hợp NCCN thành NCSX hoàn chỉnh. Nếu phương án hiện tại curSol tốt hơn phương án tốt nhất hiện tại bestSol, thì thay bestSol bằng curSol và kết thúc đệ quy.
* Nếu i ≤ M thì ta có:
- Nếu NCSX hiện tại wstchưa có NCCN nào (wst =∅) thì tìm một NCCN chưa được chia vào bất cứ NCSX nào trước đó để thêm vào wst, ta có:
+ Nếu NCCN iđã được chia vào NCSX, tiến hành đệ quy trạng thái (i+1, j+1,
∅, curSol).
+ Nếu NCCN i chưa được chia vào NCSX nào, thì cho NCCN đó vào NCSX
hiện tại wstvà đệ quy trạng thái (i, j, wst, curSol).
76
+ Nếu NCSX hiện tại wst là một NCSX hợp lệ và không mâu thuẫn về trình tự
thực hiện NCCN với các NCSX có trong curSol, ta cho wst vào curSol và đệ quy trạng thái (i+1, j+1, ∅, curSol).
+ Nếu NCSX hiện tại wst có ít hơn ba NCCN, ta duyệt tất cả các NCCN kchưa được chia đểđưa vào NCSX hiện tại wst. Với mỗi NCCN kchưa được chia, ta thêm NCCN k vào NCSX hiện tại wstvà đệ quy trạng thái (i, k, wst, curSol).
Sau khi tìm được tất cảcác phương án phối hợp NCCN thành NCSX thì tiến
hành tìm phương án có sốlượng công nhân nhỏ nhất. Trong các phương án vừa tìm, tiếp tục so sánh đểxác định phương án có có hiệu suất cân bằng cao nhất. Thuật toán Vét cạn được thiết lập bằng cách đệ quy giải bài toán GALB-1 được minh họa dưới dạng mã giả trong Thuật toán 3.1 sau:
Thuật toán 3.1 Thuật toán Ex giải bài toán GALB-1
Kí hiệu: i: NCCN thứ nhất trong NCSX hiện tại
j: NCCN cuối cùng được thêm vào NCSX hiện tại
wst: NCSX hiện tại
curSol: Phương án phối hợp NCCN thành NCSX hiện tại
bestSol:Phương án phối hợp NCCN thành NCSX tốt nhất 1: Thuật toán Exhaustive (i, j, wst, curSol)
2: if i > Mthen
3: if curSol tốt hơn bestSol then
4: bestSol ← curSol
5: else if wst = ∅then
6: if NCCNi được đánh dấu then
7: exhaustive (i+1, j+1, ∅, curSol)
8: else
9: Chuyển NCCNivào wst
10: Exhaustive (i, j, wst, curSol)
11: Chuyển NCCNira ngoài wst
12: else
13: if wst hợp lệ then
14: Đánh dấu tất cả các NCCN có trong wst
15: Chuyển wst vào CurSol
16: exhaustive(i + 1, j + 1, ∅, curSol) 17: Chuyển wst ra ngoài curSol
18: Bỏđánh dấu tất cả các NCCN có trong wst 19: if |wst| < 3 then 20: fork ← j + 1 to M do 21: ifNCCNk không bịđánh dấu then 22: Chuyển NCCNk vào wst 23: Exhaustive (i, k, wst, curSol) 24: Chuyển NCCNk ra ngoài wst
b) Áp dụng thuật toán Luyện kim (Simulated Annealing) giải bài toán cân bằng dây chuyền may khi cho trước công suất GALB-1
Thuật toán Luyện kim (SA) được chọn để giải quyết bài toán cân bằng dây chuyền may do tính đơn giản và hiệu quả. Không gian tìm kiếm nghiệm rộng và thậm
77
chí có thể tìm ra giải pháp tối ưu toàn cục nếu thời gian chạy đủ lớn. Các thành phần chính của thuật toán SA ứng dụng giải bài toán cân bằng dây chuyền may gồm:
+ Xây dựng phương án cân bằng chuyền cơ sở. + Xây dựng phương án CBC mới (lân cận). + Xác suất chấp nhận.
+ Xác định các bước tìm phương án CBC tối ưu (lịch làm mát).
- Xây dựng phương án cân bằng chuyền cơ sở.
Phương án CBC cơ sởs0 là phương án phối hợp NCCN thành NCSX xây dựng
ban đầu của bài toán, nó có thể là bất kỳ một phương án hợp lý nào đó và nó không ảnh hưởng đến chất lượng thuật toán SA, trong nội dung này phương án cơ sở được xây dựng ngẫu nhiên, các bước của thuật toán được mô tảdưới đây:
Bước 1: Chọn một NCCN u sao cho không có bất kỳ NCCN v ≠ u mà v được thực hiện trước khi uđược thực hiện.
Bước 2: Tạo một NCSX X chứa NCCN u và một số NCCN còn lại sao cho X
thỏa mãn các ràng buộc của bài toán: Thời gian, thiết bị, sốlượng NCCN, sốlượng công nhân trong mỗi NCSX và không vi phạm điều kiện về trình tự thực hiện NCCN.
Bước 3: Thêm NCSX X vào phương áncơ sởs0.
Bước 4: Nếu còn NCCN chưa được chọn thì quay lại bước 1, nếu không còn thì kết thúc.
- Xây dựng phương án CBC mới.
Phương án CBC mới (lân cận) được xây dựng từ phương án CBC cơ sở thực hiện như sau: Chuyển một NCCN từ NCSX này sang NCSX khác (bao gồm cả việc tạo một NCSX mới chỉ bao gồm NCCN đó), như minh họa trong hình 3.1 chuyển
NCCN 9 từ NCSX 4 sang NCSX 5, hoặc đổi chỗ hai NCCN của hai NCSX khác
nhau, như minh họa trong hình 3.2 đổi chỗ NCCN 2 và 3 cho nhau.
NCSX 1 2 3 4 5 NCSX 1 2 3 4 5 NCCN 1, 2 3, 4 5, 6 7, 8, 9 10 NCCN 1, 2 3, 4 5, 6 7, 8, 9 10 NCSX 1 2 3 4 5 NCCN 1 2 3 4 5 NCCN 1, 2 3, 4 5, 6 7, 8 10, 9 NCSX 1, 3 2, 4 5, 6 7, 8 9, 10 Hình 3.1 Chuyển một NCCN từ NCSX này sang NCSX khác Hình 3.2 Đổi chỗ hai NCCN của hai NCSX khác nhau Giả sử mỗi NCCN trở thành một NCSX thì mỗi NCCN sẽ có tối đa M cách chuyển sang NCSX khác. Như vậy có nhiều nhất M 2phương án CBC mới và thuật toán chỉ chọn những phương án thỏa mãn các điều kiện ràng buộc, được gọi là phương
án hợp lệ. Trong số những phương án hợp lệ, thuật toán chỉ xét đến χ phương án tốt nhất theo hàm mục tiêu và chọn ngẫu nhiên một trong sốđó. Lý do không chọn trong số tất cả các phương án hợp lệlà để tiết kiệm thời gian tính toán mà không làm giảm hiệu quả thuật toán quá nhiều.
Khi bắt đầu thuật toán, sốphương án χ được chọn ở mức cao và giảm dần ở các
bước thuật toán tiếp theo, do đó ởbước thuật toán đầu tiên tất cả các phương án đều có thểđược chọn, ởbước thuật toán tiếp theo slà phương án phối hợp NCCN thành NCSX hiện tại, chỉ những phương án tốt hơn s mới được lấy để thay thếs.
Tại mỗi bước thuật toán (Ti) thực hiện vòng lặp L lần, mục đích sử dụng vòng lặp là để mở rộng phạm vi tìm kiếm các phương án mới. Với mỗi vòng lặp thực hiện tìm kiếm và thay thếphương án s, cụ thể:
78
Bước 1: Tìm kiếm các phương án CBC mới (lân cận) của phương án cơ sở s0
hiện tại.
Bước 2: Đánh giá và sắp xếp các phương án CBC mới từ tốt đến không tốt theo hàm mục tiêu: Sắp xếp phương án có số công nhân từ thấp đến cao, trong số các
phương án có số công nhân bằng nhau thì sắp xếp theo hiệu quả cân bằng H từ lớn
đến bé.
Bước 3: Lấy ra χ phương án CBC có hàm mục tiêu tốt nhất trong tất cả các
phương án CBC mới tìm được: Lấy các phương án có số công nhân từ thấp đến cao, nếu có nhiều phương án có số công nhân bằng nhau thì chọn phương án có hiệu quả
cân bằng cao hơn để lấy.
Bước 4: Chọn ngẫu nhiên một trong χphương ánđó làm phương án hiện tại.
Bước 5: Thực hiện vòng lặp L lần từbước 1 đến bước 4.
- Xác suất chấp nhận.
Hàm xác suất chấp nhận: Là một thành phần chính của thuật toán SA, nó cho phép chấp nhận phương án phối hợp NCCN thành NCSX không cải thiện hơn so với
phương áncũ.
Thông thường, xác suất P chấp nhận phương án không cải thiện phụ thuộc vào
bước thuật toán hiện tại (nhiệt độ hiện tại T), phương án hiện tại s và phương án mới
s′ theo công thức sau [85]:
𝑃(𝑇, 𝑠, 𝑠′) = 𝑒−𝑓(𝑠′)−𝑓(𝑠)𝑇 = 𝑒−∆𝐸𝑇 (3.8)
Trong đó f (s), f (s′) là giá trị các hàm mục tiêu của phương án s và s′, ∆E = f (s′) - f (s) là sự khác biệt về chất lượng giữa phương án mới và hiện tại. Tuy nhiên, trong thuật toán SA để cân bằng dây chuyền may, luận án xây dựng xác suất chấp nhận P chỉ phụ thuộc vào T theo một công thức đơn giản:
𝑃(𝑇) = 𝑇 𝑇𝑚𝑎𝑥
(3.9)
Lý do chính giải thích tại sao ∆E không được sử dụng trong trường hợp bài toán này là do chất lượng của phương án s và phương án mới không khác nhau nhiều, thậm chí chúng rất gần nhau. Bởi vì s′ được tạo từ s bằng cách di chuyển một NCCN từ
NCSX này sang NCSX khác hoặc hoán đổi hai NCCN giữa hai NCSX và s’ được
chọn trong sốχ lân cận tốt nhất của s. Do đó, ∆Ecó xu hướng rất nhỏvà không đáng
kể. Trong trường hợp này, công thức P(T)đơn giản và hợp lý hơn∆E. Hơn nữa, xây dựng một công thức hợp lý cho f(s) không phải là một việc dễ dàng, và công thức sau
khi được xây dựng không chắc đã đánh giá được đúng độ tốt của một giải pháp.
- Xác định các bước tìm phương án cân bằng chuyền tối ưu.
Sốbước tìm kiếm phương án CBC tối ưu dựa trên lịch làm mát của thuật toán
SA được xác định như sau:
+ Đặt giá trị bước thuật toán đầu tiên là T1 = Tmax(là nhiệt độban đầu).
+ Bước thuật toán thứ hai có giá trị quy ước là T2 = T1 -Tdec , Tdec là giá trị giảm
bước thuật toán.
+ Bước thuật toán thứi có giá trị quy ước là Ti = Ti-1 -Tdec.
Về lý thuyết Tmax và Lcàng cao thì cơ hội tìm được phương án tối ưu càng cao,
giá trị Tdec càng thấp thì giải pháp cuối cùng sẽ càng tốt. Tuy nhiên, để tiết kiệm thời gian tính toán, ba thông số này cần được điều chỉnh phù hợp. Kế thừa các kết quả
nghiên cứu [61] [109] xác định giá trịbước thuật toán ban đầu nằm trong khoảng 80
đến 400, giá trị giảm là 5. Thử nghiệm sơ bộ thuật toán SA cho thấy các giá trị bước thuật toán ban đầu Tmax = 200, số vòng lặp tại mỗi bước thuật toán L = 60, Tdec = 5 là
79
phù hợp với bài toán cân bằng dây chuyền may. Khi bắt đầu thuật toán đặt χ =
Tmax/Tdec và χ giảm đi 1 đơn vị khi chuyển đến bước thuật toán tiếp theo đểđảm bảo chất lượng lời giải mà không mất quá nhiều thời gian. Các giá trị này được đặt cho các thuật toán Luyện kim áp dụng cho tất cả các bài toán cân bằng dây chuyền may trong luận án.
Mã giả thuật toán Luyện kim áp dụng cho bài toán cân bằng dây chuyền may GALB-1 được trình bày trong thuật toán 3.2 sau:
Thuật toán 3.2 Thuật toán SAgiải bài toán cân bằng chuyền GALB-1
1: Thuật toán SA (s0, Tmax, L, Tdec, P)
2: s ← s0 // Xây dựng phương án CBC cơ sở
3: T ← Tmax // Bước thuật toán đầu tiên 4: while T > 0 do 5: for i ← 1 to Ldo 6: Chọn ngẫu nhiên một lân cận s’ 7: ifs’ tốt hơn sthen 8: s ← s’ 9: else 10: Chỉđịnh s ← s’, với xác suất P(T) 11: T ← T - Tdec // Bước thuật toán tiếp theo 12: returnTìm phương án tốt nhất.
c) Áp dụng thuật toán kết hợp Luyện kim – Tham lam giải bài toán bài toán cân bằng dây chuyền may khi cho trước công suất với mục tiêu tối thiểu số công nhân GALB-1
Thuật toán SA-Gr được áp dụng cho bài toán cân bằng dây chuyền may gồm các thành phần sau:
+ Xây dựng phương án CBC cơ sở áp dụng thuật toán Tham lam. + Xây dựng phương án CBC mới (lân cận).
+ Xác suất chấp nhận.
+ Xác định các bước tìm kiếm phương án CBC tối ưu (lịch làm mát).
Xây dựng phương án CBC cơ sở áp dụng thuật toán Tham lam gồm các bước sau:
Bước 1: Chọn một NCCNu sao cho không còn bất kỳNCCNv ≠ u, trong đó v
phải được thực hiện trước khi uđược thực hiện.
Bước 2: Tạo NCSXX chứa u và một sốNCCN còn lại để X là NCSX hợp lý và giá trị WsX được tối đa hóa: