1. Trang chủ
  2. » Khoa Học Tự Nhiên

Thuật toán Frank - Wolfe

21 1,4K 13
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 21
Dung lượng 416 KB

Nội dung

Thuật toán Frank - Wolfe

Trang 1

Lời mở đầu

Tất cả các ngành, các lĩnh vực dù hoạt động ở phơng diện nào thì mục đích cuối cùng cũng là giải các bài toán tối u của đơn vị mình Việt Nam là một minh chứng

Trong xu thế hội nhập hiện nay, đặc biệt sau kí kết hiệp định thơng mại thế giới WTO, Việt Nam đang đứng trớc nhiều thử thách mới Và cạnh tranh trên thơng trờng quốc tế là bài toán hàng đầu đối với các doanh nghiệp trong nớc

Do tính cấp thiết của thực tế nên em đã quyết định chọn đề tài: “Thuật toán Frank-Wolfe”- đây là thuật toán giải các bài toán quy hoạch lồi với các ràng

buộc tuyến tính Em hi vọng nó có thể góp một phần làm phong phú hơn kho tàng thuật toán giải các bài toán tối u

Bài viết của em gồm 3 phần lớn (ngoài phần mục lục và phần tài liệu tham khảo):

 Thứ nhất : Lời mở đầu

 Thứ hai : Nội dung

 Thứ ba : Kết luận Trong phần nội dung,em sẽ trỡnh bày 4 vấn đề chớnh:

1 Tổng quan về quy hoạch phi tuyến

2 Thuật toỏn Frank-Wolfe

3 Thớ dụ

4 Chương trỡnh Gamside Cuối cựng, em xin chõn thành cảm ơn cỏc thầy giỏo,cụ giỏo khoa Toỏn kinh tế đó tạo mụi trường cho em được học tập và rốn luyện Em hết sức biết

ơn thầy giỏo Ngụ Văn Mỹ đó giỳp em hoàn thành đề ỏn mụn học này

Nội dung:

Trang 2

1 Tổng quan về quy hoạch phi tuyến

1.1 Giới thiệu chung về QHFT

Bài toỏn QHFT sẽ núi ở dưới đõy khụng phải là bài toỏn QHFT thực tổng quỏt, mà ta chỉ xột lớp bài toỏn QHFT cú hàm mục tiờu là hàm khả vi liờn tục( tới bậc tuỳ ý) trờn tập mở bao tập phương ỏn D; bản thõn tập phương ỏn cũng được xỏc định bởi cỏc hàm số trong cỏc ràng buộc là cỏc hàm khả vi liờn tục n biến Cụ thể ta cú bài toỏn tổng quỏt sau:

;

; )(

(

min(max) )

(

m i b x

g

x f

i

Trong đú: xR n,b iR(i= 1 ,m);f(x)và g i(x)(i= 1 ,m) là cỏc hàm n biến độc lập Ngoài ra: trong cỏc hàm f (x)và g i(x)(i= 1 ,m) phải cú ớt nhất một hàm phi tuyến; luụn giả thiết cỏc hàm g i(x)(i= 1 ,m) là cỏc hàm liờn tục; hàm mục tiờu f (x)khả vi liờn tục trờn tập mở bao tập phương ỏn D

Tuy bài toỏn QHFT đó được giới hạn như trờn, nhưng tớnh phi tuyến của bài toỏn luụn tạo ra những phức tạp đỏng kể khi tiệm cận với nú Với bài toỏn QHFT người ta cũng sử dụng phương phỏp tiệm cận giống như bài toỏn cực trị cú ràng buộc cổ điển trong giải tớch-tức là tỡm cỏch đưa bài toỏn cực trị cú ràng buộc về bài toỏn cực trị tự do rồi tỡm cỏch đưa ra điều kiện Kunh- Tucker Với một nhóm điều kiện bổ sung đủ mạnh thì điều kiện Kunh-Tucker

cú thể trở thành điều kiện cần và đủ đối với lời giải của (1)

1.2 Bài toỏn QHFT

Bài toỏn tổng quỏt QHFT cú dạng như (1); tuy nhiờn đụi khi để thuận tiện trong việc giải thớch ý nghĩa kinh tế ta cú thể biểu diễn cỏc dạng cụ thể sau:

Trang 3

i i

x

b x g

) , 1 (

) , 1 (

n j

m i

j

i i

x

b x g

) , 1 (

) , 1 (

n j

m i

a f(x) → max ⇔ f1(x) = −f(x) → min

i i

i

i i

b x g

b x g i x g

) (

) ( )

0

) ( )

(

i

i i i

i i

s

b s x g b

x g

(

i

i i i

i i

s

b s x g b

x g

1.3 Điều kiện Kuhn-Tucker

Trở lại bài toán tổng quát (1) ban đầu:

;

; )(

(

min(max) )

(

m i b x

g

x f

i i

với các giả thiết đã có về f (x)vàg i(x)(i= 1 ,m), nếu cả m ràng buộc của (1) đều có dạng đẳng thức; m<n và các hàmg i(x)(i= 1 ,m) là hệ hàm độc lập thì bài toán (1) có thể xem là bài toán tìm cực trị tổng thể có ràng buộc đẳng thức trong giải tích toán học Giải tích đã giải quyÕt bài toán này bằng cách đưa bài toán về bài toán cực trị tự do của hàm Lagrange có nghiệm luôn được xem là điều kiện cần đối với cực trị địa phương có điều kiện của f(x)

Trang 4

Tuy vậy, thuật toán này đôi khi cũng không thể giải quyết được một bài toán bất kỳ, trừ phi hàm f(x) có các tính chất giải tích bổ sung cần thiết Đối với bài toán (1), hai nhà toán học H W.Kuhn và A W.Tucker cũng sử dụng cách tiệm cận tương tự và đã đưa ra một nhóm điều kiện gọi là điều kiện Kuhn-Tucker.

Điều kiện Kuhn-Tucker được viết cho các bài toán :

min )

j

i i

x

b x g

) , 1 (

) , 1 (

n j

m i

=

=

(1.2)Lập hàm Lagrange:

+

) ,

i i

; 0

0

; 0

; 0

i i i i

j j j

j

y

L y y y

L

x

L x x

x

L

) , 1 (

) , 1 (

m i

n j

=

=

Ngược lại nếu bài toán có dạng tổng quát như sau:

max )

j

i i

x

b x g

) , 1 (

) , 1 (

n j

n i

=

=

(1.1)Thì điều kiện Kuhn-Tucker có dạng:

; 0

0

; 0

; 0

i i i i

j j j

j

y

L y y y

L

x

L x x

x

L

) , 1 (

) , 1 (

m i

n j

=

=

Trang 5

hoặc là chuyển bài toán dạng (1.1) về bài toán dạng (1.2) rồi viết giống như với bài toán (1.2).

1.4 Các vấn đề cần giải quyết khi giải bài toán QHFT

Trước khi đi vào chi tiết, ta đề cập đến bản chất của các thuật toán giải các bài toán QHFT nói chung Bài toán tổng quát dạng:

x f

,

min )

(

(*)Với bài toán (*) tuỳ theo cấu trúc của nó mà người ta đưa ra các thuật toán khác nhau Cho tới thời điểm này, số phương pháp được đề xuất là rất lớn và

đa dạng Song các phương pháp này đều có ý tưởng chung là thuật toán xiết chặt dần Tuỳ theo dãy điểm nằm trong hay nằm ngoài tập D mà được chia thành hai nhóm phương pháp lớn là phương pháp điểm trong hay điểm ngoài hoặc phối hợp cả hai phương pháp trên

Ở đây ta xét kỹ phương pháp điểm trong Người ta xuất phát từ một điểm

D

x o ∈ ; khi đó ∇f(x0 )là hướng tăng nhanh nhất của f(x) tại x0(hay∇f(x0 )

còn được gọi là hướng tăng cục bộ của f(x) tại x0) Ta lại có ở phần trước tập

)

(x0

D là tập hợp các hướng chấp nhận được tại x0 và nếu lấy d∈ D(x 0 ) thì có:∂f(x0 ,d) = ( ∇f(x0 ),d) là đạo hàm theo phương d của hàm f(x) tại x0, nó cho biết mức thay đổi của hàm f(x) tại x0 theo phương d Rõ ràng:

Nếu d ∈ D(x 0 )có ( ∇f(x0 ),d) > 0 thì d được gọi là hướng chấp nhận được tăng của f(x) tại x0

Nếu d ∈ D(x 0 )có ( ∇f(x0 ),d) < 0 thì d được gọi là hướng chấp nhận được giảm của f(x) tại x0

Nếu d ∈ D(x 0 )có ( ∇f(x0 ),d) = 0 thì d được gọi là hướng chấp nhận được không đổi của f(x) tại x0

Phương pháp xiết chặt dần trên dãy điểm trong có thể được mô tả như sau:

Trang 6

Chọn một điểm x oD và kiểm tra xem tại x0 có hướng chấp nhận được giảm của f(x) tại đó hay không? Trong trường hợp tại đó có hướng chấp nhận được giảm của f(x) ta tìm cách điều chỉnh x0 sang x1 ∈D sao cho:

) (

Khi đó các vấn đề cần giải quyết:

Vấn đề 1: Tìm phương án xuất phát x0 như thế nào? Rõ ràng việc tìm phương án xuất phát x0 có liên quan tới vấn đề khảo sát xem tập phương án

=

D hay D≠ ∅ Đây là bài toán khó, thậm chí rất khó khi các ràng buộc của bài toán có tính chất giải tích phức tạp

Vấn đề 2: Với mộtđiểm x kDthì bằng cách nào xác định được tại đó không

có hướng chấp nhận được giảm của f(x); và nếu tại xk không có hướng chấp nhận được giảm của f(x) thì xk có tính chất gì? Liệu xk có phải là lời giải của bài toán hay không? Nếu tại xk có hướng chấp nhận được giảm của f(x) thì việc điều chỉnh xk sang xk+1 được thực hiện như thế nào?

Vấn đề 3: Nếu quá trình điều chỉnh trên diễn ra với dãy{x k /k = 0 , 1 , } thì liệu dãy {f(x k) /k = 0 , 1 , }có hội tụ không? Giả sử lim f(xk) tồn tại (k → +∞)

và hữu hạn thì giới hạn này có phải là trị tối ưu của f(x) trên D?

Cả ba vấn đề trên là hiện hữu và rất phức tạp Với bài toán QHFT người ta

đã giải quyết được các vấn đề trên với nhiều lớp bài toán cụ thể, nhưng có

Trang 7

thể khẳng định chung là lược đồ điều chỉnh trên chỉ dẫn đến cực trị địa phương của f(x) trên D và có thể không hội tụ

Mặc dù điều kiện Kuhn-Tucker đã chỉ ra điều kiện tồn tại nghiệm của bài toán quy hoạch lồi, nhưng không đưa ra một thuật toán cụ thể nào để giải một bài toán Có rất nhiều phương pháp khác nhau được áp dụng cho các bài toán quy hoạch lồi với cấu trúc khác nhau Một trong các thuật toán đó thì có thuật toán Frank-Wolfe

2 Giới thiệu thuật toán Frank-Wolfe

(

x

b Ax

x f

(2.1)

n m

a

Khi đó tập phương án D={x/Axb;x≥ 0} là tập lồi đa diện

Thuật toán Frank-Wolfe là thuật toán dùng để giải bài toán QHL với các ràng buộc tuyến tính

Các giả thiết của thuật toán:

a D giới nội tức là một đa diện lồi

b Hàm f(x) khả vi liên tục, lồi trên tập phương án

Bổ sung khái niệm hàm lồi:

y= f(x),xR n, xác định trên tập D lồi Khi đó y=f(x) được gọi là một hàm lồi nếu : với 0 ≤ λ ≤ 1 ta có:

Trang 8

Với các giả thiết nêu trên thì bài toán (2.1) luôn có phương án tối ưu; nếu f(x) lồi ngặt trên D thì phương án tối ưu là duy nhất.

), (

x

b Ax

x x x f

Với giả thiết đã có bài toán thứ 0 luôn có phương án tối ưu Gọi ˆx0là phương án tối ưu của bài toán (1) Khi đó có hai khả năng sau:

Th1: Nếu ( ( 0 ), ˆ 0 0) 0

0 = ∇f x xx

thúc, x0 là cực trị địa phương nhưng do f(x) là hàm lồi nên x0 là cực trị địa phương(phần chú ý 1)

ˆ (

)

Ψ λ f x λ x x vớiλ ∈ [ 0 , 1 ] (2))

(

0 λ

Ψ là hàm lồi theo λ, nên Ψ0( λ ) ⇒ minsẽ đạt tại một điểm duy nhấtλ 0

gọi λ 0 là lời giải của (2) ta nhận được phương án mới:

Trang 9

0 0

b Ax

x x x

Th1: nếu σk ≥ 0 =>xk là phương án tối ưu và thuật toán kết thúc

), ( (

x

b Ax

x x x

theo giả thiết f(x) lồi khả vi nên ta có:

D x x f x f

x x x f

x x x f x

f x f

D x x f x f x x x f

k

k k k k

k k

k

k k

)(

( ) (

0 )

ˆ ), ( (

) ),

( ( ) ( ) (

) )(

( ) ( ) ),

( (

σ

=> điều phải chứng minh

Th2: nếu σk < 0 => xˆkx k là phương giảm của f(x) Ta xét

1 0

) ˆ

− +

= λ

λ k k

x x

Trang 10

Và ( ) = ( k + ˆkk) ⇒ min

k λ f x λ x x

) ˆ

k k

− +

=

0 ,

2 2

min )

2 ( ) 2 ( ) (

2 1

2 1

2 2

2 1

x x

x x

x x

x f

Trang 11

min 4

4 ) ,

(

) 4 , 4 ( ) ( )

0 , 0 (

)) 2 ( 2 ), 2 ( 2 ( ) (

) , (

2 1 0

0

0 0

2 1

2 1 0

x x f

x f x

x x

x f

x x x x

2 2

min 4

4 ) (

2 1

2 1

2 1

x x

x x

x x x

) 2 2 ( 4

) ˆ

) 2 , 0 (

)) 2 , 0 ( , 0 (

) ˆ

0 8 ) ˆ

, ( (

) 2 , 0 ( ˆ

2

2

0 0 0

0

0 0 0

0 0 0 0

0 0

+

=

− +

=

− +

λ ψ

λ λ λ σ

x x x

f

x x x

x

x x x f

x x

với λ ∈[0 , 1] Khi đó để giải bài toán ban đầu ta giải bài toán đối với λ

Điều kiện cần:

1

0 8 8

0 ) (

' 0

λ ψ

Ta thấy với

] [

) 2 , 0 (

4 ) 1 (

8 ) 0 ( 1

, 0 1

1 0

λ ψ λ

Bước 1:

Trang 12

min 4

) ,

(

) 0 , 4 ( )) 2 2 ( 2 ), 2 0 ( 2 ( ) (

) 2 , (

1 1

1 1

2 1 1

x x f

x f

x x x x

0 ,

2 2

2 1

2 1

x x

x x

0 4

) 2 , 1 ( ) 0 , 4 (

) ˆ ), ( (

) 2 , 1 ( ˆ

) 0 , 1 ( ˆ

1 1 1 1

1 1 1

<

=

− +

x x x

σ

Khi đó xét

4 4 5

)) ˆ

( ) (

) 2 2 , (

) 2 , 1 ( ) 2 , 0 (

) ˆ

2

1 1 1

1

1 1 1

+

=

− +

=

− +

=

λ λ

λ λ

ψ

λ λ

λ λ

x x x

f

x x x

x

5 2

4 10 ) (

λ λ

6 , 5

2 (

5 / 2 25

/ 16 ) ( min

5 ) 1 (

25 / 16 4 5 / 2

* 4 25 / 4

* 5 ) 5 / 2 (

4 4 0

* 4 0

* 5 ) 0 (

2 1 1

1 1

=

=

= +

ψ

λ ψ

λ ψ

λ ψ

Bước 2:

Trang 13

) 5

8 , 5

16 ( )) 2 5

6 ( 2 ), 2 5

2 ( 2 ( ) (

) 5

6 , 5

2 (

2

2 1 2

x x x x

5

16 5

8 5

16 ) ),

⇒ +

0 ,

2 2

min 5

16 5

8 5 16

2 1

2 1

2 1

x x

x x

x x

0 0

) 5

6 , 5

3 ( ˆ

) 0 , 1 ( ˆ

2

2 2 2

Kết luận:

) 5

6 ,

4.1 Khái quát về GAMS

Để hỗ trợ cho việc giải các bài toán tối ưu một cách nhanh nhất và các bài toán có số bước giải lớn, ta có phần mềm hỗ trợ GAMS

GAMS(General Algebraic Modeling System) là một hệ thống các chương trình giải các bài toán quy hoạch toán học.GAMS bao gồm nhiều thủ tục khác nhau trong đó xin giới thiệu một số thủ tục sau:

LP Tìm nghiệm đúng của bài toán quy hoạch tuyến tính

MIP Tìm nghiệm đúng của bài toán quy hoạch nguyên tuyến tính

Trang 14

Trong đó có thủ tục NLP( Nonlinear Programming) để giải các bài toán QHFT các hàm trơn.

4.2 Các nguyên tắc khi làm việc với GAMS

 GAMS yêu cầu phải khai báo chính xác cấu trúc của chương trình đầu vào

 Toàn bộ khai báo ghi thành một tệp với phần mở rộng gms (ví dụ: bt.gms)

 Sau khi chạy chương trình, GAMS tạo ra tệp kết quả có cùng tên tệp với phần mở rộng list (ví dụ: bt.list)

 Mỗi chương trình có thể chứa một hay nhiều mô hình và được giải nhờ các dòng lệnh khác nhau

 Một chương trình đúng có thể chạy nhiều lần với các mô tả biến theo những kích thước khác nhau

 GAMS không phân biệt chữ hoa và chữ thường

4.3 Dòng lệnh của GAMS

 Một dòng lệnh của GAMS có thể bắt đầu ở đầu dòng với một từ khoá

và kết thúc bởi dấu “;” Mỗi dòng lệnh có thể gồm nhiều câu lệnh và mỗi câu lệnh có thể viết trên nhiều dòng lệnh khác nhau

 Nếu một dòng lệnh bắt đầu từ dấu* hoặc $title sẽ được bỏ qua khi thực hiện chương trình và máy coi đây là một chú thích

 Một đoạn văn bản nằm giữa cặp lệnh sau là đoạn văn bản chú thích:

$ontext

$offtext

4.4 Những nội dung cơ bản của một chương trình giải bằng GAMS

4.4.1 Khai báo biến

 Biến tự do được khai báo với từ khoá: variable tên biến nhãn biến;

 Biến định dạng được khai biến với các từ khoá:

Trang 15

Free variable tên biến nhãn biến; (với biến liên tục không có ràng

buộc)

Positive variable tên biến nhãn biến;(với biến liên tục không âm) Negative variable tên biến nhãn biến;(với biến nguyên không âm)

4.4.2 Khai báo các hàm mục tiêu và các ràng buộc

 Khai báo tên và nhãn với từ khoá:

Equation tên phương trình 1 nhãn,…,tên ràng buộc 1 nhãn,…;

 Khai báo biểu thức xác định hàm và các ràng buộc với cấu trúc sau: Tên phương trình 1… biểu thức xác định phương trình 1;

dấu không lớn hơn(≤): =l=

dấu không nhỏ hơn(≤): =g=

 Các phép toán cơ bản trong GAMS:

Phép cộng: +Phép trừ: -Phép nhân: *Phép chia: /Phép lấy luỹ thừa: **

 Các hàm thông dụng trong GAMS:

Exp(x): ex

Log(x): ln(x)Log10(x): log10(x)Sqr(x): x2

Trang 16

Sqrt(x): x

Sin(x): sin(x)Cos(x): cos(x) Arctang(x): arctg(x)

Power(x): xn

4.4.3 Đặt giá trị ban đầu cho các biến

 Đây là giá trị tạm thời của biến, nó sẽ thay đổi khi chương trình thực hiện

 Trong nhiều bài toán thuật toán sẽ tự động gán giá trị xuất phát cho các biến, có thể là giá trị cận biên hoặc giá trị bằng không nếu chúng thoả mãn hệ ràng buộc

 chắc chắn rằng trong mọi bài toán việc chủ động đặt cho các biến giá trị ban đầu một cách hợp lý(nếu có thể) sẽ tránh được hiện tượng bài toán xuất phát từ điểm không xác định hàm mục tiêu hoặc các véc tơ gradient của hàm đó, khi đó thuật toán sẽ cho ta lời giải tốt nhất

 Ta có thể đặt giá trị ban đầu cho các biến bằng một trong ba cách sau:

Đặt giá trị đúng(=) cho biến: tên biến.l=…;

Đặt giá trị không thấp hơn(≥) cho biến: tên biến.lo=…;

Đặt giá trị không cao hơn(≤) cho biến: tên biến.up=…;

4.4.4 Đặt tên cho mô hình

Model tên mô hình/ all/;

4.4.5 Chỉ định thủ giải

 Một bài toán QHPT viết trên GAMS phải được giải bằng thủ tục NPL.Trong GAMS có ba thuật toán nào để giải bài toán QHPT đó là: Conopt, Minos và Snopt.Việc sử dụng thuật toán nào để giải một bài toán QHPT cụ thể tuỳ vào cấu trúc, đặc điểm của bài toán đó

Trang 17

 Nếu ta không chọn thuật toán để giải thì thuật toán được chỉ định là Conopt.

 Cấu trúc lệnh để chỉ thủ tục giải như sau:

Solve tên mô hình minizing(maximizing) tên hàm mục tiêu using NPL-;

4.4.6 Khai báo hiển thị kết quả

 Nếu như việc giải bài toán cho ta lời giải đúng thì ta chọn cách hiển thị kết quả đúng giá trị của lời giải bằng lệnh có cấu trúc như sau:

Display tên biến 1.l, tên biến 2.l,…,tên biến n.l;

 Nếu như việc giải bài toán cho ta lời giải gần đúng thì ta có thể chọn cách hiển thị kết quả thấp hơn hoặc cao hơn giá trị đúng của lời giải bằng lệnh có cấu trúc như sau:

Display tên biến 1.lo, tên biến 2.lo,…,tên biến n.lo;(thấp hơn) Display tên biến 1.up, tên biến 2.up,…,tên biến n.up;(cao hơn)

4.5 Chạy và sửa lỗi mô hình

 Quá trình dịch nếu có lỗi GAMS sẽ báo lỗi chi tiết trong từng dòng

lệnh với dòng báo lỗi chữ đỏ và nếu click double vào dòng chữ đỏ

này dấu nhắc sẽ đặt tại dòng lệnh có lỗi trong cửa sổ chương trình.4.5.2 Các lỗi và thông báo lỗi

 Unkown symbol: một biến, một tập hợp,… không được khai báo

hoặc không được khai báo đúng quy cách

Ngày đăng: 27/10/2012, 08:28

TỪ KHÓA LIÊN QUAN

w