Áp dụng thuật toán POP cho bài toán

Một phần của tài liệu Nghiên cứu planning để giải bài toán xác định lộ trình (Trang 88 - 100)

2 VÍ DỤ

2.2.Áp dụng thuật toán POP cho bài toán

CHƯƠNG 5:

THUẬT TOÁN PARTIAL-ORDER- PLANNING (POP)

1 MÔ TẢ

1.1. Ý tưởng thuật toán

Thuật toán bắt đầu xử lí trên kế hoạch cục bộ nhỏ nhất đi dần đến kế

hoạch toàn cục bằng cách từng bước mở rộng kế hoạch. Ở mỗi bước mở

rộng, thuật toán tìm kiếm hành động kế tiếp và điều kiện tiên quyết để

thực hiện hành động đó. Nó ghi nhận liên kết nhân quả cho điều kiện tiên quyết mới thu được và giải quyết bất kì mâu thuẩn nào với các liên kết

đó. Bước mới có thể huỷ một liên kết đã tồn tại hoặc một bước đã tồn tại có thể huỷ một liên kết mới. Nếu tại vị trí nào đó, thuật toán không tìm thấy toán tử phù hợp hoặc không giải quyết được mâu thuẫn, bộ lập kế

hoạch phải quay về điểm lựa chọn trước đó. POP là thuật toán truy hồi, tìm kiếm qua không gian kế hoạch, thuật toán bắt đầu từ những mục tiêu cần thu được và đi lùi để tìm những toán tử mà từ đó thu được mục tiêu. Một khi nó đã tìm ra tất cả các điều kiện tiên quyết của tất cả các bước, thuật toán hoàn tất và tìm ra giải pháp. Đây là thuật toán đầy đủ và hoàn chỉnh, nếu bài toán có giải pháp thì thuật toán luôn tìm thấy các giải pháp này.

1.2. Chi tiết thuật toán

Sự lựa chọn một bước và một điều kiện tiên quyết trong SELECT- SUBGOAL không đápứng việc quay lui. Nguyên nhân các điều kiện tiên quyết không cần quản lí một cách thứ tự: quản lí c1, sau đó là c2 cũng như quản lí c2 và sau đó là c1. Vì vậy, có thể lấy một điều kiện tiên quyết và chuyển lên đầu mà không lo gì về việc quay lui. Việc làm này chỉ ảnh hưởng đến tốc độ chớ không ảnh hưởng gì đến khả năng tìm kiếm giải pháp. Phương phápPromotionDemotion được mô tả sau.

functionPOP(initial,goal,operators)returnsplan plan– MAKE-MINIMAL-PLAN(initial,goal)

loop do

ifSOLUTION?(plan)then returnplan

Sneed,c– SELECT-SUBGOAL(plan)

CHOOSE-OPERATOR(plan, operators,Sneed,c) RESOLVE-THREATS(plan)

end

functionSELECT-SUBGOAL(plan)returnsSneed,c

lấy một bước kế hoạchSneedtừ STEPS(plan) với điều kiện tiên quyếtcchưa thu được

returnSneed,c

procedureCHOOSE-OPERATOR(plan, operators,Sneed,c)

chọn một bướcSaddtừ những toán tử hay STEPS(plan) mà cóclà kết quả

ifkhông có bước như vậythen fail

thêm liên kết nhân quảSadd→c Sneedvào LINKS(plan) thêm ràng buộc thứ tựSaddp Sneedvào ORDERINGS(plan)

ifSaddlà một bước được thêm mới từ các toán tửthen

thêmSaddvào STEPS(plan)

thêmStart p Saddp Finishvào ORDERINGS(plan)

procedureRESOLVE-THREATS(plan)

for eachSthreathuỷ liên kếtSi→c Sjtrong LINKS(plan)do choosehoặc

Promotion: ThêmSthreat p Sivào ORDERINGS(plan) (adsbygoogle = window.adsbygoogle || []).push({});

Demotion: ThêmSj p Sthreatvào ORDERINGS(plan)

if not CONSISTENT(plan)then fail end

2 VÍ DỤ

Bộ lập kế hoạch bắt đầu với kế hoạch ban đầu trình bày các bước Start và Finish, và trong mỗi lần lập lại sẽ thêm vào một một bước nữa. Nếu điều này sẽ dẫn đến một kế hoạch không nhất quán, nó sẽ quay lui và cố gắng tìm một nhánh khác trong không gian tìm kiếm. Để giữ cho việc tìm kiếm

đúng trọng tâm, bộ lập kế hoạch chỉ quan tâm đến việc thêm những bước nhằm thu được điều kiện tiên quyết chưa có. Các causal link được dùng

để lưu vết điều này.

2.1. Mô tả bài toán

Xét bài toán đi siêu thị: mục tiêu cần đạt được là mua được sữa, chuối, máy khoan và mang chúng về nhà.

Hành động Go chỉ hành động đi từ nơi này đến nơi khác. Thứ hai, mô tả hành động Buy, mua một món hàng nào đó, bỏ qua vấn đề có tiền hay không.

Trạng thái ban đầu gồm: ở nhà, máy khoan bán ở cửa hàng phần cứng, chuối và sữa được bán ở siêu thị. Tất cả được định nghĩa bởi toán tử sau, vớiHWS là cửa hàng phần cứng vàSMlà siêu thị:

Op(ACTION:Start,EFFECT:At(Home)∧Sells(HWS,Drill)

Sells(SM,Milk),Sells(SM,Banana))

Trạng thái mục tiêu gồm: có máy khoan, có sữa, có chuối, và ở nhả. Chúng được định nghĩa bởi bướcFinish:

Op(ACTION:Finish,

PRECOND:Have(Drill)∧Have(Milk)∧ Have(Banana)∧

At(Home))

Op(ACTION:Go(there),PRECOND:At(here), EFFECT:At(there)∧¬At(here))

Op(ACTION:Buy(x),PRECOND:At(store)∧Sells(store,x), EFFECT:Have(x))

Bốn toán tử này được chứa trong cùng một nơi gọi là thư viện toán tử. Thư viện toán tử chứa tất cả các toán tử của bài toán.

Kế hoạch ban đầu của bài toán được mô tả theo dạng lược đồở hình 5.1.

2.2. Áp dụng thuật toán POP cho bài toán

Trong hình trên, có nhiều cách lựa chọn để giải quyết bài toán làm cho kế

hoạch ban đầu trở nên phức tạp. Một số chọn lựa có thể thực hiện và một số thì không. Khi ta phát triển giải pháp của bài toán, ta sẽ thấy rõ những lựa chọn đúng và những lựa chọn không đúng. Để đơn giản, ta bắt đầu với những lựa chọn đúng. Trong hình 5.2 (hình trên), ta chọn ba hành

động Buy để thu được ba điều kiện tiên quyết của hành động Finish. Vì thư viện toán tử chỉ chứa duy nhất một toán tử có thể thu được điều kiện tiên quyết của hành động Finish đó là Have(Drill), Have(Milk),

Have(Banana), At(Home). Do đó ta chỉ có một lựa chọn là hành động

Buy.

Start

Finish

At(Home)Sells(SM,Banana) Sells(SM,Milk)Sells(HWS,Drill)

Have(Drill)Have(Milk) Have(Banana)At(Home) (adsbygoogle = window.adsbygoogle || []).push({});

Đường in đậm trong hình là liên kết nhân quả. Ví dụ liên kết bên trái nhất trong hình có nghĩa là bước Buy(Drill) được thêm vào để thu được điều kiện tiên quyết Have(Drill) của bước Finish. Bộ lập kế hoạch sẽ chắc rằng điều kiện này được duy trì bằng cách bảo vệ nó: nếu một bước có thể xoá điều kiện Have(Drill) thì bước này không được chèn vào giữa bước Buy(Drill) và bước Finish. Các đường lợt trong hình thể hiện các ràng buộc thứ tự. Theo định nghĩa, tất cả các hành động đều bị ràng buộc sau hành động Start. Cũng vậy, tất cả các nguyên nhân đều được ràng buộc trước kết quả của chúng, vì vậy mỗi đường in đậm đều có một

đường lợt dưới nó.

Hình thứ hai trong hình 5.2 thể hiện ngữ cảnh sau khi bộ lập kế

hoạch chọn lựa để thu được điều kiện tiên quyết Sells bằng cách liên kết chúng với trạng thái ban đầu. Ở đây, bộ lập kế hoạch cũng không có sự

Start

Finis

Buy(Drill) Buy(Milk) Buy(Bananas)

At(s),Sells(s,Drill) At(s),Sells(s,Milk) At(s),Sells(s,Bananas)

Have(Drill),Havẹ(Milk),Have(Bananas),At(Home)

Start

Finish

Buy(Drill) Buy(Milk) Buy(Bananas)

At(HWS),Sells(HWS,Drill) At(SM),Sells(SM,Milk) At(SM),Sells(SM,Bananas)

Have(Drill),Havẹ(Milk),Have(Bananas),At(Home)

Hình 5.2 Hình trên: Kế hoạch cục bộ thu được ba trong số bốn điều kiện tiên quyết của

Finish. Những đường in đậm thể hiện liên kết nhân quả. Hình dưới: Giới hạn kế hoạch cục bộ bằng cách thêm các liên kếtđể thu được các điều kiện tiên quyếtSellscủa các bướcBuy.

chọn lựa nào khác, vì thư viện toán tử cũng chỉ có một toán tử cho phép thu được điều kiện tiên quyếtSellcủa toán tửBuy.

Cách tiếp cận của thuật toán POP giúp cải tiến hơn nhiều so với cách tiếp cận giải quyết bài toán. Trước tiên, ngoài tất cả những gì có thể mua, và tất cả những nơi có thểđến, chúng ta có thể chỉ chọn hành động Buyđúng và chỉ những nơi đúng, không lãng phí thời gian để xem xét những hành

động và những nơi khác. Sau khi đã chọn hành động, ta không cần quan tâm đến việc sắp thứ tự chúng: bộ lập kế hoạch thứ tự cục bộ có thể thực hiện điều này sau.

Hình 5.3 kế hoạch được mở rộng bằng cách chọn hai hành độngGo

để đi đến cửa hàng phần cứng và siêu thị, vậy, thu được điều kiện tiên quyếtAtcủa hành độngBuy.

Đến đây bộ lập kế hoạch có được nhiều thứ mà không cần phải thực hiện bất kì sự tìm kiếm nào. Sự tìm kiếm bắt đầu ởđây. Hai hành động Go

điều kiện tiên quyết chưa thu được, chúng tương tác qua lại lẫn nhau, vì agent không thể ở hai nơi cùng lúc. Mỗi hành động Go đều có điều kiện tiên quyết At(x), với x là nơi mà agent ở trước khi thực hiện hành động

Start

Finish

Buy(Drill) Buy(Milk) Buy(Bananas)

At(HWS),Sells(HWS,Drill) At(SM),Sells(SM,Milk) At(SM),Sells(SM,Bananas)

Have(Drill),Havẹ(Milk),Have(Bananas),At(Home)

Go(HWS) Go(SM)

At(x) At(x) (adsbygoogle = window.adsbygoogle || []).push({});

Go. Giả sử bộ lập kế hoạch cố thu được điều kiện tiên quyết của

Go(HWS) và Go(SM) bằng cách liên kết chúng với điều kiện At(Home) trong trạng thái ban đầu. Kết quả này trong kế hoạch thể hiện trong hình 5.4.

Tuy nhiên, điều này làm nảy sinh vấn đề. BướcGo(HWS) tạo ra điều kiện

At(HWS), nhưng xoá điều kiện At(Home). Vì vậy, nếu agent đi đến cửa hàng phần cứng, thì nó không thể đi từ nhà đến siêu thị được nữa. (Trừ

khi, bộ lập kế hoạch đưa ra một bước khác đi từ cửa hàng phần cứng về

nhà – nhưng ở đây chỉ có bước khởi đầu, không có bước nào khác thu

được điều kiện At(Home).) Cũng vậy nếu agent đi đến siêu thị trước tiên thì nó không thểđi từ nhà đến cửa hàng phần cứng.

Tới đây, ta đã tới ngõ cụt trong việc tìm kiếm giải pháp, nên phải quay trở lại và thử một lựa chọn khác. Điểm hay của thuật toán này là bộ

lập kế hoạch không tốn nhiều thời gian để biết kế hoạch cục bộ này không thành công. Mấu chốt là các liên kết nhân quả trong kế hoạch cục bộ là các liên kết được bảo vệ. Một liên kết được bảo vệ bằng cách đảm bảo rằng các mâu thuẩn được đưa lên trước hoặc sau nó. Mâu thuẩn là những bước có thể xoá (hoặc gạt bỏ) những điều kiện được bảo vệ.

Hình 5.5 thể hiện một mâu thuẩn và cách giải quyết nó.

Start

Finish

Buy(Drill) Buy(Milk) Buy(Bananas)

At(HWS),Sells(HWS,Drill) At(SM),Sells(SM,Milk) At(SM),Sells(SM,Bananas)

Have(Drill),Havẹ(Milk),Have(Bananas),At(Home)

Go(HWS) Go(SM)

At(Home) At(Home)

causal link S1→c S2 bị mâu thuẩn bởi bước mớiS3 vì kết quả củaS3 xoá

c. Cách để giải quyết mâu thuẩn này là thêm những ràng buộc thứ tự để

chắc rằng S3 không xen vào giữa S1S2. Nếu S3 được đặt trước S1 thì

được gọi là demotion (hình 5.5b) và nếu nó được đặt sau S2, nó được gọi là promotion (hình 5.5c).

Trong hình 5.4 không có cách nào để giải quyết mâu thuẩn mà mỗi bước Go đưa đến bước khác. Bất cứ bước Go nào thực hiện trước cũng xoá điều kiện At(Home) của bước còn lại. Khi bộ lập kế hoạch không thể

giải quyết mâu thuẩn bằng cách nâng cấp hay giáng cấp, nó sẽ bỏ kế

hoạch cục bộ và trở lại để thử một lựa chọn khác ở điểm trước nữa trong quá trình lập kế hoạch.

Giả sử lựa chọn tiếp theo là thử một cách khác để thu được điều kiện tiên quyết là At(x) của bước Go(SM), lần này bằng cách thêm một causal link từ Go(HWS) đến Go(SM). Nói cách khác, kế hoạch là đi từ

nhà đến cửa hàng phần cứng sau đó đi đến siêu thị. Điều này sinh ra một mâu thuẩn khác. Trừ khi kế hoạch được cải tiến hơn nữa, nếu không với kế hoạch này agent sẽ đi từ cửa hàng phần cứng đến siêu thị mà không mua máy khoan (điều này sẽ đặt ra câu hỏi tại sao nó đi đến cửa hàng

Hình 5.5 Bảo vệliên kết nhân quả. Hình (a), bướcS3huỷđiều kiện cđược tạo

nên bởiS1và được bảo vệ bởi causal link từS1đếnS2. Hình (b),S3được nâng lên trướcS1, và hình (c) nóđược hạ xuống sauS2.

S1 S3 S2 c ¬c (a) S2 S1 S3 c ¬c (b) S3 S2 S1 c ¬c (c)

phần cứng trước tiên). Tuy điều này có thể giống với hành vi của con người, nhưng ta muốn agent lập kế hoạch tránh sự đãng trí này. Vì, bước (adsbygoogle = window.adsbygoogle || []).push({});

Go(SM) sẽ xoá điều kiện tiên quyết At(HWS) của bước Buy(Drill), điều kiện này được được bảo vệ bởi causal link. Mâu thuẩn này được giải quyết bằng cách ràng buộc bước Go(SM) phải đến sau bước Buy(Drill). Hình 5.6 thể hiện kế hoạch cục bộ mới này.

Chỉ điều kiện tiên quyết At(Home) của bước Finish vẫn chưa thu được. Thêm bước Go(Home) sẽ thu được nó, nhưng điều này đòi hỏi thu được

điều kiện tiên quyếtAt(x). Các hướng giải quyết như sau:

• Nếu chúng ta cố gắng thu được At(x) bằng cách liên kết với

At(Home) ở trạng thái ban đầu, thì sẽ không có cách nào để giải quyết những mâu thuẩn tạo ra bởiGo(HWS) vàGo(SM).

• Nếu cố liên kếtAt(x) với bước Go(HWS), cũng không cách nào để

giải quyết mâu thuẩn phát sinh bởi bướcGo(SM), bước này bị ràng buộc phải đứng sau bướcGo(HWS).

Start

Finish

Buy(Drill) Buy(Milk) Buy(Bananas)

At(HWS),Sells(HWS,Drill) At(SM),Sells(SM,Milk) At(SM),Sells(SM,Bananas)

Have(Drill),Havẹ(Milk),Have(Bananas),At(Home)

Go(HWS) Go(SM)

At(Home) At(SWS)

Go(Home)

At(SM)

Hình 5.6. Sự bảo vệ liên kết nhân quả trong kế hoạch đi siêu thị. Liên kết

Go(HWS)At(HWS)→

Buy(Drill)được bảo vệbởi thứ tự bướcGo(SM) sau bướcBuy(Drill), và liên kết Go(SM)At →(SM) Buy(Milk/Bananas)được bảo vệ bởi thứ tựGo(Home) sau

• Liên kết từ Go(SM) đến At(x) có nghĩa là xSM, bây giờ bước

Go(Home) sẽ xoá điều kiện At(SM). Điều này lại tạo ra mâu thuẩn với điều kiện tiên quyết At(SM) của Buy(Milk) và Buy(Bananas), nhưng mâu thuẩn này có thể giải quyết bằng cách sắp Go(Home) sau những hành động Buy. (Hình 5.6).

Hình 5.7 thể hiện giải pháp hoàn chỉnh, với những bước được vẽ lại để

cho thấy các ràng buộc thứ tự trên chúng. Kết qủa này hầu như là một kế

hoạch trật tự tổng thể; chỉ có nhập nhằng giữa hai bước Buy(Milk) và

Buy(Bananas) bước nào trước cũng được.

Ta thấy rằng, với bài toán này, cách tiếp cận giải quyết bài toán cần rất nhiều trạng thái tìm kiếm, nhưng chỉ có vài trạng thái được sử dụng.

Start Buy(Drill) At(HWS),Sells(HWS,Drill) Buy(Milk) At(SM),Sells(SM,Milk) Buy(Bananas) At(SM),Sells(SM,Bananas) Finish

Havẹ(Milk),At(Home),Have(Bananas),Have(Drill) Go(HWS) At(Home) Go(SM) At(SWS) Go(Home) At(SM)

Thuật toán POPđã cải tiến vấn đề này rất nhiều. Theo nguyên tắc chuyển giao ít nhất, bộ lập kế hoạch chỉ cần tìm trong những không gian mà các kế hoạch con tương tác với nhau. Bên cạnh đó, các causal link cho phép bộ lập kế hoạch nhận ra khi nào cần bỏđi một kế hoạch thất bại để không lãng phí thời gian mở rộng những phần không liên quan của kế hoạch.

CHƯƠNG 6: (adsbygoogle = window.adsbygoogle || []).push({});

MÔ HÌNH LẬP KẾ HOẠCH PHÂN RÃ PHÂN CẤP

Một phần của tài liệu Nghiên cứu planning để giải bài toán xác định lộ trình (Trang 88 - 100)