Tải bản đầy đủ (.pdf) (51 trang)

Phương pháp số giải bài toán quy hoạch lồi và ứng dụng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (510.42 KB, 51 trang )

ĐẠI HỌC THÁI NGUYÊN
TRƯỜNG ĐẠI HỌC KHOA HỌC
-------------------------------

TRƯƠNG TUẤN HƯNG

PHƯƠNG PHÁP SỐ GIẢI BÀI TOÁN
QUY HOẠCH LỒI VÀ ỨNG DỤNG

LUẬN VĂN THẠC SĨ TOÁN HỌC

THÁI NGUYÊN - 2018


ĐẠI HỌC THÁI NGUYÊN
TRƯỜNG ĐẠI HỌC KHOA HỌC
-------------------------------

TRƯƠNG TUẤN HƯNG

PHƯƠNG PHÁP SỐ GIẢI BÀI TOÁN
QUY HOẠCH LỒI VÀ ỨNG DỤNG
Chuyên ngành: Tốn ứng dụng
Mã số
: 8460112

LUẬN VĂN THẠC SĨ TỐN HỌC
NGƯỜI HƯỚNG DẪN KHOA HỌC
(Xác nhận)

TS. Vũ Vinh Quang



THÁI NGUYÊN - 2018


iii

Mục lục
Lời cảm ơn

v

Bảng ký hiệu

1

Mở đầu

2

Chương 1. MỘT SỐ KIẾN THỨC CƠ BẢN
4
1.1 Mơ hình tổng qt của bài tốn quy hoạch tuyến tính . . . 4
1.1.1
1.1.2
1.2
1.3

Mơ hình tổng quát . . . . . . . . . . . . . . . . . . 4
Phân loại bài toán tối ưu . . . . . . . . . . . . . . . 5


Bài tốn quy hoạch tuyến tính . . . . . . . . . . . . . . . . 6
Một số phương pháp giải cơ bản . . . . . . . . . . . . . . . 8
1.3.1
1.3.2

Thuật tốn hình học . . . . . . . . . . . . . . . . . 8
Thuật tốn đơn hình . . . . . . . . . . . . . . . . . 9

1.3.3
1.3.4

Thuật toán đơn hình mở rộng . . . . . . . . . . . . 15
Phương pháp giải bài toán quy hoạch tuyến tính
tổng quát trên phần mềm MATLAB . . . . . . . . 16

Chương 2. BÀI TỐN QUY HOẠCH LỒI, CÁC THUẬT
TỐN
18
2.1 Mơ hình bài tốn quy hoạch lồi tổng quát . . . . . . . . . 18

2.2

2.1.1

Khái niệm về tập lồi, hàm lồi . . . . . . . . . . . . 18

2.1.2
2.1.3

Khái niệm về Gradient và đạo hàm theo hướng . . 20

Bài toán quy hoạch lồi tổng quát, điều kiện tối ưu . 21

Cực tiểu hàm lồi một biến . . . . . . . . . . . . . . . . . . 22
2.2.1 Thuật tốn chia đơi . . . . . . . . . . . . . . . . . 22


iv

2.3

2.2.2 Thuật toán mặt cắt vàng . . . . . . . . . . . . . . . 24
Mơ hình bài tốn quy hoạch lồi với ràng buộc tuyến tính . 26
2.3.1
2.3.2

2.4

Mơ hình tổng qt . . . . . . . . . . . . . . . . . . 26
Thuật toán Frank-Wolfe . . . . . . . . . . . . . . . 26

Mơ hình bài tốn quy hoạch lồi với ràng buộc phi tuyến . 29
2.4.1 Mơ hình tổng quát . . . . . . . . . . . . . . . . . . 29
2.4.2

Thuật toán Gradient . . . . . . . . . . . . . . . . . 29

Chương 3. MỘT SỐ ỨNG DỤNG THIẾT KẾ TỐI ƯU
3.1
3.2


32

Mô hình bài tốn sản xuất sản phẩm . . . . . . . . . . . . 32
Mô hình bài tốn xác định thiết diện tối ưu của giàn chịu
lực . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

Kết luận

39

Tài liệu tham khảo

40


v

Lời cảm ơn
Trước hết, tơi xin bày tỏ lịng kính trọng và lòng biết ơn sâu sắc tới
thầy giáo TS. Vũ Vinh Quang, người thầy tận tình hướng dẫn, chỉ bảo
và cung cấp những tài liệu rất hữu ích để tơi có thể hồn thành luận
văn.
Xin cảm ơn lãnh đạo Trường Đại học Khoa học - Đại học Thái nguyên
đã tạo điều kiện giúp đỡ tôi về mọi mặt trong suốt q trình học tập và
thực hiện luận văn.
Tơi xin bày tỏ lịng biết ơn tới các thầy, cơ giáo giảng dạy lớp K10Y
đã truyền đạt kiến thức, và phương pháp nghiên cứu khoa học trong
suốt những năm học vừa qua.
Xin chân thành cảm ơn các anh chị em học viên cao học K10Y và
các bạn đồng nghiệp đã động viên, khích lệ tơi trong q trình học tập,

nghiên cứu.
Tơi xin bày tỏ lòng biết ơn sâu sắc đến gia đình, người thân, những
người ln động viên, khuyến khích và giúp đỡ về mọi mặt để tơi có thể
hồn thành công việc nghiên cứu.


vi

Lời cam đoan
Tôi xin cam đoan: Những nội dung trong luận văn này là do tôi thực
hiện dưới sự hướng dẫn trực tiếp của thầy giáo hướng dẫn TS. Vũ Vinh
Quang. Mọi tham khảo dùng trong luận văn đều được trích dẫn rõ ràng
tác giả, tên cơng trình, thời gian, địa điểm công bố.
Tôi xin chịu trách nhiệm với lời cam đoan của mình


1

Bảng ký hiệu
R
Rn

Tập số thực
Không gian vectơ thực n chiều

X

Vectơ trong không gian Rn

f (X) → max

f (X) → min

Bài tốn tìm cực đại
Bài tốn tìm cực tiểu

CT
D

Vectơ chuyển vị của C
Miền phương án

∇f
|x|

Vectơ đạo hàm hướng
Giá trị tuyệt đối của x

|X|
x∈D

Số phần tử của tập X
x thuộc D

x∈
/D
AT

x không thuộc D
Ma trận chuyển vị của ma trận A


xopt

Là điểm để hàm f (x) đạt giá trị tối ưu

f val
Exitf lag

Giá trị min của hàm mục tiêu
Số nguyên thông báo kết thúc tính tốn

lb(lower bound)
ub(upper bound)

Giới hạn dưới
Giới hạn trên

linprog
bintprog

Lệnh để lấy nghiệm khơng âm
Lệnh để lấy nghiệm ngun có giá trị 1 hoặc 0

QHT T

Quy hoạch tuyến tính


2

Mở đầu

Mơ hình bài tốn quy hoạch phi tuyến tính nói chung và quy hoạch
lồi nói riêng là một mơ hình quan trọng trong lớp các bài tốn tối ưu
hóa, có rất nhiều ứng dụng trong các bài tốn cơ học và vật lý. Về mặt
lý thuyết, đã có rất nhiều các tài liệu đã trình bày các thuật tốn lý
thuyết giải mơ hình các bài tốn này trên mơ hình tổng quát. Tuy nhiên
việc nghiên cứu và cài đặt chi tiết các thuật toán và ứng dụng vào một
số mơ hình đối với một bài tốn cụ thể trong cơ học và vật lý là chưa
nhiều người đề cập đến.
Nội dung chính của luận văn là nghiên cứu cơ sở toán học của các
thuật toán cơ bản giải bài tốn quy hoạch lồi có ràng buộc, tìm hiểu
chi tiết các bước mơ tả thuật tốn, xây dựng sơ đồ khối và cài đặt các
thuật tốn trên ngơn ngữ lập trình cụ thể. Trên cơ sở các thuật tốn đã
nghiên cứu và cài đặt, luận văn xây dựng mơ hình ứng dụng của một số
bài toán trong cơ học và vật lý xác định mơ hình tối ưu trong thiết kế.
Nội dung của luận văn dự kiến gồm có 3 chương, phần phụ lục được
cấu trúc như sau:
Chương 1: Trình bày một số kiến thức cơ bản bao gồm mô hình tổng
qt của bài tốn quy hoạch tuyến tính, các thuật tốn: Hình học, đơn
hình, đơn hình mở rộng và phương pháp giải bài tốn quy hoạch tuyến
tính tổng qt trên phần mềm MATLAB.
Chương 2: Trình bày các kiến thức và thuật toán liên quan đến bài
toán quy hoạch lồi bao gồm mơ hình bài tốn quy hoạch lồi tổng quát,
các thuật toán giải bài toán cực tiểu hàm lồi một biến, mơ hình bài
tốn quy hoạch lồi với ràng buộc tuyến tính, thuật tốn Frank−Wolfe.
Mơ hình bài tốn quy hoạch lồi với ràng buộc phi tuyến, thuật toán


3

Gradient.

Chương 3: Trình bày một số mơ hình bài tốn ứng dụng trong thực
tế: Mơ hình bài tốn sản xuất sản phẩm và mơ hình bài tốn xác định
thiết diện tối ưu của giàn chịu lực.
Phần phụ lục đưa ra một số chương trình nguồn trên mơi trường
MATLAB giải bài toán cực trị hàm lồi.
Thái Nguyên, tháng 5 năm 2018
Tác giả luận văn

Trương Tuấn Hưng


4

Chương 1

MỘT SỐ KIẾN THỨC CƠ BẢN
Nội dung chính của chương 1 trình bày mơ hình tổng qt của bài
tốn quy hoạch tuyến tính, các thuật tốn: Hình học, đơn hình, đơn
hình mở rộng, và phương pháp giải bài tốn quy hoạch tuyến tính tổng
quát trên phần mềm MATLAB. Các kết quả là những kiến thức quan
trọng được ứng dụng trong các chương sau của luận văn. Các kiến thức
được tham khảo trong các tài liệu [1, 2].

1.1

Mơ hình tổng qt của bài tốn quy hoạch tuyến
tính

1.1.1


Mơ hình tổng qt

Tối ưu hóa là một trong những lĩnh vực quan trọng của tốn học có
ảnh hưởng đến hầu hết các lĩnh vực khoa học, công nghệ và kinh tế và
xã hội. Việc tìm giải pháp tối ưu cho một bài tốn thực tế nào đó chiếm
một vai trị hết sức quan trọng như việc tiến hành lập kế hoạch sản xuất
hay thiết kế hệ thống điều khiển các quá trình . . . Nếu sử dụng các kiến
thức trên nền tảng của toán học để giải quyết các bài toán cực trị, người
ta sẽ đạt được hiệu quả kinh tế cao. Điều này phù hợp với mục đích của
các vấn đề đặt ra trong thực tế hiện nay.
Bài toán tối ưu tổng quát được phát biểu như sau:
Cực đại hóa (cực tiểu hóa) hàm:
f (X) → max(min)


5

Với các điều kiện:
gi (X) = bi , i ∈ J1 ;

(1.1)

gj (X) ≤ bj , j ∈ J2 ;

(1.2)

gk (X) ≥ bk , k ∈ J3 ;

(1.3)


x1 , x2 , ..., xn ≥ 0.

(1.4)

Trong đó f (X) được gọi là hàm mục tiêu. Các điều kiện (1.1) được
gọi là ràng buộc đẳng thức. Các điều kiện (1.2), (1.3) được gọi là ràng
buộc bất đẳng thức. Các điều kiện (1.4) được gọi là ràng buộc về dấu.
X = (x1 , x2 , ..., xn ) là vectơ thuộc không gian Rn . Tập các vectơ X thỏa
mãn hệ ràng buộc lập nên một miền D được gọi là miền phương án (hay
miền chấp nhận được), mỗi điểm X ∈ D gọi là một phương án. Một
phương án X ∗ ∈ D làm cho hàm mục tiêu f (X) đạt max (min) được gọi
là phương án tối ưu.
1.1.2

Phân loại bài toán tối ưu

Dựa trên mơ hình tổng qt, người ta thường phân loại lớp các bài
tốn tối ưu như sau:
• Qui hoạch tuyến tính: là những bài tốn mà hàm mục tiêu f (X)và
tất cả các hàm ràng buộc gi (X), gj (X), gk (X) là tuyến tính.
• Qui hoạch phi tuyến: là những bài toán một trong hàm mục tiêu
f (X) hoặc các hàm ràng buộc gi (X) , gj (X) , gk (X) là phi tuyến.
• Qui hoạch lồi: Là các bài toán qui hoạch mà các hàm mục tiêu f (X)
là lồi trên tập các ràng buộc D lồi.
• Qui hoạch lõm: Là các bài tốn qui hoạch mà các hàm mục tiêu
f (X) là lõm trên tập các ràng buộc D lõm.
• Qui hoạch rời rạc: Bài toán tối ưu được gọi là qui hoạch rời rạc nếu
miền ràng buộc D là tập hợp rời rạc. Trong trường hợp riêng khi các
biến chỉ nhận giá trị nguyên thì ta có qui hoạch ngun.



6

• Qui hoạch đa mục tiêu: Nếu trên cùng một miền ràng buộc ta xét
đồng thời các hàm mục tiêu khác nhau.
• Trong các lĩnh vực kinh tế kỹ thuật thì qui hoạch phi tuyến, qui
hoạch tuyến tính là những bài tốn thường gặp.

1.2

Bài tốn quy hoạch tuyến tính

Từ một số các mơ hình trong thực tế, ta có mơ hình tổng qt cho
bài tốn quy hoạch tuyến tính như sau:
Xác định các biến xj (j = 1, 2, ..., n) sao cho:
n

cj xj → max(min);

F (x) =
j=1
n

aij xj ≥ bi (i ∈ I1 ⊂ M ) ;

(1.5)

aij xj = bi (i ∈ I2 = M \I1 ) ;

(1.6)


j=1
n

j=1

lbj ≤ xj ≤ ubj , (j ∈ J ⊂ N ).

(1.7)

Với M = {1, 2, ..., m}, N = {1, 2, ..., n} .
Vectơ X = (x1 , x2 , ..., xn ) thỏa mãn các điều kiện (1.5) - (1.7) được
gọi là một phương án của bài toán. Tập các nghiệm thỏa mãn hệ ràng
buộc được gọi là miền phương án, ký hiệu là D. Phương án thỏa mãn
điều kiện để hàm mục tiêu đạt max (min) được gọi là phương án tối ưu.
Dạng chính tắc:
n

cj xj → min;

F (x) =
j=1
n

aij xj = bi (i ∈ M ) ;
j=1

xj ≥ 0(j ∈ N ).



7

Dạng chuẩn tắc:
n

cj xj → min;

F (x) =
j=1
n

aij xj ≥ bi (i ∈ M ) ;
j=1

xj ≥ 0(j ∈ N ).
Sử dụng các ký hiệu vectơ và ma trận, mô hình bài tốn quy hoạch
tuyến tính tổng qt được biểu diễn như sau:
f (X) = C T X → max(min);
AX = b, AX ≥ b;
lb ≤ X ≤ ub.
Trong đó: X = (x1 , x2 , ...,
 xn ), C= (c1 , c2 , ..., cn ) 


a11 a12 ... a1n
a11 a12 ... a1n
x1







 a21 a22 ... a2n 
 a21 a22 ... a2n 
 x2 
; X = 
; A = 

A=

 ...

 ...
 ... 






a
a
... amn
a
a
... a
xn
 m1 m2  mn
 m1  m2



b1
b1
lb1
ub1








 b2 
 b2 
 lb2 
 ub2 







b=
 ...  ; b =  ...  ; lb =  ...  ; ub =  ... 









bm
bm
lbn
ubn
Một số phép biến đổi cơ bản:
a/ Nếu hàm mục tiêu dạng max thì có thể chuyển về dạng min bằng
cách đổi dấu hàm mục tiêu.
b/ Một ràng buộc bất đẳng thức có thể chuyển về ràng buộc đẳng
thức bằng cách thêm các ẩn giả với hệ số tương ứng bằng 0 trong hàm
mục tiêu.
c/ Một biến không ràng buộc dấu được thay thế bằng 2 biến có ràng
buộc dấu.


8

1.3
1.3.1

Một số phương pháp giải cơ bản
Thuật tốn hình học

Xét bài toán:
f (x1 , x2 ) = c1 x1 + c2 x2 → M ax;
a11 x1 + a12 x2 ≤ b1 ;

a21 x1 + a22 x2 ≤ b2 ;
...
an1 x1 + an2 x2 ≤ bn ;
x1 ≥ 0; x2 ≥ 0.
Nhận xét 1.3.1
1. Vì các ràng buộc của bài tốn ln ln là các nửa mặt phẳng, do
đó miền phương án luôn luôn là một đa giác lồi (là giao của các nửa
mặt phẳng).
2. Xét đường thẳng f = m được gọi là đường mức. Hiển nhiên khi
đường mức chuyển động song song trong miền phương án thì điểm chạm
cuối cùng của đường mức với miền luôn luôn là 1 trong các đỉnh của đa
giác (Hoặc 1 cạnh của đa giác). Đấy chính là phương án tối ưu cần tìm.
Xuất phát từ nhận xét trên, chúng ta có thuật tốn hình học gồm
các bước như sau :
Thuật tốn:
Bước 1: Vẽ miền phương án D là đa giác lồi bằng cách xác định miền
giao của các nửa mặt phẳng trong hệ ràng buộc.
Bước 2: Xác định tọa độ của các đỉnh đa giác: Giả sử là các điểm
A1 , A2 , ..., Ak .
Bước 3: Xác định phương án tối ưu
fmax = max{f (A1 ), f (A2 ), ..., f (Ak )}.
Chú ý 1.3.2 Trong trường hợp khi miền phương án khơng phải là miền
kín thì tùy thuộc vào hướng di chuyển của đường mức, chúng ta sẽ xác
định được phương án tối ưu của bài toán.


9

1.3.2


Thuật tốn đơn hình

Mơ tả thuật tốn gốc
Cơ sở của phương pháp này được Dantzig cơng bố năm 1947 có tên
gọi là phương pháp đơn hình. Xuất xứ tên gọi như vậy vì những bài
tốn đầu tiên được giải bằng phương pháp đó có các ràng buộc dạng:
n

xj = 1, xj > 0 (j = 1, 2, ..., n).
j=1

Mà tập các điểm thoả mãn các ràng buộc trên là một đơn hình trong
khơng gian n chiều.
Tư tưởng chung
Phương pháp đơn hình dựa trên hai nhận xét sau:
• Nếu bài tốn QHTT có phương án tối ưu thì có ít nhất một đỉnh
của D là phương án tối ưu.
• Đa diện lồi D có một số hữu hạn đỉnh. Như vậy phải tồn tại một
thuật toán hữu hạn. Thuật toán gồm 2 bước như sau:
Bước 1: Tìm 1 phương án cực biên.
Bước 2: Kiểm tra điều kiện tối ưu đối với phương án đó.
+ Nếu điều kiện tối ưu được thoả mãn thì phương án đó là tối ưu,
nếu khơng ta chuyển sang phương án cực biên mới sao cho làm tốt hơn
giá trị hàm mục tiêu.
+ Kiểm tra điều kiện tối ưu đối với phương án mới.
Người ta thực hiện một dãy các thủ tục như vậy cho đến khi nhận
được phương án tối ưu, hoặc đến tình huống bài tốn khơng có phương
án tối ưu.
Cơ sở lý thuyết
Xét bài tốn QHTT dưới dạng chính tắc:

f (x) = C T X ⇒ min .
AX = b;
X ≥ 0.


10

Trong đó A = (aij )n.m , X = (x1 , x2 , ..., xn ) , C = (c1 , c2 , ..., cn ), giả sử
rằng hạng của ma trận A là m .
Giả sử X là một phương án cực biên nào đó.
Ta ký hiệu:
J ∗ = {j|xj > 0}

(1.8)

.
Vì các vectơ Aj , j ∈ J ∗ là độc lập tuyến tính nên |J ∗ | ≤ m.
Định nghĩa 1.3.3 Phương án cực biên X được gọi là không suy biến
nếu |J ∗ | = m, suy biến nếu |J ∗ | < m.
Ta chọn một hệ thống m vectơ độc lập tuyến tính {Aj , j ∈ J} sao
cho J ⊇ J ∗ . Hệ thống đó là cơ sở của X , các vectơ Aj , j ∈ J và biến
xj , j ∈ J được gọi là các vectơ và các biến cơ sở tương ứng. Các vectơ
và các biến Aj , xj , (j ∈
/ J) gọi là các vectơ và các biến phi cơ sở.
Nếu X khơng suy biến thì tồn tại một cơ sở duy nhất, đó là J = J ∗ .
Mọi vectơ Ak phi cơ sở có thể biểu diễn dưới dạng tổ hợp tuyến tính
của các vectơ cơ sở:
Ak =

zjk Aj .


(1.9)

j∈J

Trong các hệ số zjk được xác định duy nhất bởi việc giải hệ phương
trình:
ajk =

zjk aij , (i = 1, 2, ..., m).

(1.10)

j∈J

Bài toán QHTT được gọi là không suy biến nếu tất cả các phương án
cực biên của nó đều khơng suy biến.
Giả sử bài tốn khơng suy biến và ta đã tìm được một phương án cực
biên X = (x1 , x2 , ..., xm , 0, ..., 0) và cơ sở của nó A1 , A2 , ..., Am . Đối với
phương án cực biên này ta có:
m

xj Aj = b, xj > 0,
j=1

(j = 1, 2, ..., m).

(1.11)



11

Với giá trị hàm mục tiêu:
m

cj xj = z0 , xj > 0,

(j = 1, 2, ..., m).

(1.12)

j=1

Ta tính các đại lượng sau:
m

zjk cj = zk .

(1.13)

j=1

Ký hiệu:
m

∆k = zk − ck =

zjk cj − ck .

(1.14)


j=1

Định lý 1.3.4 Nếu đối với các phương án cực biên X = (x1 , x2 , ..., xm , 0, ..., 0)
mà các điều kiện sau được thỏa mãn:
∆k ≥ 0, ∀k = 1, 2, ..., n.

(1.15)

thì X là phương án tối ưu.
Nhận xét 1.3.5
1. Trong (1.9) nếu Aj là một vectơ cơ sở khi đó tồn tại chỉ một hệ số
zij = 1, tất cả các hệ số khác đều bằng 0 và ta có:
∆j = cj − cj = 0, j ∈ J.
Và trong thực tế để kiểm tra điều kiện tối ưu của phương án cực biên
X ta chỉ kiểm tra: ∆k ≥ 0, ∀k ∈
/J
2. Người ta có thể chứng minh rằng nếu bài tốn khơng suy biến thì
(1.15) cũng là điều kiện cần của bài toán tối ưu.
Định lý 1.3.6 Nếu tồn tại một chỉ số k sao cho ∆k < 0 thì ta có thể
tìm được ít nhất một phương án X mà đối với nó Z > Z.
Trong thực tế Dantzig đã chứng minh rằng số các bước lặp sẽ giảm
đáng kể nếu ta thay vectơ Ak bởi vectơ As thỏa mãn ∆s = min {∆k |∆k < 0}
k

và khi đó vectơ Ar được xác định theo công thức:
θs = min

xj
|zjs > 0

zjs

=

xr
zrs

(1.16)


12

Ta có phương án cực biên mới X mà các thành phần của nó có dạng:

x

xj − r z js , j = r
xj = xr zrs
(1.17)

 ,j = r
zrs
Với cơ sở của nó là:
Aj , j ∈ J = J\ {r} ∪ {s} .

(1.18)

Xuất phát từ cơ sở lý thuyết trên, chúng ta có thuật tốn sau đây.
Thuật tốn đơn hình
Bước 1:

Tìm một phương án cực biên xuất phát X và cơ sở của nó Aj , j ∈ J
Bước 2:
+ Xác định các số zjk bởi hệ thống: Ak =

zjk Aj .
j∈J

+ Đối với mỗi k ∈
/ J tính các ước lượng:
m

zjk cj − ck .

∆k =
j=1

• Nếu (∀k ∈
/ J) , ∆k ≥ 0 ⇒ x là nghiệm tối ưu. Thuật tốn dừng.
• Nếu X khơng phải là nghiệm tối ưu:
o (∃k ∈
/ J) , ∆k < 0 và zjk ≤ 0, ∀j ∈ J ⇒ bài tốn QHTT khơng có
nghiệm tối ưu. Thuật tốn dừng.
o Đối với mỗi k ∈
/ J sao cho ∆k < 0 đều tồn tại j ∈ J : zjk > 0 ⇒
chọn ∆s = min {∆k |∆k < 0} , đưa vectơ As vào cơ sở.
xr
xj
Bước 3: Xác định: θs = min
|zjs > 0 =
. Đưa vectơ Ar ra

zrs
zrs
khỏi cơ sở.
Bước 4: Xác định phương án cực biên mới X với cơ sở:
J = J\ {r} ∪ {s} .
. Quay trở lại bước 2.
Cơng thức đổi cơ sở, bảng đơn hình
Ta xét các công thức chuyển từ phương án cực biên X với cơ sở J,
sang phương án cực biên X với cơ sở J . Xuất phát từ công thức (1.17)


13

cho phép tính các thành phần của X . Ta cần thiết lập cơng thức tính
các số zjk ..
Ta có:

zij Aj ⇒ Ar =

As =
j∈J



1 
As −
zrs 

j∈J
j=r



zjs Aj 
.

(1.19)

Mặt khác:
Ak =

(zjk Aj + zrk Ar ).

(1.20)

j∈J

Thay biểu thức của Ar từ (1.19) vào (1.20) ta có:

Ak =

zjk Aj +
j∈J

zrk 
As −
zrs 

zjk Aj −

Ak =

j∈J
j=r

j∈J
j=r




zjs Aj 
;

zsk
zrk
zjs Aj +
.
zrs
zrs

Đây là công thức biểu diễn Ak qua cơ sở mới J = J\ {r} ∪ {s}. Khi đó
ta có:

z

 zjk − rk zjs , j = r
zrs
zjk =
z
rk



,j = r
zrs
Sau khi có zjk ta tính:
zjk cj − ck .

∆k =

(1.21)

j∈J

Để dễ tính tốn, tại mỗi bước lặp ta thiết lập bảng đơn hình (Bảng 1.1)
- Sử dụng các phương pháp biến đổi theo thuật toán sau
- Nếu tất cả các số trong hàng cuối (trừ F ) đều ≥ 0 , nghĩa là
∆k ≥ 0, ∀k, khi đó X là phương án tối ưu. Thuật toán dừng.
- Nếu hàng cuối (không kể F ) tồn tại số âm mà mọi số trong cột
tương ứng đều ≤ 0 thì bài tốn không tồn tại phương án tối ưu.
Ngược lại:


14

cj

Phương
c1 A1

c2 . . .


cj . . .

cr . . .

cm . . .

ck

. . . cs

. . . cn

A2 . . .

Aj . . .

Ar . . .

Am . . .

Ak

. . . As

. . . An

sở

án


c1

A1

x1

1

0...

0...

0...

0...

z1k

z1s

z1n

c2

A2

x2

0


1

0

0

0

z2k

z2s

z2n

.

.

.

.

.

.

.

.


.

.

.

.

.

.

.

.

.

.

.

.

.

.

cj


Aj

xj

0

0

1

0

0

zjk

zjs

zjn

.

.

.

.

.


.

.

.

.

.

.

.

.

.

.

.

.

.

.

.


.

.

cr

Ar

xr

0

0

0

1

0

zrk

zrs

zrn

.

.


.

.

.

.

.

.

.

.

.

.

.

.

.

.

.


.

.

.

.

.

cm

Am

xm

0

0

0

0

1

zmk

zms


zmn

F

0

0...

0...

0...

0...

δk

δs

δn

Bảng 1.1: Bảng lặp đơn hình

+ Chọn cột s sao cho: ∆s = min {∆k |∆k < 0}, cột gọi là cột xoay.
Vectơ được đưa vào cơ sở.
xj
xr
+ Chọn hàng r mà tỉ số: θr =
= min
|zjs > 0 . Hàng r gọi
xrs

zjs
là hàng xoay. Vectơ Ar bị đưa ra khỏi cơ sở.
Phần tử zrs > 0 là giao của cột xoay và dòng xoay gọi là phần tử
trục. Các phần tử zjs , j = r gọi là phần tử xoay.
Theo các cơng thức (1.17), (1.18), (1.21), bảng đơn hình mới suy được
từ bảng đơn hình cũ bằng cách thay cr , Ar trong hàng xoay bằng . Sau
đó thực hiện các phép biến đổi dưới đây:
1) Chia mỗi phần tử ở hàng xoay cho phần tử trục, kết quả thu được
gọi là hàng chuẩn.
2) Đối với các hàng còn lại thực hiện biến đổi theo công thức
Hàng mới = Hàng cũ tương ứng – Hàng chuẩn × Phần tử xoay. Tồn
thể phép biến đổi trên gọi là phép quay xung quanh trục zrs . Sau khi
thực hiện phép xoay ta có một phương án mới và một cơ sở mới, tiến
hành kiểm tra điều kiện tối ưu.


15

1.3.3

Thuật tốn đơn hình mở rộng

Xét bài tốn

n


f
(X)
=

cj xj ⇒ min



j=1
 n
(I)
aij xj = bi , (i = 1, 2, ..., m)


j=1



 x ≥ 0, (j = 1, 2, ..., n)
j
Ta đưa thêm vào một số ẩn cơ sở mới xn+1 , ..., xn+m và chuyển bài toán
về dạng

n
m



f
(X)
=
c
x
+

M
xn+i ⇒ min
j j



j=1
i=1
 n
(II)
aij xj + xn+i = bi , (i = 1, 2, ..., m) .


j=1



 x ≥ 0, (j = 1, 2, ..., n + m)
j
Trong đó M là một số dương đủ lớn, các biến xn+i gọi là biến giả (như
vậy bài tốn M có n + m biến). Lúc này bài tốn (II) là dạng chính tắc
có thể áp dụng phương pháp đơn hình để giải.
Một số chú ý
+ Ta thấy rằng giá trị hàm mục tiêu f ∗ và các số kiểm tra ∆∗j là hàm
bậc nhất đối với M theo dạng aM + b. Vì M > 0 đủ lớn cho nên dấu
của ∆∗j phụ thuộc vào dấu hệ số a.
Nếu a < 0 ⇔ ∆∗j < 0 và a > 0 ⇔ ∆∗j > 0.
Vì vậy khi lập bảng đơn hình ta sẽ tách dòng (m + 1) thành hai dòng
(m + 1) và (m + 2). Số a và b lần lượt điền vào dòng (m + 2) và (m + 1)
khi phải lập bảng mới sẽ chọn cột khóa dựa vào số dương lớn nhất ở

dịng (m + 2), sau đó so sánh đến số ở dòng (m + 1).
+ Khi viết bài toán M , cho bài toán gốc. Nếu bài tốn gốc đã có một
số vectơ đơn vị thì ta chỉ cần thêm một số biến giả sao cho nó có đủ m
vectơ đơn vị.
+ Dịng khóa vẫn chọn như cũ, khi sang bảng mới nếu một vectơ giả
bị loại khỏi cơ sở thì các số liệu trên cột chứa vectơ giả đó khơng phải
tính nữa. Nếu như tất cả các vectơ giả bị loại khỏi cơ sở thì phương án


16

nhận được lúc đó chính là phương án cực biên của bài tốn gốc và dịng
(m + 2) khơng cần đến nữa. Việc giải bài tốn tiếp tục bình thường.
+ Đối với bài tốn max, nếu giải trực tiếp thì ta sẽ thêm −M vào
hàm mục tiêu. Trên cơ sở lý thuyết trên, thuật tốn đơn hình tổng qt
được mơ tả bằng sơ đồ khối sau đây:

1.3.4

Phương pháp giải bài tốn quy hoạch tuyến tính tổng
qt trên phần mềm MATLAB

Trong MATLAB, bài tốn Quy hoạch tuyến tính (QHTT) có dạng
mặc định là: Hàm mục tiêu: f = C T X → min
Các ràng buộc:
AX ≤ b;
Aeq X = beq .


17


Các biên của nghiệm lb ≤ X ≤ ub (lb: lower bounds, ub: upper bounds)
Khi gặp bài toán f = C T X → max , chỉ cần đặt max f = − min(−f )
Lệnh thường dùng để giải QHTT là:
[X, f val, exitf lag, output] = linprog (C, A, b, A ∈ q, beq, lb, ub) .
[X, f val, exitf lag, output] = int prog (C, A, b, Aeq, beq) .
Trong đó:
Lệnh linprog để lấy các nghiệm khơng âm
Lệnh bintprog để lấy các nghiệm nguyên có giá trị 1 hoặc 0.
Trong dấu () là các vectơ và ma trận đã cho của hàm mục tiêu và các
ràng buộc.
Trong dấu [] là các đại lượng cần tính:
X-giá trị tối ưu của nghiệm.
f val- giá trị min của hàm mục tiêu.
Exitf lag – số ngun thơng báo kết thúc tính tốn. Các kết quả tính
khi exitf lag = 1, được coi là thành công tốt đẹp, nghĩa là hàm số hội
tụ về một nghiệm. Các kết quả tính tương ứng exitf lag ≤ 0 được coi là
không thành công với các giải thích tương ứng.
Output- cho các thơng tin về phép tính đã thực hiện.


18

Chương 2

BÀI TOÁN QUY HOẠCH LỒI,
CÁC THUẬT TOÁN
Nội dung của chương 2 trình bày mơ hình bài tốn quy hoạch lồi
tổng quát, các thuật toán giải số bài toán cực tiểu hàm lồi một biến.
Mơ hình bài tốn quy hoạch lồi với ràng buộc tuyến tính, thuật tốn

Frank_Wolfe. Mơ hình bài toán quy hoạch lồi với ràng buộc phi tuyến,
thuật toán Gradient. Các kiến thức được tham khảo trong các tài liệu
[2, 3, 4, 5, 6].

2.1
2.1.1

Mơ hình bài tốn quy hoạch lồi tổng quát
Khái niệm về tập lồi, hàm lồi

a. Tập lồi
Định nghĩa 2.1.1 Tập C ∈ Rn được gọi là tập lồi nếu x1 ∈ C, x2 ∈ C
thì đoạn [x1 , x2 ] cũng thuộc C, tức là C chứa tất cả các điểm có dạng:
x = λx1 + (1 − λ) x2 ( 0 ≤ λ ≤ 1)


19

b. Hàm lồi
Định nghĩa 2.1.2 : Hàm số f (x) là lồi (convex function) trên tập C
nếu với mọi cặp điểm (x1 , x2 ) thuộc C và mọi số λ ∈ [0, 1] , ta có:
f [λx1 + (1 − λ) x2 ] ≤ λf (x1 ) + (1 − λ) f (x2 )
có nghĩa là điểm x = λx1 + (1 − λ) x2 trong [x1 , x2 ] thì mọi điểm của
đồ thị ln nằm dưới M1 M2 ( Hình 2.2)

Điểm A: x = λx1 + (1 − λ) x2
Điểm B: f (x) = λf (x1 ) + (1 − λ) f (x2 )
Điểm C: f (x) = f (λx1 + (1 − λ) x2 )
Một số điều kiện
- Hàm f(x) khả vi là lồi, nếu đối với hai điểm bất kỳ x1 , x2 thỏa mãn

điều kiện:


×