Bài toán vận chuyển: Tại sân bay Tân Sơn Nhất có nhu cầu vận chuyển 1200 hành khách và 120 tấn hàng bằng máy bay.. Hãy lập mô hình tìm phương án sử dụng số máy bay mỗi loại sao cho phải
Trang 1CHƯƠNG I BÀI TOÁN QUY HOẠCH TUYẾN TÍNH
1.1/ MỘT SỐ VÍ DỤ DẪN ĐẾN BÀI TOÁN QUY HOẠCH TUYẾN TÍNH:
1.1.1 Bài toán vận chuyển:
Tại sân bay Tân Sơn Nhất có nhu cầu vận chuyển 1200 hành khách và 120 tấn hàng bằng máy bay Giả sử có 2 loại máy bay có thể sử dụng với khả năng vận chuyển của mỗi loại như sau:
Máy bay loại A: 01 máy bay có thể chở 150 hành khách và 20 tấn hàng với chi phí tương ứng 240 triệu đồng
Máy bay loại B: 01 máy bay chở có thể chở 180 hành khách và 16 tấn hàng với chi phí tương ứng là 220 triệu đồng
Hãy lập mô hình tìm phương án sử dụng số máy bay mỗi loại sao cho phải thỏa mãn yêu cầu vận chuyển với tổng chi phí ít nhất
Lập mô hình:
Gọi x1 là số lượng máy bay loại A
Gọi x2 là số lượng máy bay loại B
Tổng chi phí (triệu đồng): Z = 240 x1 + 220x2
Đảm bảo về hành khách: 150 x1 + 180x2 = 1200
Đảm bảo về hàng hóa: 20 x1 + 16 x2 = 120
Đảm bảo thực tế: x1,x2 ≥ 0
Giải bài toán:
Z = 240 x1 + 220x2 → min (*)
( )
0; 1, 2
j
x x
x x
x j
≥ =
Giải hệ phương trình trên x1 = 2, x2 = 5 thay x1 và x2 vào (* )→ Z = 1580
1.1.2/ Bài toán khẩu phần thức ăn :
Để nuôi một loại gia súc người ta sử dụng 3 loại thức ăn A, B, C Tỷ lệ % theo khối lượng các chất dinh dưỡng P1, P2 có trong các loại thức ăn như sau :
Yêu cầu trong khẩu phần thức ăn của loại gia súc này:
Trang 2- Chất dinh dưỡng P1 phải có ít nhất là 70g và nhiều nhất là 80g
- Chất dinh dưỡng P2 có ít nhất là 90g
- Giá 1kg thức ăn A,B,C tương ứng là 2.000đ, 1.000đ, 2.000đ
Yêu cầu : Hãy lập mô hình bài toán xác định khối lượng thức ăn cần mua sao cho tổng chi phí ít nhất.
Lập mô hình bài toán :
Gọi x1, x2, x3 tương ứng là số g thức ăn A, B, C cần mua
- Tổng chi phí Z = 2x1 + x2 + 2x3
- Hàm lượng các chất dinh dưỡng
P1: 0,2x1 + 0,1x2 + 0,1x3 thuộc [ 70,80] (g)
P2: 0,1 x1 + 0,1x2 + 0,2 x3 ≥ 90 (g)
0 1, 2,3
j
x ≥ j= Bài toán: Tìm xj (j= 1,2,3) sao cho
Z = 2x1+ x2 + 2x3 → min
≥
≥ +
≤ + +
≥ +
+
0 ,
,
900 2
800 2
700 2
2
3 2 1
3 2 1
3 2 1
3 2
1
x x x
x x x
x x x
x x
x
1.1.3/ Bài toán thời gian thi công ngắn nhất:
Để đảm bảo hoàn thành kế hoạch, đơn vị sửa chữa và bảo dưỡng đường nhựa A cần gấp rút hoàn thành 50km sơn vạch mặt đường, trong đó số km đường được sơn kẻ vạch của đường cấp I không nhỏ hơn 20% tổng chiều dài được sơn kẻ vạch của đường cấp II và cấp III
Đơn vị A chỉ có 1 dây chuyền ( người, máy) để làm việc này Trong khi để thời gian hoàn thành 1km đường cấp I, II, III tương ứng là 12 ngày, 8 ngày và 6 ngày
Định mức tiền sơn cho 1km đường cấp I, II, III tương ứng là 30, 20 và 15 triệu đồng, trong khi kinh phí dành cho công việc này trong thời gian tới chỉ còn 120 (triệu đồng)
Hãy lập mô hình xác định chiều dài sơn kẻ vạch cho mỗi cấp đường sao cho tổng thời gian thực hiện là ngắn nhất, đồng thời đảm bảo về kinh phí mua sơn
Lập mô hình:
Gọi x1, x2, x3 là chiều dài (km) dự định thực hiện trong tương ứng cấp đường loại I,
II, III khi đó
Mục tiêu thời gian: Z =
Yêu cầu khối lượng:
Yêu cầu chủng loại:
Yêu cầu kinh phí
Điều kiện tất yếu: x1, x2, x3 ≥0
Bài toán:
Trang 31.2/ ĐỊNH NGHĨA VÀ CÁC DẠNG BÀI TOÁN QUY HOẠCH TUYẾN TÍNH
1.2.1/ Định nghĩa:
Bài toán quy hoạch tuyến tính dạng tổng quát: tìm (x1, x2, …, xn) sao cho
f (x) = c1x1+ c2x2 + cnxn = ∑
=
n
x c
1
min
→ (max) (1) Với điều kiện
1
( 1, 2, , )(2)
0
0 (1, 2, , )(3)
n
ij j i j
j
Tùyý
=
∑
+ Các bi gọi là các hệ số tự do
+ Các cj gọi là hệ số hàm mục tiêu ( hệ số)
+ aij gọi là hệ số các ràng buộc chung
+ f(x) gọi là hàm mục tiêu
+ Hệ (*) gọi là hệ ràng buộc
(2) gọi là ràng buộc chung (có m ràng buộc)
(3) gọi là ràng buộc biến (có n ràng buộc)
Vector x = (x1, x2, … xn) gọi là phương án (P.A) nếu x thỏa (*) tập hợp tất cả các phương án gọi là miền ràng buộc kí hiệu là D
- Một phương án làm cho hàm mục tiêu đạt cực tiểu ( ứng với bài toán tìm min của f (min f) hoặc cực đại (max f) gọi là phương án tối ưu được ký hiệu là xopt
Nghĩa là:
BT min: ∀x ∈D : f (x) ≥ f (xopt)
BT max: ∀x ∈D : f (x) ≤ f (xopt)
Giải bài toán quy hoạch tuyến tính là tìm các phần tử tối ưu (nếu có)
+ Hai bài toán quy hoạch tuyến tính gọi là tương đương nhau nếu chúng có chung phần tử tối ưu
Mệnh đề : Quan hệ giữa max f và min f
∈
⇒
D
x
x
f( ) max
⇔ g x( ) f x( ) min
x D
= − ⇒
∈
Trang 41.2.2/ Biểu diễn bài toán quy hoạch tuyến tính dưới dạng ma trận:
Gọi
21
1
n
a
A
=
là ma trận cấp m*n các hệ số các ràng buộc chung
x1
X = … , CT = (c1, c2, …,cn)
xn
b1
B =
…
bm
Lúc đó bài toán quy hoạch tuyến tính được phát biểu
Tìm x = ( x1, x2, …, xn) sao cho
f(x) = CT x → min (max)
thỏa mãn:
A.X B
≥
=
1.2.3/ Các dạng của bài toán quy hoạch tuyến tính và các quy tắc biến đổi.
1.2.3.1: Dạng chính tắc
( )
1
1
( 1,2 , )
0 1, 2, ,
n
j j j n
ij j i j
j
f x c x
=
=
∑
∑
Trang 5Ta nhận xét rằng, bất kỳ bài toán quy hoạch tuyến tính nào cũng có thể đưa về dạng chính tắc nhờ các quy tắc biến đổi sau:
• Nếu ràng buộc có dạng :
i n
j
j
ij x b
∑
= 1
thì ta đưa về dạng tương đương :
i n
j
n j
∑
với xn+1≥ 0 là ẩn phụ)
• Nếu ràng buộc có dạng :
1
n
ij j i j
=
≤
∑
thì ta đưa về dạng tương đương
∑
= +
n
j
i n
j
ijx x b
a
1
1
với xn+1≥ 0 là ẩn phụ)
Chú ý:
- Hệ số của ẩn phụ trong hàm mục tiêu f(x) là 0
- Nếu biến xj ≤ 0 thì ta thay bằng xj’ : xj’ = - xj (xj’ ≥ 0)
- Nếu biến xj không ràng buộc về dấu ta thay bằng hiệu của 2 biến không, tức là đặt
xj = xj’ - xj’’ với xj’ ≥ 0, xj’’ ≥ 0
Chú ý rằng: Đây không phải là biến phụ nên phải tính lại hàm mục tiêu theo các
biến mới
Các ví dụ: đưa các bài toán QHTT sau về dạng chính tắc
1/ f(x) = -2x1 +3x2 - 2x3 → min
≥
−
= +
=
− +
0 ,
,
3 3
2 2
2
3 2 1
3 1
3 2
1
x x x
x x
x x
x
Ví dụ 1 này là dạng chính tắc vì xảy ra dấu = và x1, x2, x3 ≥ 0
Trang 6
2/ f(x) = x1 + x2 + x3 - 2x4 → max
≤
=
−
−
≥ +
−
0 ,
, ,
3 3
5
2 2
4 3 2
1
3 2
1
3 2
1
x x x
x
x x
x
x x
x
Giải Ví dụ 2: VD2 không phải là chính tắc vì vi phạm 2 chỗ: ≥ 2; x1, x2, x3, x4 ≤0
Ta có: f(x) = x1 + x2 + x3 - 2x4 + 0 x5 →max
(1)
=
−
−
=
− +
−
3 3
5
2 2
3 2
1
5 3
2 1
x x
x
x x
x x
x1 = - x1’ ; x2 = -x2’ ; x3 = -x3’, x4 = -x4’ (với x1’, x2’, x3’, x4’ ≥ 0)
Ta thay x1, x2, x3, x4 vào (1)
= +
+
−
= +
−
+
3 ' 3 ' ' 5
2 ' ' 2 ' '
3 2
1
5 3 2
1
x x
x
x x x
x
Tìm x1, x2, x3, x4, x5, x1’, x2’, x3’, x4’ (x5 là ẩn phụ)
3/ f(x) = - x1 + 2x2 +1/3 x3 - 2x4 →min
Tìm x1, x2, x3, x4
≥
= +
+
−
≤
− +
−
=
−
−
0 ,
, ,
2 / 1 4 2
2 4
2
7 3
4 3 2 1
3 1
3 2
3 2
1
x x x x
x x
x
x x
x
x x
x
Giải VD3 : VD3 này không phải chính tắc vì vi phạm một chỗ là ≤ -2
f (x) = -x1 + 2x2 + 1/3 x3 - 2x4 + 0 x5 → min
= +
+
= +
− +
−
=
−
−
2 / 1 4 2
2 4
2
7 3
3 1
5 3
2
3 2
1
x x
x
x x
x x
x x
x
Tìm x1, x2, x3, x4, x5 ≥0, (x5 là ẩn phụ)
Trang 74/ f(x) = x1 + 3x2 -2x3 →min
Tìm x1, x2, x3, x2’, x2’’, x3’, x4, x5
≤
≥
≥
− +
= +
−
−
≤
− +
0 ,
0
10 8
3 4
12 4
2
7 2
3
3 1
3 2
1
3 2
2
3 2
1
x x
x x
x
x x
x
x x
x
Giải bài 4: Để đưa bài toán trên về dạng chính tắc, ta phải đưa những ràng buộc bất phương trình về phương trình, đồng thời mọi ẩn số phải không âm Có nghĩa là ràng buộc thứ nhất được cộng thêm ẩn phụ x4 ≤ 0, ràng buộc thứ 3 được trừ đi một ẩn phụ x5 ≥ 0 Thay x3 = - x3’ (x3’ ≥ 0)
x2 = x2’-x2’’(x2 ≥0, x2’’ ≥0)
vậy bài toán trở thành f(x) = x1 + 3x3 + 2x3’ →min
(1)
=
− +
+
=
−
−
−
= +
+ +
10 '
8 3
4
12 '
4 2
7 '
2 3
5 3
2 1
3 2
1
4 3
2 1
x x
x x
x x
x
x x
x x
Thay x2 vào (1) ta có
=
− +
− +
=
− +
−
−
= + +
− +
10 '
8 '' 3 ' 3 4
12 ''
4 ' 4 2
7 '
2 '' '
3
5 3 2
2 1
3 2
2 1
4 3 2
2 1
x x x
x x
x x
x x
x x x
x x
x1, x2’, x2’’, x3’ ≥ 0; x4, x5 ≥ 0 (x4, x5 là ẩn phụ)
1.2.3.2/ Dạng chuẩn (chuẩn tắc ) :
Bài toán quy hoạch tuyến tính là dạng chuẩn BT QHTT dạng chính tắc thỏa các điều kiện sau:
- Các bi bên vế phải của các ràng buộc chung ≥ 0
- Mỗi ràng buộc chung có biến cơ sở tương ứng Biến cơ sở là biến có hệ số là +1
ở một ràng buộc chung và hệ số là 0 ở các ràng buộc còn lại (Tức là các biến cơ sở sẽ tạo thành một ma trận đơn vị)
- Các biến không cơ sở ( không phải là biến cơ sở) gọi là biến tự do
Trang 8Ví dụ 1: Xem xét bài toán sau đây đã chuẩn tắc không, tìm phương án cơ bản ban đầu
f = x1 + 2x2 + x3 + x4 → min
1 2 3
2 3 4
7(1)
2 5(2)
0; (1,2,3,4)
j
x x x
x x x
+ − =
≥ =
Bài toán này là dạng chuẩn tắc vì phương trình (1,2) đều xảy ra dấu bằng, ràng buộc biến xj ≥0
- Hệ số hàm mục tiêu : c1 = 1, c2 = 2, c3 = 1, c4 = 1
- Ràng buộc chung : m = 2
- Ràng buộc biến : n = 4
- Hệ số ràng buộc chung : a11 = 1, a12 = 1, a13 = 1, a21 = 0, a22 = 1, a23 = 1, a24 = 1
- Các hệ số tự do: b1 = 7, b2 = 5
Ta có hệ số ma trận A = x1 x2 x3 x4
1 1 -1 0
0 2 1 1
Ta có x1, x4 là biến cơ sở ; x2, x3 là biến tự do
Vậy phương án cơ bản ban đầu : x2 = x3 = 0 thay vào (1) và (2) của hệ trên ta được
x1 = 7, x4 = 5 Phương án cơ bản ban đầu x = (7,0,0,5)
Ví dụ 2 :
f(x) = x2 - x5 → min
1 2 5
2 3 5
2 4 5
2 1(1)
3 3(2)
2 2(3)
0; (1,2, ,5)
j
x x x
x x x
x x x
− + + =
Đây chưa phải là bài toán dạng chuẩn:
Phương trình trên có hệ số tự do bi = -3 nên ta nhân 2 vế với -1
Trang 9
=
≥
= + +
−
=
− +
−
=
− +
) 5 ,1 (
; 0
) 3 ( 2 2
) 2 ( 3 3
) 1 ( 1 2
5 4 2
5 3 2
5 2
1
j x
x x x
x x x
x x
x
j
- Hệ số hàm mục tiêu : c1 = 1, c2 = -1
- Ràng buộc chung : m = 3
- Ràng buộc biến : n = 5
- Hệ số ràng buộc chung: a11 = 1, a12 = 1, a13 = 1, a14 = 1, a15 = -2, a21 = 0, a22 = -3,
a23 = 1, a24 = 0, a25 = -1, a31 = 0; a32 = -2, a33 = 0, a34 = 1, a35 = 1
- Các hệ số tự do: b1 = 1, b2 = 3, b3 = 2
- Ràng buộc biến: xj≥0
Ta có hệ số ma trận:
x1 x2 x3 x4 x5
Ta có x1, x3, x4 là biến cơ sở
x2, x5 là biến tự do
Thay x2 = x5 = 0 vào (3) →x4 = 2
Thay x2, x5 = 0 vào (2) → x3 = 3
Thay x2, x5 = 0 vào (1) → x1 =1
Vậy phương án cơ bản ban đầu là: x = (1,0,3,2,0)
1.3/ Giải bài toán quan hệ tuyến tính 2 biến bằng phương pháp hình học :
Trong trường hợp bài toán QHTT có 2 biến ta có thể giải bằng phương pháp hình học, ta áp dụng kết quả sau đây :
1/ Đường thẳng ax + by = c chia mặt phẳng tọa độ thành 2 miền, một miền là tập tất cả điểm M(x,y) thỏa ax + by >c một miền là tập tất cả các điểm M(x,y) : ax + by < c
2/ Cho đường thẳng ax + by = m, m∈ℜ là tập hợp các đường thẳng song song với nhau mà ta gọi là đường mức (tương ứng với giá trị của mức m) ( đường mức có pháp vector n = (a,b))
Trang 10Nếu ta duy chuyển một đường thẳng trong họ (một đường mức) đến một đường
thẳng khác trong họ theo hướng của vector n =(a,b) thì giá trị tương ứng của m tăng, còn theo hướng ngược lại thì giá trị tương ứng của m giảm.
Trong thực hành giải bài toán ta áp dụng :
+ Vẽ pháp vector n = (a,b) chính là vector OC với C(a,b) Vẽ đường mức (d) đi qua O ⊥ với vector n
+ Dịch chuyển song song các đường mức theo hướng vector n = (a,b) thì giá trị mức sẽ tăng ( ứng với bài toán fmax) và theo hướng ngược lại mức sẽ giảm (ứng với bài toán fmin)
+ Dịch chuyển (d) cho đến khi nào việc dịch chuyển tiếp theo không làm (d) cắt D nữa thì dừng Khi đó các điểm OFD nằm trên đường mức cuối cùng này là lời giải cần tìm
Ví dụ 1 : f(x) = 2x1 + x2 → max
x x
x x
x x
x x
+ ≥
− + ≤
− ≤
Xopt = (4,5), fmax = 13
Ví dụ 2: Cũng như VD 1 nhưng fmin
Đs: X0pt1 = (0,2), Xopt2 = (1,0), fmin = 2
Ví dụ 3: f(x) = 3x1 + 4x2 → min
1
x x
x x
x y
− ≥
− + ≥
D = θ , bài toán vô nghiệm
Ví dụ 4: f(x) = 3x1 + 4x2 → max
1
x x
x x
x y
− ≥
− + ≤
Trang 11Để hiểu rõ hơn ý nghĩa của việc giải bài toán bằng phương pháp hình học ta xét ví
dụ thực tế sau đây:
Ví dụ (5): Một công ty có 2 phân xưởng P1, P2 cùng sản xuất 2 loại sản phẩm A, B Số đơn vị sản phẩm các loại được sản xuất ra và chi phí mỗi giờ hoạt đông P1, P2 như sau:
Công ty nhận được yêu cầu đặt hàng là 5.000 đơn vị sản phẩm A và 3.000 đơn vị sản phẩm B
Hãy tìm cách phân phối thời gian cho mỗi phân xưởng hoạt động sao cho thỏa mãn yêu cầu đặt hàng và chi phí ít nhất
Gọi x1, x2 lần lượt là số giờ cần bố trí cho P1, P2 hoạt động
Trang 121.4/ Phương pháp đơn hình
1.4.1/ Cơ sở của phương pháp đơn hình:
Tập lồi: Tập G ∈ ℜ n được gọi là tập lồi nếu 2 điểm x, y thuộc G thì cả đoạn [x, y] cũng thuộc G
Tập lồi:
Không là tập lồi:
Điểm cực biên :
Điểm x ∈G được gọi là điểm cực biên của G nếu trong G không một đoạn thẳng nào nhận x là điểm trong
Trở lại ví dụ ** ta thấy D có 3 điểm cực biên A1, A2, A3 ta gọi chúng là phương án cực biên (pacb) ( phương án cơ sở, phương án cơ bản)
Nhận xét : Vì tính quan trọng của phương án cực biên ta thấy để giải toán quan hệ
tuyến tính ta chỉ cần xét trên tập hữu hạn các phương án cực biên
Cơ sở của phương pháp đơn hình :
Để tìm phương án tối ưu của bài tập quan hệ tuyến tính ta chỉ cần xét những phương án cơ bản Xuất phát từ một phương án cơ bản ban đầu xo nào đó Ta tìm cách đánh giá nó Nếu nó chưa phải là phương án tối ưu thì ta tìm cách chuyển sang một phương án cơ bản mới x1 tốt hơn Quá trình này được lập lại chừng nào còn có khả năng thực hiện sự di chuyển ấy và vì số phương án cơ bản là hữu hạn nên sau một số hữu hạn bước lặp hoặc sẽ thu được phương án tối ưu của bài toán hoặc sẽ kết luận vì hàm mục tiêu không bị chặt
Ta giả sử bài toán đang ở dạng (chuẩn- fmin)
min )
(
1
→
=
n
j
j
jx a x
f
1
( 1, )
n
ij j i j
=
∑
Trang 131.4.2/Bảng đơn hình
Hệ
số cơ bảnHệ ẩn cơ bảnP.án c
1 c2 cm cm+1 cs cn
x1 x2 xm xm+1 xs xn
c1 x1 b1 a11 a12 a1n
cr xr br ar1 ar2 arm arn
cm xm bm am1 am2 amm amm+1 amn
f(x) f(xo)
1
∆ ∆2 ∆m ∆m+1 ∆m n+
Trong n ẩn ta có
x1, x2, , xm : các ẩn cơ bản
xm+1, ,xn : các ẩn không cơ bản
Giá trị của f(x0) được tính như sau: f(x0) = c1b1+ +cmbm
Các hệ số kiểm tra được tính bằng công thức sau
1
( 1, )
n
j j ij i
j
a a c i m
=
∆ = ∑ − =
Chú ý rằng 1=2=…m =0
1.4.3/ Thuật toán đơn hình chi tiết : (sau khi có bảng đơn hình)
Bước 1: - Kiểm tra tính tối ưu của phương án :
- Nếu j < 0 với mọi j (j=1,n) thì phương án tương ứng là tối ưu
- Ngược lại : nếu tồn tại (có ít nhất 1) j > 0 thì chuyển sang bước 2
Bước 2:
- Nếu có một j >0 mà với mọi aij ≤ 0 (∀i=1,m) nghĩa là mọi phần tử trên cột xj đều không dương Ngừng thuật toán Kết luận bài toán không giải được
- Nếu với mỗi j > 0 đều có ít nhất một aij > 0 thì chuyển sang bước 3
Bước 3: ( chọn ẩn đưa vào, ẩn đưa ra khỏi hệ ẩn cơ bản)
- Ẩn xs là ẩn đưa vào nếu s = max{j >0}
Trang 14- Ẩn đưa ra xr bi br
=
λ min = (ars ≥ 0)
ais ars Phần tử ars nằm trên cột xs ( ứng với ẩn đưa vào) và dòng xr (ứng với ẩn đưa ra) gọi
là phần tử trục ( lưu ý rằng ars >0)
Sau khi xác định được ần đưa vào và đưa ra ta chuyển sang bước 4
Bước 4: (Cải tiến : tìm phương án cơ bản mới tốt hơn)
Xây dựng bảng đơn hình mới tương ứng với hệ ẩn cơ bản mới thu được từ hệ ẩn cơ bản trước bằng cách thay xr bởi xs ( trên cột hệ số ta thay cr bởi cs)
- Để thu được dòng xs (mới được đưa vào) ta chia dòng xr cho ars
- Bảng đơn hình mới : Trên dòng xs cũ thì ars = 1 các phân tử còn lại bằng 0, s = 0 Các phần tử còn lại (kể cả dòng j) ta tính theo quy tắc hình chữ nhật
ajk (mới) = ajk (cũ) ark ajs
ars
chia
nhân
Dòng j zjk? ajs
Sau đó quay lại bước 1
Cứ tiếp tục chạy thuật toán như trên theo thứ tự bước 1 -> bước 2->bước 3->
bước 4->bước 1->,,,vv Và trả lời yêu cầu bài toán
Ví dụ 1: Giải bài toán quan hệ tuyến tính sau:
f(x) = 6x1 + x2 + x3 + 3x4 + x5 - 7x6 + 6x7 → min
( )
=
≥
=
− + +
=
− +
− +
−
= + +
− +
−
7 , 1
; 0
2 3 2
4
9 2
4 2
3
6 5 4 1
7 6 4 3 1
7 6 4 2 1
j x
x x x x
x x x x x
x x x x x
j
Bài toán có dạng chuẩn với phương án cơ bản ban đầu x0 = (0,3,9,0,2,0,0) có các
ẩn cơ bản x2, x3, x5 (n=7, m=3) ta có bảng đơn hình