Skip to main content

AI Planning Tree Search Algorithm for Missionary And Cannibal Problem in Java

I have been doing AI Planning course and I decided to implement the first basic problem in Java. To implement this, i tried to create the algorithm with right level of abstractions so that it can be applied to any problem in future.

Some take aways in my package structure is that, I have maintained all the generic reusable code in definitions package and problem specific code in monkcannibal package.

To solve the problem, I have implemented State which had successor method, IProblem which defined the problem to solve and IStrategy which defined the strategy to take for state transition. Here I have used two strategies for tree travesal, breadth first search aka, BFS and Depth First Search, aka DFS.

The code is available on github at: https://github.com/biplav/aiplanning

The main file is : com.biplav.aiplanning.problems.monkcanibbal.MissionaryCannibalPlan.java


And the output is:

1:L->3m1cfalseboat R->0m2ctrueboat
2:L->3m2ctrueboat R->0m1cfalseboat
3:L->3m0cfalseboat R->0m3ctrueboat
4:L->3m1ctrueboat R->0m2cfalseboat
5:L->1m1cfalseboat R->2m2ctrueboat
6:L->2m2ctrueboat R->1m1cfalseboat
7:L->0m2cfalseboat R->3m1ctrueboat
8:L->0m3ctrueboat R->3m0cfalseboat
9:L->0m1cfalseboat R->3m2ctrueboat
10:L->1m1ctrueboat R->2m2cfalseboat
11:L->0m0cfalseboat R->3m3ctrueboat
Time consumed is 3
1:L->2m2cfalseboat R->1m1ctrueboat
2:L->3m2ctrueboat R->0m1cfalseboat
3:L->3m0cfalseboat R->0m3ctrueboat
4:L->3m1ctrueboat R->0m2cfalseboat
5:L->1m1cfalseboat R->2m2ctrueboat
6:L->2m2ctrueboat R->1m1cfalseboat
7:L->0m2cfalseboat R->3m1ctrueboat
8:L->0m3ctrueboat R->3m0cfalseboat
9:L->0m1cfalseboat R->3m2ctrueboat
10:L->0m2ctrueboat R->3m1cfalseboat
11:L->0m0cfalseboat R->3m3ctrueboat

Time consumed is 1

Popular posts from this blog

Watch Live cam on Google!!!!!

Ahhh!!! type certain string in google search bar above and it would bring up the network live cam into your browser. These can be anything from CCTV or webcams... There are lots of string.. i suggest a few down below use them to begin with.. And do come up with your own.. and leave a comment to the post... And ya.. if u come up with something interesting then don forget to share it.. Strings::: Axis cameras: "adding live video to one of your own pages a very easy task with an AXIS 2100 Network Camera" ' google ' intile:"Live view - / - AXIS" ' google ' "Your browser has JavaScript turned off.For the user interface to work effectively" ' google ' inurl:indexFrame.html axis ' google ' "Live web imaging unleashed" ' google ' MOBOTIX cameras: (intext:"MOBOTIX M1" | intext:"MOBOTIX M10") intext:"Open Menu" Shift-Reload ' google ' JVC cameras: "(c)copyright 199...

Problems with mysql.sock

Sometimes while working on Linux, mysql.sock may get deleted by mistake due to some softwares.. in such cases any access to mysql wont be possible as the sock file defines the socket connection for mysql. It will give an error of the following type: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) In such cases follow these steps to reconfigure mysql: Delete the log files with the names: ib_logfile0, ib_logfile1 and ibdata1 in the /var/lib/mysql directory Then type: "mysqld_safe --user=mysql &" This will automatically create mysql.sock file and even the new logs files. This is a very simple solution which I used recently and decided to share with you people.

Universal Xp serial key

The key given below is the universal serial key for Windows Xp.. It can by pass any windows xp cd and make your copy genuine. Do try it!!! V2C47-MK7JD-3R89F-D2KXW-VPK3J