Download as pdf or txt
Download as pdf or txt
You are on page 1of 26

Chương 5

Quy hoạch tuyến tính nguyên và


phi tuyến

5.1 Quy hoạch tuyến tính nguyên


Các biến số trong bài toán quy hoạch tuyến tính có thể nhận những giá trị thực không âm.
Tuy nhiên, trong thực tế thường gặp những bài toán mà các biến số chỉ có thể nhận các giá
trị nguyên. Một số tình huống thường gặp khi xây dựng các mô hình thực tế của quy hoạch
tuyến tính nguyên như: các bài toán với điều kiện không chia cắt được (sẽ là vô nghĩa khi
đưa ra câu trả lời, sản xuất nửa cái bàn, hay thuê 1/3 cái ô tô để vận chuyển hàng hóa,. . . )
hay những bài toán liên quan đến quyết định "có" hay "không" (có mua cái xe này không? có
thi Đại học khối A không? . . . ). Quy hoạch nguyên là một ngành trẻ được ứng dụng và trở
nên vô cùng quan trọng trong các lĩnh vực kinh tế, điều khiển, thiết kế, sinh học. . . và đặc
biệt là lĩnh vực công nghệ thông tin và logistic.

5.1.1 Bài toán quy hoạch nguyên tổng quát


Bài toán quy hoạch nguyên (Integer Programming) được phát biểu như sau
minf (x) = f (x1 , x2 , . . . , xn ) (5.1)
v.đ.k. x = (x1 , x2 , . . . , xn ) ∈ D
trong đó D ⊂ Rn là tập các vector x = (x1 , x2 , . . . , xn )T mà một số hoặc tất cả các thành
phần x chỉ nhận giá trị nguyên.
Thông thường, tập D ⊂ Rn được xác định bởi một hệ các phương trình và bất phương
trình với điều kiện bổ sung về tính nguyên của các biến số:


gi (x) = 0,

 i = 1, 2, . . . , m1


gi (x) ≤ 0, i = m1 + 1, . . . , m (5.2)





 xj nguyên, j = 1, 2, . . . , n1

5.1.2 Phân loại các bài toán quy hoạch nguyên


Dựa theo một số điều kiện kèm theo, bài toán quy hoạch nguyên tổng quát có thể phân
thành:

• 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.

5.1.3 Phương pháp cắt Gomory


Ý tưởng của phương pháp cắt

Ý 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

Minh họa phương pháp Gomory bằng đồ thị

Ví dụ 5.1. Xét bài toán quy hoạch tuyến tính nguyên:

maxf (x) = x1 + 4x2 (5.3)




2x1 + 4x2 ≤ 7







10x + 3x ≤ 15

1 2
v.đ.k.

x1 , x2 ≥ 0






x1 , x2 nguyên

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

Hình 5.1: Minh họa phương pháp cắt Gomory

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.

5.1.4 Phương pháp nhánh và cận Land-Doig


Xét bài toán quy hoạch nguyên (kí hiệu IP)

max f (x) v.đ.k. x ∈ D (5.6)

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 số khái niệm cơ bản

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:

• Với mọi i ∈ I tồn tại ít nhất một j ∈ I 0 sao cho Dj0 ⊆ Di

• Tồn tại i0 ∈ I, j0 ∈ I 0 sao cho Dj0


0 ⊂D .
i0

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 nhánh cậ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 f (x) v.đ.k. x ∈ Di

trong đó Di thuộc một phân hoạch P = {Di ⊆ D|i ∈ I}.


Mặc dù việc giải các bài toán con (IPi ), i ∈ I cũng có những khó khăn tương tự như giải
bài toán IP . Tuy nhiên, nhờ vào việc xác định các cận trên β(Di ) của các bài toán con, ta
có thể xác định được cận trên của bài toán ban đầu:

β = max{β(Di )|i ∈ I}

Vì Di ⊂ D với mọi i ∈ I nên

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 ))

max f (x) = cT x, v.đ.k. x ∈ D0 (5.7)

trong đó D0 ⊂ Rn xác định bởi

D0 = {x ∈ Rn |Ax ≤ b, x ≥ 0 và nguyên},

với A là ma trận cấp m × n, b ∈ Rm và c ∈ Rn {0}. Vector x = (x1 , . . . , xn )T được gọi là


nguyên nếu các thành phần xj , j = 1, . . . , n đều là số nguyên.
Ký hiệu D0nl = {x ∈ Rn |Ax ≤ b, x ≥ 0} là tập lồi đa điện có ràng buộc như tập D0 nhưng
bỏ đi tính nguyên của biến x. Để đơn giản, giả thiết rằng tập D0nl bị chặn. Khi đó D0 có hữu
hạn phần tử và bài toán (IP0 ) luôn có nghiệm tối ưu.
Tính cận trên Xét một phân hoạch P = {Di ⊆ D0 |i ∈ I} của tập chấp nhận được D0 .
Với mỗi i ∈ I, bài toán (LPi )
max{f (x)|x ∈ Dinl } (5.8)
trong đó Dinl là đa diện có các ràng buộc như Di nhưng bỏ đi tính nguyên của biến x được
gọi là bài toán quy hoạch tuyến tính nới lỏng của bài toán con (IPi ).
Ký hiệu β(Di ) là giá trị tối ưu của bài toán nới lỏng này. Vì Di ⊂ Dinl nên β(Di ) là một
cận trên của bài toán quy hoạch nguyên (IPi ) tương ứng, tức là max{f (x)|x ∈ Di } ≤ β(Di ).
Như vậy, ta dễ dàng nhận được cận trên của các bài toán con bằng kỹ thuật giải quy hoạch
tuyến tính thông thường
Chia nhánh Ký hiệu D là tập danh sách các tập con cần phải xem xét tiếp. Thông thường,
người ta chọn tập Dk ∈ D là tập chấp nhận được của bài toán con (IPk ) có cận trên lớn nhất
trong các bài toán con tương ứng với các tập con thuộc D rồi phân hoạch tiếp Dk thành các
tập con nhỏ hơn.
Gọi xk là phương án tối ưu của bài toán quy hoạch tuyến tính nới lỏng (LPk )

max{f (x)|x ∈ Dknl }

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

Dk1 = {x ∈ Dk |xj ≤ [a]}


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à

D = (D\{Dk }) ∪ {Dk1 , Dk2 }

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).

Bước 1. Chọn tập để chia


• Chọn Dk ∈ D là tập chấp nhận được của bài toán quy hoạch nguyên (IPk ) mà
bài toán này có cận trên β(Dk ) lớn nhất trong các bài toán con có tập chấp nhận
được thuộc D. Gọi xk là phương án tối ưu của bài toán nới lỏng (LPk ) tương ứng
với (IPk ) (có xk không nguyên).
• Giả sử xkj là một thành phần không nguyên đầu tiên của xk . Phân hoạch Dk
thành hai tập:
Dk1 = {x ∈ Dk |xj ≤ [xkj ]}
Dk2 = {x ∈ Dk |xj ≥ [xkj ] + 1}
• Đặ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 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 3. Kiểm tra điều kiện dừng


Nếu D = ∅ Thì Dừng thuật toán (fopt = α và xopt = x̄) Ngược lại, Quay lại Bước 1.
Lưu ý. Trong quá trình thực hiện thuật toán nhánh-cận, yêu cầu thường xuyên giải các bài
toán quy hoạch tuyến tính trung gian (đều có cùng hàm mục tiêu với bài toán ban đầu).
Ví dụ 5.2. Giải bài toán quy hoạch nguyên (ví dụ 5.1) bằng phương pháp nhánh cận
maxf (x) = x1 + 4x2


2x1 + 4x2 ≤ 7







10x + 3x ≤ 15

1 2
v.đ.k.




 x1 , x2 ≥ 0



x1 , x2 nguyên


CHƯƠNG 5. QUY HOẠCH TUYẾN TÍNH NGUYÊN VÀ PHI TUYẾN 97

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)

Vòng lặp thứ nhất


Bước 1. Chọn tập D0 để chia. Chia tập D0 bởi biến chia nhánh x02 = 47 . Ta có [x01 ] = 1 và
D1 = {x ∈ D|x2 ≤ 1}, D2 = {x ∈ D|x2 ≥ 2}
Dễ thấy D0 = D1 ∪ D2 . Đặt D = (D\{D0 }) ∪ {D1 , D2 } = {D1 , D2 }
Bước 2.
• Giải bài toán nới lỏng với
D1nl = {x ∈ D0nl |x2 ≤ 1} = (Tứ giác ODEC)
được nghiệm tối ưu x1 = ( 65 , 1)T (đỉnh E) và giá trị tối ưu f (x1 ) = 26
5 . Cận trên của
bài toán này là β(D1 ) = f (x1 ) = 26
5 >α

• Bài toán nới lỏng ứng với


D2nl = {x ∈ D0nl |x2 ≥ 2} = ∅
không chấp nhận được.
Do đó D = D\{D2 } = {D1 }.
Bước 3. Vì D 6= ∅ nên quay lại Bước 1.
Vòng lặp thứ hai
Bước 1. Chọn tập D1 để chia. Chia tập D1 bởi biến chia nhánh x11 = 56 . Ta có [x11 ] = 1 và
D3 = {x ∈ D1 |x1 ≤ 1}, D4 = {x ∈ D1 |x1 ≥ 2}
Đặt D = (D\{D1 }) ∪ {D3 , D4 } = {D3 , D4 }
Bước 2.
• Giải bài toán nới lỏng với
D3nl = {x ∈ D1nl |x1 ≤ 1} = (Tứ giác ODFG)
được nghiệm tối ưu x2 = (1, 1)T (đỉnh F) và giá trị tối ưu f (x2 ) = 5. Vì x2 nguyên
nên tính lại giá trị kỉ lục α = max{α, f (x2 )} = f (x2 ) = 5 tương ứng với kỉ lục
x̄ = x2 = (1, 1)T .
Đặt D = D\{D3 } = {D4 }
• Bài toán nới lỏng ứng với
D4nl = {x ∈ D1nl |x1 ≥ 2} = ∅
không chấp nhận được.
Vì vậy D = D\{D4 } = ∅
Bước 3. Vì D = ∅ nên kết thúc thuật toán. Ta có nghiệm tối ưu xopt = x̄ = (1, 1)T (kỷ lục)
và giá trị tối ưu fopt = α = 5 (giá trị kỉ lục).
CHƯƠNG 5. QUY HOẠCH TUYẾN TÍNH NGUYÊN VÀ PHI TUYẾN 98

Thuật toán nhánh cận giải bài toán cái túi 0 − 1

Xét bài toán cái túi 0 − 1 (kí hiệu KP )


n
( n )
X X
n
max f (x) = cj xj v.đ.k. x ∈ D = x∈R aj xj ≤ b, xj ∈ {0, 1}, j = 1, . . . , n

j=1 j=1

trong đó cj , aj , j = 1, . . . , n và b là các số thực cho trước.


Từ ý nghĩa thực tiễn của bài toán, có thể giả thiết b > 0, cj > 0, b > aj > 0, ∀j = 1, . . . , n
và có thể đánh số các đồ vật sao cho
c1 c2 cn
≥ ≥ ... ≥
a1 a2 an

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: n


X
max f (x) = cj xj v.đ.k. x ∈ Dsub
j=1

có thể được viết dưới dạng [23]:


n
X s
X n
X
maxf (x) = cj xj = cj xj + cj xj (5.9)
j=1 j=1 j=s+1

Pn ≤b−
Ps
j=s+1 aj xj j=1 aj δj

v.đ.k.


xj ∈ {0, 1}, j = s + 1, s + 2, . . . , n

Bài toán con (5.9) chỉ có thể xảy ra một trong sáu trường hợp sau:

1. Bài toán không có phương án chấp nhận được, tức Dsub = ∅

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 đó bài toán (5.9) có phương án tối ưu x∗ = (δ1 , δ2 , . . . , δs , 1, . . . , 1)T (n − s thành


phần cuối bằng 1) và giá trị tối ưu (hay cận trên đúng) là
s
X n
X
β(Dsub ) = cj δj + cj
j=1 j=s+1

4. Tồn tại chỉ số r thỏa mãn s + 1 ≤ r ≤ n sao cho


s
X
as+1 + . . . + ar = b − aj δj
j=1

Khi đó bài toán (5.9) có phương án tối ưu x∗ = (δ1 , δ2 , . . . , δs , 1, . . . , 1, 0, . . . , 0)T (r − s


thành phần sau δs bằng 1, n − r thành phần cuối bằng 0) và giá trị tối ưu (hay cận
trên đúng) là
s
X r
X
β(Dsub ) = cj δj + cj
j=1 j=s+1

5. Tồn tại tập chỉ số I0 6= ∅ và I0 ⊂ {s + 1, ldots, n} trong đó:


s
X
I0 = {k ∈ {s + 1, . . . , n}|ak > b − aj δ j }
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 }

6. Tồn tại 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

Khi đó bài toán có một cận trên là


 
s q s q
X X X X cq+1
β(Dsub ) = cj δj + cj + b − aj δj − aj 
j=1 j=s+1 j=1 j=s+1
aq+1

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ị

• Xuất phát từ tập


( n )
X
n
D0 = x∈R aj xj ≤ b, xj ∈ {0, 1}, j = 1, . . . , n

j=1

• Đặt β(D0 ) = +∞ (cận trên của bài toán (KP0 ))


CHƯƠNG 5. QUY HOẠCH TUYẾN TÍNH NGUYÊN VÀ PHI TUYẾN 100

• 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).

Bước 1. Chọn tập để chia


• Chọn Dk ∈ D là tập chấp nhận được của bài toán con (KPk ) mà bài toán này có
cận trên β(Dk ) lớn nhất trong các bài toán con có tập chấp nhận được thuộc D.
• Phân hoạch Dk thành hai tập con bằng cách gán cho biến tự do có chỉ số nhỏ
nhất giá trị 0 hay 1. Chẳng hạn, nếu

Dk = {x ∈ D0 |x1 = δ1 , x2 = δ2 , . . . , xs−1 = δs−1 }

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

Dk1 = {x ∈ Dk |xs = 1} = {x ∈ Dk |δ1 , x2 = δ2 , . . . , xs−1 = δs−1 , xs = 1}


Dk2 = {x ∈ Dk |xs = 1} = {x ∈ Dk |δ1 , x2 = δ2 , . . . , xs−1 = δs−1 , xs = 0}

• Đặ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

Khi đó bài toán có phương án tối ưu xki = (δ1 , δ2 , . . . , δs , 1, . . . , 1)T (n − s


thành phần cuối bằng 1) và giá trị tối ưu là
s
X n
X
f (xki ) = cj δj + cj
j=1 j=s+1
CHƯƠNG 5. QUY HOẠCH TUYẾN TÍNH NGUYÊN VÀ PHI TUYẾN 101

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 }

– Trường hợp 4. Tồn tại chỉ số r thỏa mãn s + 1 ≤ r ≤ n sao cho


s
X
as+1 + . . . + ar = b − aj δj
j=1

Khi đó bài toán có phương án tối ưu xki = (δ1 , δ2 , . . . , δs , 1, . . . , 1, 0, . . . , 0)T


(r − s thành phần sau δs bằng 1, n − r thành phần cuối bằng 0) và giá trị
tối ưu (hay cận trên đúng) là
s
X r
X
β(Dki ) = f (xki ) = cj δj + cj
j=1 j=s+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 }

– Trường hợp 5. Tồn tại tập chỉ số


s
X
I0 = {k ∈ {s + 1, . . . , n}|ak > b − aj δj } =
6 ∅
j=1

và I0 ⊂ {s + 1, ldots, n}.
Đặt
D = (D\{Dki }) ∪ {Dk0 i }
trong đó

Dk0 i = {x ∈ D|x1 = δ1 , . . . , xs = δs , xk = 0, ∀k ∈ I0 } ⊂ Dki

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

Khi đó bài toán có một cận trên là


 
s q s q
X X X X cq+1
β(Dki ) = cj δj + cj + b − aj δj − aj 
j=1 j=s+1 j=1 j=s+1
aq+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ó).

Bước 3. Kiểm tra điều kiện dừng


Nếu D = ∅ Thì Dừng thuật toán (fopt = α và xopt = x̄) Ngược lại, Quay lại Bước 1.
CHƯƠNG 5. QUY HOẠCH TUYẾN TÍNH NGUYÊN VÀ PHI TUYẾN 102

Ví dụ 5.3. Xét bài toán cái túi:

maxf (x) = 5x1 + x2 + 9x3 + 3x4 (5.10)



4x + 2x + 7x + 3x ≤ 10

1 2 3 4
v.đ.k.


xj ∈ {0, 1}, j = 1, . . . , 4

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

maxf (x) = 9x1 + 5x2 + 3x3 + x4 (5.11)



7x + 4x + 3x + 2x ≤ 10

1 2 3 4
v.đ.k.


xj ∈ {0, 1}, j = 1, . . . , 4

Bước chuẩn bị. Xuất phát từ tập

D0 = {x ∈ R4 |7x1 + 4x2 + 3x3 + 2x4 ≤ 10, xj ∈ {0, 1}, j = 1, 2, 3, 4}

Đặ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)

Vòng lặp thứ nhất.


Bước 1. Chọn D0 để chia thành hai tập con

D1 = {x ∈ D|x1 = 1} và D2 = {x ∈ D|x1 = 0}

Đặt D = (D\{D0 }) ∪ {D1 , D2 }


Bước 2.

• Xét bài toán con (s = 1, δ1 = 1)

maxf (x) = 9 × 1 + 5x2 + 3x3 + x4



4x + 3x + 2x ≤ 10 − 7 × 1 = 3

2 3 4
v.đ.k.


xj ∈ {0, 1}, j = 2, . . . , 4

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

• Xét bài toán con (s = 2, δ1 = 1, δ2 = 0)


maxf (x) = 9 × 1 + 5 × 0 + 3x3 + x4

3x + 2x ≤ 10 − 7 × 1 − 4 × 0 = 3

3 4
v.đ.k.


x3 , x4 ∈ {0, 1}

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.

5.2 Quy hoạch phi tuyến


5.2.1 Phát biểu bài toán quy hoạch phi tuyến
Cho các hàm số f, gj : Rn −→ R, j = 1, 2, . . . , m. Bài toán tối ưu tổng quát có dạng chính
tắc như sau:
min (max)f (x) (5.12)

g (x) ≤ 0, j = 1, 2, . . . , k,

j
v.đ.k.


gj (x) = 0, j = k + 1, k + 2, . . . , m.

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:

min f (x) = 2x21 + 3x22 + 4x1 x2 − 6x1 − 3x2 (5.14)

Trong khi đó, bài toán sau đây là bài toán quy hoạch phi tuyến có ràng buộc:

minf (x) = 2x21 + 3x22 + 4x1 x2 − 6x1 − 3x2 (5.15)







 x1 + x2 ≤ 1

v.đ.k. 2x1 + 3x2 ≤ 4



x , x ≥ 0

1 2

Đ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.

5.2.2 Một số khái niệm cơ bản về hàm lồi


Hàm lồi

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

f (λx1 + (1 − λ)x2 ) ≤ λf (x1 ) + (1 − λ)f (x2 )

cho bất kỳ x1 , x2 ∈ S và số thực λ ∈ [0, 1].


Hàm f được gọi là hàm lồi chặt (strictly convex function) nếu

f (λx1 + (1 − λ)x2 ) < λf (x1 ) + (1 − λ)f (x2 )

cho bất kỳ x1 , x2 ∈ S, x1 6= x2 và 0 < λ < 1.


Hàm f được gọi là hàm lõm (concave function) (hoặc hàm lõm chặt (strictly concave
function)) trên tập lồi S nếu −f là hàm lồi (hoặc hàm lồi chặt).

f(x1) + (1- )f(x2) f( x1 + (1- )x2)


f(x1)
f(x1)
f(x2)
f(x2)

f( x1 + (1- )x2) f(x1) + (1- )f(x2)

x1 x1 + (1- )x2 x2 x1 x1 + (1- )x2 x2

(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:

(αf1 )(x) = αf1 (x), x ∈ X1


(f1 + f2 )(x) = f1 (x) + f2 (x), x ∈ X1 ∩ X2
max{f1 , f2 }(x) = max f1 (x), f2 (x), x ∈ X1 ∩ X2

Cực trị của hàm lồi

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

1. x∗ cũng là nghiệm tối ưu toàn cục


2. Nếu x∗ là nghiệm tối ưu địa phương chặt hoặc f là hàm lồi chặt thì x∗ là nghiệm tối
ưu toàn cục duy nhất của bài toán.

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:

min f (x) v.đ.k x ∈ Rn

trong đó f : Rn → R là hàm phi tuyến.

Điều kiện tối ưu

Đị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 đó:

• Nếu x∗ là điểm cực tiểu địa phương của f trên Rn thì

∇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:

• Nếu x∗ ∈ Rn là điểm cực đại địa phương của f trên Rn thì

∇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

Ví dụ 5.5. Cho hàm số f (x1 , x2 ) = x31 + x22 − 3x1 − 2x2 + 12. Ta có


   
2 − 3
∇f (x) = 3x1 và
6x 0
∇2 f (x) =  1 
2x2 − 2 0 2

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

f (x1 , x2 ) = x21 + x1 x2 + x22 + 3(x1 + x2 − 2)

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].

5.2.4 Phương pháp hướng giảm


Ý tưởng cơ bản của phương pháp hướng giảm (descent method) để giải bài toán quy hoach
phi tuyến không ràng buộc với hàm mục tiêu f khả vi là: xuất phát một điểm bất kỳ x0 ∈ Rn ,
ta xây dựng một dãy điểm x1 , x1 , . . . , xk , . . . sao cho

f (x0 ) > f (x1 ) > f (x2 ) > · · ·

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:

Bước khởi đầu. Xuất phát từ một điểm tùy ý x0 ∈ R. Gán k = 0

Bước lặp k (k=0,1,2,. . . ).

(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

(k2 ) Gán k = k + 1; Quay lại bước lặp k.

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

xk+1 := xk + tk dk sao cho f (xk+1 ) < f (xk )

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.

Phương pháp gradient

Đâ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.

Bước lặp k: (k = 0,1,. . . )

(k1 ) Tính xk+1 = xk − tk ∇f (xk ) trong đó

tk = arg min{φk (t), t > 0}

(k2 ) Tính ∇f (xk+1 )


(k3 ) 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 và quay lại Bước lặp k.

Ý 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à:

φ0k (tk ) = 0 ⇔ f 0 (xk − tk ∇f (xk ), −∇f (xk )) = 0


⇔ h∇f (xk+1 ), −∇f (xk )i = 0

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:

f (x1 , x2 ) = x31 + x22 − 3x1 − 2x2 + 12

Xuất phát từ x0 = (1, 2)T ta có:


   
2
∇f (x) = 3x1 − 3 0
⇒ ∇f (x0 ) =   6= 0
2x2 − 2 2

Ta có:      

x0 − t∇f (x0 ) = 1 −t 0 =


1 
2 2 2 − 2t

Đặt φ0 (t) = f (x0 − t∇f (x0 )) = f (1, 2 − 2t) = 4t2 − 4t + 10.


Cần xác định t0 = arg min φ0 (t). Ta có φ00 (t) = 8t − 4. Vì:
1
φ00 (t) = 0 ⇔ t =
2

φ00 (t) = 8 > 0
1
nên t0 = 2 là nghiệm cực tiểu của φ0 (t) với t ≥ 0.
Do đó, điểm lặp tiếp theo:
 
1
x1 = x0 − t0 ∇f (x0 ) =  
1

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.

Bước lặp k: (k=0,1,2,. . . ).

(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ó

∇f (x0 ) = (0, 2)T 6= (0, 0)T

Đặt t0 = 1, ta có:
     
1 0 1
x1 = x0 − t0 ∇f (x0 ) =   −   =  
2 2 0


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


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

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.

Bước lặp k. (k = 0, 1, 2, . . .).


CHƯƠNG 5. QUY HOẠCH TUYẾN TÍNH NGUYÊN VÀ PHI TUYẾN 111

(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 )

(k2 ) Xác định xk+1 = xk + pk và ∇f (xk+1 ).


(k3 ) 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 và quay lại Bước lặp k

Ví dụ 5.9. Sử dụng thuật toán Newton thuần túy giải bài toán

min{f (x) = x4 − 1|x ∈ R}

với điểm xuất phát x0 = 4.


Ta có f 0 (x) = 4x3 và f 00 = 12x2 > 0 với mọi x ∈ Rn {0}. Do đó hướng Newton pk của
hàm f tại một điểm xk cũng là hướng giảm của hàm f tại xk và

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.

Bước lặp k. (k = 0, 1, 2, . . .).

(k1 ) Tính hướng Newton dk bằng việc giải hê phương trình tuyến tính

[∇2 f (xk )].dk = −∇f (xk )


CHƯƠNG 5. QUY HOẠCH TUYẾN TÍNH NGUYÊN VÀ PHI TUYẾN 112

(k2 ) Xác định xk+1 = xk + tk dk và f (xk+1 )


(k3 ) Nếu f (xk+1 ) − f (xk ) ≤ m1 tk h∇f (xk ), −dk i 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 và quay lại Bước lặp k

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 khởi đầu.

• Xuất phát tùy ý từ một điểm x1 ∈ Rn có ∇f (x1 ) 6= 0.


• Chọn tùy ý ma trận đối xứng xác định dương H1 (thường chọn H1 là ma trận
đơn vị I)
• Đặt k = 1.

Bước lặp k. (k = 1, 2, . . . ).

(k1 ) Đặt dk = −Hk ∇f (xk )


(k2 ) Tính tk = arg min{φ(t) = f (xk + tdk ), t ≥ 0}
(k3 ) Tính xk+1 = xk + tk dk và ∇f (xk+1 ).
(k4 ) Nếu k ∇f (xk+1 ) k≈ 0 Thì Dừng thuật toán (lấy điểm dừng x∗ ≈ xk+1 ) Ngược
lại Chuyển Bước k5
(k5 ) Tính v k = xk+1 − xk , uk = ∇f (xk+1 ) − ∇f (xk ) và

v k (v k )T ((Hk uk )(Hk uk )T
Hk+1 = Hk + −
huk , v k i huk , Hk uk i

(k6 ) Đặt k = k + 1 và quay về Bước lặp k.


CHƯƠNG 5. QUY HOẠCH TUYẾN TÍNH NGUYÊN VÀ PHI TUYẾN 113

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

Bước khởi đầu:


     
0 1 1 0 0 
x1 = 0 ∇f (x1 ) = Ax1 − b = 1 H1 =  0 1 0 
     
     
0 1 0 0 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.

Bảng 5.1: Kết quả tính toán từng bước lặp

Bước lặp k k=1 k=2 k=3


     
−1 −0.952381 −0.726129
     
dk −1
 
−0.761905
 
 0.174271 
 
−1 −0.190475 −0.005809
tk  0.096774   0.323077   0.820149 
−0.096774 −0.040467 −1.000000
k+1
     
x −0.096774
 
−0.342928
 
−0.200000
 
−0.096774 −0.035236 −0.040000
−0.096774 −0.307692
k
   
v −0.096774
 
−0.246154
 
−0.096774 −0.061538  
0.903226 0.595533 0
     
∇f (xk+1 )  0.516129 
 
−0.714640
 
0
 
−1.419355 −0.119107 0
−0.096774 −0.307692
   
uk −0.483871
 
−1.230769
 
 −2.419355   −1.538462 
1.030722 0.024578 −0.006144 1.131584 −0.071580 0.009053
   
Hk+1  0.024578
 0.993856 −0.159754
 −0.040811
 0.209795 −0.000326

−0.006144 −0.159754 0.072197 0.193668 0.153520 0.001549

Ta nhận được nghiệm x∗ = (−1, −0.2, −0.04)T .

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)

maxf (x) = 15x1 + 10x2




x1 + x2 ≤ 6







16x + 9x ≤ 72

1 2
v.đ.k.

x1 , x2 ≥ 0






x1 , x2 nguyên

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

Bài 3: Trình bày phương pháp hướng giảm nhanh nhất:


a) Xét bài toán min{f (x) = 4x21 + 2x22 + 4x1 x2 − 3x1 |x ∈ R2 }. Lấy x0 = (2, 2)T . Tính 3
điểm tiếp theo x1 , x2 , x3 theo phương pháp giảm nhanh nhất.
b) Cho f (x)

= 1/2xT Ax − bT x với 
 1.030722 0.024578 −0.006144
A =  0.024578 và b = (1, 1, 1)T
 
 0.993856 −0.159754

−0.006144 −0.159754 0.072197
CHƯƠNG 5. QUY HOẠCH TUYẾN TÍNH NGUYÊN VÀ PHI TUYẾN 115

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

You might also like