Thuật toán Jonhson giải bài toán lập lịch gia công trên hai máy
Input: Lịch và thời gian gia công của 2 máy đối với n sản phẩm.
+ Cơ sở lý thuyết
Mỗi lịch gia công trên hai máy A,B sẽ tương ứng với một hoán vị:
( (1), (2),..., ( ))n
của n số tự nhiên, P là tập hợp các hoán vị của (1, 2,..., )n . Ký hiệu: sjX;tjX là thời điểm bắt đầu và kết thúc việc gia công chi tiết j trên máy
, 1, 2,..., ; ,
X j n X A B. Giả sử là một lịch gia công, và trình tự gia công các chi tiết trên hai máy là như nhau. Máy A bắt đầu thực hiện công việc (1) vào thời điểm s(1)A 0 và công việc ( )k sau khi thực hiện xong công việc (k1) tức là:
( )k A (k 1)A, ( 1, 2,..., )
s t k n (2.24) Máy B bắt đầu thực hiện công việc (1) ngay sau khi máy A kết thúc việc gia công nó tức là:
(1)B (1)A
s t (2.25) Máy B có thể bắt đầu việc gia công chi tiết ( ), (k k1, 2,..., )n sau khi công việc này được thực hiện xong trên máy A đồng thời nó phải hoàn thành việc gia công chi tiết (k1), tức là:
( )k B ax( ( )k A, (k 1)B), 1, 2,...,
s m t t k n (2.26) Gọi T( ) t( )n B là thời gian để hoàn thành việc gia công tất cả các chi tiết trên hai máy. Với cố định, T( ) đạt giá trị nhỏ nhất khi:
(1) ( ) ( 1) (1) (1) ( ) ( ) ( 1) 0 , 1, 2,..., ax( , ), 1, 2,..., k A k A B A k B k A k B s s t k n s t s m t t k n (2.27)
Tức là các máy sẽ thực hiện luôn các công việc khi điều kiện cho phép. Giả thiết rằng hai máy thực hiện việc gia công một cách liên tục.
Gọi:
+ dA là thời điểm máy A bắt đầu thực hiện việc gia công các chi tiết (dA0). + dB là thời điểm máy B bắt đầu thực hiện việc gia công các chi tiết.
Ta có: 1 ( ) ( ) n B j j T d b
Ta thấy, dB( ) bằng tổng của t(1)A và các khoảng thời gian chết của máy B
khi ta bố trí máy B thực hiện việc gia công các chi tiết theo công thức (2.27). Vì thế, dB( ) được tính theo công thức sau:
1 ( ) ax( ( )) B u u n d m trong đó: 1 (1) ( ) 1 ( ) 1 1 ; , 1, 2,..., . u u u j j j j a a b u n
Như vậy bài toán đưa về bài toán tối ưu tổ hợp sau: mindB( ) : P.
Bổ đề 1: Giả sử ( (1), (2),..., ( k1), ( ),..., ( )) k n là một lịch gia công, còn ' là lịch gia công thu được từ bằng cách hoán vị hai phần tử ( )k và
(k 1)
:
' ( (1),..., (k 1), (k 1), ( ),..., ( ))k n
khi đó nếu: min(a( )k ,b(k1))min(b( )k ,a(k1)) thì dB( ) dB( ')
Chứng minh. Do ,'chỉ khác nhau ở vị trí thứ k và k1 nên ta có
' u u với u1, 2,...,k1,k2,...,n Do đó, ta chỉ cần chứng minh: 1 1 ax( k( ), k ( )) ax( k( '), k ( ')) m m (2.28)
1 1
ax( k( ) , k ( ) ) ax( k( ') , k ( ') )
m m (2.29)
với mọi giá trị . Chọn:
1 1 ( ) ( ) 1 1 k k j j j j a b Mặt khác: ( ) 1 ( ) 1 1 k k k j j j j a b ta nhận được (2.29) dưới dạng: ( 1) ( ) ( ) ( 1) ( 1) ( ) ( ) ( 1) ( ) ( 1) ( 1) ( ) ax( , ) ax( , ) min( , ) min( , ) min( , ) min( , ) k k k k k k k k k k k k m a b m a b a b a b a b a b
Điều này luôn đúng theo giả thiết. Bổ đề được chứng minh.
Bổ đề 2: Nếu p q k, , là 3 chỉ số thoả mãn
min(a bp, q)min(a bq, p) (2.30)
min(a bq, k)min(a bk, q) (2.31) trong đó có ít nhất một trong hai bất đẳng thức trên là bất đẳng thức chặt, thì
min(a bp, k)min(a bk, p) (2.32)
Chứng minh: Giả sử: ap b aq, q b ap, q b ak, k bq.
Khi đó, từ (2.30) suy ra ap aq, còn từ (2.31) suy ra aq ak. Tức là ta có
, ,
p p p k p k
a b a b a a , từ đó suy ra (2.32)
Chứng minh tương tự cho 15 trường hợp còn lại, ta thu được bổ đề.
Định lý 2.6: (Định lý Johnson năm 1954).
( )
T đạt giá trị nhỏ nhất khi lịch gia công ( (1), (2),..., ( )) n thoả mãn:
( ) ( 1) ( 1) ( )
min(a k ,b k )min(a k ,b k ) (2.33) với mọi k 1, 2,...,n1.
Chứng minh:
Thật vậy giả sử '( '(1), '(2),..., '( )) n là lịch gia công tối ưu. Nếu '
không thoả mãn (2.33) thì theo bổ đề 1, khi thay đổi vị trí của hai phần tử liền nhau tương ứng trong nó, ta thu được lịch gia công mới với dB( ) không lớn hơn
( ')
B
d . Quá trình này được lặp lại đối với đến khi thu được lịch thoả mãn (2.33). Bổ đề 2 đảm bảo rằng việc lặp như thế là kết thúc. Định lý được chứng minh.
Định lý vừa được chứng minh làm cơ sở xây dựng thuật toán để giải bài toán đặt ra. Giả sử: 1 min( , )i i i n x a b . Xét hai trường hợp:
Nếu xak với một k nào đó thì ta có min(a bk, j)min( ,b ak j) với mọi jk. Do đó, chi tiết Dk phải được gia công đầu tiên trong lịch tối ưu.
Nếu xbpvới p nào đó thì ta có: min(a bp, j)min(b ap, j) với mọi j p. Vì thế, chi tiết Dp phải được gia công cuối cùng trong lịch tối ưu.
+ Thuật toán JOHNSON
Bƣớc 1: Chia các chi tiết thành 2 nhóm: nhóm M1 gồm các chi tiết Di thoả mãn ai bi, tức là min( , )a bi i ai; nhóm M2 gồm các chi tiết Di thoả mãn ai bi, tức là min( , )a bi i bi. Các chi tiết Di thoả mãn ai bi xếp vào M1 hoặc M2 đều được.
Bƣớc 2: Sắp xếp các chi tiết trong M1 theo chiều tăng của các ai và các chi tiết trong M2 theo chiều giảm của các bi .
Bƣớc 3: Nối M2 vào sau M1. Dãy thu được sẽ là lịch gia công tối ưu.
Thuật toán JONHSON đƣợc mô tả bằng thủ tục tựa Pascal sau đây:
Input: A,B: Lịch biểu cho trước của 2 máy A,B; Output: : Lịch biểu tối ưu;
BEGIN
+ Xác định nhóm M1 gồm các chi tiết thỏa mãn A(k)<B(k) + Xác định nhóm M2 gồm các chi tiết thỏa mãn A(k)B(k) + Sắp xếp nhóm M1 theo chiều tăng dần
+ Sắp xếp nhóm M2 theo chiều giảm dần + M1+M2
+ Output(); END;
Chú ý:
1) Có thể chứng minh được rằng việc tìm lịch gia công dưới dạng mỗi máy một trình tự gia công riêng không dẫn tới việc hoàn thành gia công các chi tiết sớm hơn. Vì vậy, thuật toán Johnson vẫn có kết quả đúng của bài toán mà không cần có giả thiết rằng trình tự gia công hai máy phải như nhau.
2) Kỹ thuật chứng minh định lý Johnson dựa trên bổ đề 1 là một kỹ thuật cơ bản trong kế hoạch lập lịch, nó được biết dưới tên gọi: Thủ thuật hoán vị.
3) Không thể thu được định lý tương tự như định lí Johnson cho trường hợp ba máy hoặc nhiều hơn. Trong trường hợp tổng quát, hiện nay chưa có phương pháp hữu hiệu nào để giải chúng ngoài việc sử dụng phương pháp nhánh cận.
Kết luận:
Nội dung chương 2 chủ yếu nghiên cứu một số thuật toán cơ bản giải các bài toán quy hoạch tuyến tính dạng chính tắc và một mô hình tối ưu của bài toán lập
lịch. Các thuật toán này sẽ được kiểm nghiệm bằng các chương trình phần mềm thông qua các bài toán cụ thể. Các phần mềm này được tham khảo trên thư viện phần mềm mã nguồn mở cũng như lập trình trực tiếp bằng các ngôn ngữ cơ sở. Kết quả các chương trình thực nghiệm khẳng định tính đúng đắn của các thuật toán đã được trình bày trong luận văn.
Chƣơng 3
CÁC MÔ HÌNH BÀI TOÁN TỐI ƢU TRONG KINH TẾ
Trong thực tế, các phương pháp tối ưu hoá được áp dụng sâu rộng và hiệu quả vào các ngành kinh tế, kỹ thuật, công nghệ thông tin và các ngành khoa học khác. Phương pháp mô hình là một trong những phương pháp có ý nghĩa nhất trong vấn đề phân tích các mô hình kinh tế - xã hội hiện nay.
Phương pháp mô hình hóa tạo khả năng phát huy tốt hiệu quả của tư duy lôgíc, kết hợp nhuần nhuyễn giữa các phương pháp phân tích truyền thống với hiện đại, giữa phân tích định tính với phân tích định lượng. Để có thể sử dụng có hiệu quả phương pháp mô hình hoá trong nghiên cứu kinh tế vấn đề cốt lõi là xác lập được mô hình của đối tượng nghiên cứu, sau đó áp dụng các phương pháp tối ưu toán học và quy trình tính toán thích hợp để tìm ra lời giải cho mô hình đã đặt ra.
Vậy mô hình kinh tế, mô hình toán kinh tế là gì?
- Mô hình của các đối tượng trong lĩnh vực hoạt động kinh tế gọi là mô hình kinh tế.
- Mô hình toán kinh tế là mô hình kinh tế được trình bày bằng ngôn ngữ toán học.
Bản chất của quá trình mô hình hoá một hệ thống kinh tế là mô hình hoá quá trình vận động của nó, nghĩa là xây dựng phương trình trạng thái cho nó. Để xây dựng mô hình toán học của một hệ thống kinh tế cụ thể, ta phải chọn các biến kinh tế cho nó, đó là các biến điều khiển, các biến ngẫu nhiên (gọi là các biến vào) và các biến trạng thái, các biến ra (kết quả sản xuất), sau đó mô tả quan hệ giữa các biến đó bằng các hệ thức toán học.
Trong chương này, luận văn sẽ trình bày một số mô hình bài toán tối ưu trong kinh tế đó là: Bài toán tối đa hóa lợi nhuận, tối thiểu chi phí sản xuất, một số bài toán liên quan đến hàm cầu…. Đây là các mô hình phổ biến trong kinh tế hiện nay.