Professional Documents
Culture Documents
Kết hợp với slide bài giảng của TS. Tạ Đăng Khoa
1. Bài toán mô hình hoá
1
Ôn tập Tối ưu hoá 2019 Nguyễn Đức Thành (HC16KSTN)
2. Tối ưu hoá hàm nhiều biến – không ràng buộc: Phương pháp số
Nguyên tắc chung: 𝑋𝑛+1 = 𝑋𝑛 + 𝛼𝑛 𝑠𝑛 cho đến khi |𝑓𝑛+1 − 𝑓𝑛 | < 𝜀 = 10−6
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.
2.1.1.2. Bisection: Chia thành 4 khoảng bằng cách tìm các điểm trung vị và phần tư vị
2.1.2.2. Grid – Quét ra xung quanh theo các mắt lưới (4, 6 hoặc 8 hướng)
Nguyên tắc: Bắt đầu với n+1 điểm (với n là số biến của hàm mục tiêu) tạo thành một
đơn hình đều (ví dụ hình tam giác đều với hàm 2 biến, hình tứ diện đều với hàm 3 biến).
Tính giá trị của hàm tại các đỉnh của đơn hình đều, chọn ra và loại bỏ giá trị “kém” nhất.
Thay thế bằng một điểm khác đối xứng với điểm vừa bị loại bỏ qua các đỉnh còn lại của
đơn hình đều → Đơn hình đều mới, tiếp tục so sánh giá trị hàm tại các đỉnh của đơn
hình này. Khi các đơn hình có vẻ đang xoay quanh 1 tâm nhất định, giảm bước nhảy lại
(giảm độ dài cạnh của đơn hình đều lại) và lặp lại quy trình.
2.1.2.4. Univariate – Luân phiên từng biến: Bước đi vuông góc hoặc thẳng hàng
Hội tụ nhanh hơn các phương pháp sử dụng giá trị hàm trực tiếp.
∇𝑇 𝑓(𝑋𝑛 )×𝑠𝑛
Tính giá trị bước nhảy tại từng điểm: 𝛼𝑛 = − 𝑇 ×𝐻(𝑋 )×𝑠 nếu bước nhảy không cố định:
𝑠𝑛 𝑛 𝑛
2
Ôn tập Tối ưu hoá 2019 Nguyễn Đức Thành (HC16KSTN)
𝜕𝑓
𝜕𝑥1
Tính vector gradient: ∇𝑓 (𝑋) = ⋮ rồi thay giá trị toạ độ Xi
𝜕𝑓
[𝜕𝑥𝑛 ]
𝜕2 𝑓 𝜕2 𝑓
⋯
𝜕𝑥12 𝜕𝑥1 𝑥𝑛
Tính ma trận Hessian: 𝐻(𝑋) = ⋮ ⋱ ⋮ rồi thay giá trị toạ độ Xi
𝜕2 𝑓 𝜕2 𝑓
[𝜕𝑥𝑛𝑥1 ⋯ 2 ]
𝜕𝑥𝑛
Lưu ý ma trận Hessian là ma trận đối xứng qua đường chéo chính.
Cặp vector liên hợp (tại điểm) thoả hệ thức: 𝑠𝑖𝑇 × 𝐻(𝑋𝑛 ) × 𝑠𝑗 = 0. Biết si hoặc sj suy ra
được vector còn lại. Đặ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.
Chỉ cần 1 vector gradient tại điểm làm vector chỉ phương → Bài toán tiến rất nhanh.
𝜕𝑓
−
𝜕𝑥1
Khi đó: 𝑠 = −∇𝑓(𝑋) = ⋮ và thế giá trị từng điểm.
𝜕𝑓
[− 𝜕𝑥𝑛]
2.2.3. Conjugate gradient – Kết hợp giữa cặp vector liên hợp và đường dốc nhất
2.3. Phương pháp sử dụng đạo hàm cấp 2 – Phương pháp Newton
Thường sử dụng dạng truyền thống (do không có vector chỉ phương sn tính bước nhảy):
- 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ị.
3
Ôn tập Tối ưu hoá 2019 Nguyễn Đức Thành (HC16KSTN)
- Ma trận ghép sau khi biến đổi sơ cấp có dạng (𝐼𝑛 |𝐻−1 )
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.
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.
−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
Tại 𝑋1 = [1 −0,5]𝑇 :
−4,5 12,5 2
∇𝑓 (𝑋) = [ ] và 𝐻(𝑋) = [ ]
0 2 4
4
Ôn tập Tối ưu hoá 2019 Nguyễn Đức Thành (HC16KSTN)
−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
32 −16 𝑇
Tại 𝑋2 = [23 23
] :
32
−0,354640 1,745944
𝑋3 = [ 23 ] − [ ]=[ ]
−16 0,253146 −0,948798
23
5
Ôn tập Tối ưu hoá 2019 Nguyễn Đức Thành (HC16KSTN)
1,998734 −0,001266 2
𝑋6 = [ ]−[ ]=[ ]
−1,000170 −0,000168 −1,000002
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
Đế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
6
Ôn tập Tối ưu hoá 2019 Nguyễn Đức Thành (HC16KSTN)
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 (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.
∑𝑛𝑗=1 𝑎𝑖𝑗 𝑥𝑗 = 𝑏𝑖
- Các ràng buộc (Subject to): { 𝑥𝑗 ≥ 0 𝑖 = 1: 𝑚 𝑗 = 1: 𝑛 𝑛>𝑚
𝑏𝑖 ≥ 0
𝐴𝑋 = 𝑏
- 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.
- 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.
- 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.
7
Ôn tập Tối ưu hoá 2019 Nguyễn Đức Thành (HC16KSTN)
- 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
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.
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.
8
Ôn tập Tối ưu hoá 2019 Nguyễn Đức Thành (HC16KSTN)
+ 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.
- 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.
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.
- 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).
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ả.
9
Ôn tập Tối ưu hoá 2019 Nguyễn Đức Thành (HC16KSTN)
- 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ả.
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
- 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)
3.4. 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à 𝑓(𝑌).
3.4.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.
10
Ôn tập Tối ưu hoá 2019 Nguyễn Đức Thành (HC16KSTN)
Bài toán gốc min (bi 0) Bài toán đối ngẫu max
𝑛 𝑚
∑ 𝑎𝑖𝑗 𝑥𝑗 ≥ 𝑏𝑖 𝑦𝑖 ≥ 0
𝑗=1
𝑛
𝑥𝑗 ≥ 0 ∑ 𝑎𝑗𝑖 𝑦𝑖 ≤ 𝑐𝑗
𝑖=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.
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𝑥 − 𝑥2 ≥ 1
{ 1
2𝑥1 + 3𝑥2 ≤ 9
𝑥𝑖 ≥ 0, 𝑖 = 1: 2
11
Ôn tập Tối ưu hoá 2019 Nguyễn Đức Thành (HC16KSTN)
Đâ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:
- 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
𝑦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
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.
12
Ôn tập Tối ưu hoá 2019 Nguyễn Đức Thành (HC16KSTN)
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.
Sau đó hàm mục tiêu trở thành: −𝑓 (𝑌) = −3𝑦1′ + 3𝑦1′′ − 𝑦2 + 9𝑦3′ → 𝑚𝑖𝑛
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.
13
Ôn tập Tối ưu hoá 2019 Nguyễn Đức Thành (HC16KSTN)
- 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à
𝑥1 + 𝑥2 = 3
nghiệm của hệ phương trình: { . 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]𝑇
3.5. 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
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.
c. Xác định số lượng vật tư còn dư của mỗi loại sau 1 tuần.
14
Ôn tập Tối ưu hoá 2019 Nguyễn Đức Thành (HC16KSTN)
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:
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
- Mục tiêu: 𝑓(𝑌) = 100𝑦1 + 1350𝑦2 + 1600𝑦3 + 760𝑦4 + 140𝑦5 + 120𝑦6 → 𝑚𝑎𝑥
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:
15
Ôn tập Tối ưu hoá 2019 Nguyễn Đức Thành (HC16KSTN)
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’
- 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:
16
Ôn tập Tối ưu hoá 2019 Nguyễn Đức Thành (HC16KSTN)
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.
3.5.2. Giải bằng bài toán gốc (phương pháp biến giả)
𝑥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
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
17
Ôn tập Tối ưu hoá 2019 Nguyễn Đức Thành (HC16KSTN)
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:
𝑥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
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
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 → 𝑚𝑖𝑛
18
Ôn tập Tối ưu hoá 2019 Nguyễn Đức Thành (HC16KSTN)
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:
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.
19