pbesa 2.1__py3-none-any.whl → 4.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- pbesa/__init__.py +4 -3
- pbesa/cognitive.py +475 -0
- pbesa/kernel/__init__.py +4 -6
- pbesa/kernel/adapter.py +165 -0
- pbesa/kernel/agent.py +558 -0
- pbesa/kernel/io/__init__.py +2 -2
- pbesa/kernel/io/system_file.py +38 -0
- pbesa/kernel/io/tcp_server.py +23 -0
- pbesa/kernel/util.py +217 -0
- pbesa/kernel/world.py +43 -0
- pbesa/mas.py +565 -0
- pbesa/remote/__init__.py +5 -0
- pbesa/remote/adm_listener.py +44 -0
- pbesa/{middleware/remote/AdmListenerHandler.py → remote/adm_listener_handler.py} +74 -57
- pbesa/remote/exceptions.py +18 -0
- pbesa/remote/remote_adm.py +42 -0
- pbesa/{middleware/remote/RemoteAdmHandler.py → remote/remote_adm_handler.py} +109 -83
- pbesa/social/__init__.py +4 -0
- pbesa/social/collaborative_team.py +299 -0
- pbesa/social/delegator.py +81 -0
- pbesa/social/delegator_team.py +334 -0
- pbesa/social/dialog.py +153 -0
- pbesa/social/dispatcher_team.py +319 -0
- pbesa/social/templates.py +18 -0
- pbesa/social/worker.py +188 -0
- {pbesa-2.1.dist-info → pbesa-4.0.0.dist-info}/LICENSE +21 -21
- {pbesa-2.1.dist-info → pbesa-4.0.0.dist-info}/LICENSE.txt +21 -21
- pbesa-4.0.0.dist-info/METADATA +8 -0
- pbesa-4.0.0.dist-info/RECORD +32 -0
- {pbesa-2.1.dist-info → pbesa-4.0.0.dist-info}/WHEEL +5 -5
- {pbesa-2.1.dist-info → pbesa-4.0.0.dist-info}/top_level.txt +0 -0
- pbesa/engine/__init__.py +0 -2
- pbesa/engine/bdi/BDIAg.py +0 -42
- pbesa/engine/bdi/BDILevel.py +0 -10
- pbesa/engine/bdi/BDIMachine.py +0 -116
- pbesa/engine/bdi/Goal.py +0 -28
- pbesa/engine/bdi/GoalExe.py +0 -36
- pbesa/engine/bdi/__init__.py +0 -5
- pbesa/engine/rational/ActionExe.py +0 -35
- pbesa/engine/rational/Brain.py +0 -10
- pbesa/engine/rational/RationalAg.py +0 -43
- pbesa/engine/rational/__init__.py +0 -3
- pbesa/kernel/adapter/Adapter.py +0 -26
- pbesa/kernel/adapter/FileAdapter.py +0 -23
- pbesa/kernel/adapter/__init__.py +0 -2
- pbesa/kernel/agent/Action.py +0 -19
- pbesa/kernel/agent/Agent.py +0 -91
- pbesa/kernel/agent/BehaviorExe.py +0 -33
- pbesa/kernel/agent/Channel.py +0 -10
- pbesa/kernel/agent/World.py +0 -15
- pbesa/kernel/agent/__init__.py +0 -5
- pbesa/kernel/io/SystemFile.py +0 -13
- pbesa/kernel/io/TCPServer.py +0 -4
- pbesa/kernel/system/Adm.py +0 -189
- pbesa/kernel/system/Directory.py +0 -36
- pbesa/kernel/system/__init__.py +0 -2
- pbesa/kernel/util/HashTable.py +0 -62
- pbesa/kernel/util/Queue.py +0 -231
- pbesa/kernel/util/__init__.py +0 -2
- pbesa/middleware/__init__.py +0 -3
- pbesa/middleware/adapter/GameAdapter.py +0 -64
- pbesa/middleware/adapter/MongoAdapter.py +0 -47
- pbesa/middleware/adapter/RESTAdapter.py +0 -52
- pbesa/middleware/adapter/SubProcessAdapter.py +0 -30
- pbesa/middleware/adapter/WSSAdapter.py +0 -89
- pbesa/middleware/adapter/WSSNJAdapter.py +0 -51
- pbesa/middleware/adapter/WSSNJHandler.py +0 -23
- pbesa/middleware/adapter/__init__.py +0 -7
- pbesa/middleware/remote/AdmListener.py +0 -17
- pbesa/middleware/remote/RemoteAdm.py +0 -17
- pbesa/middleware/remote/__init__.py +0 -4
- pbesa/middleware/web/WebAgTK.py +0 -15
- pbesa/middleware/web/__init__.py +0 -0
- pbesa-2.1.dist-info/METADATA +0 -25
- pbesa-2.1.dist-info/RECORD +0 -54
pbesa/engine/bdi/BDIAg.py
DELETED
@@ -1,42 +0,0 @@
|
|
1
|
-
from abc import ABC, abstractmethod
|
2
|
-
from ...kernel.util.Queue import Queue
|
3
|
-
from ...kernel.system.Adm import Adm
|
4
|
-
from .BDIMachine import BDIMachine
|
5
|
-
|
6
|
-
class BDIAg(ABC):
|
7
|
-
|
8
|
-
id = None
|
9
|
-
queue = None
|
10
|
-
world = None
|
11
|
-
goals = None
|
12
|
-
believes = None
|
13
|
-
settings = None
|
14
|
-
|
15
|
-
def __init__(self):
|
16
|
-
self.settings = self.setUp()
|
17
|
-
self.id = self.settings['id']
|
18
|
-
self.world = self.settings['world']
|
19
|
-
self.goals = self.settings['goals']
|
20
|
-
self.believes = self.settings['believes']
|
21
|
-
Adm().addAgent(self)
|
22
|
-
|
23
|
-
self.queue = Queue(10)
|
24
|
-
self.machine = BDIMachine(self)
|
25
|
-
|
26
|
-
self.world.setAgent(self)
|
27
|
-
|
28
|
-
for goal in self.goals:
|
29
|
-
for act in goal.plan:
|
30
|
-
act.setAgent(self)
|
31
|
-
|
32
|
-
super().__init__()
|
33
|
-
|
34
|
-
def sendEvent(self, event, data):
|
35
|
-
self.queue.put({'event': event, 'data': data})
|
36
|
-
|
37
|
-
def start(self):
|
38
|
-
self.machine.start()
|
39
|
-
|
40
|
-
@abstractmethod
|
41
|
-
def setUp(self):
|
42
|
-
pass
|
pbesa/engine/bdi/BDILevel.py
DELETED
pbesa/engine/bdi/BDIMachine.py
DELETED
@@ -1,116 +0,0 @@
|
|
1
|
-
from threading import Thread
|
2
|
-
from ...kernel.util.Queue import Queue
|
3
|
-
from .GoalExe import GoalExe
|
4
|
-
from .BDILevel import BDILevel
|
5
|
-
|
6
|
-
import time
|
7
|
-
import random
|
8
|
-
|
9
|
-
class BDIMachine(Thread):
|
10
|
-
|
11
|
-
let = None
|
12
|
-
alive = None
|
13
|
-
agent = None
|
14
|
-
queue = None
|
15
|
-
planQueue = None
|
16
|
-
|
17
|
-
executeList = None
|
18
|
-
|
19
|
-
machine = None
|
20
|
-
physiologyList = None
|
21
|
-
safetyList = None
|
22
|
-
socialList = None
|
23
|
-
esteemList = None
|
24
|
-
selfrealizationList = None
|
25
|
-
|
26
|
-
def __init__(self, agent):
|
27
|
-
self.let = True
|
28
|
-
self.alive = True
|
29
|
-
self.agent = agent
|
30
|
-
self.queue = agent.queue
|
31
|
-
|
32
|
-
self.executeList = []
|
33
|
-
|
34
|
-
self.physiologyList = []
|
35
|
-
self.safetyList = []
|
36
|
-
self.socialList = []
|
37
|
-
self.esteemList = []
|
38
|
-
self.selfrealizationList = []
|
39
|
-
|
40
|
-
goals = agent.settings['goals']
|
41
|
-
for goa in goals:
|
42
|
-
if goa.priority == BDILevel.PHYSIOLOGY:
|
43
|
-
self.physiologyList.append(goa)
|
44
|
-
if goa.priority == BDILevel.SAFETY:
|
45
|
-
self.safetyList.append(goa)
|
46
|
-
if goa.priority == BDILevel.SOCIAL:
|
47
|
-
self.socialList.append(goa)
|
48
|
-
if goa.priority == BDILevel.ESTEEM:
|
49
|
-
self.esteemList.append(goa)
|
50
|
-
if goa.priority == BDILevel.SELF_REALIZATION:
|
51
|
-
self.selfrealizationList.append(goa)
|
52
|
-
|
53
|
-
self.pool = Queue(10)
|
54
|
-
self.planQueue = Queue(10)
|
55
|
-
|
56
|
-
for x in range(1,5):
|
57
|
-
ge = GoalExe(self.pool, self.planQueue)
|
58
|
-
ge.start()
|
59
|
-
self.pool.put(ge)
|
60
|
-
|
61
|
-
super().__init__()
|
62
|
-
|
63
|
-
def run(self):
|
64
|
-
while self.alive:
|
65
|
-
if self.let:
|
66
|
-
evt = self.queue.get()
|
67
|
-
self.queue.task_done()
|
68
|
-
|
69
|
-
# Update World
|
70
|
-
self.agent.world.update(evt['event'], evt['data'])
|
71
|
-
|
72
|
-
# Run Machine
|
73
|
-
if self.checkFire(self.physiologyList):
|
74
|
-
self.executeGoals()
|
75
|
-
else:
|
76
|
-
if self.checkFire(self.safetyList):
|
77
|
-
self.executeGoals()
|
78
|
-
else:
|
79
|
-
if self.checkFire(self.socialList):
|
80
|
-
self.executeGoals()
|
81
|
-
else:
|
82
|
-
if self.checkFire(self.esteemList):
|
83
|
-
self.executeGoals()
|
84
|
-
else:
|
85
|
-
if self.checkFire(self.selfrealizationList):
|
86
|
-
self.executeGoals()
|
87
|
-
|
88
|
-
|
89
|
-
def executeGoals(self):
|
90
|
-
for goal in self.executeList:
|
91
|
-
if not goal.execute:
|
92
|
-
self.pool.get()
|
93
|
-
self.pool.task_done()
|
94
|
-
goal.execute = True
|
95
|
-
self.executeList.remove(goal)
|
96
|
-
self.planQueue.put(goal)
|
97
|
-
|
98
|
-
def contains(self, goal, lst):
|
99
|
-
for go in lst:
|
100
|
-
if go.id == goal.id:
|
101
|
-
return True
|
102
|
-
return False
|
103
|
-
|
104
|
-
def checkFire(self, lst):
|
105
|
-
for goa in lst:
|
106
|
-
if not goa.execute and goa.eval(self.agent.believes):
|
107
|
-
if not self.contains(goa, self.executeList):
|
108
|
-
self.executeList.append(goa)
|
109
|
-
return ( len(self.executeList) > 0 )
|
110
|
-
|
111
|
-
def setLet(self, val):
|
112
|
-
self.let = val
|
113
|
-
|
114
|
-
def setAlive(self, val):
|
115
|
-
self.alive = val
|
116
|
-
|
pbesa/engine/bdi/Goal.py
DELETED
@@ -1,28 +0,0 @@
|
|
1
|
-
from abc import ABC, abstractmethod
|
2
|
-
|
3
|
-
class Goal(ABC):
|
4
|
-
|
5
|
-
id = None
|
6
|
-
plan = None
|
7
|
-
execute = None
|
8
|
-
priority = None
|
9
|
-
settings = None
|
10
|
-
|
11
|
-
def __init__(self):
|
12
|
-
self.execute = False
|
13
|
-
self.settings = self.setUp()
|
14
|
-
self.id = self.settings['id']
|
15
|
-
self.plan = self.settings['plan']
|
16
|
-
self.priority = self.settings['priority']
|
17
|
-
super().__init__()
|
18
|
-
|
19
|
-
@abstractmethod
|
20
|
-
def setUp(self):
|
21
|
-
pass
|
22
|
-
|
23
|
-
@abstractmethod
|
24
|
-
def eval(self, believes):
|
25
|
-
pass
|
26
|
-
|
27
|
-
|
28
|
-
|
pbesa/engine/bdi/GoalExe.py
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
from threading import Thread
|
2
|
-
import time
|
3
|
-
import random
|
4
|
-
|
5
|
-
class GoalExe(Thread):
|
6
|
-
|
7
|
-
let = None
|
8
|
-
pool = None
|
9
|
-
alive = None
|
10
|
-
goal = None
|
11
|
-
planQueue = None
|
12
|
-
|
13
|
-
def __init__(self, pool, planQueue):
|
14
|
-
self.let = True
|
15
|
-
self.pool = pool
|
16
|
-
self.alive = True
|
17
|
-
self.planQueue = planQueue
|
18
|
-
super().__init__()
|
19
|
-
|
20
|
-
def run(self):
|
21
|
-
while self.alive:
|
22
|
-
if self.let:
|
23
|
-
goal = self.planQueue.get()
|
24
|
-
self.planQueue.task_done()
|
25
|
-
for action in goal.plan:
|
26
|
-
action.execute('')
|
27
|
-
goal.execute = False
|
28
|
-
self.pool.put(self)
|
29
|
-
#time.sleep(random.random())
|
30
|
-
|
31
|
-
def setLet(self, val):
|
32
|
-
self.let = val
|
33
|
-
|
34
|
-
def setAlive(self, val):
|
35
|
-
self.alive = val
|
36
|
-
|
pbesa/engine/bdi/__init__.py
DELETED
@@ -1,35 +0,0 @@
|
|
1
|
-
from threading import Thread
|
2
|
-
import time
|
3
|
-
import random
|
4
|
-
|
5
|
-
class ActionExe(Thread):
|
6
|
-
|
7
|
-
let = None
|
8
|
-
pool = None
|
9
|
-
alive = None
|
10
|
-
action = None
|
11
|
-
|
12
|
-
def __init__(self, pool):
|
13
|
-
self.let = False
|
14
|
-
self.pool = pool
|
15
|
-
self.alive = True
|
16
|
-
super().__init__()
|
17
|
-
|
18
|
-
def run(self):
|
19
|
-
while self.alive:
|
20
|
-
if self.let:
|
21
|
-
self.action.execute(self.data)
|
22
|
-
self.pool.addExe(self)
|
23
|
-
#time.sleep(random.random())
|
24
|
-
|
25
|
-
def setLet(self, val):
|
26
|
-
self.let = val
|
27
|
-
|
28
|
-
def setAlive(self, val):
|
29
|
-
self.alive = val
|
30
|
-
|
31
|
-
def setAction(self, action):
|
32
|
-
self.action = action
|
33
|
-
|
34
|
-
def setData(self, data):
|
35
|
-
self.data = data
|
pbesa/engine/rational/Brain.py
DELETED
@@ -1,43 +0,0 @@
|
|
1
|
-
from abc import ABC, abstractmethod
|
2
|
-
|
3
|
-
class RationalAg(ABC):
|
4
|
-
|
5
|
-
id = None
|
6
|
-
state = None
|
7
|
-
brain = None
|
8
|
-
world = None
|
9
|
-
exePool = None
|
10
|
-
settings = None
|
11
|
-
|
12
|
-
def __init__(self):
|
13
|
-
self.settings = self.setUp()
|
14
|
-
self.id = self.settings['id']
|
15
|
-
self.state = self.settings['state']
|
16
|
-
self.brain = self.settings['brain']
|
17
|
-
self.world = self.settings['world']
|
18
|
-
size = self.settings['pool_size']
|
19
|
-
Adm().addAgent(self)
|
20
|
-
self.exePool = Queue(size)
|
21
|
-
for x in range(1, size):
|
22
|
-
self.exePool.put(ActionExe(self.exePool))
|
23
|
-
super().__init__()
|
24
|
-
|
25
|
-
@abstractmethod
|
26
|
-
def setUp(self, settings):
|
27
|
-
pass
|
28
|
-
|
29
|
-
def sendEvent(self, event, data):
|
30
|
-
self.world.update(event, data)
|
31
|
-
actions = self.brain.derive(event, data)
|
32
|
-
if actions:
|
33
|
-
for action in actions:
|
34
|
-
aExe = self.getFree()
|
35
|
-
aExe.setAction()
|
36
|
-
aExe.setData()
|
37
|
-
aExe.start()
|
38
|
-
|
39
|
-
def getFree(self):
|
40
|
-
exeA = self.pool.get()
|
41
|
-
self.pool.task_done()
|
42
|
-
return exeA
|
43
|
-
|
pbesa/kernel/adapter/Adapter.py
DELETED
@@ -1,26 +0,0 @@
|
|
1
|
-
from abc import ABC, abstractmethod
|
2
|
-
|
3
|
-
class Adapter(ABC):
|
4
|
-
|
5
|
-
data = None
|
6
|
-
config = None
|
7
|
-
|
8
|
-
def __init__(self):
|
9
|
-
#Adm().addAdapter(self)
|
10
|
-
super().__init__()
|
11
|
-
|
12
|
-
@abstractmethod
|
13
|
-
def setUp(self):
|
14
|
-
pass
|
15
|
-
|
16
|
-
@abstractmethod
|
17
|
-
def response(self):
|
18
|
-
pass
|
19
|
-
|
20
|
-
@abstractmethod
|
21
|
-
def request(self):
|
22
|
-
pass
|
23
|
-
|
24
|
-
@abstractmethod
|
25
|
-
def finalize(self):
|
26
|
-
pass
|
@@ -1,23 +0,0 @@
|
|
1
|
-
from ...kernel.adapter.Adapter import Adapter
|
2
|
-
from ...kernel.io.SystemFile import SystemFile
|
3
|
-
|
4
|
-
class FileAdapter(Adapter):
|
5
|
-
|
6
|
-
def __init__(self, config):
|
7
|
-
self.config = config
|
8
|
-
super().__init__()
|
9
|
-
|
10
|
-
def setUp(self):
|
11
|
-
if self.config['type'] == 'JSON':
|
12
|
-
sf = SystemFile(self.config['path'])
|
13
|
-
self.data = sf.readJsonFile()
|
14
|
-
|
15
|
-
def response(self):
|
16
|
-
pass
|
17
|
-
|
18
|
-
def request(self):
|
19
|
-
return self.data
|
20
|
-
|
21
|
-
def finalize(self):
|
22
|
-
pass
|
23
|
-
|
pbesa/kernel/adapter/__init__.py
DELETED
pbesa/kernel/agent/Action.py
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
from abc import ABC, abstractmethod
|
2
|
-
from ...kernel.system.Adm import Adm
|
3
|
-
|
4
|
-
class Action(ABC):
|
5
|
-
|
6
|
-
id = None
|
7
|
-
adm = None
|
8
|
-
agent = None
|
9
|
-
|
10
|
-
def __init__(self):
|
11
|
-
super().__init__()
|
12
|
-
|
13
|
-
@abstractmethod
|
14
|
-
def execute(self, data):
|
15
|
-
pass
|
16
|
-
|
17
|
-
def setAgent(self, agent):
|
18
|
-
self.adm = Adm()
|
19
|
-
self.agent = agent
|
pbesa/kernel/agent/Agent.py
DELETED
@@ -1,91 +0,0 @@
|
|
1
|
-
from abc import ABC, abstractmethod
|
2
|
-
from ...kernel.util.Queue import Queue
|
3
|
-
from ...kernel.system.Adm import Adm
|
4
|
-
from ...kernel.agent.Channel import Channel
|
5
|
-
from ...kernel.util.HashTable import HashTable
|
6
|
-
from ...kernel.agent.BehaviorExe import BehaviorExe
|
7
|
-
|
8
|
-
class Agent(ABC):
|
9
|
-
|
10
|
-
id = None
|
11
|
-
state = None
|
12
|
-
settings = None
|
13
|
-
behaviors = None
|
14
|
-
channelsTable = None
|
15
|
-
behaviorsTable = None
|
16
|
-
workerList = None
|
17
|
-
channelList = None
|
18
|
-
|
19
|
-
def __init__(self, arg):
|
20
|
-
|
21
|
-
self.settings = self.setUp(arg)
|
22
|
-
self.id = self.settings['id']
|
23
|
-
self.state = self.settings['state']
|
24
|
-
Adm().addAgent(self)
|
25
|
-
|
26
|
-
self.eventsTable = HashTable()
|
27
|
-
self.channelsTable = HashTable()
|
28
|
-
|
29
|
-
self.workerList = []
|
30
|
-
self.channelList = []
|
31
|
-
|
32
|
-
self.behaviors = self.settings['behaviors']
|
33
|
-
|
34
|
-
for beh in self.behaviors:
|
35
|
-
queue = Queue(10)
|
36
|
-
channel = Channel(queue)
|
37
|
-
worker = BehaviorExe(queue)
|
38
|
-
|
39
|
-
self.channelsTable[beh['name']] = {'channel' : channel, 'worker': worker}
|
40
|
-
|
41
|
-
self.workerList.append(worker)
|
42
|
-
self.channelList.append(channel)
|
43
|
-
|
44
|
-
events = beh['events']
|
45
|
-
for evts in events:
|
46
|
-
evts['action'].setAgent(self)
|
47
|
-
self.eventsTable[evts['performative']] = {'behavior' : beh['name'], 'action': evts['action']}
|
48
|
-
|
49
|
-
super().__init__()
|
50
|
-
|
51
|
-
@abstractmethod
|
52
|
-
def setUp(self, settings):
|
53
|
-
pass
|
54
|
-
|
55
|
-
def sendEvent(self, event, data):
|
56
|
-
behavior = self.eventsTable[event]
|
57
|
-
channel = self.channelsTable[behavior['behavior']]
|
58
|
-
evt = {'event': event, 'data': data, 'action': behavior['action']}
|
59
|
-
channel['channel'].sendEvent(evt)
|
60
|
-
|
61
|
-
def start(self):
|
62
|
-
for w in self.workerList:
|
63
|
-
w.setLet(True)
|
64
|
-
w.start()
|
65
|
-
|
66
|
-
def wait(self):
|
67
|
-
for w in self.workerList:
|
68
|
-
w.setLet(False)
|
69
|
-
|
70
|
-
def finalize(self):
|
71
|
-
for w in self.workerList:
|
72
|
-
w.setAlive(False)
|
73
|
-
|
74
|
-
def kill(self):
|
75
|
-
# TODO Call garbachcollector
|
76
|
-
pass
|
77
|
-
|
78
|
-
def toDTO(self):
|
79
|
-
dto = {
|
80
|
-
'command': 'MOVE',
|
81
|
-
'class': self.__class__.__name__,
|
82
|
-
'path': self.__module__,
|
83
|
-
'id': self.id,
|
84
|
-
'state': self.state
|
85
|
-
}
|
86
|
-
rtn = str(dto)
|
87
|
-
rtn = rtn.replace("'", "\"")
|
88
|
-
return rtn
|
89
|
-
|
90
|
-
def getState(self):
|
91
|
-
return self.state
|
@@ -1,33 +0,0 @@
|
|
1
|
-
from threading import Thread
|
2
|
-
import time
|
3
|
-
import random
|
4
|
-
import traceback
|
5
|
-
|
6
|
-
class BehaviorExe(Thread):
|
7
|
-
|
8
|
-
let = None
|
9
|
-
alive = None
|
10
|
-
queue = None
|
11
|
-
|
12
|
-
def __init__(self, queue):
|
13
|
-
self.let = False
|
14
|
-
self.alive = True
|
15
|
-
self.queue = queue
|
16
|
-
super().__init__()
|
17
|
-
|
18
|
-
def run(self):
|
19
|
-
while self.alive:
|
20
|
-
if self.let:
|
21
|
-
evt = self.queue.get()
|
22
|
-
self.queue.task_done()
|
23
|
-
try:
|
24
|
-
evt['action'].execute(evt['data'])
|
25
|
-
except Exception as e:
|
26
|
-
print(e)
|
27
|
-
traceback.print_exc()
|
28
|
-
|
29
|
-
def setLet(self, val):
|
30
|
-
self.let = val
|
31
|
-
|
32
|
-
def setAlive(self, val):
|
33
|
-
self.alive = val
|
pbesa/kernel/agent/Channel.py
DELETED
pbesa/kernel/agent/World.py
DELETED
pbesa/kernel/agent/__init__.py
DELETED
pbesa/kernel/io/SystemFile.py
DELETED
pbesa/kernel/io/TCPServer.py
DELETED