You are on page 1of 27

Tổng hợp bởi Lê Minh Trung – Nguyễn Gia Huy (HC17KSTN) – Nguyễn Đức Thành (HC16KSTN)

QUY HOẠCH PHI TUYẾN

I. QUY HOẠCH NHIỀU BIẾN


1. Nhóm các phương pháp sử dụng đạo hàm cấp 1

NGUYÊN TẮC CHUNG

• Bước khởi tạo: Xác định sai số kết thúc  và các giá trị cần xác định trước khi thực
hiện bước nhảy đầu tiên.
• Bước 1: Với mỗi phương pháp có các cách xác định bước nhảy h khác nhau, tọa độ
tính toán tại từng bước nhảy được tính như sau:

X k +1 = X k + hk Sk
Với :
k Số lần lặp

X kT =  x1,k x2,k xn ,k  Vector biến tại lần lặp thứ k

Sk Vector chỉ hướng

 Be freely choose Bước nhảy, có thể tự chọn cố định hoặc là



hk =  −T f ( X k ) Sk hàm số theo vector chỉ hướng S k được xác
 SkT  2 f ( X k ) Sk
 định tùy theo phương pháp

 f f f 
T f ( X k ) =   Vector gradient
 x1 x2 xn 

 2 f 2 f 
 x 2 x1 xn 
 1 Ma trận Hessian/Vector đạo hàm cấp 2, là ma
H ( X k ) = 2 f ( X k ) =  
 2  trận đối xứng qua đường chéo chính.
 f 2 f 
 x x xn2 
 n 1

• Bước 2: Lặp lại bước 1 đến khi f k +1 − f k  


Tổng hợp bởi Lê Minh Trung – Nguyễn Gia Huy (HC17KSTN) – Nguyễn Đức Thành (HC16KSTN)

CÁC PHƯƠNG PHÁP

- Dùng trực tiếp giá trị hàm (đạo hàm cấp 0)


- Sử dụng đạo hàm cấp 1
- Sử dụng đạo hàm cấp 2.
Về mặt hội tụ (đạt sai số cho phép nhanh nhất): Phương pháp sử dụng đạo hàm cấp 2.

PHƯƠNG PHÁP SỬ DỤNG ĐẠO HÀM CẤP 1


Hội tụ nhanh hơn các phương pháp sử dụng giá trị hàm trực tiếp.

1.1.1. Nhảy theo cặp vector liên hợp (Conjugate search)


Thuật toán

BƯỚC KHỞI TẠO: Chọn sai số   0 . Lấy 1 điểm xuất phát X o , 1 vector chỉ hướng si .

BƯỚC LẶP THỨ K:

Bước 1: Xác định cặp vector liên hợp si , s j (tại từng điểm X k ) thoả hệ thức:

siT  H ( X k )  s j = 0 từ vector chỉ hướng ban đầu si được cung cấp bởi đề bài.

Bước 2: Xác định tọa độ Xk+1 được xác định bằng cách:
- Tịnh tiến Xk theo vector si để được ảnh X 'k

- Tịnh tiến X 'k theo vector s j để thu được ảnh Xk+1

Bước 3: Kiểm tra điều kiện f ( X k +1 ) − f ( X k )   Nếu thỏa điều kiện thì dừng phép lặp.

Nếu không thì tiếp tục thực hiện phép lặp.


Tổng hợp bởi Lê Minh Trung – Nguyễn Gia Huy (HC17KSTN) – Nguyễn Đức Thành (HC16KSTN)

Đặc điểm: Chỉ cần tiến theo 2 vector (vector chỉ phương sn là tổng 2 vector liên hợp trên),
tiết kiệm thời gian nhiều so với univariate khi số biến nhiều lên.

Ví dụ

Xác định cực tiểu của hàm: f ( X ) = 2 x12 + x22 − 3 sử dụng phương pháp nhảy theo cặp vector liên

1  −4 
hợp, xuất phát tại điểm X o =   theo hướng ban đầu so =   .
1  −2 

Giải

  4 x1 
 f ( X ) =  
 2 x2 
Hàm mục tiêu: f ( X ) = 2 x12 + x22 − 3 → 
 4 0
H ( X ) =  
 0 2

Bước 1: Vector s1 được xác định từ phương trình: soT Hs1 = 0

 4 0   s1  1
a

→  −4 −2    b  = 0 → s1 =  
 0 2   s1   −4
Bước 2: Xác định tọa độ Xk
 −4  1
2.1 – Xác định X 'o theo hướng so =   từ X o =  
 −2  1
T f ( X o ) so 20  −0,1111
ho = − T 2 = → X 'o = X o + ho so =  
So  f ( X o ) So 72  0, 4444 

1  −0,1111
2.2 – Xác định X 1 theo hướng s1 =   từ X 'o =  
 −4   0, 4444 
T f ( X o ) so 0
h1 = − = 0,1111 → X 1 = X 'o + h1 s1 =  
So  f ( X o ) So
T 2
0

 f ( X o ) = 0
2.3 – Kiểm tra 
 f ( X 1 ) = −3
Tổng hợp bởi Lê Minh Trung – Nguyễn Gia Huy (HC17KSTN) – Nguyễn Đức Thành (HC16KSTN)

Nhận xét: Hàm x12 + x22 không âm do chỉ chứa các số mũ chẵn.

Phương pháp giải tích cho thấy phương trình f ( X ) = 0 tồn tại nghiệm X =  0 0 . Do

đó, đây sẽ là điểm mà hàm đạt cực tiểu và giá trị của cực tiểu hàm là −3 .
→ Phương pháp nhảy theo cặp vector liên hợp cho kết quả cực tiểu trùng với dự đoán bằng
giải tích với 1 bước nhảy.

1.1.2. Phương pháp Đường dốc nhất (Steepest descent)

Ưu điểm: Chỉ cần 1 vector gradient tại điểm làm vector chỉ phương, kết hợp vector gradient là
vector chỉ hướng thay đổi nhanh nhất của hàm số → Bài toán tiến rất nhanh.

Thuật toán

BƯỚC KHỞI TẠO: Chọn sai số   0 . Lấy 1 điểm xuất phát X o .

BƯỚC LẶP THỨ k:

2 2 2
 f   f   f 
Điều kiện dừng: f ( X k )   , với f ( X k ) =   +  + ... +  
 x1   x2   xn 
 X =Xk   X =Xk   X =Xk 

Bước 1: Chọn vector chỉ hướng sk = −f ( X k ) .

Bước 2: Chọn bước nhảy h  0 có 2 cách:


- Là khoảng cách ngắn nhất từ tọa độ đầu X o đến X k bằng cách thực hiện bài toán cực tiểu

( )
hàm 1 biến f X k + hk sk .
Tổng hợp bởi Lê Minh Trung – Nguyễn Gia Huy (HC17KSTN) – Nguyễn Đức Thành (HC16KSTN)

- Chọn h là 1 giá trị không đổi, ví dụ h = 1. Tiếp tục thực hiện phép lặp với bước nhảy h =
1 đến khi hàm f bắt đầu tăng thì dừng lại, giảm bước nhảy và tiếp tục thực hiện phép lặp
đến khi thỏa điều kiện ở bước 3.
Bước 3: Kiểm tra điều kiện f ( X k )   . Nếu thỏa điều kiện thì dừng phép lặp. Nếu không thì

tiếp tục thực hiện phép lặp.


Ví dụ: Bước nhảy h là khoảng cách ngắn nhất.

Tìm cực tiểu của hàm f ( X ) = ( x1 − 2 ) + ( x1 − 2 x2 ) bằng phương pháp đường dốc nhất với
4 2

 = 0,1 và X oT =  0 3 .

Giải

Bước khởi tạo: Từ đề bài:  = 0,1 và X oT =  0 3

 4 ( x − 2 )3 + 2 ( x1 − 2 x2 ) 
Vector gradient: f ( X ) =  1 
 −4 ( x1 − 2 x2 ) 

Bước lặp thứ 1:

Thế giá trị X oT =  0 3 vào các biểu thức đạo hàm ta được: f ( X 1 ) = ( −44; 24 )

f ( X 1 ) = ( −44 ) + 242 = 50,12  


2

Không thỏa điều kiện kết thúc → Chọn vector chỉ hướng:

sk = −f ( X 1 ) = ( 44; − 24 ) = ( a; b )

Vị trí tiếp theo:


X 2 = X 1 + hs1 = ( 44h; 3 − 24h )

Thế vào biểu thức 𝑓(𝑥) để tìm cực tiểu, ta được:

𝑓(𝜆) = (44ℎ − 2)4 + (92ℎ − 6)2

Tìm cực tiểu hàm trên thu được: ℎ = 0,062


Tổng hợp bởi Lê Minh Trung – Nguyễn Gia Huy (HC17KSTN) – Nguyễn Đức Thành (HC16KSTN)

Tiếp tục lặp cho đến khi ‖∇f(𝑥 𝑘 )‖ < 𝜀, ta thu được bảng sau:

Phương trình tổng quát tìm 𝜆:

4(𝑥1 + 𝑎𝜆 − 2)3 . 𝑎 + 2(𝑥1 − 2𝑥2 + 𝜆(𝑎 − 2𝑏))(𝑎 − 2𝑏) = 0

Bước lặp k 𝑿𝒌 𝒇(𝑿𝒌 ) 𝛁𝒇(𝑿𝒌 ) ‖𝛁𝒇(𝑿𝒌 )‖ 𝒔𝒌 𝒉𝒌


1 (0;3) 52 (-44;24) 50.12 (44;-24) 0.062
2 (2.73;1.51) 0.368 (0.98;1.16) 1.52 (-0.98;-1.16) 0.304
3 (2.43;1.16) 0.047 (0.54;-0.44) 0.70 (-0.54;0.44) 0.105
4 (2.37;1.21) 0.021 (0.1;0.20) 0.22 (-0.10;-0.20) 0.257
5 (2.34;1.16) 0.0137 (0.20;-0.08) 0.215 (-0.20;0.08) 0.148
6 (2.31;1.17) 0.010 (0.06;0.12) 0.134 (-0.06;-0.12) 0.261
7 (2.29;1.14) 0.007 (0.12;-0.04) 0.126 (-0.12;0.04) 0.168
8 (2.269;1.147) 0.00586 (0.028;0.1) 0.104 (-0.028;-0.1) 0.180
9 (2.264;1.129) 0.00489 (0.086;0.024) 0.089 (-0.086;-0.024)

Vậy với sai số  = 0,1; cực tiểu của hàm đang xét là 0,00489 tại X T = ( 2, 264; 1,129 )

Ví dụ: Bước nhảy h là không đổi

Tìm cực tiểu hàm f ( X ) = x14 − 2 x2 x12 + x22 + x12 − 2 x1 + 5 sử dụng phương pháp đường dốc nhất,

1 
với h = 0, 05; X o =   ;  = 0,1.
2

Bước khởi tạo: Từ đề bài:  = 0,1 và X oT = 1 2

 4 x13 − 4 x1 x2 + 2 x1 − 2 
Vector gradient: f ( X ) =  
 −2 x12 + 2 x2 

Bước lặp thứ 1:

1, 2 
X 1 = X o − hof ( X o ) =   → f ( X 1 ) = 4, 25
1,9 
Tổng hợp bởi Lê Minh Trung – Nguyễn Gia Huy (HC17KSTN) – Nguyễn Đức Thành (HC16KSTN)

Tiếp tục thực hiện phép lặp và lập bảng:

Bước lặp k 𝑿𝒌 𝒇(𝑿𝒌 ) f ( X ) Quyết định

1
2
3
4
5
6
7
8
9
10

PHƯƠNG PHÁP SỬ DỤNG ĐẠO HÀM CẤP 2

PHƯƠNG PHÁP NEWTON

Yêu cầu: Hàm mục tiêu có đạo hàm cấp 2 liên tục

Thuật toán

BƯỚC KHỞI TẠO: Chọn sai số   0 . Lấy 1 điểm xuất phát X o .

BƯỚC LẶP THỨ K:

Điều kiện dừng: f ( X k +1 ) − f ( X k )  

Bước 1: Chọn vector chỉ hướng s = −f ( X k ) .

Bước 2: Chọn bước nhảy h  0 có 2 cách, ứng với 2 phương pháp truyền thống & hiệu chỉnh:

- Phương pháp Newton truyền thống: Không sử dụng bước nhảy h do không có vector chỉ
phương S k để tính bước nhảy, i.e, h = 1 với mọi phép lặp.
Tổng hợp bởi Lê Minh Trung – Nguyễn Gia Huy (HC17KSTN) – Nguyễn Đức Thành (HC16KSTN)

- Phương pháp Newton hiệu chỉnh: h là khoảng cách ngắn nhất từ tọa độ đầu X o đến X k

bằng cách thực hiện bài toán cực tiểu hàm 1 biến f X k + hs .( )
Bước 3: Tính Xk theo công thức:

−1
X k +1 = X k − hk  2 ( X k )  f ( X k ) = X k − hk sk

Bước 3: Kiểm tra điều kiện f ( X k +1 ) − f ( X k )   Nếu thỏa điều kiện thì dừng phép lặp. Nếu

không thì tiếp tục thực hiện phép lặp.

Lưu ý: Khi thực hiện phép lặp, lập bảng theo dõi có dạng:

Bước lặp k 𝑿𝒌 𝒇(𝑿𝒌 ) f ( X ) Quyết định

Phụ lục: Cách tìm ma trận nghịch đảo của một ma trận vuông H
- Ghép với một ma trận đơn vị cùng cấp, tạo thành ma trận (𝐻|𝐼𝑛 )
- Biến đổi sơ cấp theo hàng (nhân/chia một hàng cho một hằng số, thay 1 hàng bằng tổng của
chính nó với n lần hàng khác) đến khi bên trái thành ma trận đơn vị.
- Ma trận ghép sau khi biến đổi sơ cấp có dạng (𝐼𝑛 |𝐻−1 )

Ví dụ

Tìm cực tiểu của hàm f ( X ) = ( x1 − 2 ) + ( x1 − 2 ) x22 + ( x2 + 1) bằng phương pháp Newton, bắt
4 2 2

đầu ở điểm X o = 1 1 với sai số kết thúc  = 10−6.


T

Sai số 𝜀 = 10−6 nên các giá trị vô tỉ sẽ được làm tròn đến 6 chữ số phần thập phân.

4(𝑥 − 2)3 + 2(𝑥1 − 2)𝑥2 2


Vector gradient: ∇𝑓(𝑋) = [ 1 ]
2𝑥2 (𝑥1 − 2)2 + 2(𝑥2 + 1)

Nhận xét: Hàm không âm do chỉ chứa các số mũ chẵn.


Tổng hợp bởi Lê Minh Trung – Nguyễn Gia Huy (HC17KSTN) – Nguyễn Đức Thành (HC16KSTN)

Phương pháp giải tích cho thấy phương trình ∇𝑓(𝑋) = 0 tồn tại nghiệm 𝑋 = [2 −1]𝑇 . Chính vì
thế, đây sẽ là điểm mà hàm đạt cực tiểu và giá trị của cực tiểu hàm là 0.

Phương pháp Newton: 𝑋𝑛+1 = 𝑋𝑛 − 𝐻−1 (𝑋𝑛 ) × ∇𝑓(𝑋𝑛 )

12(𝑥1 − 2)2 + 2𝑥22 4𝑥2 (𝑥1 − 2)


Ma trận Hessian: 𝐻(𝑋) = [ ] đối xứng.
4𝑥2 (𝑥1 − 2) 2 + 2(𝑥1 − 2)2

Tại 𝑋0 = [1 1]𝑇 , giá trị hàm ban đầu 𝑓(𝑋0 ) = 6

−6 14 −4
∇𝑓(𝑋) = [ ] và 𝐻(𝑋) = [ ]
6 −4 4

14 −4 −1 −6 0
𝐻−1 (𝑋) × ∇𝑓(𝑋) = [ ] ×[ ]=[ ]
−4 4 6 1,5

1 0 1
𝑋1 = [ ] − [ ] = [ ]
1 1,5 −0,5

Giá trị hàm 𝑓(𝑋1 ) = 1,5 và ∆𝑓(𝑋) = −4,5

Tại 𝑋1 = [1 −0,5]𝑇 :

−4,5 12,5 2
∇𝑓(𝑋) = [ ] và 𝐻(𝑋) = [ ]
0 2 4

−9
−1
12,5 2 −4,5
𝐻−1 (𝑋) × ∇𝑓(𝑋) = [ ] ×[ ] = [ 23 ]
2 4 0 9
46

−9 32
1
𝑋2 = [ ] − [ 23 ] = [ 23 ]
−0,5 9 −16
46 23

Giá trị hàm 𝑓(𝑋2 ) = 0,409207 và ∆𝑓(𝑋) = −1,090793

32 −16 𝑇
Tại 𝑋2 = [23 23
] :

−1,491247 5,413989 1,693762


∇𝑓(𝑋) = [ ] và 𝐻(𝑋) = [ ]
0,093203 1,693762 2,741021
Tổng hợp bởi Lê Minh Trung – Nguyễn Gia Huy (HC17KSTN) – Nguyễn Đức Thành (HC16KSTN)

5,413989 1,693762 −1 −1,491247 −0,354640


𝐻−1 (𝑋) × ∇𝑓(𝑋) = [ ] ×[ ]=[ ]
1,693762 2,741021 0,093203 0,253146

32
−0,354640 1,745944
𝑋3 = [ 23 ] − [ ]=[ ]
−16 0,253146 −0,948798
23

Giá trị hàm 𝑓(𝑋3 ) = 0,064892 và ∆𝑓(𝑋) = −0,344315

Tại 𝑋3 = [1,745944 −0,948798]𝑇 :

−0,523003 2,574969 0,964191


∇𝑓(𝑋) = [ ] và 𝐻(𝑋) = [ ]
−0,020075 0,964191 2,129089

2,574969 0,964191 −1 −0,523003 −0,240334


𝐻−1 (𝑋) × ∇𝑓(𝑋) = [ ] ×[ ]=[ ]
0,964191 2,129089 −0,020075 0,099410

1,745944 −0,240334 1,986278


𝑋4 = [ ]−[ ]=[ ]
−0,948798 0,099410 −1,048208

Giá trị hàm 𝑓(𝑋4 ) = 0,002531 và ∆𝑓(𝑋) = −0,062361

Tại 𝑋4 = [1,986278 −1,048208]𝑇 :

−0,030164 2,199740 0,057534


∇𝑓(𝑋) = [ ] và 𝐻(𝑋) = [ ]
−0,096811 0,057534 2,000377

2,199740 0,057534 −1 −0,030164 −0,012456


𝐻−1 (𝑋) × ∇𝑓(𝑋) = [ ] ×[ ]=[ ]
0,057534 2,000377 −0,096811 −0,048038

1,986278 −0,012456 1,998734


𝑋5 = [ ]−[ ]=[ ]
−1,048208 −0,048038 −1,000170

Giá trị hàm 𝑓(𝑋5 ) = 0,000002 và ∆𝑓(𝑋) = −0,002529

Tại 𝑋5 = [1,998734 −1,000170]𝑇 :

−0,002533 2,000699 0,005065


∇𝑓(𝑋) = [ ] và 𝐻(𝑋) = [ ]
−0,000343 0,005065 2,000003

2,000699 0,005065 −1 −0,002533 −0,001266


𝐻−1 (𝑋) × ∇𝑓(𝑋) = [ ] ×[ ]=[ ]
0,005065 2,000003 −0,000343 −0,000168
Tổng hợp bởi Lê Minh Trung – Nguyễn Gia Huy (HC17KSTN) – Nguyễn Đức Thành (HC16KSTN)

1,998734 −0,001266 2
𝑋6 = [ ]−[ ]=[ ]
−1,000170 −0,000168 −1,000002

Giá trị hàm 𝑓(𝑋6 ) = 4 × 10−12 và ∆𝑓(𝑋) = −1,999996 × 10−6

Có thể dừng ở đây do sai số đã về sát 𝜀 = 10−6 , nhưng để chắc chắn thì thêm 1 bước:

Tại 𝑋6 = [2 −1,000002]𝑇 :

0 2,000008 0
∇𝑓(𝑋) = [ ] và 𝐻(𝑋) = [ ]
−0,000004 0 2

2,000008 0 −1 0 0
𝐻−1 (𝑋) × ∇𝑓(𝑋) = [ ] ×[ ]=[ ]
0 2 −0,000004 −0,000002

2 0 2
𝑋7 = [ ]−[ ]=[ ]
−1,000002 −0,000002 −1

Giá trị hàm 𝑓(𝑋7 ) = 0 và ∆𝑓(𝑋) = −2 × 10−12

Đến đây |∆𝑓(𝑋)| < 𝜀 = 10−6 nên ngừng thuật toán, kết luận phương án tối ưu (cực tiểu) đạt được
tại 𝑋7 = [2 −1]𝑇 là 𝑓(𝑋7 ) = 0. Đây cũng chính là giá trị được dự đoán bằng phương pháp giải
tích, chứng tỏ cũng là điểm cuối cùng cần phải khảo sát.

Lần lặp x1 x2 f(X) f(X)


0 1 1 6
1 1 -0,5 1,5 -4,5
2 1,391304 -0,695652 0,409207 -1,090793
3 1,745944 -0,948798 0,064892 -0,344315
4 1,986278 -1,048208 0,002531 -0,062361
5 1,998734 -1,000170 0,000002 -0,002529
6 2 -1,000002 4×10-12 -1,999996×10-6
7 2 -1 0 -4×10-12


Tổng hợp bởi Lê Minh Trung – Nguyễn Gia Huy (HC17KSTN) – Nguyễn Đức Thành (HC16KSTN)

BÀI TẬP

Câu 1. Tìm cực tiểu hàm:


f ( X ) = 4 x12 + x22 − 2 x1 x2 với X oT = ( −0,5 0,5 ) ,  = 0,1

Câu 1. Tìm cực tiểu hàm Rosenbock:

f ( X ) = 100 ( x2 − x12 ) + (1 − x1 ) với X oT = ( −0,5 0,5 ) ,  = 0,1


2 2
Tổng hợp bởi Lê Minh Trung – Nguyễn Gia Huy (HC17KSTN) – Nguyễn Đức Thành (HC16KSTN)
Tổng hợp bởi Lê Minh Trung – Nguyễn Gia Huy (HC17KSTN) – Nguyễn Đức Thành (HC16KSTN)

2. Bài toán quy hoạch tuyến tính


Bài toán mà ở đó cả hàm mục tiêu (objective function) và các ràng buộc (constraint) đều
có dạng tuyến tính, tức chỉ chứa các số hạng bậc 1.
Dạng chính tắc
Dạng chính tắc (canonical form) của bài toán: số biến nhiều hơn số ràng buộc, các ràng
buộc đều phải dạng đẳng thức, các biến không âm và hệ số tự do không âm.
- Hàm mục tiêu: 𝑓 (𝑋 ) = ∑𝑛𝑗=1 𝑐𝑗 𝑥𝑗 → 𝑚𝑖𝑛
∑𝑛𝑗=1 𝑎𝑖𝑗 𝑥𝑗 = 𝑏𝑖
- Các ràng buộc (Subject to): { 𝑥𝑗 ≥ 0 𝑖 = 1: 𝑚 𝑗 = 1: 𝑛 𝑛>𝑚
𝑏𝑖 ≥ 0
Hoặc dạng ma trận:
- Hàm mục tiêu: 𝑓 (𝑋 ) = 𝑐 𝑇 𝑋 → 𝑚𝑖𝑛
𝐴𝑋 = 𝑏
- Các ràng buộc (Subject to): { 𝑋 ≥ 0 𝑟𝑎𝑛𝑘 (𝐴) = 𝑚
𝑏≥0
Thông thường A (ma trận ràng buộc) chỉ chứa các phương trình độc lập tuyến tính.
Lưu ý
- Số biến phụ thuộc (dependent variable) luôn bằng với số phương trình của ràng buộc,
hay nói cách khác mỗi phương trình sẽ có 1 biến phụ thuộc, có thể phải dùng đến biến giả
(hidden variable) để đạt được điều trên.
- Các biến còn lại là biến độc lập (independent variable).
- Nghiệm cơ bản (basic solution) của hệ là khi từng biến độc lập = 0 và giải ra giá trị của
các biến phụ thuộc, gọi là X0. Ta có: 𝑋0𝑇 = [𝑏1 … 𝑏𝑚 ]
Thuật toán giải: Thuật toán đơn hình (không nhầm lẫn với phương pháp đơn hình ở bài
toán không ràng buộc) → Bắt buộc đưa về dạng chính tắc của bài toán.
Một số lưu ý để đưa về dạng chính tắc (VT = Vế trái, VP = vế phải):
- Khi một ràng buộc có 𝑉𝑃 < 0, nhất thiết phải nhân cả ràng buộc với -1 để có dạng vế
phải dương.
- Khi một ràng buộc có dạng 𝑉𝑇 ≥ 0, về nguyên tắc có thể trừ 1 biến (slack variable)
không âm để được đẳng thức, nhưng sẽ gặp khó khăn sau đó với hệ số -1 của slack
Tổng hợp bởi Lê Minh Trung – Nguyễn Gia Huy (HC17KSTN) – Nguyễn Đức Thành (HC16KSTN)

variable. Vì vậy, nên nhân cả ràng buộc với -1 để chuyển về dạng 𝑉𝑇 ≤ 0 rồi cộng thêm
slack variable.
- Khi một ràng buộc có dạng 𝑉𝑇 ≤ 𝑉𝑃, tiến hành cộng 1 biến (slack variable) không âm
vào vế trái, thu được dạng đẳng thức.
- Khi một ràng buộc có dạng 𝑉𝑇 ≥ 𝑉𝑃, tiến hành trừ 1 biến (slack variable) không âm
vào vế trái, thu được dạng đẳng thức. Lúc này, dù slack variable mới thêm vào chỉ xuất
hiện duy nhất 1 lần, nó không được tính là biến phụ thuộc do có hệ số -1. Khi giải phải
cộng tiếp 1 biến nữa (hidden variable) để biến phụ thuộc mang hệ số +1.
- Khi một ràng buộc đã có dạng đẳng thức, nếu hệ chưa đủ số biến phụ thuộc thì vẫn cần
phải cộng thêm 1 biến (hidden variable) để đủ số biến phụ thuộc.
Thuật toán – Bảng đơn hình
Lập bảng đơn hình (simplex table) để tiến hành giải (n biến, m biến phụ thuộc)
ci x1 x2 … xn
Dep. Var. X0
hệ số ở f(X) c1 c2 … cn
dep.var. 1 b1 a11 a12 … a1n
dep.var. 2 b2 a21 a22 … a2n
… … … … … …
dep.var. m bm
(*) (1) (2) … (n)
(1) = ∑𝑚
𝑖=1 𝑐𝑖 𝑎𝑖1 − 𝑐1 (2) = ∑𝑚
𝑖=1 𝑐𝑖 𝑎𝑖2 − 𝑐2 (n) = ∑𝑚
𝑖=1 𝑐𝑖 𝑎𝑖𝑛 − 𝑐𝑛

(*) là giá trị của hàm khi đạt phương án tối ưu, chỉ tính ở bảng cuối cùng.
- Chọn ra số dương lớn nhất từ (1) đến (n), đánh dấu cả cột để dễ nhìn. Nếu có nhiều hơn
1 cột cùng đạt giá trị dương lớn nhất, chọn bất kì một cột trong các cột đó.
𝑏𝑖
- Giả sử chọn cột u có giá trị (u) lớn nhất (đánh dấu cột u), tính lần lượt các giá trị
𝑎𝑖𝑢

- Chọn ra giá trị dương nhỏ nhất. Đánh dấu lại hàng i đó.
+ Phép chia với 0 thì lưu ý dấu của số chia. Số chia dương hoặc âm sẽ lần lượt cho
ra giá trị + hoặc -. Điều này thường không ảnh hưởng lắm đến lựa chọn.
+ Phép chia 0 với một số khác 0 thì lưu ý dấu của số bị chia: Thương sẽ có dạng “+0” nếu
số bị chia dương (sẽ trở thành lựa chọn!) và dạng “-0” nếu số bị chia âm.
Tổng hợp bởi Lê Minh Trung – Nguyễn Gia Huy (HC17KSTN) – Nguyễn Đức Thành (HC16KSTN)

- Thay biến phụ thuộc trên hàng i vừa xác định được bằng biến ứng với cột u ở trên.
- Cột u sẽ trở thành biến phụ thuộc, tức là chỉ xuất hiện một lần (chỉ có một số 1 trên cột,
còn lại là 0) và giống với cột ứng với biến phụ thuộc ở hàng i mà nó thay thế.
- Giá trị (u) khi đó chắc chắn về 0. Thực hiện biến đổi sơ cấp từ bảng cũ sang bảng mới
cho thoả những giá trị mới mà cột u vừa nhận và lặp lại phép tính.
- Đến bảng nào mà hàng cuối cùng không còn số dương (tức chỉ toàn là số 0 hoặc số âm)
thì ta kết luận bài toán đạt đến phương án tối ưu, ứng với toạ độ điểm X* là các biến phụ
thuộc đang xuất hiện trong bảng cuối cùng, những thành phần không xuất hiện có giá trị
0. Từ đây tính giá trị (*) và kết luận cực tiểu.
Xét ví dụ trong slide Chapter 5 của TS. Tạ Đăng Khoa:
Tìm cực đại hàm 𝑓 (𝑋) = 2𝑥1 − 10𝑥2 + 4𝑥3 − 6𝑥4 với các điều kiện:
3𝑥1 − 𝑥2 + 2𝑥4 ≤ 16
𝑥 + 2𝑥2 − 𝑥3 − 2𝑥4 ≥ −4
{ 1
𝑥2 + 3𝑥3 − 𝑥4 ≥ 0
𝑥𝑖 ≥ 0, 𝑖 = 1: 4
Đây là bài toán 4 biến 3 phương trình, giải bình thường bằng thuật toán đơn hình.
- Hàm mục tiêu được đảo dấu để tìm cực tiểu.
- Phương trình 1 được cộng thêm 𝑥5 ≥ 0 để đạt đẳng thức.
- Phương trình 2 đảo dấu để đảm bảo vế phải không âm, rồi cộng thêm 𝑥6 ≥ 0
- Phương trình 3 đảo dấu để đảm bảo dễ tính toán, rồi cộng thêm 𝑥7 ≥ 0
Ràng buộc có 3 phương trình tức là cần 3 biến phụ thuộc, và x5, x6, x7 thoả điều kiện.
Bài toán đã được đưa về dạng chính tắc, tiến hành lập bảng đơn hình (slide).
Khi số biến ít hơn số phương trình?
Bài toán quy hoạch tuyến tính giải dễ nhất khi số biến lớn hơn số phương trình như ví dụ
trên, tuy nhiên điều ngược lại vẫn có thể giải được bằng các biến giả.
Khi có biến giả: Bài toán 2 pha:
- Pha 1: Tìm cực tiểu của hàm giả (hàm chỉ gồm các biến giả) 𝑓1 (𝑋) = ∑ 1𝑥ℎ𝑖𝑑𝑑𝑒𝑛
- Pha 2: Khi thoả điều kiện tối ưu cho hàm giả, xoá các cột liên quan đến biến giả đi, sửa
lại hàng hệ số của các biến chính (kể cả các slack variable) theo hàm mục tiêu thật sự, rồi
tìm điều kiện tối ưu đến khi thoả.
Tổng hợp bởi Lê Minh Trung – Nguyễn Gia Huy (HC17KSTN) – Nguyễn Đức Thành (HC16KSTN)

Xét ví dụ sau: Tìm cực tiểu của hàm 𝑓 (𝑋) = 2𝑥1 + 𝑥2 với các điều kiện:
𝑥1 + 𝑥2 = 3
3𝑥 − 𝑥2 ≥ 1
{ 1
2𝑥1 + 3𝑥2 ≤ 9
𝑥𝑖 ≥ 0, 𝑖 = 1: 2
Đây là bài toán 2 biến 3 phương trình.
- Phương trình (2) được trừ đi 𝑥3 ≥ 0, nhưng đây không là biến phụ thuộc.
- Phương trình (3) được cộng thêm 𝑥4 ≥ 0, đây là biến phụ thuộc.
Ràng buộc có 3 phương trình, tức là cần 3 biến phụ thuộc nhưng mới chỉ có x4 thoả.
Cộng tiếp 𝑥5 ≥ 0 vào phương trình (1) và 𝑥6 ≥ 0 vào phương trình (2), đây là các biến
giả (hidden variable) và là biến phụ thuộc, bài toán có đủ 3 biến phụ thuộc.
Pha 1: Tìm điều kiện tối ưu cho hàm giả 𝑓1 (𝑋) = 𝑥5 + 𝑥6 (slide)
Pha 2: Xoá 2 cột x5 và x6 trong bảng, sửa hệ số các biến còn lại theo hàm mục tiêu và tiếp
tục tìm phương án tối ưu (slide)
Bài toán đối ngẫu trong quy hoạch tuyến tính
Bài toán quy hoạch tuyến tính giải dễ nhất khi số biến nhiều hơn số phương trình. Chính
vì thế, khi số biến ít hơn số phương trình, hay 𝑛 < 𝑚, bài toán đối ngẫu sẽ biến bài toán
gốc trở thành bài toán số biến nhiều hơn số phương trình, có thể giải dễ hơn. Hai bài toán
này là tương đương nhau, và lợi thế của bài toán đối ngẫu nằm ở cách giải.
Đối ngẫu gần như là bài toán ngược hẳn với bài toán gốc, nếu bài toán gốc tìm min thì nó
sẽ tìm max. Thường đặt ẩn Y cho bài toán đối ngẫu, nên nó còn viết là 𝑓 (𝑌).
2.1.1. Cách chuyển bài toán gốc về bài toán đối ngẫu
Chỉ xét bài toán gốc min → bài toán đối ngẫu max. Trên cùng 1 hàng là một cặp yếu tố
đối ngẫu quyết định lẫn nhau.
Bài toán gốc min (bi  0) Bài toán đối ngẫu max
𝑛 𝑚

𝑓 (𝑋 ) = ∑ 𝑐𝑗 𝑥𝑗 → 𝑚𝑖𝑛 𝑓 (𝑌) = ∑ 𝑏𝑖 𝑦𝑖 → 𝑚𝑎𝑥


𝑗=1 𝑗=1
𝑛

∑ 𝑎𝑖𝑗 𝑥𝑗 ≥ 𝑏𝑖 𝑦𝑖 ≥ 0
𝑗=1
Tổng hợp bởi Lê Minh Trung – Nguyễn Gia Huy (HC17KSTN) – Nguyễn Đức Thành (HC16KSTN)

∑ 𝑎𝑖𝑗 𝑥𝑗 = 𝑏𝑖 𝑦𝑖 mang dấu tuỳ ý (!)


𝑗=1
𝑚

𝑥𝑗 ≥ 0 ∑ 𝑎𝑗𝑖 𝑦𝑖 ≤ 𝑐𝑗
𝑖=1
𝑚

𝑥𝑗 mang dấu tuỳ ý (!) ∑ 𝑎𝑗𝑖 𝑦𝑖 = 𝑐𝑗


𝑖=1

Diễn giải:
- Các hệ số tự do bi trong các ràng buộc của X trở thành hệ số của hàm mục tiêu Y. Tức
là hàm mục tiêu của Y sẽ có m biến (thay vì n biến).
- Các hệ số của hàm mục tiêu X trở thành hệ số tự do cj trong các ràng buộc của Y. Điều
này nghĩa là Y sẽ có n phương trình ràng buộc (thay vì m phương trình).
- Ma trận ràng buộc của X chuyển vị cho ra ma trận ràng buộc của Y.
- Ràng buộc thứ i của X sẽ được đính kèm với yi:
+ Ràng buộc của X mang dấu  thì yi  0.
+ Ràng buộc của X mang dấu = thì yi mang dấu tuỳ ý.
+ Ràng buộc của X mang dấu  thì yi  0.
- Biến xi sẽ được đính kèm với ràng buộc thứ i của Y:
+ xi  0 thì ràng buộc của Y mang dấu  (thường gặp)
+ xi mang dấu tuỳ ý thì ràng buộc của Y mang dấu =
+ xi  0 thì ràng buộc của Y mang dấu 
Xét ví dụ ở phần 3.3: Tìm cực tiểu của hàm 𝑓 (𝑋 ) = 2𝑥1 + 𝑥2 với các điều kiện:
𝑥1 + 𝑥2 = 3
3𝑥1 − 𝑥2 ≥ 1
{
2𝑥1 + 3𝑥2 ≤ 9
𝑥𝑖 ≥ 0, 𝑖 = 1: 2
Đây là bài toán 2 biến 3 phương trình (n = 2 và m = 3), đưa về bài toán đối ngẫu:
- Các giá trị bi đã thoả điều kiện.
Tổng hợp bởi Lê Minh Trung – Nguyễn Gia Huy (HC17KSTN) – Nguyễn Đức Thành (HC16KSTN)

- Phương trình 1 được đi kèm với y1, tương tự cho phương trình 2 và 3 được bài toán tìm
cực đại hàm mục tiêu của Y: 𝑓 (𝑌) = ∑𝑚 𝑗=1 𝑏𝑖 𝑦𝑖 = 3𝑦1 + 𝑦2 + 9𝑦3 → 𝑚𝑎𝑥

1 1
- Ma trận ràng buộc của X: 𝐴 = [3 −1], suy ra ma trận ràng buộc của Y:
2 3
1 3 2
𝐴𝑇 = [ ]
1 −1 3
- Biến x1  0 nên ràng buộc 1 của Y mang dấu 
- Biến x2  0 nên ràng buộc 2 của Y mang dấu 
- Ràng buộc 1 của X mang dấu = nên y1 mang dấu tuỳ ý
- Ràng buộc 2 của X mang dấu  nên y2  0
- Ràng buộc 3 của X mang dấu  nên y3  0
𝑦1 + 3𝑦2 + 2𝑦3 ≤ 2
Ràng buộc của Y: { 𝑦1 − 𝑦2 + 3𝑦3 ≤ 1 cho hàm: 𝑓 (𝑌) = 3𝑦1 + 𝑦2 + 9𝑦3 → 𝑚𝑎𝑥
𝑦𝑖 ∈ ℝ, 𝑦2 ≥ 0, 𝑦3 ≤ 0
2.1.2. Giải bài toán đối ngẫu
Phân tích: Khi bài toán gốc có số biến nhỏ hơn số phương trình, số lượng biến phụ thuộc
trở nên quá nhiều làm cách giải truyền thống trở nên nhiêu khê. Việc chuyển sang bài
toán đối ngẫu giúp giảm số biến phụ thuộc phải giải quyết, đồng thời tạo ra một lợi thế
khác. Nếu bài toán gốc có n biến, m phương trình (n < m) thì bài toán đối ngẫu có m
biến, n phương trình và số biến phụ thuộc của bài toán đối ngẫu chính là số biến thực
trong bài toán gốc (n biến). Phương án tối ưu thường đạt được khi n biến phụ thuộc này
cũng chính là biến thực có trên hàm mục tiêu (hàm mục tiêu có m biến). Do mỗi biến của
Y đi kèm với một ràng buộc của X, và do n < m, luôn luôn có thể thu được một hệ gồm
n ràng buộc của X có dấu bằng đồng thời xảy ra (hệ n biến n phương trình). Hệ này
luôn luôn có nghiệm X* duy nhất, đó chính là toạ độ mà hàm f(X) đạt cực tiểu.
Bài toán đối ngẫu vẫn là bài toán quy hoạch tuyến tính, cần được đưa về dạng chính tắc
rồi mới có thể giải.
Câu chuyện dấu tuỳ ý: Bài toán quy hoạch tuyến tính dạng chính tắc đòi hỏi biến không
âm, chính vì thế 1 biến mang dấu tuỳ ý có thể “lách luật” bằng cách tách thành hiệu của
2 biến không âm, tức là phép đặt thêm biến: 𝑦1 = 𝑦1′ − 𝑦1′′ với 𝑦1′ , 𝑦1′′ ≥ 0
Biến y3 được đảo dấu để trở thành không âm, tức đặt 𝑦3 = −𝑦3′ với 𝑦3′ ≥ 0
Hàm mục tiêu chuyển thành: 𝑓 (𝑌) = 3𝑦1′ − 3𝑦1′′ + 𝑦2 − 9𝑦3′ → 𝑚𝑎𝑥 do y3 đảo dấu.
Tổng hợp bởi Lê Minh Trung – Nguyễn Gia Huy (HC17KSTN) – Nguyễn Đức Thành (HC16KSTN)

Sau đó hàm mục tiêu trở thành: −𝑓 (𝑌) = −3𝑦1′ + 3𝑦1′′ − 𝑦2 + 9𝑦3′ → 𝑚𝑖𝑛
𝑦1′ − 𝑦1′′ + 3𝑦2 − 2𝑦3′ ≤ 2
Ràng buộc của Y trở thành: { 𝑦1′ − 𝑦1′′ − 𝑦2 − 3𝑦3′ ≤ 1
𝑦1′ , 𝑦1′′ , 𝑦2 , 𝑦3′ ≥ 0
Chính tắc hoá các ràng buộc: Phương trình 1 được cộng thêm 𝑦4 ≥ 0 và phương trình 2
được cộng thêm 𝑦5 ≥ 0, thu được ma trận ràng buộc chính tắc:
1 −1 3 −2 1 0
𝐴𝑇 = [ ]
1 −1 −1 −3 0 1
Hạng của ma trận AT là 2, và đủ 2 biến phụ thuộc là y4 và y5 vừa thêm vào.
Lập bảng đơn hình:
Lần thứ nhất
y 1’ y1’’ y2 y3 y4 y5
Dep. Var. bj Y0
-3 3 -1 9 0 0
y4 0 2 1 -1 3 -2 1 0
y5 0 1 1 -1 -1 -3 0 1
3 -3 1 -9 0 0
Lần thứ hai
y 1’ y1’’ y2 y3 y4 y5
Dep. Var. bj Y0
-3 3 -1 9 0 0
y4 0 1 0 0 4 1 1 -1
y1’ -3 1 1 -1 -1 -3 0 1
0 0 4 -6 0 -3
Lần thứ ba
y 1’ y1’’ y2 y3 y4 y5
Dep. Var. bj Y0
-3 3 -1 9 0 0
y2 -1 ¼ 0 0 1 ¼ ¼ -1/4
y1’ -3 5/4 1 -1 0 -11/4 ¼ ¾
Tổng hợp bởi Lê Minh Trung – Nguyễn Gia Huy (HC17KSTN) – Nguyễn Đức Thành (HC16KSTN)

-4 0 0 0 -1 -1 -2
Bài toán đối ngẫu đã đạt đến phương án tối ưu. Kết luận:
- Hàm mục tiêu −𝑓 (𝑌) = −3𝑦1′ + 3𝑦1′′ − 𝑦2 + 9𝑦3′ có cực tiểu là -4, và đạt được tại
5 1 𝑇
𝑌 ∗ = [𝑦1′ 𝑦1′′ 𝑦2 𝑦3′ ]𝑇 = [
4
0
4
0]

- Hàm mục tiêu 𝑓 (𝑌) = 3𝑦1′ − 3𝑦1′′ + 𝑦2 − 9𝑦3′ có cực đại là 4, và đạt được tại
5 1 𝑇
𝑌 ∗ = [𝑦1′ 𝑦1′′ 𝑦2 𝑦3′ ]𝑇 = [
4
0
4
0]
5 5
Có 𝑦1 = 𝑦1′ − 𝑦1′′ = − 0 = và 𝑦3 = −𝑦3′ = 0. Hàm 𝑓 (𝑌) = 3𝑦1 + 𝑦2 + 9𝑦3 có cực
4 4
𝑇
đại là 4, và đạt được tại 𝑌 ∗ = [𝑦1 𝑦2 𝑦3 ]𝑇 = [5 1
0]
4 4

Bài toán đối ngẫu đạt phương án tối ưu với 2 biến phụ thuộc là y1 và y2, ứng với dấu
bằng đồng thời xảy ra ở ràng buộc 1 và 2 của X.
Bài toán gốc 𝑓 (𝑋) = 2𝑥1 + 𝑥2 có cực tiểu là 4, và đạt được tại 𝑋 ∗ = [𝑥1 𝑥2 ]𝑇 là
𝑥 + 𝑥2 = 3
nghiệm của hệ phương trình: { 1 . Giải hệ thu được 𝑋 ∗ = [1 2]𝑇
3𝑥1 − 𝑥2 = 1
Kết luận: Bài toán gốc 𝑓 (𝑋) = 2𝑥1 + 𝑥2 có cực tiểu là 4, và đạt được tại 𝑋 ∗ = [1 2]𝑇
Công thức hoá một bài toán kinh tế để giải theo quy hoạch tuyến tính
Xét ví dụ sau: Một công ty nội thất sản xuất 2 loại ghế “Dream” và “Lada”. Công ty cần
tối ưu hoá kế hoạch sản xuất ghế hàng tuần để có doanh thu tối đa, với giá bán 1 chiếc
ghế “Dream” là 560 nghìn VNĐ và giá bán 1 chiếc ghế “Lada” là 400 nghìn VNĐ. Trữ
lượng các chi tiết cùng với tiêu hao vật tư các loại để lắp ráp 2 loại ghế được cho trong
bảng. Ngoài ra, tổ chức công đoàn phát động thi đua với tiêu chí tổng số lượng ghế sản
xuất mỗi tuần tối thiểu đạt mức 100 chiếc.
Tiêu hao vật tư cho mỗi loại
STT Vật tư Trữ lượng
Dream Lada
1 Chân trước 8 4 1350
2 Chân sau 4 12 1600
3 Thanh đỡ mặt ghế 4 4 760
4 Thanh giữ chân trước 1 0 140
5 Thanh giữ chân sau 0 1 120
Tổng hợp bởi Lê Minh Trung – Nguyễn Gia Huy (HC17KSTN) – Nguyễn Đức Thành (HC16KSTN)

Giá bán (nghìn VNĐ/sp) 560 400


a. Lập mô hình sản xuất để tối ưu hoá như yêu cầu.
b. Tính doanh thu mà công ty đạt được với kế hoạch trên.
c. Xác định số lượng vật tư còn dư của mỗi loại sau 1 tuần.
2.1.3. Giải bằng bài toán đối ngẫu
Gọi x1 và x2 là số ghế Dream và ghế Lada công ty sản xuất được trong 1 tuần (ràng buộc
đầu tiên: x1  0 và x2  0).
Tổng số lượng ghế sản xuất được mỗi tuần tối thiểu 100 chiếc: x1 + x2  100
Trữ lượng là lượng vật tư có sẵn trong kho, thể hiện giới hạn sử dụng của doanh nghiệp:
- Số chân trước: 8x1 + 4x2  1350
- Số chân sau: 4x1 + 12x2  1600
- Số thanh giữ mặt ghế: 4x1 + 4x2  760
- Số thanh giữ chân trước: x1  140
- Số thanh giữ chân sau: x2  120
Mục tiêu cần tối đa hoá là doanh thu bán hàng trong 1 tuần: 560x1 + 400x2 → max.
Do hàm mục tiêu và các ràng buộc đều tuyến tính nên bài toán là quy hoạch tuyến tính:
- Mục tiêu: 𝑓 (𝑋) = 560𝑥1 + 400𝑥2 → 𝑚𝑎𝑥 ⟺ −𝑓 (𝑋) = −560𝑥1 − 400𝑥2 → 𝑚𝑖𝑛
𝑥1 + 𝑥2 ≥ 100
8𝑥1 + 4𝑥2 ≤ 1350
4𝑥1 + 12𝑥2 ≤ 1600
- Các ràng buộc: 4𝑥1 + 4𝑥2 ≤ 760
𝑥1 ≤ 140
𝑥2 ≤ 120
{ 𝑥1 , 𝑥2 ≥ 0
Chuyển về bài toán đối ngẫu:
- Mục tiêu: 𝑓 (𝑌) = 100𝑦1 + 1350𝑦2 + 1600𝑦3 + 760𝑦4 + 140𝑦5 + 120𝑦6 → 𝑚𝑎𝑥
𝑦1 + 8𝑦2 + 4𝑦3 + 4𝑦4 + 𝑦5 ≤ −560
𝑦1 + 4𝑦2 + 12𝑦3 + 4𝑦4 + 𝑦6 ≤ −400
- Các ràng buộc: { :
𝑦1 ≥ 0
𝑦𝑖 ≤ 0, 𝑖 = 2: 6
Tổng hợp bởi Lê Minh Trung – Nguyễn Gia Huy (HC17KSTN) – Nguyễn Đức Thành (HC16KSTN)

Chính tắc hoá bài toán và thêm các biến phụ (slack variable) được hàm mục tiêu:
−𝑓 (𝑌) = −100𝑦1 + 1350𝑦2′ + 1600𝑦3′ + 760𝑦4′ + 140𝑦5′ + 120𝑦6′ → 𝑚𝑖𝑛
−𝑦1 + 8𝑦2′ + 4𝑦3′ + 4𝑦4′ + 𝑦5′ − 𝑦7 = 560
−𝑦1 + 4𝑦2′ + 12𝑦3′ + 4𝑦4′ + 𝑦6′ − 𝑦8 = 400
- Các ràng buộc:
𝑦1 , 𝑦7 , 𝑦8 ≥ 0
{ 𝑦𝑖′ ≥ 0, 𝑖 = 2: 6
Ma trận ràng buộc có hạng là 2, số biến phụ thuộc cũng là 2: y5’ và y6’
Lập bảng đơn hình:
Lần thứ nhất:
y1 y 2’ y3’ y 4’ y 5’ y6’ y7 y8
DV bj Y0
-100 1350 1600 760 140 120 0 0
y5’ 140 560 -1 8 4 4 1 0 -1 0
y6’ 120 400 -1 4 12 4 0 1 0 -1
-160 250 400 280 0 0 -140 -120
Lần thứ hai:
y1 y 2’ y3’ y 4’ y5’ y6’ y7 y8
DV bj Y0
-100 1350 1600 760 140 120 0 0
y5’ 140 1280/3 -2/3 20/3 0 8/3 1 -1/3 -1 1/3
y3’ 1600 100/3 -1/12 1/3 1 1/3 0 1/12 0 -1/12
- - -140 -
350/3 0 440/3 0
380/3 100/3 260/3
Lần thứ ba:
y1 y 2’ y3’ y 4’ y 5’ y6’ y7 y8
DV bj Y0
-100 1350 1600 760 140 120 0 0
y5’ 140 160 0 4 -8 0 1 -1 -1 1
y4’ 760 100 -1/4 1 3 1 0 ¼ 0 -1/4
98400 -90 -30 -440 0 0 -70 -140 -50
Bài toán đối ngẫu đạt đến phương án tối ưu. Kết luận:
Tổng hợp bởi Lê Minh Trung – Nguyễn Gia Huy (HC17KSTN) – Nguyễn Đức Thành (HC16KSTN)

- Mục tiêu −𝑓 (𝑌) = −100𝑦1 + 1350𝑦2′ + 1600𝑦3′ + 760𝑦4′ + 140𝑦5′ + 120𝑦6′ đạt cực
tiểu là 98400, tại 𝑌 ∗ = [𝑦1 𝑦2′ 𝑦3′ 𝑦4′ 𝑦5′ 𝑦6′ ]𝑇 = [0 0 0 100 160 0]𝑇
- Mục tiêu 𝑓 (𝑌) = 100𝑦1 + 1350𝑦2 + 1600𝑦3 + 760𝑦4 + 140𝑦5 + 120𝑦6 đạt cực đại
là -98400, tại 𝑌 ∗ = [𝑦1 𝑦2 𝑦3 𝑦4 𝑦5 𝑦6 ]𝑇 = [0 0 0 −100 −160 0]𝑇
Bài toán đối ngẫu đạt phương án tối ưu với 2 biến phụ thuộc là y4 và y5, ứng với dấu bằng
đồng thời xảy ra ở 2 ràng buộc thứ 4 và thứ 5 của bài toán gốc.
Bài toán gốc −𝑓 (𝑋) = −560𝑥1 − 400𝑥2 đạt cực tiểu là -98400, tại 𝑋 ∗ = [𝑥1 𝑥2 ]𝑇 là
nghiệm của hệ phương trình:
4𝑥 + 4𝑥2 = 760 𝑥 = 140
{ 1 ⟺{ 1
𝑥1 = 140 𝑥2 = 50
Vậy, bài toán 𝑓 (𝑋) = 560𝑥1 + 400𝑥2 đạt cực đại là 98400 tại 𝑋 ∗ = [140 50]𝑇
a. Mô hình hợp lý để công ty tối đa hoá doanh thu dựa trên các điều kiện sẵn có là sản
xuất 140 chiếc ghế Dream và 50 chiếc ghế Lada trong 1 tuần.
b. Doanh thu cực đại của công ty với kế hoạch này là 98400000 VNĐ/tuần.
c. Số ghế bán vượt kế hoạch trong 1 tuần: 140 + 50 − 100 = 90
Lượng vật tư còn dư sau 1 tuần:
- Số chân trước: 1350 − 8 × 140 − 4 × 50 = 30
- Số chân sau: 1600 − 4 × 140 − 12 × 50 = 440
- Số thanh giữ mặt ghế: 760 − 4 × 140 − 4 × 50 = 0
- Số thanh giữ chân trước: 140 − 1 × 140 = 0
- Số thanh giữ chân sau: 120 − 1 × 50 = 70
2.1.4. Giải bằng bài toán gốc (phương pháp biến giả)
Bài toán có dạng:
- Mục tiêu: −𝑓 (𝑋) = −560𝑥1 − 400𝑥2 → 𝑚𝑖𝑛
𝑥1 + 𝑥2 ≥ 100
8𝑥1 + 4𝑥2 ≤ 1350
4𝑥1 + 12𝑥2 ≤ 1600
- Các ràng buộc: 4𝑥1 + 4𝑥2 ≤ 760
𝑥1 ≤ 140
𝑥2 ≤ 120
{ 𝑥1 , 𝑥2 ≥ 0
Tổng hợp bởi Lê Minh Trung – Nguyễn Gia Huy (HC17KSTN) – Nguyễn Đức Thành (HC16KSTN)

Thêm các biến phụ không âm x3, x4, x5, x6, x7 và x8 để đưa các ràng buộc về chính tắc:
𝑥1 + 𝑥2 − 𝑥8 = 100
8𝑥1 + 4𝑥2 + 𝑥3 = 1350
4𝑥1 + 12𝑥2 + 𝑥4 = 1600
4𝑥1 + 4𝑥2 + 𝑥5 = 760
𝑥1 + 𝑥6 = 140
𝑥2 + 𝑥7 = 120
{ 𝑥𝑖 ≥ 0, 𝑖 = 1: 8
Ma trận ràng buộc A có hạng (số phương trình) là 6, nhưng mới chỉ có 5 biến phụ thuộc
là x3, x4, x5, x6, x7 (x8 vướng hệ số -1 nên không phải biến phụ thuộc). Thêm biến giả x9
(không âm) vào ràng buộc 1, đồng thời vào hàm mục tiêu để đầy đủ 6 biến phụ thuộc:
- Mục tiêu: −𝑓 (𝑋) = −560𝑥1 − 400𝑥2 + 𝑥9 → 𝑚𝑖𝑛
𝑥1 + 𝑥2 − 𝑥8 + 𝑥9 = 100
8𝑥1 + 4𝑥2 + 𝑥3 = 1350
4𝑥1 + 12𝑥2 + 𝑥4 = 1600
- Các ràng buộc: 4𝑥1 + 4𝑥2 + 𝑥5 = 760
𝑥1 + 𝑥6 = 140
𝑥2 + 𝑥7 = 120
{ 𝑥𝑖 ≥ 0, 𝑖 = 1: 9
6 biến phụ thuộc là x3, x4, x5, x6, x7 và x9.
Do có biến giả nên bài toán được giải theo 2 pha.
Pha 1: Lập bảng đơn hình tối ưu hàm giả 𝑔 (𝑋) = 𝑥9 → 𝑚𝑖𝑛
Lần thứ nhất (Có 2 cột x1 và x2 cùng đạt giá trị dương lớn nhất → Chọn x1 (tuỳ ý).
x1 x2 x3 x4 x5 x6 x7 x8 x9
DV ci X0
0 0 0 0 0 0 0 0 1
x9 1 100 1 1 0 0 0 0 0 -1 1
x3 0 1350 8 4 1 0 0 0 0 0 0
x4 0 1600 4 12 0 1 0 0 0 0 0
x5 0 760 4 4 0 0 1 0 0 0 0
x6 0 140 1 0 0 0 0 1 0 0 0
x7 0 120 0 1 0 0 0 0 1 0 0
Tổng hợp bởi Lê Minh Trung – Nguyễn Gia Huy (HC17KSTN) – Nguyễn Đức Thành (HC16KSTN)

1 1 0 0 0 0 0 -1 0
Lần thứ hai
x1 x2 x3 x4 x5 x6 x7 x8 x9
DV ci X0
0 0 0 0 0 0 0 0 1
x1 0 100 1 1 0 0 0 0 0 -1 1
x3 0 550 0 -4 1 0 0 0 0 8 -8
x4 0 1200 0 8 0 1 0 0 0 4 -4
x5 0 360 0 0 0 0 1 0 0 4 -4
x6 0 40 0 -1 0 0 0 1 0 1 -1
x7 0 120 0 1 0 0 0 0 1 0 0
0 0 0 0 0 0 0 0 0 -1
Hàm giả 𝑔(𝑋) = 𝑥9 → 𝑚𝑖𝑛 đạt phương án tối ưu là 0, tại 𝑥9 = 0.
Pha 2: Xoá cột x9 và sửa lại hệ số các biến theo hàm mục tiêu −𝑓 (𝑋 ) = −560𝑥1 −
400𝑥2 + 0 → 𝑚𝑖𝑛
Lần thứ nhất
x1 x2 x3 x4 x5 x6 x7 x8
DV ci X0
-560 -400 0 0 0 0 0 0
x1 -560 100 1 1 0 0 0 0 0 -1
x3 0 550 0 -4 1 0 0 0 0 8
x4 0 1200 0 8 0 1 0 0 0 4
x5 0 360 0 0 0 0 1 0 0 4
x6 0 40 0 -1 0 0 0 1 0 1
x7 0 120 0 1 0 0 0 0 1 0
0 -160 0 0 0 0 0 560
Lần thứ hai
DV ci X0 x1 x2 x3 x4 x5 x6 x7 x8
Tổng hợp bởi Lê Minh Trung – Nguyễn Gia Huy (HC17KSTN) – Nguyễn Đức Thành (HC16KSTN)

-560 -400 0 0 0 0 0 0
x1 -560 140 1 0 0 0 0 1 0 0
x3 0 390 0 4 1 0 0 -8 0 0
x4 0 1040 0 12 0 1 0 -4 0 0
x5 0 200 0 4 0 0 1 -4 0 0
x8 0 40 0 -1 0 0 0 1 0 1
x7 0 120 0 1 0 0 0 0 1 0
0 400 0 0 0 -560 0 0
Lần thứ ba
x1 x2 x3 x4 x5 x6 x7 x8
DV ci X0
-560 -400 0 0 0 0 0 0
x1 -560 140 1 0 0 0 0 1 0 0
x3 0 190 0 0 1 0 -1 -4 0 0
x4 0 440 0 0 0 1 -3 8 0 0
x2 -400 50 0 1 0 0 ¼ -1 0 0
x8 0 90 0 0 0 0 ¼ 0 0 1
x7 0 70 0 0 0 0 -1/4 1 1 0
-
0 0 0 0 0 -560 0 0
98400
Hàm mục tiêu −𝑓 (𝑋 ) = −560𝑥1 − 400𝑥2 đạt cực tiểu là -98400, và đạt được tại:
𝑋 ∗ = [𝑥1 𝑥2 ]𝑇 = [140 50]𝑇
Kết luận: Hàm mục tiêu của bài toán 𝑓 (𝑋) = 560𝑥1 + 400𝑥2 đạt cực đại là 98400 tại:
𝑋 ∗ = [𝑥1 𝑥2 ]𝑇 = [140 50]𝑇
Các kết luận câu a, b và c của bài toán giống như cách ở phần 3.5.1.

You might also like