BoxesWorld

A box-picking POMDP created using POMDPs.jl

https://github.com/jmuchovej/boxesworld.jl

Science Score: 44.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (8.8%) to scientific vocabulary

Keywords

pomdp pomdps

Keywords from Contributors

interactive mesh interpretability profiles sequences generic projection standardization optim embedded
Last synced: 6 months ago · JSON representation ·

Repository

A box-picking POMDP created using POMDPs.jl

Basic Info
Statistics
  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • Open Issues: 0
  • Releases: 4
Topics
pomdp pomdps
Created almost 3 years ago · Last pushed 9 months ago
Metadata Files
Readme License Citation Codeowners

README.md

BoxesWorld

Stable Dev Build Status Coverage Code Style: Blue

A scalable MOMDP that mirrors a box-searching task for an item. As a MOMDP, the agent will always know their location (represented by a Point), but their belief will vary over the contents of the given boxes.

Suppose that: - $B = \{ \text{Box(1, 5)}, \text{Box(5, 5)}, \text{Box(5, 1)} \}$ - $L = \{ \text{Point(1, 1)}, \text{Point(1, 5)}, \text{Point(5, 5)}, \text{Point(5, 1)} \}$ - $I = \{ 🍋, 🍓, 🥝, 🍍 \}$

Note: $\text{Point(1, 1)}$ is the spawn location.

  • Action space ($\mathcal{A}$): [[Move(box) for box in B]..., Take()]
    • Move(box) will move the agent from its current location to the targeted box.
    • Take() will take the contents at the current box. At the spawn location, this is an invalid action which does not transition to a new state.
  • Observation space ($\mathcal{O}$): [item for item in I]

    • item only has the requirement that it's a Symbol. Thus, the agent may observe whatever items you specify are allowed to be in the boxes.

    Note that BoxesWorld does not support items only being in certain boxes (e.g., lemons (🍋) are only allowed in odd-number boxes).

  • State space ($\mathcal{S}$): Each state is a known location drawn from $L$ and potential box contents, drawn from $I$ spread across the given boxes, thus there are $|B|^{|I|}$ combinations of items $I$ in boxes $B$. The state-space is always $|L| \times |B|^{|I|}$ where $|L|$ is the number of locations, $|B|$ is the number of boxes, and $|I|$ is the number of items.

Example (3 boxes, 4 fruits: [🍋, 🍓, 🥝, 🍍])

Example code in examples/boxes=3-fruits=🍋🍓🥝🍍

The world is rotated by 45 degrees to accentuate costs, but is set in a 5x5 grid-like world. Specifically, there are 3 boxes at (1, 5), (5, 5), and (5, 1). Each box may contain only one fruit, but collectively there may be any combination of fruits.

  • Action space: [Move(1), Move(2), Move(3), Take()]
  • Observation space: [:🍋, :🍓, :🥝, :🍍]
  • State space: julia states = map([Point(1, 1), Point(1, 5), Point(5, 5), Point(5, 1)]) do location map(product(ITEMS, ITEMS, ITEMS)) do (box1, box2, box3) return State(location, [box1, box2, box3]) end end |> flatten |> collect

Note that Point(1, 1) is the spawn location – this is where initial beliefs may be modified so represent non-uniform initial beliefs!

Example of the BoxWorld layout with an agent, three boxes, and a kiwi, lemon, and strawberry in boxes 1, 2, and 3 respectively. Example of an Agent's trajectory in a BoxesWorld with three boxes. Boxes 1 and 2 have lemons, Box 3 has a strawberry. The agent moved to Box 2, then Box 3, and took the strawberry.

On the left, we have an agent in a 3-box world with a kiwi (🥝), lemon (🍋), and strawberry (🍓) in boxes 1, 2, and 3, respectively. The agent cannot observe the contents of the box until it visits the box.

On the right, we have an agent in a similar world but with lemons (🍋) in boxes 1 and 2, and a kiwi (🥝) in box 3. The agent took actions Move(2), Move(3), Take(). Thus, the agent observed a lemon (🍋) in Box 2, then a strawberry (🍓) in Box 3, and took the strawberry (🍓) in Box 3.

Owner

  • Name: John Muchovej
  • Login: jmuchovej
  • Kind: user
  • Company: @compdevlab-yale

AI, CogSci, NLP. CompDevLab@Yale, CoCoDev@Harvard, CBMM@MIT, CoCoSci@MIT, NLP@UCF.

Citation (CITATION.bib)

@misc{BoxesWorld.jl,
	author  = {John Muchovej <5000729+jmuchovej@users.noreply.github.com> and contributors},
	title   = {BoxesWorld.jl},
	url     = {https://github.com/jmuchovej/BoxesWorld.jl},
	version = {v1.0.0-DEV},
	year    = {2023},
	month   = {6}
}

GitHub Events

Total
  • Issue comment event: 3
  • Pull request event: 3
  • Create event: 2
Last Year
  • Issue comment event: 3
  • Pull request event: 3
  • Create event: 2

Committers

Last synced: 9 months ago

All Time
  • Total Commits: 46
  • Total Committers: 2
  • Avg Commits per committer: 23.0
  • Development Distribution Score (DDS): 0.087
Past Year
  • Commits: 18
  • Committers: 1
  • Avg Commits per committer: 18.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
John Muchovej 5****j 42
dependabot[bot] 4****] 4

Issues and Pull Requests

Last synced: 8 months ago

All Time
  • Total issues: 1
  • Total pull requests: 7
  • Average time to close issues: less than a minute
  • Average time to close pull requests: about 2 months
  • Total issue authors: 1
  • Total pull request authors: 2
  • Average comments per issue: 4.0
  • Average comments per pull request: 0.86
  • Merged pull requests: 6
  • Bot issues: 0
  • Bot pull requests: 5
Past Year
  • Issues: 0
  • Pull requests: 1
  • Average time to close issues: N/A
  • Average time to close pull requests: 6 months
  • Issue authors: 0
  • Pull request authors: 1
  • Average comments per issue: 0
  • Average comments per pull request: 5.0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 1
Top Authors
Issue Authors
  • JuliaTagBot (1)
Pull Request Authors
  • dependabot[bot] (10)
  • jmuchovej (3)
Top Labels
Issue Labels
Pull Request Labels
dependencies (10) github_actions (1)

Packages

  • Total packages: 1
  • Total downloads: unknown
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 4
juliahub.com: BoxesWorld

A box-picking POMDP created using POMDPs.jl

  • Versions: 4
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent repos count: 9.8%
Dependent packages count: 38.3%
Average: 44.4%
Forks count: 54.6%
Stargazers count: 75.0%
Last synced: 7 months ago