Skip to content

Instantly share code, notes, and snippets.

@ssardina
Last active December 25, 2022 21:47
Show Gist options
  • Save ssardina/d499abaebfd625d68ac10e4c2f668840 to your computer and use it in GitHub Desktop.
Save ssardina/d499abaebfd625d68ac10e4c2f668840 to your computer and use it in GitHub Desktop.
Get Started on...

Get Started on...

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.

1. Automated Planning

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:

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.\
  • 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.
    • The library includes a number of Width/Novelty-based planning systems (SIW). Thoe library ignores cost by default, but one can switch-off the ignore-cost flag, making sure that the main.cxx of the planner doesn't set this flag to true: ff-parser and fd-parser

2. Agent-oriented Programming

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:

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.

  1. 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.
  2. If you succeed with this application, then jump to the more ambitious Agents in City domain and run this SARL core system.

Systems

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.

Applications

  • 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.

3. Behavior Composition

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.

Composition and Manufacturing

Some related papers in the problem of manufacturing:

Implementations

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

4. Reactive Synthesis

  • 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.

5. Goal/Intention Recognition

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:

And this paper deals with the problem of deception, the dual of goal recognition:

Prolog

@alexa1829
Copy link

@ssardina
Copy link
Author

missing https://writerzingo.com/

Sorry, no commercial systems here; only open-source & research-oriented material.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment