Skip to main content

Automatic simulation system powered by neural networks

Project description

asim — Neural Network Simulation & Optimal Control for Physical Systems

asim is a Python library for modeling, simulating, and optimizing physical systems using neural networks. It is designed for industrial process control — such as boilers, cooling systems, and heat exchangers — where data-driven state-space models replace first-principles equations.

Installation

pip install asim

What is asim

Train a neural network on historical sensor data, export it to ONNX, then run closed-loop simulation or gradient-based optimal control — all within a unified API.

  • Data-driven state-space modeling — learns system dynamics from tabular time-series data with explicit separation of controllable inputs (Vu), state variables (Vx), and time-varying parameters (Vc)
  • Automatic normalization — columns sharing a physical unit (union=) are scaled together; scalers are baked into the ONNX export
  • ONNX simulation — autoregressive rollout via onnxruntime; supports multi-group systems with cross-group wiring
  • Optimal controlOffPolicyOptimizer translates the ONNX graph into CasADi symbolic math and solves step-by-step MPC problems with IPOPT
  • Monotonicity checkingExplainer verifies gradient sign constraints to catch physically implausible model behavior

Using asim

import matplotlib.pyplot as plt
import pandas as pd
from asim import Vt, Vu, Vx
from asim.dataset import PhysicalDataManage
from asim.explainer import Explainer
from asim.model import PhysicalFieldModel
from asim.optimizer import OffPolicyOptimizer
from asim.simulator import PhysicalSimulator
from asim.tool import DummyDatasets

# 1. Define data and structure
df = DummyDatasets.boiler_minimum(size=10000)  # pd.read_csv("demo.csv")
cols = [
    Vt(label="ts"),
    Vu(group="boiler", label="heat_power1", minmax=(1.0, None), union="kw"),
    Vu(group="boiler", label="heat_power2", minmax=(None, 90), union="kw"),
    Vx(group="boiler", label="heat_temp", union="kj"),
]
dm = PhysicalDataManage(df, columns=cols, batch_size=64, seq_size=5)

# 2A. Select the model, define the parameters, train and save
fm = PhysicalFieldModel(dm, lr=0.001)
fm.fit(epochs=100)
fm.export("demo.sim.onnx")

# 2B. Check model
explainer = Explainer(dm, fm)
explainer.checkGrad()

# 2C. Use a simulator to simulate the operation
sim = PhysicalSimulator("demo.sim.onnx", dm=dm)
sim_df = df[0:1440].copy()
sim_df.index = pd.to_datetime(sim_df["ts"], unit="s", utc=True).dt.tz_convert("Etc/GMT-8")
sim_df = sim.steps(sim_df, x0={"heat_temp": sim_df["heat_temp"].iloc[0]})
sim.plots(sim_df)
plt.show()

# 3A. Build the optimizer
lTerm = lambda x, u, p: (x - p) ** 2 + 0.5 * (u[0] ** 2 + u[1] ** 2)
mTerm = lambda x, u, p: (x - p) ** 2
opt = OffPolicyOptimizer("demo.sim.onnx", dm=dm, lTerm=lTerm, mTerm=mTerm)
opt.fit(epochs=100)
opt.export("demo.opt.onnx")

# 3B. Use the optimizer
opt_df = opt.steps(df[0:360].copy(), interval=1)
opt.plots(opt_df)
plt.show()

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

asim-26.3.1-cp313-cp313-win_amd64.whl (416.8 kB view details)

Uploaded CPython 3.13Windows x86-64

asim-26.3.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (3.4 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

asim-26.3.1-cp312-cp312-win_amd64.whl (419.1 kB view details)

Uploaded CPython 3.12Windows x86-64

asim-26.3.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (3.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

File details

Details for the file asim-26.3.1-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: asim-26.3.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 416.8 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for asim-26.3.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 368d03ab4fa5ecefe93b5000391df4e5a6e13290d8bf36347ada6b35904020ee
MD5 ec7c95698952b5d62e5d43036372fd62
BLAKE2b-256 9071d69fdb520b70d2bff57f9ecb654cf9cefedf523f69c1ba2ba415e361bae3

See more details on using hashes here.

File details

Details for the file asim-26.3.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for asim-26.3.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 59915892ef83a53b422d1ec11c0b3334fc1718e32fb156a10219ccb5a07e04cd
MD5 9f00b7603a2259d78167c978a2a07905
BLAKE2b-256 7cfe00b6c96369edcde0549704cb8ed6cbd319e19039f83c61d6191785e09fe2

See more details on using hashes here.

File details

Details for the file asim-26.3.1-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: asim-26.3.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 419.1 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for asim-26.3.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 20c22a7e28681dce342563f0e26b895cc51b55992387aa5565473f1d93d8b0ca
MD5 764e8693e19633c178349b5aace92be9
BLAKE2b-256 b91a05516c03805a67a03b3472d8d849ea3fdebb692eff277fc713476a38040d

See more details on using hashes here.

File details

Details for the file asim-26.3.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for asim-26.3.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 8c9932d0e86bdcad86a542619043f9679b8df9f299d27e8dbf27284ff2b53ea2
MD5 cc84eede990449cc1ecce235132bd45a
BLAKE2b-256 bbd09e7595f9885d310e823d96b9445120bb563c82d1b8698385f926cda45317

See more details on using hashes here.

Supported by

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