chlorochrule / mas

mas: A small framework to implement multi-agent systems.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

mas v1.0.0 documentation

mas.MAS

mas.MAS(cls)
cls : Agent, AgentGroup, Envクラスのいずれか.

Agent, AgentGroup, Envクラスのスーパークラス. このクラスのインスタンスを直接作ることはない. Agent, AgentGroup, Envクラスそれぞれのインスタンスに固有の識別番号をつける.
mas overview
このように複数の環境やエージェントグループを作っても, それぞれに固有の識別番号が振られる.

Attributes

  • name
    インスタンスの名前.インスタンス作成時にクラス名と識別番号で初期化される. 変更可能.

Methods

  • get_no(self)
    インスタンス固有の識別番号(1~)を返す関数.

ex.

agent = Agent()
agent.get_no()  #1

mas.Agent

mas.Agent(name=None)
name : エージェント*1の名前.

*1 Agentクラス(またはそのサブクラス)のインスタンス. 以下同様.

エージェントを表すクラス. 実際に使用するときはこのクラスを継承して必要な機能を追加する.

ex.

#mas.Agentを継承して新しいエージェントクラスを作る.
class NeoAgent(mas.Agent):
    #NeoAgent特有の機能や性質を記述する.

mas.AgentGroup

mas.AgentGroup(agents=None, name=None)
agents : エージェントグループ*2 に追加するエージェントまたはエージェントのリスト(タプル).
name : グループの名前.

*2 AgentGroupクラス(またはそのサブクラス)のインスタンス. 以下グループと表記.

エージェントのグループを表すクラス. 実際に使用するときはこのクラスを継承して必要な機能や性質を追加する. 属するエージェントをイテレート可能.len()関数で属するエージェントの数を取得できる.

ex.

#mas.AgentGroupを継承して新しいエージェントグループクラスを作る.
class NeoAgentGroup(mas.AgentGroup):
    #NeoAgentGroup特有の機能や性質を記述する.

#10人のグループを作成する.
neo_group = NeoAgentGroup(agents=[Agent() for _ in range(10)])
#10回繰り返す.
for agent in neo_group:
  agent.name  #エージェントの名前の取得.
len(neo_group)  #グループに属するエージェントの総数.

Attributes

  • agents
    属するエージェントのリスト. エージェントの追加や削除は直接行わずに後述する関数を使う.

  • removed_agents
    remove_agent()関数によってグループから削除されたエージェントのリスト.

Methods

  • set_label(self, label)/get_label(self)
    グループラベルのsetter/getter.グループラベルの詳細はこちら

  • add_agent(self, agents)
    agents : エージェントまたはエージェントのリスト(タプル).
    受け取ったエージェントagentsをグループに追加する関数. mas.AgentGroup.agentsを直接操作せずにこの関数を用いる.

  • remove_agent(self, agents)
    agents : エージェントまたはエージェントのリスト(タプル).
    受け取ったエージェントagentsをグループから削除する関数. mas.AgentGroup.agentsを直接操作せずにこの関数を用いる.

  • is_existing_agent(self, agent_no)
    agent_no : エージェントの識別番号または識別番号のリスト(タプル).
    Return : bool(True or False)
    agent_noで与えられた識別番号を有するエージェントがグループに属するかを判定し, 属する場合はTrueを返す.識別番号agent_noがリスト(タプル)で与えられた場合は, それぞれの識別番号を有するエージェントがすべてグループに属する場合にTrueを返す. それ以外はFalseを返す.

  • get_all_agent_no(self, excep=None)
    excep : エージェントまたはエージェントのリスト(タプル).
    Return : エージェントの識別番号のリスト.
    グループに属するエージェントのうち, excepで除外したエージェント以外のすべてのエージェントの識別番号を取得する関数.

  • get_all_agents(self, excep=None)
    excep : エージェントまたはエージェントのリスト(タプル).
    Return : エージェントのリスト.
    グループに属するエージェントのうち, excepで除外したエージェント以外のすべてのエージェントを取得する関数.

  • get_agents_rand(self, num=1, excep=None)
    num : 整数(int)
    excep : エージェントまたはエージェントのリスト(タプル).
    Return : エージェントのリスト.
    グループに属するエージェントのうち, excepで除外したエージェント以外のすべてのエージェントの中から, 無作為にnum個のエージェントを取得する関数.

mas.Env

mas.Env(groups=None, labels=None, name=None)
groups : 環境*3 に追加するグループまたはグループのリスト(タプル).
labels : グループラベル*4またはラベルのリスト
name : 環境の名前.

*3 Envクラス(またはそのサブクラス)のインスタンス. 以下同様.

*4 環境に属するAgentGroupクラス(またはそのサブクラス) のインスタンスにつけられたエイリアス.例えば環境クラスのインスタンスをenv, 環境クラスに属するグループgroup1のグループラベルを'g1'とした場合,env.g1group1にアクセスすることができる.グループラベルは文字列(str)で与えられる. 以下ラベルと表記.

環境を表すクラス. 実際に使用するときはこのクラスを継承して必要な機能や性質を追加する. 属するグループをイテレート可能.len()関数で属するグループの数を取得できる.

ex.

#mas.Env
class NeoEnv(mas.Env):
    #NeoEnv特有の機能や性質を記述する.

#10人のグループを作成する.
ag1 = AgentGroup(agents=[Agent() for _ in range(10)])
#20人のグループを作成する.
ag2 = AgentGroup(agents=[Agent() for _ in range(20)])
#ag1とag2のグループが属する環境を作成する.
neo_env = NeoEnv(groups=[ag1, ag2], labels=['ag1', 'ag2'])
neo_env.ag1  #neo_envに属するグループag1
#2回繰り返す.
for group in neo_env:
  group.name  #グループの名前の取得.
len(neo_env)  #環境に属するグループの総数.

Attributes

  • groups
    属するグループのリスト. グループの追加や削除は直接行わずに後述する関数を使う.

  • removed_groups
    remove_group()関数によって環境から削除されたグループのリスト.

Methods

  • set_label(self, group, label)
    group : グループ
    label : ラベル(str)
    グループgroupにラベルlabelを追加する関数.これにより, groupオブジェクトにlabelのエイリアスでアクセス可能となる.

  • add_group(self, groups)
    groups : グループまたはグループのリスト(タプル).
    受け取ったグループgroupsを環境に追加する関数. mas.AgentGroup.groupsを直接操作せずにこの関数を用いる.

  • remove_agent(self, groups)
    groups : グループまたはグループのリスト(タプル).
    受け取ったグループgroupsを環境から削除する関数. mas.AgentGroup.groupsを直接操作せずにこの関数を用いる.

  • is_existing_group(self, group_no)
    group_no : グループの識別番号または識別番号のリスト(タプル).
    Return : bool(True or False)
    group_noで与えられた識別番号を有するグループが環境に属するかを判定し, 属する場合はTrueを返す.識別番号group_noがリスト(タプル)で与えられた場合は, それぞれの識別番号を有するグループがすべて環境に属する場合にTrueを返す. それ以外はFalseを返す.

  • get_all_group_no(self, excep=None)
    excep : グループまたはグループのリスト(タプル).
    Return : グループの識別番号のリスト.
    環境に属するグループのうち, excepで除外したグループ以外のすべてのグループの識別番号を取得する関数.

  • get_all_groups(self, excep=None)
    excep : グループまたはグループのリスト(タプル).
    Return : グループのリスト.
    環境に属するグループのうち, excepで除外したグループ以外のすべてのグループを取得する関数.

  • get_all_agents(self, excep=None)
    excep : エージェントまたはエージェントのリスト(タプル).
    Return : エージェントのリスト.
    環境に属するエージェントのうち, excepで除外したエージェント以外のすべてのエージェントを取得する関数.

  • get_agents_rand(self, num=1, excep=None)
    num : 整数(int)
    excep : エージェントまたはエージェントのリスト(タプル).
    Return : エージェントのリスト.
    環境に属するエージェントのうち, excepで除外したエージェント以外のすべてのエージェントの中から, 無作為にnum個のエージェントを取得する関数.

mas.MasException

mas.MasException(e)
e : エラーメッセージ(str)

マルチエージェントシステムの仕様に関するエラーのための例外クラス. 実際に使うときにはこのクラスを継承して新しい例外クラスを作り, そこに処理を記述する.

About

mas: A small framework to implement multi-agent systems.


Languages

Language:Python 100.0%