Kết quả nghiên cứu xác định thuật toán giải bài toán tối ưu cân bằng dây

Một phần của tài liệu Nghiên cứu tối ưu cân bằng dây chuyền công nghiệp may sản phẩm dệt kim (Trang 94 - 131)

cân bằng dây chuyền công nghiệp may sản phẩm dệt kim

Kết quả nghiên cứu xác định thuật toán giải bài toán cân bằng 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ặc nhị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 ≤ ∀ � ≤ � ≤ �: �� ∩ �� = ∅ 1 ≤ ∀ � ≤ �: �� = ∑�∈���� 1 ≤ ∀ � ≤ �: �� ≤ 3(� + ∆�) 1 �ế��� ≤ � + ∆� nj= {2 �ế�� + ∆� < �� ≤ 2(� + ∆�) 3 �ế� 2(� + ∆�) < �� ≤ 3(� + ∆�) (3.1) (3.2) (3.3) (3.4) �� = �� �� (3.5) � = ∑� �=1�� (3.6) � ′ �

Trong đó: Si Sj là NCSX thứ i j, ti là thời gian của NCCNi, Tj là thời gian của NCSX j, nj là 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

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).

Mục tiêu thứ hai: Tối đa hóa hiệu suất cân bằng (maximize H).

74

(3.7)

* 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 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 wst chư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 wst và đệ quy trạng thái (i, j, wst, curSol).

- Nếu NCSX hiện tại wst có ít nhất một NCCN, ta có:

+ 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 k chưa được chia để đưa vào NCSX hiện tại wst. Với mỗi NCCN k chưa được chia, ta thêm NCCN k vào NCSX hiện tại wst và đệ 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: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: else 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: if i > M then

if curSol tốt hơn bestSol then

bestSol ← curSol

else if wst =∅ then

if NCCNi được đánh dấu then

exhaustive (i+1, j+1,∅, curSol)

else

Chuyển NCCNi vào wst Exhaustive (i, j, wst, curSol)

Chuyển NCCNi ra ngoài wst

if wst hợp lệ then

Đánh dấu tất cả các NCCN có trong wst

Chuyển wst vào CurSol

exhaustive(i + 1, j + 1, , curSol) Chuyển wst ra ngoài curSol

Bỏ đánh dấu tất cả các NCCN có trong wst

if |wst| < 3 then

for k ← j + 1 to M do

if NCCNk không bị đánh dấu then

Chuyển NCCNk vào wst

Exhaustive (i, k, wst, curSol) 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

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 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 án cơ 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.

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 haiNCSX 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 2 phươ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 s là 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ể:

77 NCCN 1 2 3 4 5 NCSX 1, 3 2, 4 5, 6 7, 8 9, 10 NCSX 1 2 3 4 5 NCCN 1, 2 3, 4 5, 6 7, 8, 9 10 NCSX 1 2 3 4 5 NCCN 1, 2 3, 4 5, 6 7, 8 10, 9 NCSX 1 2 3 4 5 NCCN 1, 2 3, 4 5, 6 7, 8, 9 10

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 án cũ.

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 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 đó, ∆E có 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 L cà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à

78

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 χ 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 SA giả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: 3:

s ← s0

T ← Tmax

// Xây dựng phương án CBC cơ sở // Bước thuật toán đầu tiên

4: 5: 6: 7: 8: 9: 10: while T > 0 do for i ← 1 to L do

Chọn ngẫu nhiên một lân cận s’

if s’ tốt hơn s then

s ← s’

else

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: return Tì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 NCCN u sao cho không còn bất kỳ NCCN v ≠ u, trong đó v

Một phần của tài liệu Nghiên cứu tối ưu cân bằng dây chuyền công nghiệp may sản phẩm dệt kim (Trang 94 - 131)