Professional Documents
Culture Documents
Toi Uu Hoa Phi Tuyen
Toi Uu Hoa Phi Tuyen
• Nếu n1 = n (tất cả các biến đều nguyên) thì bài toán (5.1) - (5.2) là bài toán quy
hoạch nguyên hoàn toàn (Pure Integer Programming).
90
CHƯƠNG 5. QUY HOẠCH TUYẾN TÍNH NGUYÊN VÀ PHI TUYẾN 91
• Nếu n1 < n (chỉ có một số biến nguyên) thì bài toán (5.1) - (5.2) là bài toán quy hoạch
nguyên bộ phận (Mixed Integer Programming).
• Nếu các hàm f (x), gi (x), i = 1, . . . , m là các hàm tuyến tính thì bài toán trở thành bài
toán quy hoạch tuyến tính nguyên
Trong thực tế, thuật ngữ quy hoạch nguyên được dùng cho lĩnh vực nghiên cứu các bài toán
quy hoạc tuyến tính nguyên.
Các bài toán quan trọng nhất trong quy hoạch nguyên là các bài toán chọn quyết định
ở dạng có hoặc không. Vì các biến quyết định chỉ nhận hai giá trị 0 hoặc 1 nên bài toán có
tên là Quy hoạch nguyên nhị phân (Binary Integer Programming - BIP).
Lưu ý. Bất kì bài toán quy hoạch nguyên nào với các biến nguyên bị chặn đều có thể quy
về bài toán với các biến chỉ nhận giá trị nhị phân. Thật vậy, nếu biến u chỉ nhận các giá trị
thuộc tập {1, 2, . . . , k} thì u có thể biểu diễn dưới dạng
u = u1 + u2 + . . . + uk
với uk ∈ {0, 1}, i = 1, 2, . . . , k. Điều này cho thấy tầm quan trọng của quy hoạch nguyên nhị
phân trong quy hoạch nguyên.
Bài toán tối ưu tổ hợp (Combinatorial Optimization) hay còn gọi là bài toán tối ưu rời
rạc cũng là bài toán quy hoạch nguyên.
Quy hoạch nguyên là mô hình toán học của rất nhiều bài toán nảy sinh trong các lĩnh
vực khác nhau. Tuy nhiên khác với bài toán quy hoạch tuyến tính thông thường, bài toán
quy hoạch tuyến tính nguyên rất khó giải. Đến nay chưa có phương pháp nào thực sự hữu
hiệu để giải tất cả các bài toán quy hoạch nguyên.
Năm 1958, Ralph E. Gomory công bố phương pháp cắt và thuật toán mang tên tác
giả [18] đảm bảo sau hữu hạn bước cho phép nhận được nghiệm tối ưu của bài toán quy
hoạch nguyên. Đến năm 1960, phương pháp nhánh và cận (Branch and Bound) được Land
và Doig đưa ra [26]. Năm 1962, bài toán người du lịch (Traveling Salesman Problem - TSP) -
một bài toán điển hình và rất khó của tối ưu tổ hợp được giải bởi Little, Murty, Sweeney và
Karel [28]. Đến năm 1965, Dalkin [11] hoàn thiện phương pháp nhánh cận và phương pháp
này trở thành một trong những công cụ chủ yếu để giải các bài toán quy hoạch nguyên.
Ngoài thuật toán theo phương pháp cắt và phương pháp nhánh cận còn có các thuật toán
theo phương pháp quy hoạch động (Dynamic Programming) thuộc loại các thuật toán cho
phép tìm nghiệm tối ưu chính xác của bài toán. Tuy nhiên các phương pháp thuộc loại này
đòi hỏi phải tính toán qua rất nhều bước lặp. Trong thực tế, để giải các bài toán quy hoạch
nguyên cỡ lớn các thuật toán phán đoán (Heuristic Algorithm) được dùng. Tuy các thuật
toán này không đảm bảo cho nghiệm tối ưu trong mọi trường hợp nhưng cũng khá hiệu quả.
Chương này giới thiệu phương pháp cắt và phương pháp nhánh cận để giải bài toán quy
hoạch tuyến tính nguyên hoàn toàn và bài toán quy hoạch tuyến tính nguyên nhị phân.
Ý tưởng về phương pháp cắt (Cutting planes method) được đề xuất vào năm 1954 bởi G.B.
Dantzig, D.R.Fulkerson và S.Johnson. Một cách tổng quát, phương pháp cắt lần lượt thêm
các ràng buộc vào bài toán quy hoạch nguyên, để hạn chế dần dần tập phương án của bài
toán cho đến khi tìm được phương án tối ưu, với điều kiện là những phần của tập phương
án bị cắt bỏ phải không chứa phương án tối ưu của bài toán Quy hoạch nguyên và hơn nữa
việc cắt bỏ này phải được chứng minh có tính hữu hạn.
CHƯƠNG 5. QUY HOẠCH TUYẾN TÍNH NGUYÊN VÀ PHI TUYẾN 92
Miền các phương án chấp nhận của bài toán quy hoạch tuyến tính nguyên là miền gồm các
điểm với tọa độ nguyên được giới hạn bởi đa giác OABC (xem hình 5.1). Giải bài toán nới
lỏng (bỏ đi ràng buộc về tính nguyên của biến số), ta nhận được phương án tối ưu (0, 74 ) với
fmax = 7 .
Tuy nhiên, phương án (0, 74 ) chưa thỏa mãn điều kiện nguyên do tọa độ x2 = 74 chưa
nguyên. Bổ sung thêm vào điều kiện x2 ≤ 1 hoặc x2 ≥ 2, gọi là hai lát cắt L1 và L01 . Làm
như vậy tuy miền phương án của bài toán nới lỏng bị thu hẹp, nhưng miền phương án của
bài toán quy hoạch tuyến tính nguyên đã cho vẫn giữ nguyên. Miền ràng buộc trở thành
2x1 + 4x2 ≤ 7
10x1 + 3x2 ≤ 15 (5.4)
x2 ≤ 1(L1 ) hoặc x2 ≥ 2(L01 ) với x1 , x2 ≥ 0
x2
5
10x1 + 3x2 = 15
7/4 A
B
1 D F
E 2x1 + 4x2 = 7
x1
G C
O 1 3/2 7/2
Theo hình 5.1 có thể thấy điều kiện x2 ≥ 2 có thể bỏ qua. Giải bài toán quy hoạch tuyến
tính không nguyên với miền phương án thu hẹp ODEC (nhận được từ miền OABC bằng nhát
cắt L1 : (x2 ≤ 1).
CHƯƠNG 5. QUY HOẠCH TUYẾN TÍNH NGUYÊN VÀ PHI TUYẾN 93
Giải bài toán quy hoạch tuyến tính không nguyên với miền phương án thu hẹp ODEC
xuất phát từ phương án đối ngẫu khả thi A(0, 74 ) để đạt tới phương án tối ưu là điểm E( 65 , 1)
với f (x) = 26 6
5 . Phương án này có tọa độ x1 = 5 không nguyên.
Lúc này chúng ta sử dụng lát cắt L2 : x1 ≤ 1 và lát cắt L02 : x1 ≥ 2, và không làm thu
hẹp miền phương án khả thi của bài toán quy hoạch tuyến tính nguyên đã cho. Dễ thấy, lát
cắt L02 có thể bỏ qua (xem hình 5.1). Miền phương án thu hẹp của bài toán quy hoạch tuyến
tính không nguyên chính là miền ODFG (thu được từ miền OABC bằng nhát cắt L1 : x2 ≤ 1
và L2 : x1 ≤ 1) được quy định bởi các ràng buộc sau:
2x1 + 4x2 ≤ 7
10x1 + 3x2 ≤ 15 (5.5)
x2 ≤ 1(L1 ) và x1 ≥ 1(L2 )
Tiếp tục giải bài toán quy hoạch tuyến tính không nguyên với miền phương án ODFG,
xuất phát từ phương án đối ngẫu khả thi E(6/5, 1) để đạt tới phương án tối ưu là điểm
F (1, 1) có các tọa độ nguyên với fmax = 5. Vì các miền phương án OABC và ODFG chứa
cùng các điểm có tọa độ nguyên như nhau, nên đây cũng chính là phương án tối ưu của bài
toán quy hoạch tuyến tính nguyên đã cho.
trong đó f (x) = cT x với c ∈ Rn \{0} và D ⊂ Rn là tập hữu hạn các phần tử x = (x1 , . . . , xn )T
mà xj , j = 1, . . . , n chỉ nhận giá trị nguyên hoặc xj ∈ {0, 1}.
Lưu ý. Do D có hữu hạn phần tử nên bài toán quy hoạch nguyên luôn có nghiệm tối ưu,
tức tồn tại xopt ∈ D sao cho f (xopt ) ≥ f (x), ∀x ∈ D. Giá trị tối ưu của bài toán này là
fopt = f (xopt ).
Một họ P chứa hữu hạn các tập con D , P = {Di ⊆ D|i ∈ I}, trong đó I là tập hữu hạn các
chỉ số, được gọi là một phân hoạch của D nếu
[
D= Di và Di ∩ Dj = ∅ ∀i 6= j
i∈I
Phân hoạch P 0 = {Dj0 ⊆ D|j ∈ I 0 } được gọi là mịn hơn phân hoạch P = {Di ⊆ D|i ∈ I} nếu:
Bài toán
max f (x) v.đ.k. x ∈ Di
với Di ⊂ D được gọi là bài toán con của bài toán quy hoạch nguyên. Tức là có cùng hàm
mục tiêu nhưn tập chấp nhận được nhỏ hơn.
CHƯƠNG 5. QUY HOẠCH TUYẾN TÍNH NGUYÊN VÀ PHI TUYẾN 94
Số thực α ∈ R được gọi là một cận dưới của bài toán quy hoạch nguyên nếu
α ≤ fopt
Hiển nhiên rằng nếu tìm được một phương án chấp nhận được x̄ ∈ D thì f (x̄) ≤ fopt , tức
là f (x̄) là một cận dưới của bài toán quy hoạch nguyên. Khi đó x̄ được gọi là một kỷ lục
(record) và f (x̄) được gọi là một giá trị kỷ lục.
Số thực β ∈ R được gọi là một cận trên của bài toán quy hoạch nguyên nếu:
fopt ≤ β
Trong quá trình tính toán, nếu tìm được một kỷ lục x̄ và một cận trên β best của bài toán
quy hoạch nguyên sao cho β best = f (x̄) thì xopt = x̄ chính là nghiệm tối ưu và fopt = f (x̄) là
giá trị tối ưu của bài toán.
Ý tưởng của phương pháp này là chia để trị, tức là thay vì giải trực tiếp bài toán quy hoạch
nguyên, ta giải các bài toán con:
β = max{β(Di )|i ∈ I}
max{f (x)|x ∈ D} ≤ β
tức là β là một cận trên của bài toán quy hoạch nguyên (IP ). Nếu ta phân hoạch D bởi các
tập con càng nhỏ thì nhận được đánh giá cận trên β của bài toán ban đầu càng sát với giá
trị tối ưu.
Tại thời điểm ban đầu, nếu chưa biết một phương án chấp nhận của bài toán ban đầu
(IP ) thì ta đặt cận dưới α = −∞. Trong quá trình tính toán, nếu tìm được nghiệm tối ưu
của bài toán con IPk ) nào đó thì ta tính lại cận dưới α = max{α, f (xk )} và ta có kỷ lục
x̄ ∈ D với giá trị kỷ lục α = f (x̄).
Như vậy, xuất phát từ tập chấp nhận được ban đầu D, qua các vòng lặp, bằng việc phân
hoạch mịn dần tập D và xác định cận trên của các bài toán con, ta sẽ loại dần những tập
con Dk ⊂ D mà ta biết nghiệm tối ưu của bài toán quy hoạch nguyên ban đầu (IP ) không
thể thuộc Dk hoặc đã biết phương án tối ưu trong Dk rồi.
Một tâp con D ⊂ D sẽ không cần xét đến trong các vòng lặp tiếp theo nếu, nó thỏa mãn
một trong ba tiêu chuẩn sau:
• Dk là tập rỗng
• Tìm được một nghiệm tối ưu xk ∈ Dk ⊂ D của bài toán con (IPk ). Tính giá trị kỷ lục
α = max{α, f (xk )}. Ta được kỷ lục hiện tại x̄ ∈ D tương ứng với giá trị kỷ lục hiện
tại này, tức là f (x̄) = α
• Cận trên β(Dk ) của bài toán con (IPk ) không vượt quá giá trị kỷ lục hiện tại. Do đó
tập Dk không thể chứa phương án nào tốt hơn kỷ lục hiện tại.
CHƯƠNG 5. QUY HOẠCH TUYẾN TÍNH NGUYÊN VÀ PHI TUYẾN 95
Thuật toán nhánh cận Land - Doig giải bài toán quy hoạch tuyến tính nguyên
hoàn toàn
Bài toán quy hoạch tuyến tính nguyên (kí hiệu (IP0 ))
D0 = {x ∈ Rn |Ax ≤ b, x ≥ 0 và nguyên},
Giả sử xkj = a là một thành phần không nguyên đầu tiên của xk . Ta gọi xkj là biến chia
nhánh. Tập Dk được chia thành hai tập theo công thức
và
Dk2 = {x ∈ Dk |xj ≥ [a] + 1}
trong đó [a] là ký hiệu phần nguyên của số a.
Khi đó danh sách các tập con cần xem xét tiếp là
Thuật toán Thuật toán Land - Doig giải bài toán quy hoạch tuyến tính nguyên (IP0 )
gồm có các bước sau [23]:
Bước 0. Chuẩn bị
• Giải bài toán quy hoạch nới lỏng max{f (x)|x ∈ D0nl } được phương án tối ưu x0
CHƯƠNG 5. QUY HOẠCH TUYẾN TÍNH NGUYÊN VÀ PHI TUYẾN 96
• Nếu x0 nguyên Thì Dừng thuật toán (x0 là nghiệm tối ưu của bài toán (IP0 )
Ngược lại Đặt β(D0 ) = f (x0 ) (cận trên của bài toán (IP0 ))
• Nếu Biết một phương án x̄ ∈ D0 Thì Đặt α = f (x̄) Ngược lại Đặt α = −∞
• Đặt D = {D0 } (danh sách các tập con của D0 cần xem xét tiếp).
• Với mỗi i ∈ {1, 2}, giải bài toán quy hoạch tuyến tính nới lỏng (LPki ). Có thể
xảy ra ba tình huống sau
– Bài toán không chấp nhận được, tức Dki = ∅. Loại Dki khỏi việc xem xét
tiếp theo, tức
D = D\{Dki }
– Tìm được phương án tối ưu xki nguyên. Khi đó, tính lại giá trị kỷ lục
α = max{α, f (xki )}
Gọi x̄ là kỷ lục hiện tại tương ứng với giá trị kỷ lục hiện tại α = f (x̄). Loại
Dki khỏi việc xem xét tiếp theo, tức
D = D\{Dki }
– Tìm được phương án tối ưu xki là không nguyên. Đặt β(Dki ) = f (xki ). Ta
có β(Dki ) là môt cận trên của bài toán (IPki )
• Loại bỏ khỏi D tất cả các tập là tập chấp nhận được của bài toán con có cận trên
bé hơn hoặc bằng giá trị kỷ lục α hiện tại (nếu có).
Bước chuẩn bị. Giải bài toán nới lỏng với tập chấp nhận được
D0nl = {x ∈ Rn |2x1 + 4x2 ≤ 7, 10x1 + 3x2 ≤ 15, x1 , x2 ≥ 0 (Tứ giác OABC)}
được phương án tối ưu x0 = (0, 47 )T (xem hình 5.1).
Vì x0 không nguyên nên đặt
β(D0 ) = f (x0 ) = 7; (cận trên của bài toán nới lỏng)
α = −∞; (giá trị kỉ lục)
D = {D0 } (danh sách các tập con cần xem xét)
Thuật toán nhánh cận giải bài toán cái túi 0 − 1 cũng theo ý tưởng chung đã trình bày
ở mục 5.1.4.
Tính cận trên Mỗi tập con của tập chấp nhận được D có dạng
Dsub = {x ∈ D|x1 = δ1 , x2 = δ2 , . . . , xs = δs }
trong đó 1 ≤ s ≤ n và δ1 , δ2 , . . . , δs là các hằng số cho trước có giá trị 0 hoặc 1 thỏa mãn
s
X
b− aj δj ≥ 0
j=1
Bài toán con (5.9) chỉ có thể xảy ra một trong sáu trường hợp sau:
2. Có s
X
ak > b − aj δj , ∀k = s + 1, s + 2, . . . , n
j=1
Khi đó bài toán (5.9) có phương án tối ưu duy nhất x∗ = (δ1 , δ2 , . . . , δs , 0, . . . , 0)T (n−s
thành phần cuối bằng 0) và giá trị tối ưu (hay cận trên đúng) là
s
X
β(Dsub ) = cj δj
j=1
CHƯƠNG 5. QUY HOẠCH TUYẾN TÍNH NGUYÊN VÀ PHI TUYẾN 99
3. Có n s
X X
ak ≤ b − aj δj
k=s+1 j=1
Khi đó, thay vì bài toán (5.9); ta xét bài toán nhỏ hơn với tập chấp nhận được là:
0
Dsub = {x ∈ D|x1 = δ1 , . . . , xs = δs , xk = 0, ∀k ∈ I0 }
Lưu ý. Khi tính cận trên của các bài toán con, nên xét lần lượt các trường hợp liệt kê ở trên.
Thuật toán Thuật toán nhánh cận giải bài toán cái túi 0 − 1 gồm các bước sau [23]:
Bước 0. Chuẩn bị
• Nếu Biết một phương án x̄ ∈ D0 Thì Đặt α = f (x̄) Ngược lại Đặt α = −∞ (α là
giá trị kỷ lục, x̄ là kỷ lục (nếu có))
• Đặt D = {D0 } (danh sách các tập con của D0 cần xem xét tiếp).
trong đó các δj , j = 1, . . . , s − 1 đã được gán cố định giá trị 0 hoặc 1, thì Dk được
phân hoạch thành hai tập
• Đặt D = (D\{Dk }) ∪ {Dk1 , Dk2 } (danh sách các tập con của D0 cần xem xét tiếp
theo).
Bước 2. Loại các tập con
• Với mỗi i ∈ {1, 2}, giải bài toán quy hoạch con (KPki ). Có thể xảy ra sáu tình
huống sau
– Trường hợp 1. Bài toán không có phương án chấp nhận được, tức Dki = ∅.
Loại Dki khỏi việc xem xét tiếp theo, tức
D = D\{Dki }
– Trường hợp 2. Có
s
X
ai > b − aj δj , ∀i = s + 1, s + 2, . . . , n
j=1
Khi đó bài toán có phương án tối ưu duy nhất xki = (δ1 , δ2 , . . . , δs , 0, . . . , 0)T
(n − s thành phần cuối bằng 0) và giá trị tối ưu là
s
X
β(Dki ) = f (xki ) cj δj
j=1
Tuy nhiên, trong trường hợp này ta không cải thiện được giá trị kỷ lục. Loại
Dki khỏi việc xem xét tiếp theo, tức
D = D\{Dki }
– Trường hợp 3. Có
n
X s
X
aj ≤ b − aj δj
j=s+1 j=1
Tính lại giá trị kỉ lục α = max{α, f (xki )} và gọi x̄ là kỷ lục tương ứng với
giá trị này, tức f (x̄) = α. Loại Dki khỏi việc xem xét tiếp theo, tức
D = D\{Dki }
Tính lại giá trị kỷ lục α = max{α, f (xki )} và gọi x̄ là kỷ lục tương ứng với
giá trị này, tức f (x̄) = α. Loại Dki khỏi việc xem xét tiếp theo, tức
D = D\{Dki }
và I0 ⊂ {s + 1, ldots, n}.
Đặt
D = (D\{Dki }) ∪ {Dk0 i }
trong đó
Quay lại bước 2, xét bài toán (KPk0 i ) với tập chấp nhận được tướng ứng là
Dk0 i .
– Trường hợp 6. Tìm được số nguyên q thỏa mãn s + 1 ≤ q < n và
q
X s
X q+1
X
aj < b − aj δj < aj
j=s+1 j=1 j=s+1
• Loại bỏ khỏi D tất cả các tập là tập chấp nhận được của bài toán con có cận trên
bé hơn hoặc bằng giá trị kỷ lục α hiện tại (nếu có).
Giải: Vì
c3 9 c1 5 c4 3 c2 1
= > = > = > =
a3 7 a1 4 a4 3 a2 2
nên ta đổi biến
x1 = x3 , x2 = x1 , x3 = x4 và x4 = x2
và bài toán cái túi trên trở thành
Đặt β(D0 ) = +∞ (cận trên của bài toán (5.10)), α = −∞ (cận dưới) và D = {D0 } (tập
các tập con cần xem xét)
D1 = {x ∈ D|x1 = 1} và D2 = {x ∈ D|x1 = 0}
Vì a2 = 4 > 3 nên bài toán thuộc trường hợp 5. Xét bài toán toán con nhỏ hơn với
D3 = {x ∈ D|x1 = 1, x2 = 0} ⊂ D
và đặt
D = (D\{D1 }) ∪ {D3 } = {D2 , D3 }
CHƯƠNG 5. QUY HOẠCH TUYẾN TÍNH NGUYÊN VÀ PHI TUYẾN 103
Vì a3 = 3 nên bài toán thuộc trường hợp 4. Do đó nghiệm tối ưu x3 = (1, 0, 1, 0)T . Ta
có kỷ lục đầu tiên x̄ = x3 = (1, 0, 1, 0)T tương ứng với giá trị kỷ lục α = f (x̄) = 12.
Loại D3 tức D = (D\{D3 }) = {D2 }
• Xét bài toán con (s = 1, δ1 = 0)
maxf (x) = 9 × 0 + 5x2 + 3x3 + x4
4x + 3x + 2x ≤ 10 − 7 × 0 = 10
2 3 4
v.đ.k.
x2 , x3 , x4 ∈ {0, 1}
Dễ thấy, a2 + a3 + a4 = 9 < 10 nên bài toán thuộc trường hợp 3 và nghiệm tối ưu của
nó là x2 = (0, 1, 1, 1)T , tương ứng với giá trị tối ưu f (x2 ) = 9. Tính lại giá trị kỷ lục:
a = max{α, f (x2 )} = α = 12
với kỷ lục tương ứng vẫn là x̄ = (1, 0, 1, 0)T . Loại D2 tức D = (D\{D2 }) = ∅
Bước 3. Vì D = ∅ nên Thuật toán kết thúc. Bài toán có nghiệm tối ưu x∗ = x̄ = (1, 0, 1, 0)T
và giá trị tối ưu f∗ = α = 12
Nghiệm tối ưu của bài toán ban đầu là
xopt ∗ opt ∗ opt ∗ opt ∗
1 = x2 = 0, x2 = x4 = 0, x3 = x1 = 1, x4 = x3 = 1,
Vậy nghiệm tối ưu của bài toán (5.10) là xopt = (0, 0, 1, 1)T và f opt = 12.
Nếu hàm mục tiêu f (x) hoặc ít nhất một trong các hàm ràng buộc gj (x), j = 1, 2, . . . , m
là phi tuyến thì ta có bài toán quy hoạch phi tuyến. Các dạng khác của bài toán tối ưu có
thể đưa về dạng chính tắc trên đây theo những quy tắc nhất định.
Với ký hiệu D ⊂ Rn là miền ràng buộc (hay miền các phương án chấp nhận được) cho
bởi các ràng buộc (??) thì bài toán quy hoạch phi tuyến có thể viết gọn như sau:
min (max)f (x) v.đ.k. x ∈ D (5.13)
Trong trường hợp D ≡ Rn , ta có bài toán quy hoạch phi tuyến không ràng buộc. Ngược
lại, D là tập con thực sự của Rn thì có bài toán quy hoạch phi tuyến có ràng buộc.
CHƯƠNG 5. QUY HOẠCH TUYẾN TÍNH NGUYÊN VÀ PHI TUYẾN 104
Ví dụ 5.4. Bài toán sau là bài toán quy hoạch phi tuyến không có ràng buộc:
Trong khi đó, bài toán sau đây là bài toán quy hoạch phi tuyến có ràng buộc:
Điểm x = (x1 , x2 , . . . , xn ) ∈ D ⊂ Rn được gọi là phương án chấp nhận được (hay phương
án) của bài toán tối ưu: min (max)f (x), với x ∈ D ⊂ Rn . Các toạ độ thành phần của điểm
x được gọi là các biến quyết định.
Đối với bài toán cực tiểu hoá: min f (x) v.đ.k. x ∈ D ⊂ Rn , điểm x∗ = (x∗1 , x∗2 , . . . , x∗n ) ∈ Rn
được gọi là điểm tối ưu (hay phương án tối ưu) toàn cục nếu x∗ ∈ D và f (x∗ ) ≤ f (x), ∀x ∈ D.
Điểm x ∈ Rn được gọi là điểm tối ưu (hay phương án tối ưu) địa phương nếu x ∈ D và
f (x) ≤ f (x), ∀x ∈ B(x, ) ∩ D với B(x, ) là một lân cận đủ nhỏ của điểm x.
Tương tự, đối với bài toán cực đại hoá: max f (x) v.đ.k. x ∈ D ⊂ Rn , điểm x∗ ∈ Rn được
gọi là điểm tối ưu (hay phương án tối ưu) toàn cục nếu x∗ ∈ D và f (x∗ ) ≥ f (x), ∀x ∈ D.
Điểm x ∈ Rn được gọi là điểm tối ưu (hay phương án tối ưu) địa phương nếu x ∈ D và
f (x) ≥ f (x), ∀x ∈ B(x, ) ∩ D.
Các phương án tối ưu địa phương hay toàn cục được gọi chung là phương án tối ưu. Trong
các bài toán quy hoạch phi tuyến ứng dụng, phương án tối ưu toàn cục có một ý nghĩa quan
trọng. Chẳng hạn trong thiết kế máy, sau khi dùng phương pháp phân tích hồi quy nhiều
chiều, ta thường thu được hàm mục tiêu f (x) có dạng phi tuyến và sau đó phải tìm kiếm
phương án tối ưu toàn cục. Các bài toán quy hoạch phi tuyến toàn cục cũng có thể nảy sinh
trong nhiều lĩnh vực kinh tế – kỹ thuật khác [43].
Có nhiều phương pháp giải các lớp bài toán quy hoạch phi tuyến, nhưng chưa có phương
pháp nào tỏ ra hữu hiệu cho mọi bài toán quy hoạch phi tuyến. Do đó, lý thuyết và thuật
toán quy hoạch phi tuyến là một ngành khoa học đang ngày càng phát triển phong phú.
Phân loại các phương pháp giải bài toán quy hoạch phi tuyến
Các phương pháp giải bài toán quy hoạch phi tuyến toàn cục được phân ra thành hai
lớp: phương pháp tất định (deterministic methods) và phương pháp ngẫu nhiên (stochastic
methods).
• Phương pháp tất định sử dụng các tính chất giải tích của hàm mục tiêu và các hàm
ràng buộc. Một số dạng bài toán tối ưu toàn cục với những tính chất giải tích nhất
định của hàm mục tiêu và các hàm ràng buộc có thể giải được bằng các phương pháp
tất định thích hợp, chẳng hạn như phương pháp quy hoạch toàn phương, quy hoạch
tách, quy hoạch lồi, quy hoạch d.c. . . Trong các trường hợp đó, phương án tối ưu toàn
cục có thể tìm được sau một số hữu hạn bước tính toán với độ chính xác chọn trước.
Tuy nhiên, đối với nhiều lớp bài toán tối ưu toàn cục phương pháp tất định tỏ ra không
có hiệu quả.
• Các phương pháp ngẫu nhiên như: mô phỏng tôi luyện (simulated annealing), thuật giải
di truyền (genetic algorithm), kỹ thuật tìm kiếm ngẫu nhiên có điều khiển (controlled
random search technique). . . có thể áp dụng để giải các bài toán tối ưu toàn cục dạng
CHƯƠNG 5. QUY HOẠCH TUYẾN TÍNH NGUYÊN VÀ PHI TUYẾN 105
bất kỳ, không đòi hỏi các tính chất đặc biệt của hàm mục tiêu hay các hàm ràng buộc.
Các phương pháp ngẫu nhiên đặc biệt có hiệu quả đối với các bài toán quy hoạch phi
tuyến nguyên và hỗn hợp nguyên. Tuy nhiên, các phương pháp này thường chỉ cho
phương án "gần" tối ưu khá tốt sau một số hữu hạn bước mà không kiểm soát được độ
chính xác của phương án tìm được.
Cho hàm số f xác định trên tập lồi S ⊆ Rn . Ta gọi f là hàm lồi (convex function) nếu
(a) (b)
Hình 5.2: Minh họa hàm lồi (a) và hàm lõm (b)
Các phép toán về hàm lồi Cho hàm lồi f1 xác định trên tập lồi X1 ⊆ Rn , hàm lồi f2 xác
định trên tập lồi X2 ⊆ Rn và số thực α ≥ 0, β ≥ 0. Khi đó các hàm αf1 + βf2 và max{f1 , f2 }
là lồi trên X1 ∩ X2 .
Trong đó, các phép toán αf1 , f1 + f2 , max{f1 , f2 } được định nghĩa như sau:
Mệnh đề 5.1. Cho hàm lồi f : Rn → R và tập lồi khác rỗng D ⊆ Rn . Giả sử x∗ là một
nghiệm tối ưu địa phương của bài toán min{f (x)|x ∈ D}. Khi đó:
CHƯƠNG 5. QUY HOẠCH TUYẾN TÍNH NGUYÊN VÀ PHI TUYẾN 106
5.2.3 Bài toán quy hoạch phi tuyến không ràng buộc
Bài toán quy hoạch phi tuyến không ràng buộc được phát biểu như sau:
Định lý 5.1 (Điều kiện bậc nhất). Giả sử f là hàm lồi khả vi trên Rn . Khi đó x∗ ∈ Rn là
nghiệm cực tiểu toàn cục của bài toán quy hoạch phi tuyến không ràng buộc khi và chỉ khi
∇f (x∗ ) = 0.
Lưu ý. Điểm x∗ ∈ Rn thỏa mãn ∇f (x∗ ) được gọi là điểm dừng của hàm f .
Định lý 5.2 (Điều kiện bậc hai). Giả sử hàm số f khả vi liên tục hai lần trên Rn . Khi đó:
∇f (x∗ ) = 0 và
∇2 f (x∗ ) nửa xác định dương
• Ngược lại, x∗ là điểm cực tiểu địa phương chặt của f trên Rn khi
∇f (x∗ ) = 0 và
∗
∇ f (x ) xác định dương
2
Lưu ý. Vì hai bài toán min{f (x)|x ∈ Rn } và max{−f (x)|x ∈ Rn } tương đương với nhau
(theo nghĩa tập nghiệm của hai bài toán trùng nhau) và giá trị tối ưu ngược dấu nên:
∇f (x∗ ) = 0 và
∇2 f (x∗ ) nửa xác định âm
• Ngược lại, x∗ là điểm cực đại địa phương chặt của f trên Rn nếu
∇f (x∗ ) = 0 và
∇2 f (x∗ ) xác định âm
Giải hệ phương trình ∇f (x) = 0 ta nhận được hai điểm (dừng) x1 = (1, 1)T , x2 = (−1, 1)T .
Ta có:
6 0 −6 0
∇2 f (x1 ) = và ∇2 f (x2 ) =
0 2 0 2
CHƯƠNG 5. QUY HOẠCH TUYẾN TÍNH NGUYÊN VÀ PHI TUYẾN 107
Vì ∇2 f (x1 ) là ma trận xác định dương nên x1 là điểm cực tiểu địa phương chặt của hàm
f trên R2 . Vì ∇2 f (x2 ) không phải ma trận nửa xác định dương cũng không phải ma trận
nửa xác định âm nên x2 không phải là điểm cực đại địa phương cũng không phải điểm cực
tiểu địa phương của hàm f trên R2 .
Ví dụ 5.6. Giải bài toán quy hoạch phi tuyến không ràng buộc với hàm mục tiêu
Ta có
2x + x2 + 3
∇f (x) = 1
x1 + x2 + 3
Giải hệ ∇f (x) = 0 ta nhận được điểm dừng của f trên R2 là x∗ = (−1, 1)T .
Vì
2 1
∇2 f (x) =
1 2
là ma trận đối xứng, xác định dương nên f (x) là hàm lồi chặt. Do đó, điểm x∗ là nghiệm cực
tiểu duy nhất của bài toán đang xét.
Một số phương pháp giải bài toán quy hoạch phi tuyến không ràng buộc
Như đã trình bày ở trên, nếu hàm f là khả vi trên Rn thì điều kiện cần của nghiệm cực tiểu
địa phương x∗ là ∇f (x) = 0. Tuy nhiên, việc giải trực tiếp hệ phương trình ∇f (x) = 0 (n ẩn,
n phương trình) trong hầu hết các trường hợp là khó thực hiện. Vì vậy nhiều phương pháp
giải bài toán quy hoạch phi tuyến không ràng buộc được đề xuất.
Các phương pháp giải tích giải bài toán quy hoạch phi tuyến không ràng buộc chia thành
hai lớp: phương pháp không sử dụng đạo hàm và phương pháp sử dụng đạo hàm. Trong khuôn
khổ giáo trình này, ta chỉ xem xét một số phương pháp sử dụng đạo hàm như phương pháp
đường dốc nhất (còn gọi là phương pháp gradient), phương pháp Newton-Raphson thông qua
việc trình bày thuật toán và ví dụ. Các phương pháp không sử dụng đạo hàm như phương
pháp Nelder-Maed [32], phương pháp Powell [36].
và dãy {xk } hội tụ đến điểm dừng x∗ ∈ Rn của hàm f , tức ∇f (x∗ ) = 0. Trường hợp f là
hàm lồi thì điểm x∗ cũng chính là cực tiểu toàn cục của bài toán quy hoạch phi tuyến không
ràng buộc.
Phương pháp hướng giảm có lược đồ chung như sau:
(k1 ) Nếu xk thỏa mãn điều kiện dừng Thì Dừng thuật toán Ngược lại Xác định
xk+1 := xk + tk dk sao cho f (xk+1 ) < f (xk ).
CHƯƠNG 5. QUY HOẠCH TUYẾN TÍNH NGUYÊN VÀ PHI TUYẾN 108
Trong lược đồ trên, điều kiện dừng của thuật toán tại Bước (k1 ) thường là ∇f (xk ) ≈ 0
hoặc k xk − xk−1 k đủ nhỏ. Tại mỗi bước lặp k điển hình, nếu điều kiện dừng chưa được thỏa
mãn thì ta phải xác định điểm
trong đó dk ∈ Rn là hướng giảm của f tại xk và số thực tk > 0 là độ dài bước. Sự lựa chọn
hướng dịch chuyển dk và độ dài bước tk khác nhau cho ta các thuật toán cụ thể tương ứng
với các phương pháp hướng giảm khác nhau.
Đây là phương pháp thông dụng nhất để giải bài toán cực tiểu không ràng buộc vì rất đơn
giản và có thể áp dụng được cho những lớp hàm số rất rộng.
Trong các thuật toán giải bài toán quy hoạch phi tuyến không ràng buộc theo phương pháp
gradient, tại mỗi bước lặp k, ta chọn hướng giảm dk của hàm f tại điểm xk là dk = −∇f (xk ).
Đây là hướng mà theo đó hàm mục tiêu f giảm nhanh nhất tại xk . Do đó, phương pháp
gradient còn được gọi là phương pháp giảm nhanh nhất (Steepest descent method).
Nếu đã biết hướng giảm dk của hàm f tại điểm xk , điểm lặp tiếp theo được xác định theo
công thức:
xk+1 = xk + tk dk
với tk là một số thực dương.
Như vậy, xk+1 là một điểm nằm trên tia {xk + tdk , t > 0}. Để xác định độ dài bước tk
có hai phương pháp chính (tương ứng với hai thuật toán sẽ trình bày dưới đây) là tìm chính
xác theo tia (Exact line search) và quay lui (Backtracking)
Thuật toán Gradient với thủ tục tìm chính xác theo tia Trong thuật toán này, tại mỗi
bước lặp k, điểm lặp tiếp theo được xác định bởi
xk+1 = xk − tk ∇f (xk )
trong đó tk là nghiệm cực tiểu của hàm một biến φk (t) = f (xk − t∇f (xk )) với t > 0.
Thuật toán:
Bước khởi đầu: Chọn trước số > 0 đủ nhỏ. Xuất phát từ một điểm tùy ý x0 ∈ Rn có
∇f (x0 ) 6= 0. Đặt k = 0.
Ý nghĩa hình học: Trong mỗi bước lặp k độ dài bước tk là nghiệm cực tiểu của hàm một biến
φk : R+ → R
t 7→ φk (t) = f (xk − t∇f (xk ))
CHƯƠNG 5. QUY HOẠCH TUYẾN TÍNH NGUYÊN VÀ PHI TUYẾN 109
Tức là:
hay vector ∇f (xk + 1) và vector dk = −∇f (xk ) trực giao với nhau.
Nói cách khác, trong bước lặp k điểm xk+1 được xác định bằng cách từ xk , đi theo hướng
dk đến một điểm nằm trên đường mức nào đó của hàm f mà nhận dk là tiếp tuyến thì dừng.
Ví dụ 5.7. Giải bài toán quy hoạch phi tuyến (ví dụ 5.5) theo thuật toán gradient với thủ
tục tìm chính xác theo tia:
Ta có:
Vì ∇f (x1 ) = (0, 0)T nên x1 là điểm dừng của hàm f (x). Dừng thuật toán. Ta nhận được
đúng kết quả như Ví dụ 5.5.
Thuật toán gradient với thủ tục quay lui Trong nhiều trường hợp, việc giải bài toán cực
tiểu hàm một biến để xác định độ dài bước theo thủ tục tìm chính xác theo tia không dễ
dàng và chi phí tính toán lớn. Trong thực tế tính toán, thủ tục quay lui thường được sử dụng.
Bước khởi đầu. Tùy chọn m1 ∈ (0, 1), α ∈ (0, 1). Chọn số thực > 0 đủ nhỏ. Xuất phát từ
một điểm tùy ý x0 ∈ Rn có ∇f (x0 ) 6= 0. Đặt k = 0.
(k1 ) Đặt tk = 1
(k2 ) Tính xk+1 = xk − tk ∇f (xk ) và f (xk+1 ).
CHƯƠNG 5. QUY HOẠCH TUYẾN TÍNH NGUYÊN VÀ PHI TUYẾN 110
(k3 ) Nếu f (xk+1 ) − f (xk ) ≤ m1 tk h∇f (xk ), −∇f (xk )i = −m1 tk k ∇f (xk ) k2 Thì
Chuyển Bước (k4 ) Ngược lại tk = αtk và quay về Bước k2
(k4 ) Tính ∇f (xk+1 )
(k5 ) Nếu k ∇f (xk+1 ) k< Thì Dừng thuật toán (lấy điểm dừng x∗ ≈ xk+1 ) Ngược
lại k = k + 1, quay về Bước lặp k.
Ví dụ 5.8. Giải bài toán quy hoạch phi tuyến (ví dụ 5.5) theo thuật toán gradient với thủ
tục quay lui:
f (x1 , x2 ) = x31 + x22 − 3x1 − 2x2 + 12
Giải: Chọn m1 = 0.01, α = 0.5. Cũng xuất phát từ điểm x0 = (1, 2)T và ta có
Đặt t0 = 1, ta có:
1 0 1
x1 = x0 − t0 ∇f (x0 ) = − =
2 2 0
Vì
f (x1 ) − f (x0 ) = 10 − 10 = 0 > −m1 t0 k ∇f (x0 ) k2 = −0.04
nên đặt t0 = αt0 = 0.5.
Tính lại
1 0 1
x1 = x0 − t0 ∇f (x0 ) = − 0.5 =
2 2 1
Vì
f (x1 ) − f (x0 ) = 9 − 10 = −1 < −m1 t0 k ∇f (x0 ) k2 = −0.02
nên chọn x1 = (1, 1)T .
Vì ∇f (x1 ) = (0, 0)T nên dừng thuật toán với điểm dừng x1 = (1, 1)T
Phương pháp Newton giải bài toán tối ưu không ràng buộc
min{f (x)|x ∈ Rn }
với hàm mục tiêu f khả vi hai lần trên Rn , chính là việc áp dụng phương pháp Newton tìm
điểm dừng của hàm f bằng việc giải hệ phương trình n ẩn, n phương trình:
∇f (x) = 0
Phương pháp Newton để giải hệ phương trình phi tuyến được trình bày trong Phụ lục A.
Phương pháp Newton thuần túy
Bước khởi đầu Xuât phát từ một điểm tùy ý x0 ∈ Rn đủ gần điểm dừng x∗ và ∇f (x0 ) 6= 0.
Chọn trước số > 0 đủ nhỏ. Đặt k = 0.
(k1 ) Tính hướng Newton pk của hàm f tại xk bằng việc giải hê phương trình tuyến
tính
[∇2 f (xk )].pk = −∇f (xk )
Ví dụ 5.9. Sử dụng thuật toán Newton thuần túy giải bài toán
f 0 (xk ) 1
pk = − = − xk
f 00 (xk ) 3
Nếu biết xk theo thuật toán Newton thuần túy, điểm tiếp theo xk+1 được xác định bởi
1 2
xk+1 = xk + pk = xk − xk = xk
3 3
Xuất phát từ x0 = 4 ta có
2 3
2 8 2 2 16 2 2 32
1
x = x0 = ; x2 = x1 = x = ; x3 = x2 =
0
x0 = ...
3 3 3 3 9 3 3 27
Do đó k k
2 2
xk = x0 = 4
3 3
Dãy {xk } sinh bởi thuật tóan sẽ hội tụ đến nghiệm cực tiểu của bài toán đang xét:
k→∞
{xk } −−−→ 0
Phương pháp Newton suy rộng Thuật toán Newton thuần túy yêu cầu xuất phát từ một
điểm x0 đủ gần điểm dừng x∗ , gây khó khăn cho việc áp dụng. Để khắc phục hạn chế này,
phương pháp Newton suy rộng cho phép xuất phát từ một điểm tùy ý x0 ∈ Rn . Tại mỗi Bước
lặp k, điểm xk+1 được xác định bởi
xk+1 = xk + tk dk
trong đó dk vẫn là hướng Newton của hàm f tại xk , tức dk = −[∇2 f (xk )]−1 ∇f (xk ) và độ dài
bước tk được tính theo thủ tục quay lui.
Bước khởi đầu. Tùy chọn m1 ∈ (0, 1) và α ∈ (0, 1). Chọn trước số > 0 đủ nhỏ. Xuất phát
từ một điểm x0 ∈ Rn có ∇f (x0 ) 6= 0. Đặt k = 0.
(k1 ) Tính hướng Newton dk bằng việc giải hê phương trình tuyến tính
Phương pháp tựa Newton Theo phương pháp Newton, ở mỗi bước lặp k, ta cần tính hướng
Newton
pk = −[∇2 f (xk )]−1 ∇f (xk )
Việc tính toán này là khó khăn vì cần phải tính ma trận nghịch đảo [∇2 f (xk )]−1 . Ngoài ra,
nếu ma trân ∇2 f (xk ) không suy biên nhưng không xác định dương thì hương Newton dk
tương ứng không phải là hướng giảm của hàm f tại xk . Thuật toán có thể hội tụ đến một
điểm dừng x∗ Rn nhưng đó không phải là điểm cực tiểu địa phương. Vì vậy phương pháp
Newton ít được sử dụng trong thực tế khi n > 1.
Ý tưởng của các phương pháp tựa Newton (Quasi Newton methods) là thay vì tính hướng
Newton tại mỗi bước lặp, ta tính hướng:
dk = −Hk ∇f (xk )
trong đó Hk là ma trận không suy biến, đối xứng, xác định dương. Ma trận Hk+1 được
tính truy hồi theo Hk , ∇f (xk ), ∇f (xk+1 ) bằng những phương pháp khác nhau (phương pháp
Broyden, phương pháp DFP (Davidon-Fletcher-Powell) hoặc phương pháp BFGS (Broy-
den–Fletcher–Goldfarb–Shanno), . . . ) trong đó thuật toán DFP được trình bày dưới dây là
một thuật toán tiêu biểu cho phương pháp tựa Newton.
Bước lặp k. (k = 1, 2, . . . ).
v k (v k )T ((Hk uk )(Hk uk )T
Hk+1 = Hk + −
huk , v k i huk , Hk uk i
Ví dụ 5.10. Giải bằng phương pháp tựa Newton bài toán min{f (x)|x ∈ R3 } trong đó
1
f (x) = xT Ax − bT x
2
với
1 0 0 −1
A = 0 5 và b = −1
0
0 0 25 −1
Các bước lặp k được thể hiện bằng bảng 5.1: Vì ∇f (x4 ) = (0, 0, 0)T nên dừng thuật toán.
Trong khuôn khổ của chương này, ta chỉ xem xét bài toán quy hoạch phi tuyến không ràng
buộc. Đối với bài toán quy hoạch phi tuyến có ràng buộc có thể tham khảo trong [23, 8, 4]
và chương 8.2.
CHƯƠNG 5. QUY HOẠCH TUYẾN TÍNH NGUYÊN VÀ PHI TUYẾN 114
Bài tập
Bài 1: Giải bài toán quy hoạch nguyên sau bằng phương pháp nhánh cận (minh hoạ
bằng đồ thị):
a)
b)
maxf (x) = x1 + x2
−4x1 + 2x2 ≤ −1
4x + 2x ≤ 11
1 2
v.đ.k.
x1 , x2 ≥ 0
x1 , x2 nguyên
Bài 2: Hãy phát biểu bài toán xếp hàng lên tàu sau đây thành quy hoạch nguyên:
Người ta cần chở năm loại hàng bằng một tàu có tải trọng là 112 và thể tích 109. Mỗi đơn
vị hàng loại j có trọng lượng aj , thể tích bj và giá trị sử dụng cj , j = 1 . . . 5 được cho bởi
bảng sau
Loại hàng aj bj cj
1 5 3 4
2 8 5 7
3 3 8 6
4 2 5 3
5 3 7 4
Hãy xác định lượng đơn vị các loại hàng xếp lên tàu sao cho tổng giá trị sử dụng lớn nhất
mà không được vượt quá tải trọng và dung tích tàu
xuất phát từ x0 = (0, 0, 0)T , áp dụng thuật toán gradient tìm chính xác theo tia, trình
bày ba bước lặp giải bài toán min{f (x)|x ∈ R3 } với γ = 1, 10, 100