This is mostly intended for students who are interested in doing some project under my supervision.
Over and over, I have students starting some project, either in their courses, as programming job, minor/honours thesis or just because they want to do it as volunteers, and they need to get started on some area of knowledge, such as planning, agent programming, knowledge base systems, etc.
So, in this document I will start collecting resources (papers, systems, videos, slides) to get started with some of the areas of research I do.
NOTE: These are just gentle introduction links, but you should most probable seek and read more stuff and more rigorous scientific papers. The links here are meant to be helpful as a starting points.
Automated Planning is a core AI technique to automatically synthesize goal-oriented plans (for a robot or a video game character). It is a type of program synthesis.
Information, documentation, and link to planning systems and tools can be found here.
To get started I recommend first reading:
- Artificial Intelligence Planning with STRIPS, A Gentle Introduction
- Malte Helmert's An Introduction to PDDL slides.
- Russell&Norving Modern Approach to AI, Chapter 11.
- Video - Tutorial: Introduction to AI Planning ((Amanda Coles, EASSS 2013): Part 1 & Part 2
And then playing with this tools and systems:
- Planning.Domains: A collection of tools for working with planning domains. In particular, it includes a powerful PDDL online editor in which you can build your PDDL files, solve them, and even import any domain+problem from different benchmarks and datasets.
- A video explaining the editor until 1:30
- PDDL extension for VSCODE: very powerful extension for Visual Studio Code IDE.\
- The GitHub repo for the extension can be found here
- As of August 2019, the planner used on it is SIW Plus-then-BFS with FF parser from LAPTK.
- Editor at planning.domains: an cloud-based editor with many features at planning.domains
- Madagascar SAT planner: Planning using Satifsability (SAT). The paper Madagascar: Scalable Planning with SAT explains the three different implementations of Madagascar (M, Mp, MpC).
- Planners @ LAPKT: Lightweight Automated Planning Toolkit. Also see Wiki. It contains a collection of planners that can be compiled and used almost on-the-spot. It supports some planners on both the FF parser and the (more involved) FD parser. Check the various planners here.
Agent-oriented programming is a further abstraction of object-oriented programming aimed to provide better development of software that is meant to control complex systems, like smart houses, UAVs, autonomous robots, or characters in video game. As with object-oriented programming, it does not provide more expressivity, everything that can be done with agent-oriented systems can be done with object-oriented, with standard imperative non-object programming, and even in assembler! So it is all about convenient abstractions!
This is how I suggest one can start with AO-programming.
First, read some general descriptions about Software Agents, Agent-oriented Programming, and the BDI Agent Model, a particular useful approach to agent-oriented modeling & programming.
Then, if you want to get a bit more technical and "researchy", here are some seminal papers:
- Michael Wooldridge Nicholas Jennings. Agent Theories, Architectures, and Languages: A Bibliography. ATAL 1995: 408-431.
- Michael E. Bratman, David J. Israel, Martha E. Pollack. Plans and Resource-Bounded Practical Reasoning. Computational Intelligence, Vol. 4, No. 3. (1988), pp. 349-355.
- A Survey of Agent-Oriented Programming: From Program Models to Programming Languages and Environments
- An Abstract Architecture for Rational Agents - KR92
- Sebastian Sardina and Lin Padgham. A BDI agent programming language with failure recovery, declarative goals, and planning. Autonomous Agents and Multi-Agent Systems, 23(1):18-70, 2011.
After havng an idea of what agent-oriented programming is, you can get your hands dirty and run some systems. As of 2019, my favourite agent language and platform is SARL, which is not per se a full-fledged agent language and it is not BDI-type, but more of an event-driven programming platform with agency features and extension capabilities.
- So, the first system I would recommend is the SARL controller for the Elevator Simulator. This repo contains a base framework for controling elevators in a building. Try to run the system as is first, and then see if you can do some changes to the base controller. There is a pure SARL-Java based controller and one that uses SWI Prolog for maitaning the knowledge base of the system. If you want to get serious about it, just do this project.
- If you succeed with this application, then jump to the more ambitious Agents in City domain and run this SARL core system.
Some agent programming and execution systems:
- SARL Agent Programming Language and Development Platform:
- Rodriguez, S., Gaud, N., & Galland, S. (2014). SARL: a general-purpose agent-oriented programming language. In the 2014 IEEE/WIC/ACM International Conference on Intelligent Agent Technology. Warsaw, Poland: IEEE Computer Society Press.
- SARL documentation: http://www.sarl.io/docs/index.html
- Ping-Pong Tutorial: a simple agent-based application in which agents are exchanging basic messages. Very good to start learning SARL hands-on.
- JADEX
- JACK
- JASON: One of the most well-known BDI implementations of AgentSpeak. Its GitHub repo can be found here.
- Jyson: A Jason version in Python.
- The Elevator Simulator provides a server-type domain for controlling a set of elevators. This is probably an excellent application to start understading agent oriented programming and SARL.
- A basic SARL controller can be obtained here as a base to develop complex controllers. It uses the SARL Middleware.
- There is also a controller written in JASON agent language here and one using just A* algorithm here and a Python-based client to interact with the simulator server here.
- The International Multi Agent Contest is a series of dynamic domains in the form of competitive games. The idea is to develop an intelligent agent system that is able to play these games effectively and show that agent oriented programming provides benefit wrt standard object oriented programming.
- To me, the best domain so far for agent programming is Agents in City.
While this work started early 2000, probably the first comprehensive paper to read is this one:
- Giuseppe De Giacomo, Fabio Patrizi, and Sebastian Sardina. Automatic behavior composition synthesis. Artificial Intelligence Journal, 196:106-142, 2013.
There are then a few other papers extending the core framework. And then we arrive to agent planning programs:
- Giuseppe De Giacomo, Alfonso Gerevini, Fabio Patrizi, Alessandro Saetti, and Sebastian Sardina. Agent planning programs. Artificial Intelligence, 231:64--106, 2016.
A whole 5 day course on the topic can be found here.
Some related papers in the problem of manufacturing:
- L de Silva, P Felli, JC Chaplin, B Logan, D Sanderson, S Ratchev. Synthesising industry-standard manufacturing process controllers. Proceedings of the 16th Conference on Autonomous Agents and MultiAgent Systems, 2017
- L de Silva, P Felli, JC Chaplin, B Logan, D Sanderson, S Ratchev. Realisability of production recipes. Proceedings of the Twenty-second European Conference on Artificial Intelligence, 2016
- JC Chaplin, OJ Bakker, L de Silva, D Sanderson, E Kelly, B Logan, SM Ratchev. Evolvable assembly systems: a distributed architecture for intelligent manufacturing. IFAC-PapersOnLine, 2015
- Paolo Felli, Lavindra de Silva, Brian Logan, Svetan M. Ratchev. Process Plan Controllers for Non-Deterministic Manufacturing Systems. IJCAI 2017: 1023-1030
One simple Java-based system to do composition is Allegro
However, the idea is to use symbolic systems, like NuGAT, TLV or Slugs to do composition, as explicit approaches will not be able to cope with large problems.
https://bitbucket.org/ssardina-research/allegro-composer
- Sebastian Sardina and Nicolas D'Ippolito. Towards fully observable non-deterministic planning as assumption-based reactive synthesis. In Proceedings of the International Joint Conference on Artificial Intelligence (IJCAI), pages 3200--3206, 2015.
This is the problem of "guessing" what the intention or goal of another agent is, by observing its behavior, or part of it. We use here a planning-based approach, rather than the more traditional plan-library one. That approach was pioneer by Ramirez and Geffner in 2009-2010:
- Miquel Ramírez, Hector Geffner: Plan Recognition as Planning. IJCAI 2009: 1778-1783
- Miquel Ramírez, Hector Geffner: Probabilistic Plan Recognition Using Off-the-Shelf Classical Planners. AAAI 2010
The following paper builds on top of the Ramirez and Geffner 2010's paper and is a good one to read overall to get a whole overview of the problem and solution:
- Peta Masters, Sebastian Sardiña: Cost-Based Goal Recognition in Navigational Domains. Journal of Artificial Intelligence research (JAIR) 64: 197-242 (2019)
And this paper deals with the problem of deception, the dual of goal recognition:
- Peta Masters, Sebastian Sardiña: Deceptive Path-Planning. IJCAI 2017: 4368-4375
missing https://writerzingo.com/