All Projects → CarsonScott → Openagent

CarsonScott / Openagent

An agent library for systems of nested automata.

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Openagent

Habitat
Modern applications with built-in automation
Stars: ✭ 2,334 (+8235.71%)
Mutual labels:  automation, distributed-systems
Odin
A programmable, observable and distributed job orchestration system.
Stars: ✭ 405 (+1346.43%)
Mutual labels:  automation, distributed-systems
Gaia
Build powerful pipelines in any programming language.
Stars: ✭ 4,534 (+16092.86%)
Mutual labels:  automation, distributed-systems
Ferret
Ferret is a free software lisp implementation for real time embedded control systems.
Stars: ✭ 878 (+3035.71%)
Mutual labels:  embedded-systems
Grind
Configure and maintain your machine
Stars: ✭ 14 (-50%)
Mutual labels:  automation
Git Push Deploy
Simple Automated CI/CD Pipeline for GitHub and GitLab Projects
Stars: ✭ 21 (-25%)
Mutual labels:  automation
Quip Export
Export all folders and documents from Quip
Stars: ✭ 28 (+0%)
Mutual labels:  automation
Gsc
Run guided scripts for command line demos.
Stars: ✭ 13 (-53.57%)
Mutual labels:  automation
Fastlane
🚀 The easiest way to automate building and releasing your iOS and Android apps
Stars: ✭ 33,382 (+119121.43%)
Mutual labels:  automation
Hass Components
My Home Assistant custom components
Stars: ✭ 21 (-25%)
Mutual labels:  automation
Aws Auto Terminate Idle Emr
AWS Auto Terminate Idle AWS EMR Clusters Framework is an AWS based solution using AWS CloudWatch and AWS Lambda using a Python script that is using Boto3 to terminate AWS EMR clusters that have been idle for a specified period of time.
Stars: ✭ 21 (-25%)
Mutual labels:  automation
Wildfire Knx Stack
KNX/EIB Stack.
Stars: ✭ 14 (-50%)
Mutual labels:  embedded-systems
Phantomjs
Scriptable Headless Browser
Stars: ✭ 28,654 (+102235.71%)
Mutual labels:  automation
Create Component App
Tool to generate different types of React components from the terminal. 💻
Stars: ✭ 879 (+3039.29%)
Mutual labels:  automation
Duckietv
A web application built with AngularJS to track your favorite tv-shows with semi-automagic torrent integration
Stars: ✭ 942 (+3264.29%)
Mutual labels:  automation
Lasp
Prototype implementation of Lasp in Erlang.
Stars: ✭ 876 (+3028.57%)
Mutual labels:  distributed-systems
Huginn
Create agents that monitor and act on your behalf. Your agents are standing by!
Stars: ✭ 33,694 (+120235.71%)
Mutual labels:  automation
Tdarr
Tdarr - Distributed transcode automation using FFmpeg/HandBrake + Audio/Video library analytics + video health checking (Windows, macOS, Linux & Docker)
Stars: ✭ 911 (+3153.57%)
Mutual labels:  automation
Wdio Workshop
WebdriverIO Workshop
Stars: ✭ 20 (-28.57%)
Mutual labels:  automation
Gocertcenter
CertCenter API Go Implementation
Stars: ✭ 21 (-25%)
Mutual labels:  automation

A Multi-Agent System for Hierarchical Control

Agents

An agent is a system of memory and a set of actions, where the actions are functions that manipulate memory, and the functions are agents that are stored in a set.

Oligarchies

Stored agents are considered to be subordinates of the higher agent. Their interactions mimic that of a manager-employee relationship, where the manager's job is to delegate tasks to employees, whose job it is to carry out those tasks and report back when finished. In a sense, agents are given "tasks" when a higher agent calls their functions, and "report back" when it receives their outputs. Therefore superagents control the behavior of subagents, along with their access to information.

Control

This allows control over multiple layers. The top-level supervisor controls its direct subordinates, which triggers a wave of activity that propagates to the lowest level. an agent receives inputs from a supervisor to store in memory. Each subagent is given a subset of memory, which starts the process over again.

This happens recursively until bottom-level output is received by their supervisors. Now activity propagates upward, and eventually reaches the top-level agent where a single output is produced and sent to the environment.

A Formal Language for Nested Automata

Notation

DOT (DO-OF-TO) notation is a phrase structure that reflects mathematical functions> A function f(x) -> y is written as:

.f[x]:y

The letters x and y are stored variables, and f is a function. The brackets immediately following f are the parameters. In this case, f receives one parameter x.

Grammar

A period signals that a new statement is starting. A colon indicates that a value (left of symbol) is being stored in memory (right of symbol).

Example- Custom agent that returns the sum of two inputs

Custom Agent

First, include the module in your file:

    import OpenAgent as oa

Create an agent and set the memory size:

    ca = oa.CustomAgent(3)

Define elements of memory to hold the input/output values:

    ca.add_input(0)
    ca.add_input(1)
    ca.add_output(2)

Store sub-agents to call their functions:

    b = oa.Add()
    ca.add_agent(b)

Store statements to convert into actions:

    a = ".0[0,1]:2"
    ca.add_action(a)

Calculate results:

    x = [27, 81]
    y = ca.f(x) 
    
    # Output: [108] 
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].