Skip to content

FreeYourSoul/Fabko

Repository files navigation

Build Linux Codacy Badge

FabKo

Free Agent Board operative is an agent / blackboard library that enables distributed resolution of a problem among Agents.

Introduction

Fabko is a library that some to make it easy to create agent that interoperates via customizable communication medium ( peer-to-peer, centralised server based, distributed etc...).

Those agent will be able to register their capability to an agent node called a "peerboard" node. The agent will then be able to communicate through a blackboard generated each time an agent attempts to achieve a new action. And the agent is going to cooperate to find a solution to resolve that problem.

FABL (Free Agent Board Language)

Free Agent Board Language is the base of the FabKo library as it is a declarative language that makes it possible for an agent to describe the resources and the capabilities that it provides. Those can be aggregated among multiple agents to produce complex graphs. It is then possible to produce a request over this compiled graph to define if the agent can do an action or not. The compiled graph represents the blackboard on which each node can add their own descriptions of actions. The agent that holds the peerboard is the agent that aggregates all the capabilities of each agent to provide solutions.

The language is split into different sections: agent, capabilities.


all_different :: func (v) {
    for v1 in values { 
        for v2 in values {
            if v1 != v2 { 
                v1 != v2 
            }
        }
     }
}

board_size : int @parameter;

Coord :: struct {
    int : x
    int : y
};

alias Size = Coord;

Queen :: actor {
    pos : Coord
};

queens : Queen[board_size];

# minizinc style constraint
constraint all_different([q.x for q in queens]);
constraint all_different([q.y for q in queens]); 
constraint all_different([queens[i].y + 1 for i in 1 .. board_size]);
constraint all_different([queens[i].x + 1 for i in 1 .. board_size]); 

actor part of FABL

Here is an example of the 9 Queen problems using the actor syntax

About

Fabko : Free Agent Board Cooperative : A Agent/Blackboard library

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •