Saturday, January 19, 2008

An Essential Note on Parallel Programming

Newer machines will not execute the conventional applications faster. This means the programmers' free lunch is over. Programmers will need to change their ways - and this change is revolutionary rather than evolutionary - sequential programming which has been the most popular way to program may not scale in the future and has to be replaced by much more complex parallel programming. There is a possibility of an impending crisis in computing industry if the industry does not in time embrace parallel scalable programming.

See Essay by Dave Patterson: Parallel or Bust: Computing at a Crossroads for more. Follow up with View from Berkeley. A news article: Intel and Microsoft donate $20 Million to Two Universities for Multicore Research. Here is a presentation by David Patterson on What Future Apps May Be, How Research and Industry Can Work Together on Multicore Research and What is Possible.

My Research

I am interested in artificial intelligence, automated planning, parallel computing, multi-agent systems and optimization.

Right now I am working in a central field of Aritificial Intelligence called Automated Planning. Specifically, I am looking for ways to scale Planning on modern computers. In our lab, we also apply our Planning technology to story planning in games. I was previously a software developer and in the future want to apply AI as an entrepreneur. Only time can tell what I will do afterwards.

A Simple Overview of Artificial Intelligence

Artificial Intelligence is applied not only to robotics, but also corporate decision-making, building large-scale systems, operations research, medicine, computer games and many other fields. If mathematics is the queen of sciences, AI must be the queen of computer sciences. More on this soon ...

My Team's Research on Automated Planning

Automated Planning studies how an intelligent agent can combine actions in order to reach specified goals. An intelligent agent with ability to plan can "think ahead". Automated Planning systems have been used where human involvement is difficult or partial (like space missions, elderly assistance), or problems are quite complex (like composition of web-services) or little time is available before execution (like computer gaming, emergency evacuation). While previously most researchers studied planning for simplified toy problems, nowadays many researchers study how planning can be used in the real world.
In our lab, we are building a real-time, responsive AI Planning system (see: What is Planning?) affectionately called Crackpot. Our lab is headed by my supervisor Alexander Nareyek. Another team in our lab will use Crackpot for automated experience/story generation for games/training.

My Research

Modern computers are different from computers in the 20th century. They implement a large degree of parallelism; the parallelism is increasing every year. Software systems must be designed and implemented differently to run on these parallel computers. We study how real-time AI Planning can be implemented to effectively utilize the resources of these parallel computers.

Some Ideas on Entrepreurship

AI is much more in the books and labs than in the real-world applications. Decision Support, Case-Based Reasoning and Expert Systems have been widely used previously. However, planning and scheduling are largely unexplored areas till now.

Some Ideas to Stumble Upon Further in the Future

Agent-Based Simulations looks quite interesting. Large scale simulations of human/human-like agent communities can be carried out for purposes of hypothesis testing and prediction.

Sunday, January 13, 2008

What is Planning?

From the book Automated Planning by Ghallab et al:
Planning is the reasoning side of acting. It is a deliberation process that chooses and organizes actions by anticipating their expected outcomes. This deliberation aims at achieving as best as possible some prestated objectives. Automated Planning is an area of Artificial Intelligence (AI) that studies this deliberation process computationally.
As opposed to an ordinary control program, a Planning System or Planner would be more flexible and able to take advantage of opportunities in a dynamic environment. Usage of a Planner may also decrease cost in some situations due to lesser involvement of humans.

Here is an example scenario of planning:

When a robot Wall-e is asked to fetch a drink from the local store, it must internally generate a plan to reach the store, buy the drink and then return back home. While going out, when Wall-e identifies that the door of the room is closed, it must update the plan to include an action to open the door and close it on the way out.

Some real life applications of planning:
  • NASA used Autonomous Remote Agent system based on planning and scheduling techniques on board Deep Space mission. The Remote Agent was able to generate plans and execute high-level commands like “during the next period, take pictures of the following asteroids”.
  • Robot motion planning, and goal-directed planning
  • Process planning is the task of preparing detailed operating instructions for transforming an engineering design into a final product.
  • Autominder is a Planning, Monitoring and Reminding Assistive Agent for the Elderly.
  • Emergency evacuation planning
  • Simulated environments like training and games use goal directed planners.

Our Work

At Interactive Intelligence Lab we are building a widely applicable real time, dynamic and efficient planning system. The planning system will be first applied to Automated Story Generation in Computer Gaming.

See Also: AAAI Page on Planning and Scheduling