hybridsim

A graphical simulator for the two-dimensional hybrid model of programmable matter.

https://github.com/jfriemel/hybridsim

Science Score: 57.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
    Found 4 DOI reference(s) in README
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (13.9%) to scientific vocabulary

Keywords

distributed-computing hybrid-model programmable-matter simulator
Last synced: 4 months ago · JSON representation ·

Repository

A graphical simulator for the two-dimensional hybrid model of programmable matter.

Basic Info
  • Host: GitHub
  • Owner: jfriemel
  • License: mit
  • Language: Kotlin
  • Default Branch: main
  • Homepage:
  • Size: 29 MB
Statistics
  • Stars: 1
  • Watchers: 1
  • Forks: 0
  • Open Issues: 5
  • Releases: 2
Topics
distributed-computing hybrid-model programmable-matter simulator
Created almost 3 years ago · Last pushed 4 months ago
Metadata Files
Readme License Citation

README.md

HybridSim

HybridSim is a simulator for the hybrid model for programmable matter. If you are unfamiliar with the model, you can read up on it in chapters 6 and 7 of "Computing by Programmable Particles" by Daymude et al. [1]. I developed this program to aid with the development of hybrid model algorithms while working on my master's thesis "Shape Reconfiguration by Hybrid Programmable Matter" in the Theory of Distributed Systems research group at Paderborn University.

A screenshot of the main screen of the simulator.

Usage

To be able to launch HybridSim, you need a recent installation of the Java Runtime Environment (version 17 or newer). Download and execute the most recent .jar file from the Releases tab on the right. Alternatively, you can build the executable yourself by cloning the repository and running gradlew build. Then, you find the .jar file in the lwjgl3/build/lib directory.

Basic Features

Using the appropriate buttons in the GUI, you can:

  • load a configuration from exampleConfigurations,
  • load an algorithm script from exampleAlgorithms,
  • start the scheduler by pressing the large play button,
  • place (left-click) or remove (right-click) tiles, robots, or target nodes,
  • load a configuration generator script from exampleGenerators, and
  • generate a configuration with the specified number of tiles, robots, and overhangs (tiles on non-target nodes).

Custom Scripts

Algorithms and configuration generators are implemented as Kotlin scripts. Use the _Template.kts file from the respective example directory as a starting point for writing your own scripts which can then be loaded as stated above. It may also be helpful for you to look at example implementations such as the script for the triangle formation algorithm by Gmyr et al. [2].

CLI Mode

The simulator can also be used to empirically test algorithms in --nogui mode. For example, to run the shape reconfiguration algorithm for simply connected input and target shapes introduced in my thesis on 50 randomly generated configurations with 2500 tiles, one robot, and 1000 overhangs, use the following arguments: --nogui --algorithm exampleAlgorithms/ShapeReconfiguration/SC_Input_SC_Target.kts --generator exampleGenerators/ShapeReconfiguration/SC_Input_SC_Target.kts --num_tiles 2500 --num_robots 1 --num_overhangs 1000 --num_runs 50 --seed 2023 --output result.csv

For a list of all accepted arguments with explanations, run HybridSim with --help.

Known Issues

  • On some platforms, configurations can only be saved to existing file paths.

References

[1] Joshua J. Daymude, Kristian Hinnenthal, Andréa W. Richa, Christian Scheideler (2019). Computing by Programmable Particles. In: Distributed Computing by Mobile Entities: Current Research in Moving and Computing, pages 615–681. https://doi.org/10.1007/978-3-030-11072-7_22.

[2] Robert Gmyr, Kristian Hinnenthal, Irina Kostitsyna, Fabian Kuhn, Dorian Rudolph, Christian Scheideler, Thim Strothmann (2020). Forming Tile Shapes with Simple Robots. In: Natural Computing, 19(2), pages 375–390. https://doi.org/10.1007/s11047-019-09774-2.

Owner

  • Name: Jonas Friemel
  • Login: jfriemel
  • Kind: user
  • Location: Bielefeld, Germany

Master's student of computer science at Paderborn University.

Citation (CITATION.cff)

cff-version: 1.2.0
title: HybridSim
message: >-
  If you use this software (HybridSim), please cite it as
  below.
type: software
authors:
  - family-names: Friemel
    given-names: Jonas
repository-code: 'https://github.com/jfriemel/HybridSim'
abstract: >-
  A  graphical simulator for the two-dimensional hybrid
  model for programmable matter.
keywords:
  - programmable matter
  - hybrid model
  - simulator
license: MIT
commit: '0a7e624'
version: 1.0.1
date-released: '2024-02-21'

GitHub Events

Total
  • Delete event: 18
  • Issue comment event: 24
  • Push event: 13
  • Pull request event: 41
  • Create event: 23
Last Year
  • Delete event: 18
  • Issue comment event: 24
  • Push event: 13
  • Pull request event: 41
  • Create event: 23

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 1
  • Total pull requests: 20
  • Average time to close issues: 3 months
  • Average time to close pull requests: 24 days
  • Total issue authors: 1
  • Total pull request authors: 2
  • Average comments per issue: 0.0
  • Average comments per pull request: 0.35
  • Merged pull requests: 1
  • Bot issues: 1
  • Bot pull requests: 19
Past Year
  • Issues: 1
  • Pull requests: 20
  • Average time to close issues: 3 months
  • Average time to close pull requests: 24 days
  • Issue authors: 1
  • Pull request authors: 2
  • Average comments per issue: 0.0
  • Average comments per pull request: 0.35
  • Merged pull requests: 1
  • Bot issues: 1
  • Bot pull requests: 19
Top Authors
Issue Authors
  • dependabot[bot] (1)
Pull Request Authors
  • dependabot[bot] (50)
  • jfriemel (1)
Top Labels
Issue Labels
dependencies (1) java (1)
Pull Request Labels
dependencies (50) java (46) github_actions (4)