Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FROST — Anonymous Artifact

A self-contained environment for the FROST project: a platform for service-oriented manufacturing systems, evaluated on the ICE laboratory production line.

Every component is a local folder in this archive and is built from these sources. Nothing is cloned or downloaded from the project's own repositories, and no build outputs are shipped — everything is compiled on your machine.

Layout

Folder Role
machine-data-model/ Library. Machine data models and the Frost message protocol.
frost-planner/ Library. Flexible Job-Shop scheduling and execution.
frost-bench/ The project. Benchmarks and experiments; this is what you run.
frost-bench/ice-frost/ The ICE laboratory case study, built on the Frost platform.
frost-bench/ice-frost/frost/ The Frost platform itself (Lingua Franca sources).
frost-bench/benchmarks/pallet-selection/ The pallet-selection benchmark: sources, configs, and result data.
frost-bench/python-utils/ Standalone helpers (data-model validation, OPC UA node export).

The two libraries are installed once into a single shared virtual environment and linked in editable mode, so the folders above stay the single source of truth.

There is a single requirements.txt at the root covering the whole project. frost-bench, ice-frost and frost carry no requirements.txt or pyproject.toml of their own — they are plain folders, not separately installable projects.

File Purpose
setup.sh Creates the shared environment, builds and links both libraries, installs dependencies.
env.sh Activates the environment and exports every project path, derived from PROJECT_ROOT. Source it, don't execute it.
requirements.txt All third-party dependencies for the whole project.
frost-bench/run-pallet-selection.sh Builds and runs the pallet-selection benchmark in simulation.

Requirements

  • Python 3.13. setup.sh enforces it and finds a pyenv-managed 3.13 automatically. The simulations are compiled against the interpreter that built the environment, so the version must stay consistent.
  • The Lingua Franca compiler (lfc) on PATH — see https://www.lf-lang.org. Required to build the simulations from source.
  • A C toolchain (cc, cmake), used by lfc and by a few native wheels.
  • Optional: Docker, only for the MQTT and OPC UA integration tests.

Setup

./setup.sh          # build the environment (once)
source env.sh       # activate it in each new shell

setup.sh selects a Python 3.13 interpreter (override with PYTHON=...), creates the environment at ./.venv (override with VENV=...), builds and links both libraries from these sources, installs the remaining dependencies, and verifies that each library imports from its local folder.

Prefer source env.sh over activating the virtualenv directly: besides putting the environment on PATH, it exports the project paths and the PYTHONPATH entry that the generated simulations need.

Running the pallet-selection simulation

source env.sh
cd frost-bench
./run-pallet-selection.sh            # every benchmark, every metric
./run-pallet-selection.sh lego       # one benchmark, its default metrics
./run-pallet-selection.sh lego ID    # one benchmark, one metric
./run-pallet-selection.sh --list     # show what is available

The script creates the environment if it is missing and invokes lfc to build each simulation on first use. All paths come from env.sh; nothing is hard-coded. Results are written to frost-bench/benchmarks/pallet-selection/results/<benchmark>/sim-<metric>/.

Benchmark Simulation target Metrics
distance DistanceSim DISTANCE, RANDOM, ID
lego LegoSim DISTANCE, ID
movements LegoMovementsSim DISTANCE, ID
recipes LegoRecipesSim DISTANCE, ID

The metric selects the pallet-selection strategy. For the distance benchmark the resulting makespans order as DISTANCE < RANDOM < ID, the expected result.

Only simulation mode runs from this archive. The opcua mode (ice-frost/script/run_ua.sh) drives the physical ICE laboratory plant over OPC UA and needs that hardware, so it cannot be exercised here.

Published data and analysis

frost-bench/benchmarks/pallet-selection/ also carries the experimental material behind the reported results:

Path Contents
results/ Raw data from the published runs, in timestamped *-sim-* and *-opcua-* directories.
results/*.ipynb, results/{base,core}.py Notebooks and helpers that turn that raw data into the reported figures.
python_utils/ Scripts that regenerate the figures and derived tables — see python_utils/COMMANDS.md.

Figures are not shipped as PDFs; they are regenerated from results/ by the notebooks and by python_utils/gen_figure7_variants.py and python_utils/gen_figure7_yaxis.py.

Runs you start yourself go to results/<benchmark>/sim-<metric>/ and will not overwrite the published data.

Running the ICE laboratory simulation

The complete plant model, as opposed to the pallet-selection benchmark:

source env.sh
cd frost-bench/ice-frost
lfc src/Main.lf                     # build
./script/run_sim.sh                 # run in simulation

Verifying the libraries

source env.sh
(cd machine-data-model && python -m pytest tests -q)
(cd frost-planner     && python -m pytest tests -q)

Expected: 703 passed for machine-data-model, 124 passed for frost-planner.

Two environment-dependent results, unrelated to the code itself:

  • The MQTT integration tests start a Mosquitto broker in Docker and error out when no Docker daemon is available.
  • Run the machine-data-model suite from inside its own directory: a few tests resolve fixture paths relative to the current directory.

Verifying the Frost platform

The Frost reactors have their own Lingua Franca test suite, which lfc builds and runs:

source env.sh
cd frost-bench/ice-frost/frost/test
./run_all.sh                        # builds, then runs, each test

Expected: 16 builds and 16 runs pass.

Notes on this artifact

  • Source only. src-gen/, include/, bin/ and build/ are build outputs and are generated on your machine by lfc and the .sh scripts. No prebuilt binaries are shipped, so nothing is tied to the machine that produced this archive.
  • Self-signed OPC UA client certificates are likewise not shipped: they are regenerated on connect and embed the hostname of the machine that created them.
  • Copyright notices, SPDX-FileCopyrightText headers, author metadata and documentation titles attribute the work to "the Frost Platform contributors". References to the original hosting repositories now point at the folders in this archive.
  • "ICE" / "ICE laboratory" is the publicly documented case study this work evaluates and is named as such throughout.
  • FrostReactor.lf exposes a connected_to_link logical action, signalled once target discovery completes, which the benchmark schedulers use to start working only after the bus is usable.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages