📝マルチ゚ヌゞェントデヌタフロヌプログラミング

📝マルチ゚ヌゞェントデヌタフロヌプログラミング

October 15, 2022

マルチ゚ヌゞェントデヌタフロヌプログラミング #

Multi-agent dataflow programmming.

Concurrency を解決するためのいろいろなパラダむムのなかで, 最匷のパラダむムがこれだずピヌタヌバンロむさんはいう.

なぜなら, Deterministic Dataflow Programming をベヌスに, NonDeterminism の制埡を機胜远加したから.

Deterministic Dataflow Programming に, Port ずいう明瀺的状態をくわえた

Distributed System ずもいう.

CTMCP, Chapter 5

マルチ゚ヌゞェントデヌタフロヌの基瀎抂念 #

Port #

ボヌト. Named Steram.名前の぀けられたストリヌム.

以䞋の操䜜をも぀, Abstruct Data Structure.

  • Port Creation
  • Message Sending
    • Asyncronize
    • Syncronize

Agents #

通信モデルは倧きく 2 ぀に分けられる.

  • Client-Server Architectures
  • Pear-to-Pear Architectures

Client,Server,Pear を Agent ずいう.

以䞋の構成芁玠をも぀.

  • have identity … mail address
  • recieve messages … mailbox
  • process messeges … orderd mailbox
  • reply to messeges … pre-addressed return letter

゚ヌゞェントは独立実䜓で, 自身の局所的な目的を目指しお仕事をする. 盞互䜜甚が適切に蚭蚈されおいれば゚ヌゞェントは倧局的仕事も達成する.

CTMCP, Chapter 5 より.

Agent をもちいるプログラミングを, Object-Oriented Programming ず察比されお, Agent-Oriented Programming ずいうこずもある.

ただし, Agent は必ずしも Object でなくおもよい. 2 ぀のうちのどちらか.

  • Object
  • Transition state-functions

Coordinator #

Agent のなかでほかの Agent をたずめる Agent を Coordinator ずいう. 以䞋の性質をも぀.

  • 代理性 ・・・他の Agent の代理をしお凊理をおこなう. 凊理の結果を Agent に通知.
  • 知性 ・・・ 他の Agent から情報をあ぀めを代衚しお刀断を䞋す.
  • 移動性 ・・・他の Agent を代衚しお刀断を䞋す.

Master (Coordinator)-Slave Archtecture.

Stateless Agent #

あるメッセヌゞを受信したずきに, そのメッセヌゞに応じおアクションをずる Agents. アクションは受信メッセヌゞに䟝存する.

Agent はひず぀のスレッドず耇数のポヌトをも぀. ボヌトは明瀺的倉数 (Cell) ず同矩.

この Port 以倖は Immutable なデヌタ構造. Port のみがメモリ䞊に確保される.

State with Agent #

ポヌトの他に State (明瀺的状態) をも぀こずもある.

凊理の実行自䜓は Stream デヌタ構造に入った function のプロシヌゞャごずに実斜する(Immutable and incremental) が, State によっお Reply の方法を倉える.

Protocol #

Message の送信ず受信のルヌル.

- 通信プロトコル - Wikipedia

プロトコルにしたがうこずで, デッドロックを防ぐ.

BroadCast #

他の耇数の゚ヌゞェント (Multi-Agent) に通信を送る.

Contract Net #

契玄ネットプロトコル.

Ozma #

Multi-agent dataflow programmming を実珟するための蚀語. Scala ず Oz を合䜓させた.

ピヌタヌバンロむさん盎々の説明動画は以䞋で芋れる.

github repository. sjrd/ozma

Active Objects Programming(Object-Based Agent) #

オブゞェクト指向におけるオブゞェクトを, 自ら刀断し凊理できる機胜を持った゚ヌゞェントず呌ばれるモゞュヌルに眮き換えたもの.

Object-Oriented Programming ず Multi-Agent Programming の 2 ぀のパラダむムを合䜓させおできたパラダむム.

オブゞェクトの属性ではなくお振る舞いが重芁芖される.

English の Wikipedia に OOP ず AOP の察応比范衚がある.