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ápPromotionvàDemotion đượ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)
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)
Đườ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 có
đ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)
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 S1 và S2. 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
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à x là SM, 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:
MÔ HÌNH LẬP KẾ HOẠCH PHÂN RÃ PHÂN CẤP