Bài toán JSS với số máy lớn hơn 2

Một phần của tài liệu Phương pháp tối ưu đàn kiến giải bài toán lập lịch sản xuất (Trang 33)

Trong trƣờng hợp số máy lớn hơn 2 thì bài toán thuộc lớp NP-khó, (xem [20]).

phƣơng sản xuất với số máy lớn hơn 2

(Integer Linear Programming [19], [2]) hay phƣơng pháp (Branch and Bound

nêu trên có ƣu đi

phát triển một không gian trạng thái quá lớn, mà do những hạn chế về thời gian tính toán và dung lƣợng bộ nhớ, không cho phép chúng ta thực hiện đƣợc điều đó

(Fast Approximate Algorithms, (xem [18]) là một giải pháp đƣợc lựa chọn trong trƣờng hợp này, phƣơng pháp đáp ứng nhanh về mặt thời gian thực hiện, tuy nhiên chất lƣợng nghiệm còn nhiều hạn chế. Hiện nay, xu

34 kim,... (xem [18])

.

2.2.2.1 Thuật toán nhánh cận

Trong mục này, chúng tôi trình bày tóm tắt thuật toán nhánh cận (xem [19]) đƣợc xem là cách tiếp cận tốt và cho đƣợc nghiệm tối ƣu với trƣờng hợp bài toán có kích thƣớc nhỏ.

Xét bài toán tối ƣu

min f x( ) :x S

Trong đó S là tập hữu hạn phần tử đƣợc gọi là miền ràng buộc, còn f S: R

là hàm thực xác định trên S.

Để áp dụng thuật toán nhánh cận giải bài toán đặt ra, chúng ta cần xây dựng hai thủ tục chính sau đây:

1. Thủ tục rẽ nhánh: phân hoạch liên tiếp miền ràng buộc S thành các tập con với kích thƣớc nhỏ hơn và bảo đảm cuối cùng sẽ xây dựng đƣợc phân hoạch miền ràng buộc ra thành các tập con chỉ gồm một phần tử, nói cách khác là đảm bảo duyệt vét cạn tất cả các phần tử của tập S.

2. Thủ tục nhánh cận: Xây dựng đƣợc hàm tính cận dƣới fboundxác định trên tập con của tập S thỏa mãn:

( ) min ( ) :

bound i

f S f x x S với mọi Si thuộc S Giá trị fbound( )Si đƣợc gọi là cận dƣới của Si. Giả sử ta biết đƣợc một lời giải x*

thuộc S, khi đó nếu

* * ( ) bound( ) f f x f S Thì từ bất đẳng thức * * ( ) bound( )i min ( ) : i f f x f S f x x S k

Ta suy ra tập Si chắc chắn không chứa lời giải tối ƣu và có thể loại bỏ việc duyệt.

35

Procedure Branch_And_Bound_Algorithm;

BEGIN

// bước khởi tạo

Đặt P Silà một phân hoạch của tập S; Tìm x* thuộc S, tính * *

( )

f f x ;

Repeat (adsbygoogle = window.adsbygoogle || []).push({});

Loại khỏi P tập con có triển vọng nhất Si; Phân hoạch Si thành các tập con Sij;

Cập nhật giá trị mục tiêu tốt nhất f*; ij P P S For all Sij Pdo If * ij ( ) bound

f S f then loại bỏ Sij khỏi P

Until P ;

END;

Hình 2: Lƣơc đồ của thuật toán nhánh cận

Thông thƣờng Si đƣợc coi là có triển vọng nếu nó có giá trị cận dƣới

ij

( )

bound

f S là nhỏ nhất. (chuyển lên trên)

2.2.2.2 Thuật toán xấp xỉ nhanh

Cách tiếp cận này (xem [18]) là sử dụng các luật ƣu tiên, ý tƣởng xây dựng rất đơn giản: Mỗi công việc đƣợc gán cho một độ ƣu tiên đƣợc đề xuất dựa vào tiêu chuẩn tối ƣu cụ thể và mỗi khi có máy rỗi ta giao ngay cho nó công việc có độ ƣu tiên lớn nhất.

Nói một cách khác, trong các thuật toán nhƣ vậy, chúng ta sẽ phải sắp xếp các công việc thành một dãy theo một quy tắc nào đó. Tiếp đến sẽ lần lƣợt thực hiện các công việc theo danh sách đƣợc sắp xếp: Công việc tiếp theo sẽ đƣợc bố trí thực hiện trên máy rỗi xuất hiện đầu tiên. Ta xét một số quy tắc thƣờng dùng để xây dựng danh sách nhƣ vậy.

36

Quy tắc này (xem [18]) sẽ sắp xếp các công việc theo thứ tự giảm dần của thời gian xử lý. Mỗi khi có máy rỗi (máy có thể giao để thực hiện công việc), công việc có thời gian xử lý lớn nhất trong số các công việc sẵn sàng sẽ đƣợc giao cho máy xử lý.

Thời gian xử lý nhỏ nhất (Shortest Processing Time – SPT)

Quy tắc này (xem [18]) sẽ sắp xếp các công việc theo thứ tự tăng dần của thời gian xử lý. Mỗi khi có máy rỗi, công việc có thời gian xử lý nhỏ nhất trong số các công việc sẵn sàng sẽ đƣợc giao cho máy xử lý.

Thời gian lệch nhỏ nhất (Minimun Slack Time – MST)

Quy tắc thời gian lệch nhỏ nhất (xem [18]) đo độ “gấp rút” của các công việc bởi thời gian lệch. Gọi di và pi là thời hạn hoàn thành và thời gian xử lý của công việc i trong tập các công việc cần sắp thứ tự. Dãy MST các công việc là dãy thỏa mãn bất đẳng thức sau:

1 1 2 2 ... n n

d p d p d p

Thông thƣờng khi sử dụng các luật ƣu tiên thƣờng không cho lịch tối ƣu. Tuy nhiên trong một số trƣờng hợp đặc biệt các qui tắc lập lịch nêu trên cho lịch tối ƣu cần tìm.

2.2.2.3 Giải thuật di truyền

Thuật toán di truyền là kỹ thuật mô phỏng theo quá trình tiến hóa tự thích nghi của các quần thể sinh học dựa trên học thuyết Darwin. Trong sự tiến hóa tự nhiên, mỗi loài sinh vật đều phải tìm cách thích nghi tốt nhất với một môi trƣờng sống phức tạp và luôn thay đổi. Sự thích nghi đó đƣợc đúc kết và ghi lại trong cấu trúc nhiễm sắc thể của chúng. Rõ ràng, những sinh vật thuộc thế hệ sau đƣợc sinh ra (tính trung bình) sẽ thích nghi với môi trƣờng tốt hơn các thế hệ trƣớc. Thuật toán di truyền bắt chƣớc tƣơng tự sự tiến hóa tự nhiên. Để sử dụng thuật toán di truyền khó khăn chính là chọn lọc đƣợc kiểu gene, cấu trúc nhiễm sắc thể và các thủ tục tạo mẫu, toán tử di truyền thích hợp để xử lý các ràng buộc.

37

Procedure GA;

Begin

t 0;

Khởi tạo P(t); //khởi tạo quần thể (adsbygoogle = window.adsbygoogle || []).push({});

Đánh giá P(t); //đánh giá độ thích nghi

while not kết_thúc do //vòng lặp tiến hóa

begin

//biến đổi quần thể

P’(t) Biến đổi (P(t)); // đánh giá độ thích nghi mới

Đánh giá P’(t);

//tạo ra thế hệ con mới P(t+1) Chọn lọc (P’(t)); t t+1;

end;

End;

Hình 3: Lƣợc đồ thuật toán di truyền

Áp dụng giải thuật di truyền cho bài toán JSS:

- Chọn kiểu gene và cấu trúc nhiễm sắc thể thích hợp cho các lời giải tiềm năng của bài toán. Xây dựng thủ tục chuyển đổi giữa chúng để thực hiện các phép toán di truyền.

Đánh số thứ tự tất cả các thao tác của các công việc từ 1 đến N_oper (trong đó N_oper là tổng số các thao tác). Nhiễm sắc thể có cấu trúc là một mảng một chiều với độ dài bằng là N_oper. Một gen trên nhiễm sắc thể là thứ tự của thao tác, nhƣ vậy nhiễm sắc thể là một hoán vị của các số từ 1 đến N_oper thể hiện một lịch thứ tự thực hiện các thao tác, từ đó ta xác định đƣợc lịch thực hiện các công việc trên các máy.

Ví dụ : một nhiễm sắc thể cho bài toán 3 công việc thực hiện trên 3 máy (ví dụ trong phần 2.1).

38

Số thao tác N_oper = 9 (độ dài nhiễm sắc thể bằng 9), các thao tác đƣợc đánh thứ tự từ 1 đến 9 (thứ tự từ 1 đến 3 là các thao tác của công việc 1, thứ tự từ 4 đến 6 là các thao tác của công việc 2, thứ tự từ 7 đến 9 là các thao tác của công việc 3)

1 2 3 4 5 6 7 8 9 4 1 2 5 7 8 3 9 6

Nhiễm sắc thể trên tƣơng ứng với lịch thực hiện công việc nhƣ sau: thao tác 1 của công việc 2 đƣợc thực hiện trên máy 1, thao tác 1 của công việc 1 đƣợc thực hiện trên máy 1 sau khi máy 1 thực hiện xong thao tác 1 của công việc 2,..

- Đưa ra một hàm để đo “độ tốt” của các lời giải tiềm năng nhờ đó xác định hàm thích nghi cho thuật toán di truyền:

1 ( )

( )

f v

g v

Trong đó g(v) là hàm xác định thời gian hoàn thành của phƣơng án v

- Xác định các toán tử di truyền (lai ghép và đột biến) thích hợp cho bài toán và các ràng buộc của chúng. Các toán tử có thể nhiều để vận dụng một cách thích hợp xử lý ràng buộc.

+ Toán tử đột biến: Toán tử này đƣợc thực hiện bằng cách chọn ngẫu nhiên một gen trong nhiễm sắc thể rồi chèn vào một vị trí ngẫu nhiên, nếu sau khi chèn ta thu đƣợc lịch thực hiện các thao tác vẫn bảo đảm thứ tự thực hiện các thao tác trên cùng một công việc thì ta tiến hành thực hiện toán tử đột biến.

Ví dụ : nhiễm sắc thể trƣớc khi đột biến

1 2 3 4 5 6 7 8 9 4 1 2 5 7 8 3 9 6

Giả sử vị trí gen ngẫu nhiên đƣợc chọn là 1, ví trí chèn ngẫu nhiên là 3, ta thu đƣợc nhiễm sắc thể mới vẫn bảo đảm thứ tự thực hiện các thao tác.

39 (adsbygoogle = window.adsbygoogle || []).push({});

1 2 3 4 5 6 7 8 9 1 2 4 5 7 8 3 9 6

+ Toán tử lai ghép: Toán tử lai ghép đƣợc thực hiện trên hai cá thể cha và cá thể mẹ. Từ vị trí gen thứ nhất đến vị trí gen cuối cùng của cá thể con ta lấy ngẫu nhiên hoặc là từ gen của cha hoặc là từ gen của mẹ nhƣng đảm bảo đƣợc ràng buộc về thứ tự thực hiện thao tác của cá thể con.

Ví dụ: 1 2 3 4 5 6 7 8 9 Parent1 4 1 2 5 7 8 3 9 6 Parent2 7 8 4 1 5 9 6 2 3 No. Parent 1/2 1 2 2 1 1 1 1 2 1 Child 4 7 8 1 2 5 3 9 6

Thuật toán di truyền và những phát triển của nó với tên gọi chung "Phƣơng pháp tính toán tiến hóa" đã đạt đƣợc những thành công nhất định. Một trong những tiếp cận khác là phƣơng pháp t . Cách tiếp cận này

. Trong chƣơng 3, luận văn sẽ trình bày .

40

CHƢƠNG 3

, hành trình của một con kiến tƣơng ứng một lịch sản xuất. ,

lập lịch sản xuất và các cải tiến cụ thể trong áp dụng tối ƣu hóa đàn kiến với bài toán lập lịch.

Một phần của tài liệu Phương pháp tối ưu đàn kiến giải bài toán lập lịch sản xuất (Trang 33)