KHOA TỐN
TIN HỌC
THÁNG 1/2022
BÀI TIỂU LUẬN CUỐI KÌ
QHTTNC
TỪ THUẬT TỐN
CHỈNH SỬA GỐC
- ĐỐI NGẪU
ĐẾN PHƯƠNG
PHÁP CHỈNH
MEHROTRA VÀ
CÁC CẢI TIẾN
THỰC HIỆN BỞI
Đỗ Đức Duy
TRƯỜNG ĐẠI HỌC KHTN
Đại học Quốc Gia Thành phố HCM
Đỗ Đức Duy
@epsilonoptimization
Tài liệu này không giống những tài liệu khác , vì
nó được viết trong hồn cảnh hết sức đặc biệt .
Nhiều lúc em muốn bng vì sức khỏe , nhưng
sau đó nghĩ lại vì lịng tin của thầy và cơng sức
em đã trải qua suốt cả kì nên em vẫn tiếp tục !
Với em , tài liệu này cũng là một cột mốc để em
biết điểm dừng , biết trân trọng sức khỏe của
mình hơn và vững bước tiến về phía trước.
Cảm ơn thầy đã ln tin tưởng em !
Copyright © 2022 Đỗ Đức Duy
Copying prohibited
All rights reserved. No part of this publication may be reproduced or transmitted in any
form or by any means, electronic or mechanical, including photocopying and recording, or
by any information storage or retrieval system, without the prior written permission of the
publisher.
Art. No xxxxx
ISBN xxx–xx–xxxx–xx–x
Edition 0.0
Cover design by Cover Designer
Published by Publisher
Printed in City
Mục lục
1
Tổng quan về thuật toán gốc - đối ngẫu chỉnh sửa . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.1
Thuật toán Primal-Dual Corrector
6
1.2
Mơ tả thuật tốn
7
1.3
Một ví dụ thất bại
8
1.4
Cơ sở lý thuyết của ví dụ
9
1.5
Các tính tốn số
10
1.6
Sự liên quan của ví dụ đến thuật tốn Mehrotra
11
2
Thuật tốn dự đốn chỉnh sửa Mehrotra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.1
Lịch sử phát triển thuật toán Mehrotra
13
2.2
Cơ sở thuật toán Mehrotra
15
2.3
Thuật toán Mehrotra cải tiến
19
2.4
Phiên bản sửa đổi của thuật toán Mehrotra cải tiến
21
2.5
Sự hội tụ siêu tuyến tính
22
3
Code Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.1
Trước khi bắt đầu
24
3.2
Cách sử dụng
24
3.3
Cài đặt
25
3.4
Ví dụ minh họa
26
3
3.5
Vào bài toán
3.5.1
3.5.2
3.5.3
3.5.4
3.5.5
initialPoint.m . . . .
mpcSol.m . . . . . .
newtonDirection.m .
setParamOptions.m
stepSize.m . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
26
.
.
.
.
.
Literature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
26
27
30
30
31
1. Tổng quan về thuật toán gốc - đối ngẫu chỉnh sửa
1.1
Thuật tốn Primal-Dual Corrector
6
1.2
Mơ tả thuật tốn
7
1.3
Một ví dụ thất bại
8
1.4
Cơ sở lý thuyết của ví dụ
9
1.5
Các tính tốn số
10
1.6
Sự liên quan của ví dụ đến thuật tốn Mehrotra
11
Trong mười lăm năm qua, phương pháp điểm trong (IPM) đã trở nên thành cơng lớn
trong việc giải các bài tốn quy hoạch tuyến tính (LP), đặc biệt là các bài tốn quy
mơ lớn, đồng thời có sự hội tụ lý thuyết tốt và độ phức tạp đa thức. Các ví dụ về IPM
đáng tin cậy cả về lý thuyết và thực tế bao gồm phương pháp theo đường dẫn PrimalDual (PD) của Kojima với một số quy trình tìm kiếm đường dài bước dài (long-step
linesearch), và một công thức không khả thi (an infeasible formulation) của thuật toán
này . Phần lớn các mã IPM thương mại và công khai triển khai một biến thể của thuật
toán thứ hai, thuật toán Mehrotra’s Predictor – Corrector (MPC) , và một số người
trong số họ còn sử dụng các hiệu chỉnh cấp cao hơn của Gondzio . Kể từ lần triển khai
đầu tiên và thử nghiệm trên bộ tiêu chuẩn của các bài toán kiểm tra LP (bộ kiểm tra
Netlib), thuật toán MPC đã tỏ ra, đặc biệt là đối với các bài tốn quy mơ lớn, nhanh
hơn nhiều so với thuật tốn PD không khả thi (infeasible PD algorithm), xét về cả số
lần lặp và thời gian tính tốn .
5
6
1.1. Thuật toán Primal-Dual Corrector
1.1 Thuật toán Primal-Dual Corrector
Thuật toán dự toán chỉnh sửa gốc- đối ngẫu ( Primal- Dual Corrector, viết tắt là PDC) tính
tốn trên mỗi lần lặp lại, một hướng bổ sung, một hiệu chỉnh, để tăng thêm hướng của thuật
tốn gốc - đối ngẫu ( kí hiệu là PD - Primal Dual). Tuy nhiên, trong tài liệu này, chúng ta
sẽ nhận thấy rằng việc sử dụng các bộ chỉnh sửa này có thể có tác động xấu đến hiệu suất
của thuật tốn. Đặc biệt, sẽ có ví dụ chỉ thấy rằng thuật tốn PDC có thể khơng hội tụ tới
nghiệm tối ưu của một bài tốn quy hoạch tuyến tính . Nếu các điểm xuất phát nhất định
được chọn cho thuật tốn, thì có thể chứng minh rằng sự thất bại của thuật toán trong vấn
đề ví dụ xảy ra chính xác với bất kì kích thước bước được chọn. Sau đó , chúng tơi mơ tả phép
tính số thể hiện lỗi này. Trong ví dụ số đầu tiên, thông số rào cản được giảm đi một phần
cố định trên mỗi lần lặp và trong lần thứ hai , nó được chọn tự động bằng quy trình được
sử dụng trong thuật tốn Mehrotra (MPC). Mặc dù ví dụ rằng chúng tơi trình bày khơng áp
dụng cho thuật tốn MPC, tuy nhiên, nó gây nghi ngờ về các thuộc tính hội tụ của nó nói
chung, do những điểm tương đồng cơ bản giữa thuật toán MPC và PDC trong cách tìm kiếm
hướng và các lần lặp mới được xây dựng trên mỗi lần lặp, đây là nguyên nhân gây ra lỗi của
thuật tốn PDC trên ví dụ .
Hình 1.1: Minh họa đường đi thuật tốn dự đốn - điều chỉnh
Cấu trúc của tài liệu được chia như sau. Phần 1.1 + 1.2 mô tả việc xây dựng thuật tốn PDC.
Phần 1.3 trình bày ví dụ nêu trên về sự không hội tụ của PDC . Phần 1.4 đưa ra lý thuyết
đã hứa phân tích và Phần 1.5, bằng chứng số. Sự thất bại của thuật toán PDC để hội tụ là
do bộ sửa tạo ra quá nhiều ảnh hưởng trong việc xây dựng các vòng lặp và xác định hướng
khơng hiệu quả trong đó lặp đi lặp lại. Sau đó , chúng ta sẽ chỉ ra được mối liên hệ giữa sự
hội tụ của thuật toán này đối với thuật toán Mehrotra.
Definition 1.1 (The Primal-Dual Corrector (PDC) algorithm) Chúng tôi xem xét các phương
pháp điểm trong gốc - đối ngẫu để giải quyết vấn đề tối ưu hóa tuyến tính (LP) dạng
tiêu chuẩn sau:
n
o
(P ) : min cT x : Ax = b , x ≥ 0
Chương 1. Tổng quan về thuật toán gốc - đối ngẫu chỉnh sửa
7
khi A ∈ Rmxn , b ∈ Rm và c ∈ Rn cũng như bài toán đối ngẫu của nó :
n
o
(D) : max bT y : AT y + s = c , s ≥ 0
Khơng mất tính tổng quát , chúng ta có thể giả sử (P ) và (D) thỏa mãn điều kiện điểm
trong ( Interior Point Condition - IPC) , nghĩa là tồn tại w0 = (x0 , y0 , so ) thỏa
Ax0 = b , x0 > 0 , AT y0 + s0 = c , s0 > 0
(1.1)
và ma trận A có các hàng đầy đủ. Tùy thuộc vào các điều kiện IPC, hệ thống xáo trộn
các điều kiện tối ưu liên quan đến (P ) ) và (D) :
Ax − b
Fµ (w) = AT y + s = c = 0 , x > 0 , µ> 0
(1.2)
XSe − µe
có nghiệm duy nhất là w (µ) = (x (µ) , y (µ) , s (µ), cho mỗi µ > 0 trong hệ trên , XS
là ma trận chéo với phần tử nằm trên đường chéo tương ứng là xi si , i = 1, n và
e = (1, 1, 1 . . . ) ∈ Rn . Khi µ có xu hướng bằng khơng, các điểm w (µ) (µ > 0), , hình thành
con đường trung tâm gốc - đối ngẫu , hội tụ đến một giải pháp của các bài toán (P ) và
(D)
Lưu ý rằng (1.2) với µ = 0 và với x ≥ 0 , s ≥ 0 , chính xác là hệ thống các điều kiện tối
ưu của (P ) và (D) có nghiệm của nó trùng với nghiệm của (P ) và (D)
1.2 Mơ tả thuật toán
Giả sử rằng một điểm là w0 = (x0 , y0 , so ) thỏa mãn (1.1) có sẵn để làm từ vựng xuất phát của
thuật toán.
Thuật toán PDC cố gắng đi theo đường trung tâm gôc - đối ngẫu gần đúng với một giải pháp
của các vấn đề (P ) và (D), theo kiểu tương tự như IPM theo đường dẫn kép nguyên thủy
bước dài. Ở lần lặp hiện tại , wk = (xk , yk , sk ) , k ≥ 0 của thuật toán PDC , một tham số µ > 0
được chọn :
µ = σ k µk
(1.3)
T
trong đó µk = (xk ) sk /n , và σk ∈ (0, 1) llà một tham số căn giữa có thể được cố định khi bắt
đầu thuật tốn hoặc được
tính tốn trên mỗi lần lặp bằng một số thủ tục tự động . Sau đó,
hướng Newton dwk = dxk , dy k , dsk được tính tốn từ wk từ hệ thống Fµ (w) ở (1.2) , nghĩa
là Fµ (w) là nghiệm của hệ tuyến tính :
F ′ µ (wk ) dwk = −Fµ (wk )
với F ′ µ (wk ) là ma trận Jacobi của
A 0
0 AT
Sk 0
Fµ tại wk .
0 dxk
I dyk
dzk
Xk
Hệ (1.4) tương đương với
Axk − b
= − AT yk + sk − c
Xk Sk e − σk µk e
(1.4)
(1.5)
Tiếp theo , một hướng sửa dwk,c = (dxk,c , dy k,c , dsk,c ) được tính tốn bởi hệ thống tuyến tính
là :
F ′ µ (wk ) dwk,c = −Fµ (wk + dwk )
(1.6)
8
1.3. Một ví dụ thất bại
Phía bên phải của hệ thống (1.6) đại diện cho lỗi được đưa vào hệ thống Fµ (w) của (1.2) bởi
nó tuyến tính hóa xung quanh wk và nó có biểu thức rõ ràng :
A(xk + dxk ) − b
0
,
0
Fµ (wk + dwk ) = AT (y k + dyk ) + (sk + dsk ) − c =
(1.7)
(Xk + dXk ) (S k + dSk )e − σk µk e
dXk dSk e
trong đó phương trình cuối cùng phụ thuộc vào (1.5) , dXk và dSk là các ma trận chéo với
phần tử trên đường chéo tương ứng là dxik , i = 1, n và dsik , i = 1, n . . Từ (1.6), hướng sửa lỗi cố
gắng khắc phục lỗi, để định vị lần lặp mới gần hơn với đường dẫn trung tâm gốc - đối ngẫu.
Hướng tìm kiếm kết quả dwk,r = (dxk,r , dyk,r , dsk,r ) của thuật toán PDC là tổng của :
dwk,r = dwk + dwk,c ,
(1.8)
và bước lặp mới có dạng :
xk+1 = xk + θpk dxk,r
yk+1 = yk + θdk dyk,r
s
k
k+1 = sk + θd dsk,r
(1.9)
trong đó θpk ∈ (0, 1] , θdk ∈ (0, 1] có thể là các bước nhảy ban đầu và đối ngẫu cung cấp các
điều kiện :
(1.10)
xk+1 > 0 , sk+1 > 0
Các bất đẳng thức chặt (1.10), và các bất đẳng thức trong (1.1), cùng với A có thứ hạng hàng
đầy đủ, ngụ ý rằng Jacobian F ′ µ (wk ) thì khả nghịch , và vì thế , hướng dwk và dwk,c được
định nghĩa tốt , với mọi k ≥ 0.
Thuật toán 1.1 Thuật toán PDC ứng dụng cho bài tốn (P ) và (D) có thể được tóm
tắt như sau : Một điểm w0 = (x0 , y0 , so ) thì địi hỏi thỏa điều kiện (1.1) . Cho ϵ > 0 là
một tham số dung sai . Tại mỗi bước lặp hiện tại wk = (xk , yk , sk ) , k ≥ 0 thực hiện :
1. Nếu (xk )T sk ≤ ε , dừng lại
2. Cho µk =
(xk )T sk
n
và chọn σk ∈ (0, 1) .
(a) Tính tốn hướng dwk = (dxk , dyk , dsk ) t? h? th?ng tuy?n tính (1.4)
(b) Tính toán hướng chỉnh sửa dwk,c = (dxk,c , dyk,c , dsk,c ) t? (1.6)
(c) Tính tốn hướng tìm kiếm dwk,r = (dxk,r , dyk,r , dsk,r ) t? (1.8)
3. Chọn bước nhảy θpk ∈ (0, 1] và θdk ∈ (0, 1] dọc dxk,r và (dyk,r , dsk,r ) tương ứng , sao
cho bước lặp wk+1 = (xk+1 , yk+1 , sk+1 ) định nghĩa bởi (1.9) thỏa (1.10)
4. Cho k = k + 1 . Trở lại bước đầu tiên .
1.3 Một ví dụ thất bại
Một số tính năng thú vị của thuật toán PDC được tiết lộ bởi bài toán LP là :
minx∈R3 x1 + αx2
x2 + x3 = 2
x = (x , x , x ) ≥ 0
1
2
3
(1.11)
Chương 1. Tổng quan về thuật toán gốc - đối ngẫu chỉnh sửa
9
phụ thuộc vào tham số dương α. Bài tốn đối ngẫu của nó là :
max(y,s)∈RxR3 2y
s1 = 1
y + s2 = α
y + s3 = 0
s = (s , s , s ) ≥ 0
1 2 3
(1.12)
Với mỗi α > 0, (1.11) và (1.12) có nghiệm duy nhất w∗ = (x∗ , y ∗ , z∗ ) trong đó
x∗ = (0, 0, 2), y ∗ = 0, z∗ = (1, α, 0)
(1.13)
và điều kiện điểm trong (IPM condition) được thỏa mãn .
1.4 Cơ sở lý thuyết của ví dụ
Xem xét hành vi số học chính xác của thuật toán PDC khi áp dụng cho các bài toán (1.11)
và (1.12) ,chúng tôi cho thấy rằng, nếu tham số căn giữa σ k được đặt thành cùng một giá trị
σ ∈ (0, 1) trên mỗi lần lặp, sau đó tồn tại bắt đầu điểm w0 sao cho chuỗi các khoảng trống
đối ngẫu của các lần lặp được tạo không hội tụ về 0, điều này ngụ ý rằng các phép lặp không
hội tụ đến lời giải của các bài toán (1.11) và (1.12) .
Theorem 1.1 Hãy để thuật toán PDC được áp dụng cho các bài toán (1.11) và (1.12),
với một số α > 0, và tham số căn giữa σ k thỏa mãn:
σ k := σ ∈ (0, 1) , k ≥ 0
(1.14)
Cho điểm bắt đầu w0 = (x0 , y 0 , s0 ) của thuật toán là nghiệm chặt chấp nhận được của
bài toán gốc - đối ngẫu (1.11) và (1.12) với :
x20 ≥ ξ , s30 ≤ v
(1.15)
trong đó ξ = 2 − σ /2 và v = ασ /8 . Khi đó, chuỗi các lỗ hổng đối ngẫu của các lần lặp
được tạo bởi thuật toán là giới hạn từ 0 và giới hạn sau giữ :
(xk )T sk > ξα , k ≥ 0
(1.16)
Vì thế thuật tốn PDC khơng hội tụ về nghiệm (1.13) của bài toán (1.11) và (1.12) .
Để chứng minh Định lý 1.1, trước tiên chúng ta xác định các điều kiện trên lần lặp hiện
tại wk của thuật toán PDC mà một số thành phần của hướng sửa dxk,c và dsk,c thì tốt hơn
trong giá trị của dxk và dsk , đưa ra hướng tìm kiếm ngăn cản tiến trình của wk , đặc biệt
của xk , hướng tới sự tối ưu .
Theorem 1.2 Xem xét bài toán (1.11) và (1.12) , với α > 0 . Cho wk = (xk , y k , sk ) , k ≥ 0
là chuỗi các lần lặp được tạo ra bởi thuật toán PDC khi áp dụng cho các bài toán này.
Nếu như
x2k ≥ ξ k := 2 − 0.5σ k , s3k ≤ v k := 0, 125ασ k
(1.17)
10
1.5. Các tính tốn số
khi đó
dx2k,c > −dx2k > 0 , −ds2k,c > ds2k > 0
(1.18)
dx2k,r = −dx3k,r > 0 , ds2k,r = ds3k,r < 0
(1.19)
x2k+1 > x2k , s3k+1 < s3k
(1.20)
dẫn đến
vì thế
Điều này cho thấy (1.20) có thể đúng với mọi k . Khi đó , x2k đang tăng từ x20 > 0 và khơng
bao giờ có thể hội tụ đến x2∗ = 0 trong (1.13) .
Lưu ý rằng tuân theo các điều kiện của Định lý 1.1, thuật tốn PD (bước dài) với sự lựa
chọn kích thước bước phù hợp được đảm bảo hội tụ với lời giải của các vấn đề (1.11) và (1.12).
Tuy nhiên, như chúng tôi vừa chỉ ra, trong trường hợp của PDC, khơng tồn tại kỹ thuật kích
thước bước phù hợp như vậy có thể làm cho nó hội tụ trong các điều kiện của Định lý 1.1;
sau đó, như được chỉ ra bởi định lý 1.2, phần nào của các sửa sai đang áp đảo Hướng Newton
trong việc xây dựng các lần lặp, ngăn cản lần lặp lại đạt đến độ tối ưu.
Một biến thể bước ngắn của PDC, trong đó các lần lặp, bao gồm cả điểm bắt đầu, bị hạn chế
là (rất) gần đối với đường dẫn trung tâm, có thể được hiển thị là hội tụ khi đó, do đó các
hiệu chỉnh trên hướng kết quả là khơng đáng kể .
Thuật toán ứng dụng (1.1) và (1.2) bằng máy tính
Hình 1.2: Thuật tốn ứng dụng (1.1) và (1.2) dừng sau 6 bước lặp
1.5 Các tính tốn số
Bây giờ chúng ta minh họa hiệu suất số của thuật toán PDC khi áp dụng cho các bài toán
(1.11) và (1.12), cho các giá trị nhất định của các tham số. Trong Bước 3 của PDC, chúng
k
d
tôi sử dụng lựa chọn phổ biến sau về kích thước bước: tính tốn bước θ p và θ p đến ranh giới
Chương 1. Tổng quan về thuật toán gốc - đối ngẫu chỉnh sửa
11
của các ràng buộc gốc và ràng buộc không âm đối ngẫu, nghĩa là :
k
k
θ p = 1/ max(0, −dxik,r /xik ) , θ d = 1/ max(0, −dsik,r /sik
(1.21)
Sau đó , chọn τ ∈ (0, 1) tại lúc bắt đầu thuật toán , đặt :
k
d
θpk = min(1, τθ p ) , θpd = min(1, τθ p ).
(1.22)
Exercise 1.1 Chúng tơi đặt các tham số của thuật tốn thành các giá trị
σ k = 0.1(k ≥ 0) , τ = 0.995 , ϵ = 10− 8
(1.23)
và áp dụng thuật toán (1.11) và (1.12) với α = 0.8 , bắt đầu từ w0 = (x0 , y 0 , s0 thỏa :
x0 = (8, 1.95, 0.05) , y 0 = 0.1 , s0 = (1, 8.1, 0.1)
(1.24)
đó là điểm gốc-đối ngẫu hồn tồn khả thi của những bài tốn này .
Các điều kiện của Định lý 1.1 được thỏa mãn trong trường hợp này, ngụ ý rằng lỗ
hổng đối ngẫu (xk )T sk trong số các lần lặp không thể được giảm xuống giá trị thấp hơn
ξα = 1.95x8 = 15.6
Dữ liệu trong Bảng trên cho thấy rằng cặp (x2k , x3k ) tiến đến điểm (2, 0) ngay lập tức ,
và x4 nằm trong khoảng cách ϵ tới ranh giới không tối ưu được xác định bởi các ràng
buộc x2 = 2 và x3 = 0 . Các giá trị trong cột thứ ba và thứ tư của bảng trên chỉ ra
rằng độ dài của dxk và dxk,c tăng rất nhanh theo k , do độ dài của thành phần thứ hai
và thứ ba của chúng . Hơn thế nữa , dx2k,c và dx3k,c có giá trị tuyệt đối lớn hơn nhiều
và có dấu ngược lại , dx2 và dx3 , phù hợp với (1.18) và (1.19) . Hướng dxk hướng đến
nghiệm tối ưu x∗ = (0, 0, 2) , trong khi thành phần thứ hai và thứ ba của trình sửa lỗi
"chỉ hướng ra khỏi nó" . Do đó, các thành phần cơ bản này của kết quả phương hướng
dwk,r chỉ ra khỏi điều tối ưu.
Trong không gian đối ngẫu, sau bốn lần lặp, phép lặp đối ngẫu và hàm mục tiêu đối
ngẫu nằm trong ϵ = 10− 8 của giá trị tối ưu . Sự gia tăng nhanh chóng về độ dài của
cả hai dsk và dsk,c có độ lớn tương tự với độ dài của các hướng ban đầu. Các phương
trình khả thi gốc- đối ngẫu được đáp ứng với độ chính xác của máy.
Bởi vì x2k → 2 và s2k → 8 , bởi vì k tăng , ma trận của hệ thống (1.4) và (1.6) hội tụ với
một số ít ma trận. Điều kiện xấu ngày càng tăng cuối cùng sẽ dừng thuật tốn.
1.6 Sự liên quan của ví dụ đến thuật tốn Mehrotra
Liên hệ việc xây dựng PDC với cấu trúc của thuật tốn MPC (Mehrotra Predictor–Corrector),
chúng tơi thấy rằng, khi áp dụng cho các bài toán (P ) và (D), hướng tìm kiếm được tạo ra
trong thuật tốn MPC cũng là tổng của dwk và hướng chỉnh sửa . Tuy nhiên, bộ sửa MPC
cố gắng điều chỉnh lỗi được tạo ra trong hệ thống các điều kiện tối ưu của bài tốn (P ) và
(D) (nghĩa là, hệ thống Fµ (w) = 0 trong (1.2) với µ = 0 bởi hướng Newton của nó, dwk,a , từ
12
1.6. Sự liên quan của ví dụ đến thuật tốn Mehrotra
wk . Vì vậy, hướng của bộ sửa MPC được xác định bởi hệ thống (1.6) với σ k = 0 và dwk = dwk,a .
Như chúng tôi đã đề cập trong phần giới thiệu, ví dụ về sự thất bại của thuật tốn PDC
trong việc hội tụ chúng tơi đã trình bày khơng áp dụng cho thuật tốn MPC. Việc triển khai
thuật tốn MPC của chúng tơi với thủ tục kích thước bước (1.22) đã thành cơng trong việc
giải quyết vấn đề (1.11) và (1.12) , cho các điểm xuất phát khác nhau, bao gồm những người
được xác định trong (??) . Trong trường hợp thứ hai, thuật toán MPC tương tự tạo ra các bộ
sửa sai dài di chuyển lần lặp ban đầu khác với mức tối ưu trong các lần lặp sớm. Tuy nhiên,
nó "phục hồi" và hội tụ nhanh chóng đến giải pháp. Tuy nhiên, ví dụ này đưa ra nghi ngờ về
các thuộc tính hội tụ của thuật tốn MPC nói chung, do những điểm tương đồng được đề cập
ở trên giữa hai thuật toán, đặc biệt là trong cách các hướng tìm kiếm và các bước lặp mới
được hình thành bằng cách thêm các hướng sửa chữa tương tự vào hướng Newton chuẩn của
nguyên tố kép các phương pháp điểm bên trong, mà không có bất kỳ tỷ lệ nào của bộ chỉnh
sửa, đó là nguyên nhân gây ra lỗi của thuật toán PDC trên ví dụ. Dựa trên kinh nghiệm của
chúng tơi với PDC và những điểm tương đồng giữa hai thuật toán, có vẻ như khơng chắc rằng
sự xuất hiện của các hướng sửa sai dài trong hiệu suất của thuật toán MPC sẽ ln có tác
dụng có lợi hoặc vơ hại. Hiểu biết lý thuyết về hành vi số của thuật tốn MPC cấu thành
cơng việc tiềm năng trong tương lai
Bên cạnh kết nối thiết yếu và mạnh mẽ của nó với thuật tốn MPC, chúng tơi thấy rằng
thuật tốn PDC rất thú vị trong chính nó, vì các ví dụ chúng tơi đã trình bày nhấn mạnh
những nhược điểm của cách xây dựng trình sửa lỗi cụ thể này chỉ đường và các bước lặp mới.
Hình 1.3: Hình ảnh về một sự hội tụ thuật toán PDC
2. Thuật toán dự đoán chỉnh sửa Mehrotra
2.1
Lịch sử phát triển thuật toán Mehrotra
13
2.2
Cơ sở thuật toán Mehrotra
15
2.3
Thuật toán Mehrotra cải tiến
19
2.4
Phiên bản sửa đổi của thuật toán Mehrotra cải tiến
21
2.5
Sự hội tụ siêu tuyến tính
22
Kể từ bài báo mang tính bước ngoặc của Karmarkar[6] , phương pháp điểm trong (IPM)
đã trở thành một trong những khu vực nghiên cứu tích cực nhất tạo ra một lượng lớn
kết quả nghiên cứu. Hơn nữa, một số phương pháp tối ưu hóa dựa trên IPM đã được
phát triển mạnh mẽ. Các phương pháp PredictorCorrector là một trong những phương
pháp IPM hiệu quả nhất và đã trở thành xương sống của một số phương pháp tối ưu
hóa [22, 24]. Hầu hết các triển khai đều dựa trên một biến thể thuật toán dự đoán-sửa
lỗi [8] của Mehrotra. Tầm quan trọng thực tế của phương pháp Mehrotra , và việc thiếu
phân tích lý thuyết của phương pháp này đã thúc đẩy chúng tôi nghiên cứu các phương
pháp Mehrotra cải tiến. Trước khi đi vào chi tiết về thuật toán của Mehrotra, trước tiên,
chúng ta hãy xem xét ngắn gọn kiến thức cơ bản và kết quả duy nhất của IPM và IPM
của bộ dự đoán-sửa lỗi.
2.1 Lịch sử phát triển thuật toán Mehrotra
Phương pháp dự đoán – hiệu chỉnh của Mehrotra trong tối ưu hóa là một phương pháp điểm
bên trong cụ thể cho lập trình tuyến tính. Nó được đề xuất vào năm 1989 bởi Sanjay Mehrotra.
Hình 2.1: Giáo sư Sanjay Mehrotra
13
14
2.1. Lịch sử phát triển thuật toán Mehrotra
Phương pháp này dựa trên thực tế là tại mỗi lần lặp của một thuật tốn điểm bên trong,
cần phải tính tốn phân hủy Cholesky (thừa số hóa) của một ma trận lớn để tìm hướng tìm
kiếm. Bước thừa số hóa là bước tính tốn tốn kém nhất trong thuật tốn. Do đó, bạn nên sử
dụng cùng một bản phân rã nhiều lần trước khi tính tốn lại nó.
Ở mỗi lần lặp lại thuật toán, phương pháp dự đoán – chỉnh sửa của Mehrotra sử dụng cùng
một phép phân rã Cholesky để tìm ra hai hướng khác nhau: một dự đoán và một sửa sai.
Hình 2.2: Sơ đồ thuật tốn Mehrotra
Ý tưởng là trước tiên tính tốn hướng tìm kiếm tối ưu hóa dựa trên cụm từ thứ tự đầu tiên
(công cụ dự đốn). Kích thước bước có thể được thực hiện theo hướng này được sử dụng để
đánh giá mức độ cần thiết của việc hiệu chỉnh độ chính giữa. Sau đó, một thuật ngữ sửa sai
được tính tốn: điều này chứa cả một thuật ngữ trọng tâm và một thuật ngữ bậc hai.
Hướng tìm kiếm hồn chỉnh là tổng của hướng dự đốn và hướng sửa.
Hình 2.3: Thuật tốn Mehrotra cho bài toán QHTT
Chương 2. Thuật toán dự đoán chỉnh sửa Mehrotra
15
Mặc dù khơng có sự phức tạp về mặt lý thuyết nào bị ràng buộc về nó, nhưng phương pháp
dự đốn – chỉnh sửa của Mehrotra được sử dụng rộng rãi trong thực tế. Bước sửa sai của nó
sử dụng cùng một phân rã Cholesky được tìm thấy trong bước dự đốn theo cách hiệu quả,
và do đó, nó chỉ đắt hơn một chút so với thuật toán điểm bên trong tiêu chuẩn. Tuy nhiên,
chi phí bổ sung cho mỗi lần lặp lại thường được đền đáp bằng việc giảm số lần lặp cần thiết
để đạt được giải pháp tối ưu. Nó cũng dường như hội tụ rất nhanh khi gần với mức tối ưu
[5,6].
Hình 2.4: Một sự so sánh về tốc độ hội tụ thuật toán
2.2 Cơ sở thuật toán Mehrotra
Chúng tôi xem xét các phương pháp điểm trong gốc - đối ngẫu để giải quyết vấn đề tối ưu
hóa tuyến tính (LP) dạng tiêu chuẩn sau:
n
o
(P ) : min cT x : Ax = b , x ≥ 0
khi A ∈ Rmxn , b ∈ Rm và c ∈ Rn cũng như bài tốn đối ngẫu của nó :
n
o
(D) : max bT y : AT y + s = c , s ≥ 0
Khơng mất tính tổng qt , chúng ta có thể giả sử (P ) và (D) thỏa mãn điều kiện điểm trong
( Interior Point Condition - IPC) , nghĩa là tồn tại (x0 , s0 , yo ) thỏa
Ax0 = b , x0 > 0 , AT y0 + s0 = c , s0 > 0
Trước khi đi vào chủ đề chính , trước tiên, chúng tơi giới thiệu về phương pháp điểm trong
như sau :
Tìm nghiệm tối ưu của (P ) và (D) tương đương với việc giải hệ sau:
Ax = b , x ≥ 0
T
A
y +s = c , s ≥ 0
(2.1)
xs = 0
16
2.2. Cơ sở thuật toán Mehrotra
Ý tưởng cơ bản của phương pháp điểm trong gốc - đối ngẫu là thay phương trình thứ 3 ở
(2.1) bằng phương trình tham số hóa xs = µe. Điều này dẫn đến những điều sau :
Ax = b , x ≥ 0
T
A
y +s = c , s ≥ 0
(2.2)
xs = µe
Nếu điều kiện điểm trong (IPC) khơng đổi , thì với mỗi µ > 0, hệ phương trình (2.2) có một
nghiệm duy nhất. Nghiệm này , kí hiệu là (x (µ) , y (µ) , s (µ) , được gọi là tâm µ của cặp (P )
và (D) . Tập các tâm µ với mỗi µ > 0 cho ta đường đi chính giữa (central path) của (P ) và
(D) [7,19] .Nó đã chỉ ra được rằng giới hạn của đường dẫn trung tâm (khi µ đi về 0) tồn tại .
Vì điểm giới hạn thỏa mãn điều kiện độ lệch bù (the complementarity condition), nó đương
nhiên mang lại các nghiệm tương ứng cho cả (P ) và (D) . [17]
Áp dụng phương pháp Newton cho (2.2) , đưa ra hệ phương trình tuyến tính sau :
A∆x = 0
T ∆y + ∆s = 0
A
(2.3)
x∆s + s∆x = µe − xs
ở đây ∆x , ∆y , ∆z là các bước nhảy Newton (Newton step)
Thuật toán bộ dự đoán-sửa lỗi sử dụng (2.3) với các giá trị khác nhau của µ trong bộ dự
đốn và các bước sửa lỗi. Thuật toán dự đoán - chỉnh sửa lỗi được biết đến nhiều nhất là
thuật toán Mizuno-Todd-Ye (MTY) cho lớp bài toán LP , hoạt động trong hai vùng lân cận
nhỏ của đường dẫn trung tâm [10]. Trong bước dự đoán, thuật toán MTY sử dụng cái gọi là
chia tỷ lệ affine gốc - đối ngẫu bước với µ = 0 trong (3) và nó di chuyển đến vùng lân cận lớn
T
hơn một chút. Sau đó, trong bước sửa lỗi, nó sử dụngn µ = µg = xn s , tỷ lệ với khoảng cách
đối ngẫu để mang lại về phía con đường trung tâm, quay trở lại lân cận nhỏ hơn.Mặc dù có
những kết quả lý thuyết đằng sau thuật toán này cho LO và một số lớp khác của tuyến tính
conic vấn đề tối ưu hóa, nó đã khơng được sử dụng trong việc phát triển các gói phần mềm
dựa trên IPM. [1, 4, 5, 12, 13, 14, 15, 16, 18]
Hình 2.5: Minh họa bước lặp Newton
Trong phần tiếp theo, chúng tôi mô tả chi tiết một phiên bản phổ biến của thuật toán Mehrotra
đã được áp dụng trong hầu hết các gói IPM. Một tính năng của thuật tốn này là cập nhật
Chương 2. Thuật toán dự đoán chỉnh sửa Mehrotra
17
động của tham số rào cản. Trong bước dự đoán, thuật toán của Mehrotra tính tốn hướng
tìm kiếm mở rộng quy mơ, tức là :
A∆xa = 0
T a
A ∆y + ∆sa = 0
(2.4)
s∆xa + x∆sa = −xs
sau đó nó tính tốn kích thước bước khả thi tối đa ( the maximum feasible step size) để đảm
bảo :
(x + αa ∆xa , s + αa ∆sa ) ≥ 0
Tuy nhiên, thuật tốn khơng thực hiện một bước như vậy. Nó sử dụng thơng tin từ bước dự
đốn (predictor step) để tính tốn hướng trung tâm của nó như sau :
A∆x = 0
T ∆y + ∆s = 0
A
(5)
(2.5)
s∆x + x∆s = µe − xs − ∆xa ∆sa
trong đó µ được định nghĩa bởi :
g
µ= a
g
!2
ga
,
n
trong đó ga = (x + αa ∆xa )T (s + αa ∆sa ) và g = xT s . Vì (∆xa )T ∆sa = 0 , mối quan hệ trước đó
ngụ ý :
µ = (1 − αa )3 µg
(2.6)
Cuối cùng, thuật tốn Mehrotra tạo ra một bước theo hướng (∆x, ∆y, ∆z) với kích thước bước
thích hợp.
Exercise 2.1 Ví dụ sau đây [13,14] cho thấy rằng việc sử dụng thuật tốn của Mehrotra,
như được mơ tả như trên, có thể buộc thuật tốn thực hiện các bước rất nhỏ để giữ lặp
lại trong một vùng lân cận nhất định của đường dẫn trung tâm mà bản thân nó có thể
ngụ ý thuật tốn mất q nhiều lần lặp để hội tụ. Ví dụ chỉ ra rằng phương pháp của
Mehrotra phải được kết hợp với một số biện pháp bảo vệ để cung cấp kích thước bước
được đảm bảo ở mỗi lần lặp lại. Xem xét bài tốn quy hoạch tuyến tính sau :
min − x2
0 ≤ x1 ≤ 1
(2.7)
0 ≤ x ≤ 1 + δx
2
1
Nếu thuật toán bắt đầu từ :
x0 = (0.28, 0.86, 0.72, 0.1568) , s0 = (0.91, 0.5, 1, 1.5) , y 0 = (−1, −1.5) , δ = 0, 06
− , thì ở lần lặp đầu tiên, nó thực hiện một bước rất nhỏ (α =
với x0 , s0 ∈ N∞
c
−16
−
O 10
) trong bước sửa lỗi để thực hiện bước lặp trong vùng lân cận của N∞ , trong
khi kích thước bước trong bước dự đoán là αa = 0.8228 . Hơn nữa bằng cách xem xét
∆xa ∆sa và ∆x∆s chúng tôi nhận thấy sự khác biệt giữa các vectơ này có thể gây ra hiện
tượng :
∆xa ∆sa = (−0.0116, −0.0553, 0.0120, 0.0549) ,
18
2.2. Cơ sở thuật toán Mehrotra
∆x∆s = (−0.0249, −0.0719, 0.0257, 0.0710) ,
µg = 0.41 , µ = 0.0023
Nếu ví dụ tương tự với δ = 0, 08 ,trong đó thuật toán bắt đầu từ điểm :
x0 = (0.25568815927570, 0.90092806048267, 0.74431184072429, 0.11952699225938)
y 0 = (−0.838967769079751, −1.41512087750413) ,
s0 = (0.72575809887942, 0.41512087750412, 0.83896776907975, 1.4151208775041),
− , , khi đó ở lần lặp đầu tiên, người ta có α =
mà thuộc vùng lân cận của N∞
a
0, 838997390116749 mà ug = 0, 338290146525301 cho µ =0,00141184849887486 và
αc = 1, 76986987950339e − 006. Nhìn thấy sự khác biệt giữa các vectơ
∆xa ∆sa = (−0.01515115, −0.03752814, 0.01585476, 0.03682453)
và
∆x∆s = (−0.03207875, −0.04746870, 0.03347581, 0.04607164)
có thể giải thích hiện tượng này. Ngoài ra, chúng ta phải đề cập rằng đối với một vài
lần lặp tiếp theo ,αc cho một dãy giảm dần (decreasing sequence).
Ví dụ trên đây chỉ ra rằng đối với bất kỳ vùng lân cận được chỉ định nào, bằng cách
sửa đổi và điểm bắt đầu, người ta có thể tìm được một điểm bắt đầu thích hợp mà từ
đó thuật tốn thực hiện một bước rất nhỏ trong bước chỉnh sửa, trong khi kích thước
bước chia tỷ lệ là lớn nhất định. Ví dụ này khiến chúng ta khó tranh cãi về lý thuyết
và cũng như hiệu quả thực tế của thuật toán dựa trên chiến lược cập nhật như vậy.
Quan sát này thúc đẩy chúng tôi đưa ra một chiến lược tự vệ sẽ giúp chúng tơi kiểm
sốt được quy mơ bước tối thiểu được đảm bảo cả về mặt lý thuyết và thực tế.
Một nhược điểm khác trong sự lựa chọn của Mehrotra có thể là khi kích thước bước chia
tỷ lệ affine rất nhỏ, sau đó thuật tốn có thể thực hiện các bước căn giữa thuần túy mà sẽ chỉ
là một chút giảm khoảng cách đối ngẫu. Hiện tượng đình trệ này có thể ảnh hưởng đến hiệu
quả thực tế của thuật toán cũng vậy. [24] Điều đáng nói là hiện tượng này cũng có thể được
quan sát bằng cách tắt tất cả các heuristics được kết hợp với Mehrotra trong một gói phần
mềm McIPM, và bằng cách giải quyết một số vấn đề tương đối lớn từ bộ kiểm tra NETLIB
LO. Vì ví dụ, đối với vấn đề PILOTNOV, do nhiều bước căn giữa thuần túy, thuật toán mất
314 lần lặp trước khi nó dừng lại. Tuy nhiên, nếu chúng ta có một biện pháp bảo vệ, bằng
cách xem xét kích thước bước tối đa trong các bước của trình dự đốn và trình sửa lỗi, chúng
tơi có thể quyết định cập nhật nào chiến lược tốt hơn: lựa chọn thích ứng về giá trị mục tiêu
hoặc cập nhật lớn cổ điển chiến lược. Do đó, trong thuật tốn mới, trước tiên chúng tôi đánh
giá αa sau khi mở rộng tỷ lệ affine hướng tìm kiếm được tính tốn. Nếu nó q nhỏ, thì chúng
tơi áp dụng chiến lược cập nhật lớn, nếu khơng, chúng tơi đề cập đến chiến lược thích ứng.
Nếu chiến lược thích ứng khơng thể thực hiện một bước đủ lớn, sau đó nó sử dụng biện pháp
bảo vệ cập nhật lớn. Do đó, trong trong trường hợp xấu nhất, thuật tốn của chúng tơi thực
hiện thêm phần lùi lại so với Mehrotra ban đầu , đó là một mức giá hợp lý để trả cho hiệu
suất nâng cao
Chương 2. Thuật toán dự đoán chỉnh sửa Mehrotra
19
2.3 Thuật toán Mehrotra cải tiến
Trong phần này, trước tiên chúng ta mơ tả lược đồ thuật tốn của mình, sau đó chúng ta
thảo luận về ước tính của kích thước bước khả thi tối đa cho cả bước chia tỷ lệ affine và bước
sửa lỗi [15,16]
Các bộ giải IPM hiệu quả nhất hoạt động trong vùng lân cận tiêu chuẩn vô cực âm được xác
định bởi :
−
N∞
(γ) = {(x, y, z) ∈ 𭟋0 : xi si ≥ γµg , ∀i = 1, ...n }
(2.8)
trong đó γ ∈ (0, 1) là một hằng số độc lập với n.Trong tài liệu này, chúng tôi xem xét các
− (γ) (gọi là lân cận lớn).
thuật toán đang làm việc ở N∞
Định lý sau đưa ra giới hạn dưới cho kích thước bước khả thi tối đa trong trường hợp xấu
nhất cho bước dự đoán.
− (γ) và ∆xa , ∆y a , ∆sa là nghiệm của
Theorem 2.1 Giả sử bước lặp hiện tại (x, y, z) ∈ N∞
(2.4) . Sau đó, kích thước bước khả thi tối đa , αa , mà x(αa ), s(αa ) ≥ 0 thỏa mãn :
p
2 γ 2 + γn − 2γ
αa ≥
(2.9)
n
− (γ) và (∆x, ∆y, ∆s) là nghiệm của
Theorem 2.2 Cho rằng bước lặp hiện tại (x, y, z) ∈ N∞
(2.5) , trong đó µ ≥ 0 . Khi đó chúng ta có :
∥∆x∆s∥ ≤ 2
−3
2
!
!
1 µ 2
1 µ 17γ + n
− 2−
+
nµ
γ µ
2γ µg
16γ g
g
γ
Theorem 2.3 Nếu µ = 1−γ µg , trong đó γ ∈ (0, 0.5) thì :
√
2 2
n µg
∥∆x∆s∥ ≤
γ
Lưu ý : Người ta có thể nhận được một giới hạn dưới tương tự cho kích thước bước
β
tối đa trong bước sửa lỗi cho một phân số cố định µ = 1−β µg của giá trị µg làm mục tiêu
trong bước chỉnh sửa, cho bất kỳ β nào thỏa mãn γ < β < 0.5 . Đây là một điểm quan
γ
trọng cần lưu ý, vì γ càng nhỏ thì vùng lân cận càng lớn và khi đó µ = 1−γ µg cũng ngụ ý
một cập nhật tích cực . Chọn một β lớn từ khoảng (0, 0.5) sẽ cho phép chúng tôi làm việc
với một bản cập nhật sửa chữa vừa phải hơn (bị ngắt kết nối với kích thước của vùng lân cận).
Thuật toán 2.1 (Thuật toán Mehrotra cải tiến) Dựa trên cuộc thảo luận trước, chúng ta
có thể phác thảo thuật tốn mới của mình như sau :
1. Đầu vào
(a) Tham số tiệm cận γ ∈ (0, 0.5)
(b) Một thơng số chính xác ϵ > 0
20
2.3. Thuật toán Mehrotra cải tiến
− (γ)
(c) (x0 , y 0 , s0 ) ∈ N∞
2. Bắt đầu
Trong khi xT s > ϵ thực hiện :
(a) Bước dự đoán: Giải (2.4) và tính tốn kích thước bước tối đa αa mà thỏa
(x(αa ), y(αa ), s(αa ) ∈ 𭟋
(b) Bước chỉnh sửa :
i. Nếu αa ≥ 0.1 , khi đó giải (2.5) với µ = (1 − αa )3 µg và tính tốn kích
− (γ)
thước bước tối đa αc thỏa mãn (x(αc ), y(αc ), s(αc ) ∈ N∞
γ
2
2
ii. Nếu αa ≤ 0.1 , hoặc nếu αa ≥ γ /2n , khi đó giải (2.5) với µ = 1−γ µg và
− (γ)
tính tốn kích thước bước tối đa αc thỏa mãn (x(αc ), y(αc ), s(αc ) ∈ N∞
(c) Đặt x(αc ), y(αc ), s(αc ) =(x + αc ∆x, y + αc ∆y, s + αc ∆s và quay lại thuật tốn .
Ý tưởng này được trích từ bài báo On Mehrotra-Type Predictor-Corrector Algorithms
[25] của 3 tác giả M. Salahi, J. Peng , T. Terlaky . Xin được trích nguyên văn thuật toán :
Chương 2. Thuật toán dự đoán chỉnh sửa Mehrotra
21
Lưu ý : Trong trường hợp xấu nhất, so với chiến lược Mehrotra thuần túy, thuật toán yêu
cầu thêm một bước lùi để tạo ra một bước lớn hợp lý.
Theorem 2.4 Thuật toán ở (2.1) sẽ dừng sau nhiều nhất :
T
x0 s0
2
O n log
ϵ
bước lặp với một nghiệm cho xT s ≤ ϵ
2.4 Phiên bản sửa đổi của thuật toán Mehrotra cải tiến
Trong phần này, chúng tôi đề xuất một phiên bản được sửa đổi một chút của Thuật toán
(2.1) để giảm độ phức tạp lặp lại đáng kể. Động cơ cho biến thể này dựa trên bằng chứng của
Định lý (2.9) chỉ ra rằng giới hạn trên tương ứng có thể được tăng cường bằng cách sử dụng
định lý sau :
Theorem 2.5 Với i ∈ Γ− (i ∈ Γ : ∆xia ∆sia < 0) ta có :
−∆xia ∆sia
!
1 1
≤
− 1 xi si
αa αa
(2.10)
Chúng tôi sửa đổi bước sửa lỗi bằng cách đưa vào hệ số αa ở bên tay phải của (2.3) của
bước sửa lỗi. Hệ thống mới trở thành :
A∆x = 0
T ∆y + ∆s = 0
A
x∆s + s∆x = µe − xs − α ∆xa ∆sa
a
(2.11)
trong đó µ có thể được định nghĩa như trong phần trước. Nói cách khác, trong thuật tốn
mới, một giải quyết hệ thống (2.11) thay vì hệ thống (2.5) trong bước chỉnh sửa. Sự sửa đổi
nhỏ này của Thuật toán (2.1) dựa trên quan sát sau đây. Nếu hướng tìm kiếm theo tỷ lệ affine
là lựa chọn tốt, thường ngụ ý rằng αa lớn, sau đó là hướng sửa lỗi cổ điển cũng nên là một
hướng tốt. Nếu tỷ lệ affine khơng tốt như vậy, thì chúng ta nên cẩn thận hơn trong bước sửa.
Tương tự với định lý 2.2, chúng ta có giới hạn sau đối với ∥∆x∆s∥ , nghĩa là giá trị αa lớn
mạnh hơn nhiều so với giá trị đã cho trong định lý 2.2.
− (γ) và (∆x, ∆y, ∆s) là nghiệm của
Theorem 2.6 Cho rằng bước lặp hiện tại (x, y, z) ∈ N∞
(2.11) , trong đó µ ≥ 0 . Khi đó chúng ta có :
∥∆x∆s∥ ≤ 2
−3
2
!
!
1 µ 2
αa µ 20 − 4αa + αa2
− 2−
+
nµg
γ µ
2γ µg
16
g
22
2.5. Sự hội tụ siêu tuyến tính
γ
Theorem 2.7 (The completeness of the real numbers) Nếu µ = 1−γ µg , trong đó γ ∈ (0, 0.5)
thì :
∥∆x∆s∥ ≤ 2nµg
γ
Theorem 2.8 Nếu µ = 1−γ µg , trong đó γ ∈ (0, 0.5) thì :
∥∆x∆s∥ ≤ 2nµg
− (γ) , trong đó γ ∈ (0, 0.5) , và
Theorem 2.9 Giả sử rằng lần lặp hiện tại (x, y, z) ∈ N∞
∆x, ∆y, ∆s là nghiệm của (2.11) với µ =
− (γ)
(x(αc ), y(αc ), s(αc ) ∈ N∞
γ
1−γ µg
. Khi đó, kích thước bước tối đa αc , để
, phải thỏa mãn :
αc ≥
3γ
8n
Theorem 2.10 Phiên bản sửa đổi của thuật toán ở (2.1) sẽ dừng sau nhiều nhất :
n
O nlog
ϵ
bước lặp với một nghiệm cho xT s ≤ ϵ
2.5 Sự hội tụ siêu tuyến tính
Trong phần này, chúng tơi phân tích hành vi tiệm cận của các thuật tốn trước đó. Chúng
tôi quan sát rằng người ta cần thay đổi kinh nghiệm của Mehrotra để đảm bảo hội tụ siêu
tuyến tính. Chiến lược cập nhật thích ứng mới được xác định bởi :
µ=
trong đó t = maxi∈Γ−
∆xia ∆sia
xi si
γt + γ(1 − αa )
µg
1−γ
(2.12)
n
o
, với Γ− = i ∈ Γ : ∆xia ∆sia < 0 và γ ∈ (0, 0.5) . Thay đổi kinh
nghiệm của Mehrotra thành mới cập nhật chiến lược trong Thuật tốn 2.1, trong khi vẫn
duy trì biện pháp bảo vệ, không thay đổi phức tạp đa thức của biến thể này. Người ta có thể
chứng minh một cách tương tự tính đa thức của những thuật tốn này, và để đơn giản, những
bằng chứng về độ phức tạp đó được bỏ qua ở đây .
Chúng tơi lưu ý rằng trong trường hợp LCPs đơn điệu, Ye và Anstreicher [21] đã chứng
minh rằng µg đủ nhỏ thì quan hệ :
|∆xia ∆sia | = O(µ2g ), ∀i = 1, 2, 3, ...n
(2.13)
xi (α) si (α) = (1 − α) xi si + α 2 ∆xia ∆sia ≥ (1 − α) xi si − O µ2g α 2 ≥ 0
(2.14)
điều đó ngụ ý :
Chương 2. Thuật toán dự đoán chỉnh sửa Mehrotra
23
Sử dụng bổ đề II.64 và II.65 của [17], người ta có thể chứng minh rằng αa ≥ 1 − O(µg ) . Trong
định lý tiếp theo sau đây chúng ta chứng minh sự hội tụ siêu tuyến tính của thuật tốn 2.1
và phiên bản sửa đổi của nó.
Theorem 2.11 Hãy lặp lại (xk , y k , sk ) được tạo bởi Thuật toán 2.1 hoặc phiên bản được
sửa đổi, trong đó µ được đưa ra bởi (2.12). Khi µg đủ nhỏ, thuật toán 2.1 và thuật toán
được sửa đổi phiên bản hội tụ siêu tuyến tính theo nghĩa µk+1
= O((µkg )1+r ) , trong đó
g
r ∈ (0, 1).
Hình 2.6: So sánh số bước lặp
3. Code Matlab
3.1
Trước khi bắt đầu
24
3.2
Cách sử dụng
24
3.3
Cài đặt
25
3.4
Ví dụ minh họa
26
3.5
Vào bài toán
26
3.5.1
initialPoint.m
3.5.2
mpcSol.m
3.5.3
newtonDirection.m
3.5.4
setParamOptions.m
3.5.5
stepSize.m
3.1 Trước khi bắt đầu
Đây chỉ là một phiên bản demo rất đơn giản của việc triển khai của bộ dự đoán-sửa lỗi IPM
của Methrotra cho Lập trình tuyến tính. Khơng có gì đảm bảo rằng nó có thể giải quyết rất
khó hoặc quy mơ lớn các vấn đề và hiệu suất của nó có thể khơng tốt như quảng cáo tiêu
chuẩn nhưng nó phản ánh những ý tưởng chung của các phương pháp điểm bên trong.
Bộ giải chính MPCSOL (/solver/mpcSol.m) chỉ chấp nhận các vấn đề LP ở dạng tiêu chuẩn,
tức là :
o
n
(P ) : min cT x : Ax = b , x ≥ 0
3.2 Cách sử dụng
1. Chạy script setup.m trước để kiểm tra và thiết lập cần thiết hệ thống môi trường.
2. Nếu bài tốn của bạn ở dạng chuẩn, bạn có thể sử dụng :
[x, y, s, N ] = mpcSol(A, b, c)
hoặc là
[x, y, s, N ] = mpcSol(A, b, c, parami n, N ame)
khi bạn muốn xác định tên vấn đề và các tham số. Giá trị mặc định của tên đầu vào là
"testProb". Coi trọng mặc định giá trị của các tham số, xem setParamOptions.m.
3. Để kiểm tra các ví dụ, chỉ cần chạy "testExamples" trong dịng lệnh của bạn. Mã nguồn
và tệp dữ liệu của tập lệnh "testExamples.m" có thể tìm thấy trong thư mục "examples".
24