Metadata-Version: 2.4
Name: eta-ctrl
Version: 0.3.0
Summary: A modular framework for rolling-horizon operational control using a Gym-compatible agent–environment abstraction. The framework enables integration of optimization-based agents (Pyomo), reinforcement learning agents (Stable-Baselines3), heuristic search methods, and rule-based controllers. Environments can be instantiated from FMI-compliant simulations, mathematical models, or real-world system interfaces.
License-Expression: BSD-2-Clause
License-File: AUTHORS.rst
License-File: LICENSE
Keywords: rolling horizon control,model predictive control (MPC),reinforcement learning,optimization-based control,rule-based control,Pyomo,Stable-Baselines3,Gym interface,Functional Mock-up Interface FMI,cyber-physical systems,industrial energy systems,real-time control,simulation and co-simulation,eta factory
Author: Technical University of Darmstadt, Institute for Production Management, Technology and Machine Tools (PTW)
Author-email: info@ptw.tu-darmstadt.de
Maintainer: Andreas Clement
Maintainer-email: A.Clement@PTW.TU-Darmstadt.de
Requires-Python: >=3.11,<3.13
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Education
Classifier: Intended Audience :: Manufacturing
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Provides-Extra: docs
Provides-Extra: examples
Requires-Dist: attrs (>=25.3.0,<27.0.0)
Requires-Dist: autodoc-pydantic (>=2.2.0,<3.0.0) ; extra == "docs"
Requires-Dist: cplex (>=22.1.2.0,<23.0.0.0) ; extra == "examples"
Requires-Dist: eta-nexus (==0.1.0)
Requires-Dist: fmpy (>=0.3.26,<0.4.0)
Requires-Dist: gymnasium (>=1.2.0,<1.4.0)
Requires-Dist: keyboard (>=0.13.5,<0.14.0) ; extra == "examples"
Requires-Dist: matplotlib (>=3.10.0,<3.12.0) ; extra == "examples"
Requires-Dist: numpy (>=2.2.0,<3.0.0)
Requires-Dist: onnxruntime (>=1.24.0,<1.25.0) ; extra == "examples"
Requires-Dist: pandas (>=2.2.3,<3.2.0)
Requires-Dist: pydantic (>=2.12.0,<3.0.0)
Requires-Dist: pygame (>=2.6.0,<2.7.0) ; extra == "examples"
Requires-Dist: pyglet (>=2.1.0,<2.2.0) ; extra == "examples"
Requires-Dist: pyomo (>=6.9.2,<6.11.0)
Requires-Dist: python-dateutil (>=2.9.0,<3.0.0)
Requires-Dist: pyyaml (>=6.0.2,<7.0.0)
Requires-Dist: sphinx (>=8.0.0,<10.0.0) ; extra == "docs"
Requires-Dist: sphinx-copybutton (>=0.5.2,<1.0.0) ; extra == "docs"
Requires-Dist: sphinx-rtd-theme (>=3.0.0,<4.0.0) ; extra == "docs"
Requires-Dist: stable-baselines3 (>=2.7.0,<2.8.0)
Requires-Dist: tensorboard (>=2.18.0,<3.0.0)
Requires-Dist: tomli-w (>=1.2.0,<2.0.0)
Requires-Dist: torch (>=2.6.0,<3.0.0)
Project-URL: Documentation, https://eta-ctrl.readthedocs.io/
Project-URL: Homepage, https://www.ptw.tu-darmstadt.de
Project-URL: Issues, https://git.ptw.maschinenbau.tu-darmstadt.de/eta-fabrik/public/eta-ctrl/-/issues
Project-URL: Repository, https://github.com/PTW-TUDa/eta_ctrl/
Description-Content-Type: text/x-rst

ETA Ctrl Framework
######################
.. image:: https://zenodo.org/badge/DOI/10.5281/zenodo.18670778.svg
  :target: https://doi.org/10.5281/zenodo.18670778

The `ETA Ctrl` framework provides a standardized interface for developing digital twins of factories or machines in a factory.
It is designed to facilitate rolling horizon optimization, simulation, and interaction with factory systems.
The framework is based on the Gymnasium environment and integrates seamlessly with tools like FMUs, Pyomo models, and live connections to real-world assets.

Documentation
*****************

Full Documentation can be found on the `Documentation Page <https://eta-ctrl.readthedocs.io/>`_.

.. warning::
    This is beta software. APIs and functionality might change without prior notice. Please fix the version you
    are using in your requirements to ensure your software will not be broken by changes in *ETA Ctrl*.

Overview
********************

Core
==========================

- **`EtaCtrl`**: Central controller for managing optimization workflows, including learning and execution processes.

Configuration
==========================

- **`Config`**: Represents the configuration for an optimization run.
- **`RunInfo`**: Handles paths and metadata for optimization runs.

Environment
==========================

- **Base Classes**:

  - **`BaseEnv`**: Abstract base class for creating custom environments.
  - **`LiveEnv`**: Extends `BaseEnv` for live environments interacting with real-world systems.
  - **`PyomoSimEnv`**: Extends `BaseEnv` for environments using a pyomo model for simulation.
  - **`SimEnv`**: Extends `BaseEnv` for environments using FMU-based simulations.

- **Vectorization**:

  - **`NoVecEnv`**: Custom vectorizer for environments that handle multithreading internally.

Simulation
==========================

- **`FMUSimulator`**: Provides functionality for simulating FMUs (Functional Mock-up Units).

Time Series
==========================

- **`scenario_from_csv`**: Imports and processes scenario data from CSV files.
- **`df_from_csv`**: Reads time series data from a CSV file and returns it as a pandas DataFrame.
- **`df_resample`**: Resamples the time index of a DataFrame to a specified frequency.
- **`df_interpolate`**: Interpolates missing values in a DataFrame with a specified frequency.

State Management
==========================

- **`StateVar`**: Represents a single variable in the state of an environment.
- **`StateConfig`**: Configures the action and observation spaces based on `StateVar` instances.

Contributing
*****************

Please read the `development guide <https://eta-ctrl.readthedocs.io/en/latest/guide/development.html>`_ before starting development on *ETA Ctrl*

Citing this Project
*********************

For referencing this package in academic work, please refer to `CITATION.cff`.

See `AUTHORS.rst` for a list of further contributors.

