1. Trang chủ
  2. » Giáo án - Bài giảng

GIỚI THIỆU QuY HOẠCH TUYẾN TÍNH

10 150 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 10
Dung lượng 654,16 KB

Nội dung

Từ thời cổ đại, khi thực hiện các công việc của mình, loài người đã luôn hướng tới cách làm tốt nhất trong các cách làm có thể được (tìm phương án tối ưu trong các phương án). Khi toán học phát triển, người ta đã mô hình hóa toán học các việc cần làm, nghĩa là biểu thị các mục tiêu cần đạt được, các yêu cầu hay các điều kiện cần thỏa mãn bằng ngôn ngữ toán học để tìm lời giải tối ưu cho nó. Từ đó hình thành nên các bài toán tối ưu. Quy hoạch tuyến tính (QHTT) là lĩnh vực toán học nghiên cứu các bài toán tối ưu với hữu hạn biến, trong đó mục tiêu và các điều kiện cần thỏa mãn được biểu thị bằng các hàm số, các phương trình hay bất phương trình tuyến tính. Lý thuyết Quy hoạch tuyến tính bắt đầu phát triển từ năm 1939 khi nhà toán học người Nga L.V. Kantorovich (Giải thưởng Nobel về Kinh tế năm 1975) đề xuất thuật toán đầu tiên để giải bài toán QHTT trong một loạt các công trình nghiên cứu về kế hoạch hóa sản xuất. Tuy nhiên QHTT chỉ được nhiều người biết đến vào năm 1947, khi G.B. Dantzig công bố thuật toán đơn hình để giải các bài toán QHTT cho quân lực Mỹ. Cũng năm đó Koopmans đã chỉ ra rằng QHTT là công cụ tuyệt vời để phân tích lý thuyết kinh tế cổ điển. Từ năm 1952, người Mỹ đã bắt đầu lập trình, giải các bài toán QHTT trên máy tính. Hiện nay QHTT vẫn được tiếp tục nghiên cứu nhằm tìm ra các thuật toán tốt hơn.

Trang 1

C hương 9

_

Từ thời cổ đại, khi thực hiện các công việc của mình, loài người đã luôn hướng tới cách làm tốt nhất trong các cách làm có thể được (tìm phương án tối ưu trong các phương án) Khi toán học phát triển, người ta đã mô hình hóa toán học các việc cần làm, nghĩa là biểu thị các mục tiêu cần đạt được, các yêu cầu hay các điều kiện cần thỏa mãn bằng ngôn ngữ toán học để tìm lời giải tối ưu cho

nó Từ đó hình thành nên các bài toán tối ưu

Quy hoạch tuyến tính (QHTT) là lĩnh vực toán học nghiên cứu các bài toán tối ưu với hữu hạn biến, trong đó mục tiêu và các điều kiện cần thỏa mãn được biểu thị bằng các hàm số, các phương trình hay bất phương trình tuyến tính

Lý thuyết Quy hoạch tuyến tính bắt đầu phát triển từ năm 1939 khi nhà toán học người Nga L.V Kantorovich (Giải thưởng Nobel về Kinh tế năm 1975) đề xuất thuật toán đầu tiên để giải bài toán QHTT trong một loạt các công trình nghiên cứu về kế hoạch hóa sản xuất Tuy nhiên QHTT chỉ được nhiều người biết đến vào năm 1947, khi G.B Dantzig công bố thuật toán đơn hình để giải các bài toán QHTT cho quân lực Mỹ Cũng năm đó Koopmans đã chỉ ra rằng QHTT là công cụ tuyệt vời để phân tích lý thuyết kinh tế cổ điển Từ năm 1952, người Mỹ đã bắt đầu lập trình, giải các bài toán QHTT trên máy tính Hiện nay QHTT vẫn được tiếp tục nghiên cứu nhằm tìm ra các thuật toán tốt hơn

9.1  BÀI TOÁN QUY HOẠCH TUYẾN TÍNH Một số ví dụ thực tế dẫn đến bài toán Quy hoạch tuyến tính

Bài toán bố trí máy trong sản xuất Một phân xưởng có hai máy đặc chủng M1, M2 sản xuất hai loại sản phẩm ký hiệu là I và II Một tấn sản phẩm loại I lãi 2 triệu đồng, một tấn sản phẩm loại II lãi 1.6 triệu đồng Muốn sản xuất 1 tấn sản phẩm loại I phải dùng máy M1 trong 3 giờ và máy M2

trong 1 giờ Muốn sản xuất 1 tấn sản phẩm loại II phải dùng máy M1 trong 1 giờ và máy M2 trong 1 giờ Một máy không thể dùng để sản xuất đồng thời hai loại sản phẩm Máy M1 làm việc không quá

6 giờ trong một ngày, máy M2 một ngày chỉ làm việc không quá 4 giờ Hãy đặt kế hoạch sản xuất sao cho tổng số tiền lãi cao nhất

Lập mô hình toán Gọi x i là số tấn sản phẩm loại i sản xuất trong một ngày

Số giờ làm việc (mỗi ngày) của máy M1 là 3x1 + x2 và máy M2 là x1 + x2

Số tiền lãi mỗi ngày là 2x1 + 1.6x2 (triệu đồng)

Ta phải tìm vectơ x = (x1, x2) sao cho

f (x) = 2x1 + 1.6x2 → max

và thỏa mãn các điều kiện

Trang 2

≤ +

≤ +

0 , 4

6 3

2 1

2 1

2 1

x x

x x

x x

Bài toán về chế độ dinh dưỡng Người ta cần một lượng chất dinh dưỡng A, B, C do các thức ăn

α, β, γ, δ cung cấp Hàm lượng chất dinh dưỡng có trong 1 đơn vị thức ăn cho như sau

A B C

α : 20 5 0.5

β : 15 8 0

γ : 5 2 2

δ : 10 25 0

Nhu cầu về loại dinh dưỡng: chất A không dưới 250g, chất B không dưới 170g, chất C không vượt quá 30g Giá mua một đơn vị thức ăn α, β, γ, δ tương ứng là 2, 2.5, 0.8, 1.5 nghìn đồng/g Hãy lập một thực đơn sao cho bữa ăn có giá thành rẻ nhất mà vẫn đáp ứng được yêu cầu về dinh dưỡng ☺

Lập mô hình toán Gọi khối lượng thức ăn α, β, γ, δ cần mua tương ứng là x1, x2, x3, x4

Tổng hàm lượng chất dinh dưỡng A trong bữa ăn là 20x1+ 15x2 + 5x3 + 10x4

Tổng hàm lượng chất dinh dưỡng B trong bữa ăn là 5x1+ 8x2 + 2x3 + 25x4

Tổng hàm lượng chất dinh dưỡng C trong bữa ăn là 0.5x1+ 2x3

Giá thành bữa ăn là 2x1+ 2.5x2 + 0.8x3 + 1.5x4

Ta phải tìm vectơ x = (x1, x2, x3, x4) sao cho

f (x) = 2x1+ 2.5x2 + 0.8x3 + 1.5x4 → min

và thỏa mãn các điều kiện

≤ +

≥ + + +

≥ + + +

0 , , ,

30 2 5 0

170 25

2 8 5

250 10

5 15 20

4 2 2 1

3 1

4 3 2 1

4 3 2 1

x x x x

x x

x x x x

x x x x

Bài toán vận tải Biết số lượng hàng có trong kho Ai là a i (i = 1, 2), yêu cầu của cửa hàng B j là b j (j

= 1, 2), cước phí vận chuyển một đơn vị hàng từ Ai đến Bj tương ứng là c ij Lập kế hoạch vận chuyển hàng sao cho các cửa hàng đều nhận đủ hàng và tổng cước phí vận chuyển là nhỏ nhất

Lập mô hình toán Gọi x' j là số lượng hàng vận chuyển từ A1 đến cửa hàng Bj Gọi x" j là số lượng hàng vận chuyển từ A2 đến cửa hàng Bj

Tổng lượng hàng chuyển từ A1 đến hai cửa hàng là x'1 + x'2

Tổng lượng hàng chuyển từ A2 đến hai cửa hàng là x"1 + x"2

Tổng lượng hàng B1 nhận được từ hai kho là x'1 + x"1

Tổng lượng hàng B2 nhận được từ hai kho là x'2 + x"2

Tổng cước phí phải trả là c11x'1 + c12x'2 + c21x"1 + c22x"2

Ta phải tìm vectơ x = (x'1, x'2, x"1, x"2) sao cho

f (x) = c11x'1 + c12x'2 + c21x"1 + c22x"2 → min

và thỏa mãn các điều kiện

x'1 + x'2 ≤ a1

x"1 + x"2 ≤ a2

x'1 + x"1 = b1

x'2 + x"2 = b2

x'1, x'2, x"1, x"2 ≥ 0 ☺

Trang 3

Bài toán Quy hoạch tuyến tính dạng tổng quát

Bài toán QHTT dạng tổng quát là: Tìm vectơ x = (x1, x2, , x n) ∈Rn sao cho

f (x) =

=

n i i

i x c

1 → min (max) với các điều kiện

=

=

=

=

=

+

=

=

=

=

=

) , , (

) , , (

0

) , , 1 ( 0

) , , (

) , , 1 (

) , , 1 (

1 1 1

n k j R x

k h j x

h j

x

m s i b x a

s r

i b x a

r i

b x a

j j j

n j

i j ij

n j

i j ij

n j

i j ij

Nếu ký hiệu D là tập tất cả các vectơ x thỏa mãn hệ bất phương trình trên, thì đây chính là bài toán tìm min (max) của hàm f(x) trên D Ta gọi D là miền thừa nhận được Vectơ x* ∈D sao cho f(x)

đạt min (max) được gọi là một phương án tối ưu, hay là một nghiệm của bài toán này

Chú ý Bài toán Quy hoạch tuyến tính có thể có một nghiệm duy nhất, vô nghiệm hoặc có vô số

nghiệm

Ta gọi

a ) f(x) là hàm mục tiêu

b)



=

=

+

=

=

=

=

=

n

j

i

j

ij

n

j

i

j

ij

n

j

i

j

ij

m s i b

x

a

s r

i b

x

a

r i

b

x

a

1

1

1

) , , (

) , , 1 (

) , , 1 (

hệ ràng buộc.

=

=

=

) , , (

) , , (

0

) , , 1 ( 0

n k j R x

k h j x

h j

x

j j

j

điều kiện tất yếu

Dễ thấy rằng

1) f(x*) = min{f(x) | x∈D} ⇔ -f(x*) = max{-f(x) | x∈D}

n

j

i

ij x b

a

=1

n j

i

ij x b

a ≤−

=1 ) (

n

j

i

ij x b

a

=1

1

= +

=

y b y x

n j i ij

n

j

i

ij x b

a

=1

1

=

=

y b y x

n j i ij

(y được gọi là biến chênh lệch)

5) Nếu biến x jkhông bị ràng buộc về dấu, thì có thể thay thế bằng hiệu của hai biến không âm

Trang 4

Từ các nhận xét trên thấy rằng bất kỳ một bài toán QHTT nào cũng có thể đưa về dạng sau đây, được gọi là dạng chính tắc

f (x) =

=

n i i

i x c

1 → min

=

=

=

=

) , , 1 ( 0

) , , 1 ( 1

n j

x

m i

b x a

j

n j

i j ij

trong đó tất cả các b i không âm

Ký hiệu c = (c1, c2, , c n ), x = (x1, x2, , x n ), b = (b1, b2, , b m ), A = (a ij)m ×n, và quy ước

rằng x ≥ 0 có nghĩa là x j ≥ 0 (j = 1, , n), ta có thể viết bài toán QHTT chính tắc dưới dạng ma trận

f (x) = c⋅⋅⋅⋅x →→ min

= 0

x

b Ax

Ví dụ Đưa bài toán sau đây về dạng chính tắc

f (x) = -3x1 - 2x2 → max

≥ +

0

;

1

4 2

2 1

2 1

2 1

x x

x x

x x

Ta đưa thêm vào hai biến chênh lệch x3, x4, sau đó nhân hai vế của phương trình thứ hai trong hệ ràng buộc mới với (-1), thu được dạng chính tắc như sau

g (x) = -f(x) = 3x1 + 2x2 → min

= + +

=

− +

0

;

1

4 2

2 1

4 2 1

3 2 1

x x

x x x

x x x

9.2  PHƯƠ ƯƠ ƯƠNG PHÁP ĐƠ ĐƠ ĐƠN HÌNH

Ta giải bài toán bố trí máy trong sản xuất ở 9.1 bằng phương pháp hình học Trước hết ta biểu diễn

miền thừa nhận D trên mặt phẳng tọa độ bằng cách vẽ các đường thẳng

(d1) : 3x1 + x2 = 6, (d2) : x1 + x2 = 4, (d3) : x1 = 0, (d4): x2 = 0

Vì điểm M0(1; 1) có tọa độ thỏa mãn hệ

≤ +

≤ +

0 , 4

6 3

2 1

2 1

2 1

x x

x x

x x

nên ta tô đậm các nửa mặt phẳng bờ (d1), (d2), (d3), (d4) không chứa điểm M0 Miền không bị tô đậm là tứ giác OCIA

Trang 5

Cho m tăng dần từ 0, ta thấy các đường thẳng có dạng m = 2x1 + 1.6x2 song song với nhau và quét

toàn bộ miền D Vị trí I(1; 3) là điểm chung cuối cùng của chúng với D Do đó f(x) lớn nhất khi x =

(1; 3) (đây là phương án tối ưu)

Nếu trong bài toán này, ta lấy hàm mục tiêu khác, nhưng vẫn giữ nguyên miền D, thì bằng cách trên ta thấy rằng hàm mục tiêu luôn luôn đạt max (min) tại một trong bốn đỉnh của D Người ta

đã mở rộng khái niệm đỉnh cho miền thừa nhận D ⊂ R n thành khái niệm điểm cực biên Chẳng hạn mỗi đỉnh của đa diện là một điểm cực biên Trong một bài toán QHTT, ta gọi mỗi điểm cực biên của miền thừa nhận là một phương án cực biên của bài toán Cũng như trong ví dụ vừa rồi, người

ta đã chứng minh được rằng trong bài toán QHTT hàm mục tiêu đạt min(max) trong tập hợp các phương án cực biên

Xét bài toán QHTT chính tắc:

f (x) = c⋅⋅⋅⋅x →→ min

= 0

x

b Ax

với c, x ∈R n , b∈R m , A là ma trận m×n

Ta không thể dùng phương pháp hình học để giải bài toán này Dantzig đã đề xuất một thuật toán, gọi là thuật toán đơn hình (simplex method), như sau: Xuất phát từ một phương án cực

biên v0 Kiểm tra xem v0 có phải là phương án tối ưu hay chưa Nếu v0 chưa phải là phương án tối

ưu thì tìm cách cải tiến nó để được một phương án cực biên khác là v1 tốt hơn v0 theo nghĩa f(v1) <

f (v0) Quá trình này lặp lại nhiều lần cho đến khi tìm thấy phương án cực biên tối ưu x*

Để thực hiện thuật toán nói trên, ta cần phải làm rõ ba điều:

1 Cách tìm một phương án cực biên xuất phát v0

2 Làm thế nào để biết một phương án cực biên đã cho là tối ưu hay chưa, tức là cần tìm được "dấu

hiệu tối ưu"

3 Làm thế nào để từ một phương án cực biên chưa tối ưu tìm được một phương án cực biên mới tốt

hơn nó

Trang 6

George Bernard Dantzig (1914 - 2005)

a Trường hợp A có một ma trận con là ma trận hoán vị P cỡ m××m

Ta chọn phương án cực biên xuất phát v0 như sau: Ta chọn biến mà các hệ số nằm trong P làm biến trụ, biến mà hệ số nằm ngoài P làm biến tự do Gán giá trị 0 cho các biến tự do rồi giải các biến trụ,

ta được v0 Rõ ràng những giá trị vừa tìm của các biến trụ quét hết những thành phần của hệ số tự

do b Ký hiệu J = (α, β, , γ) là dãy số chỉ số của các biến trụ mà xα = b1, xβ = b2, , xγ = b m

hiệu c' = (cα, cβ, , cγ)∈Rm với cα, cβ, , cγ lần lượt là hệ số của xα, xβ, , xγ

f (v0) = c⋅⋅⋅⋅v0 = c' ⋅b, ∆ j = c'⋅a j - c j (j = 1, , n)

Người ta đã chỉ ra được dấu hiệu tối ưu "Nếu ∆j ≤ 0 ∀ j = 1, , n, thì v0 là một phương án tối ưu"

Vì vậy, gọi ∆j ≤ 0 (j = 1, , n) là số kiểm tra

Để thuận tiện cho tính toán theo thuật toán đơn hình, người ta sắp xếp các số liệu thành một bảng, gọi là bảng đơn hình như dưới đây

Biến

trụ

c1 c2 c n

xα cα b1 a11 a12 a 1n

xγ cγ b m a m1 a m2 a mn

Nếu phương án cực biên v0 chưa tối ưu, ta đi xây dựng phương án cực biên v1 tốt hơn bằng cách xây

dựng bảng đơn hình mới sau đây: Chọn chỉ số s sao cho ∆ s = max{ ∆1, , ∆n } Trên hàng thứ i của cột tỉ số ta sẽ điền b i /a is nếu a is > 0 Chọn chỉ số r sao cho b r /a rs là số bé nhất trong cột tỉ số Gọi a rs

trụ Thay x r bởi x s , c r bởi c s Chia hàng r của ma trận [b A] cho trụ, sau đó cộng vào các hàng còn lại của [b A] bội của hàng thứ r mới này sao cho cột thứ s của A trở thành vec tơ e s (vectơ thứ s

trong cơ sở chính tắc của Rm ) Ta cũng tính được f(x) và các số kiểm tra mới bằng cách cộng vào hàng cũ (f(x), ∆1, , ∆n ) bội của hàng thứ r mới sao cho ∆ s bị khử đi Nếu tất cả các số kiểm tra mới

đều không dương, thì v1 là phương án tối ưu Còn nếu v1 chưa phải là phương án tối ưu, ta lặp lại thủ tục vừa rồi để lập bảng đơn hình thứ ba Ta cứ lặp lại thủ tục như thế này cho đến khi tất cả các số kiểm tra đều không dương thì dừng Khi ấy phương án cuối cùng là tối ưu

Trang 7

Ví dụ 1 Giải bài toán QHTT sau:

f (x) = x4 - x5 → min

=

= + +

= +

=

− +

) 5

; 1 ( 0

3 3

2 2

1 2

5 4 3

5 4 2

5 4 1

j x

x x x

x x x

x x x

j

Giải

Bảng 1

Biến

trụ

x2 0 2 0 1 0 -2 1• 2/1

Chú thích: Ta đánh dấu trụ bởi dấu "•"

Bảng 2

Biến

trụ

x5 -1 2 0 1 0 -2 1

Bảng 3

Biến

trụ

f (x) =

-11/5

Các số điều kiện đều không dương, nên ta có phương án tối ưu x* = (28/5; 0; 0; 1/5; 12/5) và minf(x) = -11/5

Chú ý Nếu có một số kiểm tra ∆k mang dấu dương, nhưng cột thứ k của ma trận hệ số của hệ ràng

buộc gồm toàn những số không dương, thì bài toán vô nghiệm (Khi ấy hàm mục tiêu giảm vô hạn)

Trang 8

b Trường hợp A không chứa ma trận con là ma trận hoán vị P cỡ m××m

Ta thêm một số biến để tạo ra bài toán mới có dạng như ở trường hợp a Từ nghiệm của bài toán

mới sẽ suy luận ra nghiệm của bài toán ban đầu Cách làm này được gọi là Phương pháp M vô cùng lớn (BIG M-Method)

Ví dụ 2 Giải bài toán quy hoạch tuyến tính sau:

f (x) = 3x1 + 2x2 → min

=

= + +

=

− +

) 4

; 1 ( 0

1

4 2

4 2 1

3 2 1

j x

x x x

x x x

j

Giải

Ta thêm biến y (gọi là biến giả) để đưa về bài toán

g(x,y) = 3x1 + 2x2 + My→ min

=

=

= + +

= +

− +

0 );

4

; 1 ( 0

1

4 2

4 2 1

3 2 1

y j

x

x x x

y x x x

j

Ở đây M là một hằng số dương rất lớn Lúc này ma trận hệ số của hệ ràng buộc chứa ma trận

P = 

 0 1

1 0 ,

nên ta có bài toán như ở a

Bảng 1

Biến

trụ

g (x,y) =

4M

Bảng 2

Biến

trụ

x2 2 1 -1 1 0 1 0

g (x,y) =

2 + 2M

Trang 9

Bảng 3

Biến

trụ

g (x,y) =

16/3

Các số điều kiện đều không dương (do M rất lớn), nên trong bài toán mới ta có phương án tối ưu

(x*,y) = (2/3; 5/3; 0; 0; 0)

và ming(x, y) = 16/3

Trong phương án này y = 0, nên bài toán ban đầu có phương án tối ưu

x* = (2/3; 5/3; 0; 0)

và minf(x) = 16/3

Chú ý Nếu ở bảng đơn hình cuối cùng biến giả nhận giá trị khác 0, ta kết luận hàm mục tiêu

không có giá trị nhỏ nhất

Ta còn có cách làm khác như sau: Trước hết dùng phép khử biến đổi hệ ràng buộc thành hệ tương đương mà ma trận hệ số chứa ma trận hoán vị

= + +

=

− +

1

4 2

4 2 1

3 2 1

x x x

x x x

= +

=

− +

5 3

4 2

4 3 2

3 2 1

x x x

x x x

Bài toán đã cho được đưa về bài toán mới tương đương sau đây

f (x) = 3x1 + 2x2 → min



=

= +

=

− +

) 4

; 1 ( 0

5 3

4 2

4 3 2

3 2 1

j x

x x x

x x x

j

Ta giải bài toán mới này theo Thuật toán Đơn hình

Bảng 1

Biến

trụ

x1 3 4 1 2 -1 0 4/2

x4 0 5 0 3-1 1 5/3

Trang 10

Bảng 2

Biến

trụ

f (x) =

16/3

Các số điều kiện đều không dương, nên ta có phương án tối ưu x* = (2/3; 5/3; 0; 0) và minf(x) =

16/3

NHỮNG Ý CHÍNH TRONG BÀI GIẢNG TUẦN 12

1 Bài toán QHTT tổng quát Bài toán QHTT chính tắc

2 Phương án tối ưu Thuật toán Đơn hình

Ngày đăng: 19/04/2019, 10:55

TỪ KHÓA LIÊN QUAN

w