Giải thuật D*

Một phần của tài liệu Hoạch định quỹ đạo cho robot di động dùng thuật toán PSO (Trang 31)

Giải thuật được Anthony Stentz [18] phát triển từ A* đối với môi trường mà mục tiêu ở cách rất xa và những thông tin về bản đồ tồn tại rất ít. D* giống như A* ngoại trừ nó là động có nghĩa là tham số chi phí cung thay đổi trong quá trình xử lý. Hình 2.15 Mô tả bản đồ và đường đi của thuật toán D*. Giải thuật này tìm kiếm tất cả những đường ngắn nhất giữa tất cả những nút và mục tiêu trong biểu đồ. Sau đó chỉ tính toán lại những phần bị mất hiệu lực bởi sự thay đổi môi trường và như vậy nó đã được cập nhật. Nếu sự chuyển động của robot thật sự được kết nối với giải thuật thì D* tạo ra những quỹ đạo đường đi tối ưu.

Chương 2 Cơ sở lý thuyết

25

Hình 2.15. Mô tả bản đồ vàđ ờng đi c a thuật toán D*

Mô t thu t toán

Thuật toán D* bao gồm hai hàm cơ bản: PROCESSSTATEMODIFYCOST.

STATE

PROCESS được sử dụng để tính toán các chi phí đường đi tối ưu đến mục tiêu, còn MODIFYCOST được dùng để thay đổi hàm chi phí cung c(0) và đi vào các vị trí bị tác động trong danh sách OPEN. Ban đầu, t(0) được thiết lập là NEW

cho tất cả các vị trí, h(G) được đặt bằng 0 và G được đưa vào danh sách OPEN. Hàm thứ nhất, PROCESSSTATE, được gọi nhiều lần cho đến khi vị trí X của robot bị loại bỏ ra khỏi danh sách OPEN (khi đó t(X)  CLOSED) hoặc một giá trị của -1 được trả về, tại điểm mà dãy  X đã được tính hoặc thứ tự không tồn tại. Robot sau đó tiến lên theo những con trỏ ngược trong dãy  X cho đến khi nó đến được mục tiêu hoặc phát hiện ra một lỗi trong hàm chi phí cung c(0) (chẳng hạn như

Chương 2 Cơ sở lý thuyết

26 phát hiện ra một vật cản). Hàm thứ hai là MODIFYCOST, ngay lập tức được gọi để hiệu chỉnh c(0) và đặt các vị trí đã thực hiện vào danh sách OPEN. Gọi Y là vị trí của robot mà tại đó phát hiện ra một lỗi trong c(0). Bằng cách gọi

STATE

PROCESS cho đến khi nó trả về km in h(Y), chi phí thay đổi được lan truyền đến vị trí Y để h(Y)o(Y). Tại điểmnày, một dãy mới  Y hợp lý hơn được xây dựng, và robot tiếp tục hướng theo các con trỏ ngược trong dãy để đến mục tiêu. Các thuật toán cho PROCESSSTATEMODIFYCOST được trình bày dưới đây. Các thủ tục được thêm vào là MINSTATE, nó trả về giá trị nhỏ nhất k(0)

trong danh sách OPEN (NULL nếu danh sách là rỗng); GETKMIN, trả về giá trị m in

k cho danh sách OPEN (-1 nếu danh sách là rỗng); DELETE(X), xóa bỏ vị trí X

trong danh sách và thiết lập t(X)  CLOSED; và INSERT(X,hnew), để tính toán

new h X

k( ) nếu t(X) NEW, k(X)min(k(X),hnew) nếu t(X)OPEN

) ), ( min( ) (X h X hnew

k  nếu t(X)  CLOSED, thiết lập h(X)hnewt(X)OPEN

và đặt hoặc định vị lại vị trí X trong danh sách OPEN đã được sắp xếp bởi k(0).

Trong hàm PROCESSSTATE ở dòng L1 và L3, vị trí X với giá trị k(0) thấp nhất được loại khỏi danh sách OPEN. Nếu X ở vị trí LOWER (ví dụ k(X)h(X)), chi phí đường đi của nó là tối ưu khi h(X) bằng với giá trị cũ km in. dòng L8 đến L13, mỗi lân cận Y của X được kiểm tra để xem chi phí đường đi của nó có thể thấp hơn không. Thêm vào đó, các vị trí lân cận là NEW sẽ nhận một giá trị chi phí đường đi ban đầu, và các thay đổi về chi phí được lan truyền đến mỗi lân cận Y có con trỏ ngược đến X cho dù chi phí mới lớn hơn hay nhỏ hơn chi phí cũ. Từ các vị trí sau này của X, bất kỳ sự thay đổi nào về chi phí đường đi của X đều có tác động đến chi phí đường đi của chúng. Con trỏ ngược của Y được gửi lại (nếu cần thiết) để dãy đơn điệu  Y được xác định. Tất cả các lân cận nhận được chi phí đường đi mới sẽ được đặt vào danh sách OPEN để lan truyền các thay đổi về chi phí này đến những lân cận của chúng.

Chương 2 Cơ sở lý thuyết

27 Nếu X ở vị trí RAISE thì chi phí đường đi của nó có thể không tối ưu. Trước khi X

lan truyền các thay đổi về chi phí đến những lân cận thì những lân cận tối ưu của nó đã được kiểm tra từ dòng L4 đến L7 nếu h(X) có thể được giảm xuống. Từ dòng L15 đến L18, các thay đổi về chi phí đường đi được lan truyền đến các vị trí NEW

và ngay lập tức giảm xuống vị trí LOWER. Nếu X có thể giảm xuống vị trí có chi phí thấp hơn thì sự giảm không xảy ra ngay tức thì (dòng L20 và L21), X được đặt trở lại vào danh sách OPEN cho sự mở rộng trong tương lai. Phần tiếp theo sẽ trình bày các yêu cầu để tránh tạo ra một vòng lặp kín trong các con trỏ ngược. Nếu chi phí đường đi của X có thể giảm xuống bởi một lân cận có điều kiện tốt nhất (các dòng từ L23 đến L25), lân cận được đặt trở vào danh sách OPEN. Do đó, sự cải tiến được hoãn lại cho đến khi lân cận có một chi phí tối ưu.

Hàm: PROCESSSTATE()

L1 XMINSTATE()

L2 if XNULL then return -1 L3 koldGETKMIN();DELETE(X)

L4 if koldh(X) then

L5 for each neighbor Y of X: (adsbygoogle = window.adsbygoogle || []).push({});

L6 if h(Y)kold and h(X) h(Y) c(Y,X) then L7 b(X)  Y;h(X)  h(Y)c(Y,X)

L8 if koldh(X) then

L9 for each neighbor Y of X: L10 if t(Y)NEW or

L11 (b(Y)  X and h(Y)h(X)c(X,Y)) or L12 (b(Y) X and h(Y) h(X)c(X,Y)) then

Chương 2 Cơ sở lý thuyết

28

L13 b(Y)  X;INSERT(Y,h(X)c(X,Y))

L14 else

L15 for each neighbor Y of X: L16 if t(Y)NEW or L17 (b(Y)  X and h(Y)h(X)c(X,Y)) then L18 b(Y)  X;INSERT(Y,h(X)c(X,Y)) L19 else L20 if b(Y) X and h(Y)h(X)c(X,Y)) then L21 INSERT(X,h(X)) L22 else L23 if b(Y) X and h(X)h(Y)c(Y,X)) and

L24 t(Y)CLOSED and h(Y)kold then

L25 INSERT(Y,h(Y))

L26 return GETKMIN()

Trong hàm MODIFYCOST, hàm chi phí cung đường được cập nhật bởi các giá trị đã thay đổi. Từ chi phí đường đi cho vị trí Ysẽ thay đổi, X được đặt vào danh sách

OPEN. Khi X được mở rộng qua PROCESSSTATE, nó tính toán một h(Y) mới ) , ( ) ( ) (Y h X c X Y

h   và đặt vào danh sách OPEN. Những vị trí mở rộng thêm vào lan truyền chi phí đến những giá trị sau của Y.

Hàm: MODIFYCOST(X,Y,cval) L1 c(X,Y)cval

L2 if t(X)CLOSED then INSERT(X,h(X)) L3 return GETKMIN()

Chương 2 Cơ sở lý thuyết

29

2.5. Thu t toán PSO

PSO (Particle Swarm Optimization) tạm dịch tối ưu hóa theo bầy đàn là một kỹ thuật tối ưu hóa ngẫu nhiên dựa trên một quần thể được giới thiệu vào năm 1995 tại hội nghị của IEEE bởi Dr. Eberhart và Dr. Kennedy [3]. PSO đã được ứng dụng rất thành công trong lĩnh vực robot. Kỹ thuật này có nguồn gốc từ nghiên cứu về bầy đàn như cách học của đàn cá và cách xây tổ của đàn chim. PSO có nhiều sự tương tự như kỹ thuật tính toán tiến hóa trong thuật toán di truyền (GA – Genetic algorithm). Cũng giống như GA, PSO được khởi tạo với một quần thể của các giải pháp ngẫu nhiên và tìm kiếm giải pháp tối ưu bằng việc cập nhật vị trí các phần tử. Tuy nhiên, không giống như GA, PSO không có các thao tác tiến hóa như lai ghép (crossover) hay đột biến (mutation).

2.5.1. Giới thiệuvề PSO

PSO là một kỹ thuật tính toán tiến hóa dựa trên sự mô phỏng của đàn cá và đàn chim. Trong PSO, mỗi giải pháp đơn, được gọi là một phần tử (particle). Mỗi phần tử có một giá trị thích nghi (fitness value), được đánh giá bằng hàm đo độ thích nghi (fitness function) và một vận tốc để định hướng bay – cách tìm kiếm – của nó. Các phần tử trong PSO sẽ duyệt không gian bài toán bằng cách theo sau các phần tử có điều kiện tốt nhất hiện thời (độ thích nghi lớn nhất).

Thuật toán PSO được bắt đầu bằng việc khởi tạo bởi một nhóm nhẫu nhiên các phần tử, sau đó tìm kiếm giải pháp tối ưu bằng việc cập nhật vị trí các phần tử trong các thế hệ.

Nguyên lý cơ bản trong thuật toán PSO chỉ là một tập hợp những phần tử (bầy đàn) chuyển động với vận tốc và góc quay khi chúng được ném tự do trong không gian tìm kiếm. Mỗi hạt cónhững đặc tính sau đây [11], [3]:

 Tồn tại một vị trívà vận tốc

 Có hàm mụctiêu để đánh giá vị trí của phần tử.

Chương 2 Cơ sở lý thuyết

30 phần tử

 Lưu lại vị trí hiện tại tốt nhất của hạt. (adsbygoogle = window.adsbygoogle || []).push({});

Chúng ta có thể xem xét rằng "vùng lân cận" của một hạt bao gồm bản thân hạt này. Vùng lân cận theo "vật lý" là khoảng cách trong phép toán. Trong thực tế, những khoảng cách này sẽđược tính toán lại tại mỗi bước thời gian. Nó làm mất thời gian và tốn kém, nhưng một vài kỹ thuật xếp nhóm lạicần thông tin này.

Vùng lân cận theo "xã hội" chỉ mang "những mối quan hệ" trong phép tính. Trong thực tế, cho mỗi hạt, vùng lân cận của nó được định nghĩa như một danh sách của những hạt ở tại chính sự bắt đầu và không thay đổi. Chú ý rằng, khi quá trình hội tụ, một vùng xã hội lân cận trở thành là một vật lý.

Tại mỗi bước thời gian, hoạt động của một hạt đã cho là một thỏa hiệp giữa ba sự lựa chọn (hình 2.16).

 Đi theo đường của chính mình(đường số 3).

 Đi về phía vị trí hiện tại tốt nhất của nó(đường số 1).  Đi về phía vị trí láng giềng tốt nhất(đường số 2).

Chương 2 Cơ sở lý thuyết

31

Hình 2.17. Sự di chuyển c a cá thể trong PSO

Bi u thức cơ b n c a thu t toán PSO

Xét một quần thể của p cá thể trong không gian thiết kế n-chiều. vị trí vectơ i k X của mỗi cá thể i được cập nhật bởi biểu thức sau [21], [ 22].

    1 1 1 2 2 k k k k k k i i i i g i V  Vc rPXc rPX (2.22) 1 1 k k k i i i X   XV  (2.23) Trong đó: k i X vị trí của cá thể i tại vòng lặp k, 1 k i X  vị trí của cá thể i tại vòng lặp k+1, k i V vận tốc của cá thể itại vòng lặp k, 1 k i V  vận tốc cá thể i tại vòng lặp k+1, 1

c hệ số kinh nghiệm của cá thể, 2

Chương 2 Cơ sở lý thuyết

32 1

r ,r2 số ngẫu nhiên trong khoảng  0,1 ,

k i

P vị trí tốt nhất của cá thể i cho đến vòng lặp k,

k g

P vị trí tốt nhất của quần thể cho đến vòng lặp k, Thuật giải có thể trình bày bằng lời như sau:

1. for all cá thể i do

2. Khởi tạo vị trí ngẫu nhiên k i

X trong không gian tìm kiếm.

3. end for

4. while điểm cuối không được thỏa mãn do

5. for all cá thể i do

6. Đặt vị trí cá thể tốt nhất k i

P là vị trí tốt nhất được tìm thấy bởi cá thể cho đến lúc này

7. Đặt vị trí quần thể tốt nhất k g

P là vị trí tốt nhất được tìm thấy bởi quần thể cho đến lúc này

8. end for 9. for all cá thể i do 10. Cập nhật vận tốc theo     1 1 1 2 2 k k k k k k i i i i g i V  Vc rPXc rPX 11. Cập nhật vị trí theo k 1 k k 1 i i i X  XV  12. end for 13. end while (adsbygoogle = window.adsbygoogle || []).push({});

Chương 2 Cơ sở lý thuyết

33 Vận tốc của các cá thể được giữ ở mức [vmin, vmax] nhằm giảm không gian tìm kiếm của cá thể. Nếu không gian tìm kiếm được xác định bởi các giới hạn [Xmin, Xmax] rồi vị trí cập nhật của một cá thể sẽ được giữ ở giới hạn này. Điều này là cần thiết như tìm thấy giải pháp phải có tính khả thi. Lấytrường hợp của việc tìm kiếmvận tốctối ưu cho một robot di động để thực hiện một nhiệm vụ cụ thể, những vận tốc tìm thấy trong phạm vi hoạt động củathiết bị truyềnđộng của robot.

Công thức (2.22) được sử dụng để tính vận tốc mới của cá thể thứ i dựa vào 3 số hạng: Vận tốc trước của cá thể, khoảng cách giữa vị trí tốt nhất trước đó của cá thể và vị trí hiện hành, cuối cùng là khoảng cách giữa kinh nghiệm tốt nhất của quần thể (vị trí của cá thể tốt nhất trong quần thể) và vị trí hiện hành của cá thể thứ i. Tiếp đó cá thể bay về vị trí mới theo công thức (2.23). Một cách tổng quát, hành động của mỗi cá thể được cân nhấc bởi hàm mục tiêu được xác định trước, phụ thuộc vào vấnđề phải giải quyết. Hai hệ số c1, c2 khởi tạo bằng 1.8.

Thuật toán PSO có thể dùng để tìm tối ưu toàn cục và vị trí mà tại đó hàm thích nghi đạt giá trị tối ưu, cũng như để xác định hiệu xuất hội tụ nếu đã biết tối ưu toàn cục. Việc đạt ngưỡng của chỉ số hội tụ ở đây phụ thuộc vào mục đích sử dụng của thuật toán. Trong trường hợp thuật toán được dùng để tìm giá trị tối ưu toàn cục, sau một số lần xác định trước, nếu kết quả không được cải thiện xem như chỉ số hội tụ đạt ngưỡng. Còn trong trường hợp đã biết trước kết quả, sau một số vòng lặp chọn trước (thí dụ 100), nếu sự sai khác giữa giá trị hàm thích nghi và giá trị tối ưu nhỏ hơn một ngưỡng được chọn (thí dụ 0,0001), ta xem lần thực thi đó là hội tụ, ngược lại là không hội tụ.

Với những gì đã trình bày ở trên, rõ ràng là PSO rất giống với tính toán tiến hóa. Tuy nhiên trong PSO, thay vì sử dụng các toán tử di truyền mỗi cá thể cập nhật vị trí của mình không chỉ dựa vào kinh nghiệm tìm kiếm của bản thân mà còn tận dụng kinh nghiệm và sự khám phá của bạn bè khác. Việc đưa thêm khái niệm vận tốc vào vị trí hiện hành để sản sinh vị trí kế tiếp giống với toán tử đột biến trong thuật giải di truyền. Chỉ khác là trong PSO toán tử đột biến được trợ giúp bởi kinh nghiệm

Chương 2 Cơ sở lý thuyết

34 “bay” không chỉ của bản thân mà còn của đồng loại trong khi đột biến của di truyền là ngẫu nhiên. Vì thế PSO có tính tất định cao hơn thuật giải di truyền.

2.5.2. Các cải tiến c a PSO

Tối ưu toàn cục nhằm mục đích tìm ra lời giải tốt nhất cho hàm mục tiêu. Bài toán này trở nên khó khăn khi hàm mục tiêu phức tạp và có nhiều lời giải tối ưu cục bộ. Các tính toán tiến hóa có thể được sử dụng để khắc phục khó khăn này. Tuy nhiên một khó khăn khác được nảy sinh khi sử dụng kỹ thuật tiến hóa giải bài toán tối ưu là tính không tất định của các thuật toán tiến hóa. Giải pháp được sử dụng để chuyển từ không tất định sang tất định là cố định số bước lặp tiến hóa. Tuy nhiên tính tất định giả tạo như vậy chỉ có thể được sử dụng với những bài toán không đòi hỏi về thời gian xử lý. Trong bài toán ấy, lời giải tối ưu toàn cục có thể đạt đến khi cho số bước lặp cao. Trong thực tiễn, những bài toán như thế không nhiều vì thế, số bước lặp thường không cao khiến cho lời giải toàn cục khó đạt đến hoàn toàn.

Thuật toán PSO đã trình bày ở trên là một kỹ thuật tiến hóa nên cũng gặp vấn đề về tính tất định như các thuật toán tiến hóa khác khi áp dụng giải bài toán tối ưu toàn cục. Vì thế, từ khi thuật toán PSO chuẩn được giới thiệu bởi Eberhat và Kennedy năm 1995, đã có nhiều nghiên cứu thực nghiệm nhằm nâng cao hiệu quả sử dụng của PSO. Các nghiên cứu tập trung vào hai hướng chính: thực nghiệm trên các tham số hoặc thực nghiệm trên các hàm mục tiêu [21], [22].

Các cải tiến với tham số lực quán tính

Một phần của tài liệu Hoạch định quỹ đạo cho robot di động dùng thuật toán PSO (Trang 31)