Skip to main content

A library for behavior-driven discrete event simulation.

Project description

UPSTAGE

UPSTAGE is a Universal Platform for Simulating Tasks and Actors with Graphs and Events built atop SimPy 4.

What is UPSTAGE for?

UPSTAGE is a Python framework for creating robust, behavior-driven Discrete Event Simulations (DES). The primary goal of UPSTAGE is to enable the quick creation of simulations at any desired level of abstraction with built-in data recording, simulation integrity and runtime checks, and assistance for the usual pitfalls in custom discrete-event simulation: interrupts and cancellations. It is designed is to simplify the development process for simulation models of complex systems of systems.

UPSTAGE leverages the extensible SimPy library and adds two concepts to accelerate the generation of complex discrete-event simulations.

  1. Actor - i.e., an entity that has State
  2. Task - i.e., actions actors can perform and that can be organized into a TaskNetwork.

Actors can have multiple networks running on them, their states can be shared, and there are features for interactions between task networks running on the same actor. Those tasks modify the states on their actor, with features for real-time states that update on request without requiring time-stepping or modifying the existing events.

image

Additional features include:

  1. Context-aware EnvironmentContext, accessed via UpstageBase, enabling thread-safe simulation globals for the Stage and Named Entities (see below).
  2. Active States (e.g.,LinearChangingState) represent continuous-time attributes of actors that can be queried at discrete points in time, or trigger events when they reach a certain level.
  3. Spatial-aware data types (e.g., CartesianLocation) and states like the waypoint-following GeodeticLocationChangingState.
  4. Geodetic and cartesian positions, distances, and motion - with ranged sensing.
  5. NamedEntity in a thread-safe global context, enabling easier "director" logic creation with less argument passing in your code
  6. The Stage: a global context variable for simulation properties and attributes. This enables under-the-hood coordination of motion, geography, and other features.
  7. Rehearsal: Write planning and simulation code in one place only, and "rehearse" an actor through a task network using planning factors to discover task feasibility before the actor attempts to complete the task.
  8. All States are recordable
  9. Numerous runtime checks and error handling for typical DES pitfalls: based on more than a decade of custom DES-building experience.
  10. And more!

See the documentation for tutorials and details.

Requirements

UPSTAGE only requires Python 3.11+ and Simpy 4+.

Installation

In an environment (Python 3.11+) of your choice:

pip install upstage-des

Documentation

See the documentation for tutorials and additional details.

How do I contribute or set up a develpment environment?

See CONTRIBUTING for instructions on setting up an environment and contributing.

For information on how to style your code, see the Style Guide.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

upstage_des-0.3.2.tar.gz (134.8 kB view details)

Uploaded Source

Built Distribution

upstage_des-0.3.2-py3-none-any.whl (179.5 kB view details)

Uploaded Python 3

File details

Details for the file upstage_des-0.3.2.tar.gz.

File metadata

  • Download URL: upstage_des-0.3.2.tar.gz
  • Upload date:
  • Size: 134.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for upstage_des-0.3.2.tar.gz
Algorithm Hash digest
SHA256 ec61ae282f8a7deae8a61171fbbb5c42401a59ff6f81c79e12d6586713ffb5a0
MD5 b0956da8fca087d304521dae2fb2bb12
BLAKE2b-256 781667b6b091c4d18bf326252bd8f6bba7b8da83b0687604d6331f4c1ae8e241

See more details on using hashes here.

Provenance

The following attestation bundles were made for upstage_des-0.3.2.tar.gz:

Publisher: publish-to-pypi.yml on gtri/upstage

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file upstage_des-0.3.2-py3-none-any.whl.

File metadata

  • Download URL: upstage_des-0.3.2-py3-none-any.whl
  • Upload date:
  • Size: 179.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for upstage_des-0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 23094f43c8115e8233bbb58bf6f8beb1e9cae3c86652fabef618657211a6aed3
MD5 d16b8c3bf70315e38ce2d3b1fcd92fe5
BLAKE2b-256 54b08e9c24ab892d0339f521a4fe5c99ad4ab3ba3b2d831d10b1f173260663f4

See more details on using hashes here.

Provenance

The following attestation bundles were made for upstage_des-0.3.2-py3-none-any.whl:

Publisher: publish-to-pypi.yml on gtri/upstage

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page