Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
Cooperative Cuisine Environment
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Social Cognitive Systems
CoCoSy
Cooperative Cuisine Environment
Commits
c28e0308
Commit
c28e0308
authored
1 year ago
by
Fabian Heinrich
Browse files
Options
Downloads
Patches
Plain Diff
Cleaned a bit up, a bit of doc
parent
7eb86dae
No related branches found
No related tags found
1 merge request
!89
Resolve "simple pathfinding"
Pipeline
#49043
passed
1 year ago
Stage: test
Changes
2
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
cooperative_cuisine/configs/agents/random_agent.py
+2
-4
2 additions, 4 deletions
cooperative_cuisine/configs/agents/random_agent.py
cooperative_cuisine/state_representation.py
+5
-49
5 additions, 49 deletions
cooperative_cuisine/state_representation.py
with
7 additions
and
53 deletions
cooperative_cuisine/configs/agents/random_agent.py
+
2
−
4
View file @
c28e0308
...
...
@@ -23,7 +23,7 @@ from cooperative_cuisine.utils import custom_asdict_factory
TIME_TO_STOP_ACTION
=
3.0
ADD_RANDOM_MOVEMENTS
=
False
DIAGONAL_MOVEMENTS
=
Fals
e
DIAGONAL_MOVEMENTS
=
Tru
e
AVOID_OTHER_PLAYERS
=
True
...
...
@@ -307,9 +307,7 @@ async def agent():
...
if
not
task_type
:
# task_type = random.choice(["GOTO"])
task_type
=
random
.
choice
([
"
GOTO
"
,
"
PUT
"
])
# task_type = random.choice(["GOTO", "PUT", "INTERACT"])
task_type
=
random
.
choice
([
"
GOTO
"
,
"
PUT
"
,
"
INTERACT
"
])
threshold
=
datetime
.
now
()
+
timedelta
(
seconds
=
TIME_TO_STOP_ACTION
)
if
task_type
==
"
GOTO
"
:
# counter_type = random.choice(list(counters.keys()))
...
...
This diff is collapsed.
Click to expand it.
cooperative_cuisine/state_representation.py
+
5
−
49
View file @
c28e0308
...
...
@@ -191,19 +191,19 @@ class StateRepresentation(BaseModel):
def
astar_heuristic
(
x
,
y
):
"""
Heuristic distance function used in astar
t
algorithm.
"""
"""
Heuristic distance function used in astar algorithm.
"""
return
np
.
linalg
.
norm
(
np
.
array
(
x
)
-
np
.
array
(
y
))
def
create_movement_graph
(
state
:
StateRepresentation
,
diagonal
=
True
)
->
Graph
:
"""
Creates a graph which represents the connections of empty kitchen tiles.
Creates a graph which represents the connections of empty kitchen tiles and such
possible coarse movements of an agent.
Args:
state: State representation to determine the graph to.
diagonal: if True use 8 way connection, i
e
diagonal connections between the spaces.
diagonal: if True use 8 way connection, i
.e.
diagonal connections between the spaces.
Returns: Graph representing the connections between empty kitchen tiles.
"""
width
,
height
=
state
[
"
kitchen
"
][
"
width
"
],
state
[
"
kitchen
"
][
"
height
"
]
free_space
=
np
.
ones
((
width
,
height
),
dtype
=
bool
)
...
...
@@ -257,7 +257,7 @@ def restrict_movement_graph(
graph
:
Graph
,
player_positions
:
list
[
tuple
[
float
,
float
]
|
list
[
float
]]
|
npt
.
NDArray
[
float
],
)
->
Graph
:
"""
Modifies a given
connection
graph. Removed the nodes of spaces on which
a
players stand.
"""
Modifies a given
movement
graph. Removed the nodes of spaces on which players stand.
Args:
graph: The graph to modify.
...
...
@@ -279,48 +279,4 @@ def create_json_schema() -> dict[str, Any]:
if
__name__
==
"
__main__
"
:
# sample_state_path = ROOT_DIR / "pygame_2d_vis" / "sample_state.json"
# with open(sample_state_path, "r") as f:
# state = json.load(f)
#
# graph = create_movement_graph(state, diagonal=False)
# width, height = state["kitchen"]["width"], state["kitchen"]["height"]
# free_space = np.ones((width, height), dtype=bool)
# for counter in state["counters"]:
# grid_idx = np.array(counter["pos"]).round().astype(int)
# free_space[grid_idx[0], grid_idx[1]] = False
#
# other_players = [[2, 2], [3, 3]]
# restricted = restrict_movement_graph(graph, other_players)
#
# print(graph.nodes)
#
# source = (1, 1)
# target = (10, 7)
#
# try:
# path = networkx.astar_path(
# G=restricted, source=source, target=target, heuristic=astar_heuristic
# )
# except networkx.exception.NetworkXNoPath:
# print("NO PATH FOUND")
# path = []
#
# width, height = free_space.shape
# for i in range(width):
# for j in range(height):
# if (i, j) == source:
# print(" S ", end="")
# elif (i, j) == target:
# print(" T ", end="")
# elif (i, j) in path:
# print(" x ", end="")
# elif [i, j] in other_players:
# print(" O ", end="")
# elif free_space[i, j]:
# print(" ", end="")
# else:
# print(" # ", end="")
# print()
print
(
json
.
dumps
(
create_json_schema
()))
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment