Giải thuật A*

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

Giải thuật A* thực hiện việc tìm kiếm đầy đủ và tối ưu đường đi với chi phí thấp trong biểu đồ có hướng với các cạnh có trọng sốkhông âm. Đây là giải thuật được cải tiến từ thuật toán Dijkstra.

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

22

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

Giải thuật A* được sử dụng với mục đích tìm kiếm một đường đi ngắn nhất giữa hai điểm, nếu tồn tại. Với một bản đồ các điểm, đường đi ngắn nhất qua các điểm có thể tìm được bằng cách sử dụng các giải thuật tìm kiếm dựa vào ô lưới chuẩn như là giải thuậtDijkstra, A*. Giải thuật A* là sự cải thiện của giải thuật Dijkstra nó thực hiện việc tìm kiếm đầy đủ và tối ưu đường đi ngắn nhất giữa hai ô lưới trong biểu đồ có hướng với trọng số không âm. Hình 2.13 trên mô tả bản đồ và đường đi của thuật toán A*.

Trong không gian làm việc 2D được miêu tả là bản đồ các ô lưới có kích thước cố định đó, sự di chuyển trong mỗi ô lưới được giảm còn 8 hướng, đường ngang và đường chéo, khoảng cách đường đi của những cạnh ứng với mỗi hướng là a và 2a. Hình 2.14 mô tả kích thước hình học giữa các ô lưới, với nút được đặt tại trọng tâm củaa ô. Nếu khích thước cạnh của ô lưới là a thì khoảng cách giữa hai nút a và theo đường chéo là 2a.

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

23

Hình 2.14. Khoảng cách giữa các ô l ới

Một hàm trọng số f = g+h được sử dụng để sắp đặt hàng đợi, với glà chi phí thực tế từ nút nguồn cho đến nút hiện tại và h là heuristic. Trong trường hợp này hàm heuristic là: || | | || * |) | |, min(| 2a x y a x y h        (2.20)

Với a là chiều dài của cạnh, xlà khoảng cách giữa nút hiện tại và nút mục tiêu theo trục x, ylà khoảng cách giữa nút hiện tại và nút mục tiêu theo trục y. Giải thuật tìm kiếm A* tỏa ra từ nút bắt đầu, mở rộng sang nhữngnút lân cận trong phạm vi những đường viền của giá trị f tăng cho đến khi nút mục tiêu được tìm thấy hoặc tất cả vị trí trống lân cận đã hết mà giải thuật khai báo không tìm thấy đường đi.

Giải thuật trả lại kết quả đường đi với chi phí thấp nhất là:

        1 1 2 1 2 1 ) ( ) ( n i i i i i x y y x J (2.21)

Trong đó xi,yi là tọa độ của những điểm đường đi, n là số nút.

Trong thực hiện giá trị hàm f được tính là f=g+k*h, trong đó klà một hằng số tỉ lệ, được dùng để đạt được giải pháp tính toán nhanh hơn.

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

24

Mô tảthuật toán

1. Đặt nút gốc lên một danh sách gọi là OPEN

2. Tìm trên OPEN nút với chi phí f thấp nhất và đặt nút này là nút hiện tại. Chi phí của mỗi nút trên OPEN được tính theo công thức f(n)=g(n)+h(n).

3. Đặt nút đã tìm được ở bước 2 (nút hiện tại) lên danh sách CLOSED. 4. Với mỗi nút kế cận nút hiện tại:

a. Nếu nó không nằm trên OPEN hay CLOSED hay ô vật cản thì đặt nó lên OPEN. Tính chi phí và tạo thành nút hiện tại như là nút cha của nó.

b. Nếu nó là nút trên OPEN, kiểm tra nếu đường đi này tốt hơn và thay đổi nút cha cho nút này.

c. Dừng lại nếu nút mục tiêu được thêm vào CLOSED (đã tìm được đường đi) hay nút mục tiêu không nằm trên CLOSED và OPEN là rỗng (không tìm được đường đi)

5. Trở lại bước 2.

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